高斯消去+一般圖匹配

矩陣乘法?
行列式?

行列式(det)

det(A)=σSnsgn(σ)i=1nAi,σ(i)det(A) = \sum\limits_{\sigma \in S_{n}}\operatorname {sgn}(\sigma )\prod\limits_{i=1}^{n}A_{i,\sigma (i)}

其中sgn(σ)=(1)N(σ)\operatorname{sgn}( \sigma) = (-1)^{N(\sigma)}
N(σ)N(\sigma)是逆序數對數或將該排列排好所需的對換數
(兩者奇偶性相同)

降階

高斯消去

示範
*把一行乘k加到另一行行列式值不變

code

void Gauss(double A[509][509],ll N)
{
    ll i,j,k,r;
    for(i = 0;i < N;i++)
    {
        r = i;
        for(j = i+1;j < N;j++) if(abs(A[j][i]) > abs(A[r][i])) r = j;
        if(r != i)
        {
            for(j = 0;j < N;j++)
            {
                swap(A[r][j],A[i][j]);
            }
        }
        for(k = i+1;k < N;k++)
        {
            double f = A[k][i]/A[i][i];
            for(j = i;j < N;j++) A[k][j] -= f*A[i][j];
        }
    }
}

複雜度?

用處

1.求行列式

- det(A)0A可逆det(A) \neq 0 \Leftrightarrow A 可逆

2.解(多元)一次方程組

3. 求秩(rank)
- 行秩 = 列秩

- rank(A)=ndet(A)0rank(A) = n \Leftrightarrow det(A) \neq 0

4.求反矩陣

一般圖匹配

縮花><

我不會QQ

可以用線性代數?!

Tutte Matrix

T(G)i,j={0if(vi,vj)E(G)xi,jif(vi,vj)E(G) and i<jxi,jif(vi,vj)E(G) and i>jT(G)_{i,j} = \left\{\begin{matrix} 0 & if(v_i,v_j)\notin E(G)\\ x_{i,j} & if(v_i,v_j)\in E(G) \textrm{ and }i<j\\ -x_{i,j} & if(v_i,v_j)\in E(G) \textrm{ and }i>j\end{matrix}\right.

完美匹配

Tutte 定理(1947)

GG有完美匹配det(T(G))=0\Leftrightarrow det(T(G)) = 0

Try Try see.

證明

環覆蓋

用一堆有向環去覆蓋一個無向圖,使得每個頂點恰在一個環中。

可以用一個排列pp表示,其中ipii \neq p_i,且(i,pi)E(G)(i,p_i) \in E(G)

3 4 1 2

證明

det(T)=σSnsgn(σ)i=1nTi,σ(i)det(T) = \sum\limits_{\sigma \in S_{n}}\operatorname {sgn}(\sigma )\prod _{i=1}^{n}T_{i,\sigma (i)}

 考慮非零項

有機?

無機?

det(T(G))0det(T(G)) \neq 0G有完美匹配\Leftrightarrow G有完美匹配

奇環覆蓋不會對det有貢獻

GG有完美匹配G有無奇環覆蓋\Leftrightarrow G有無奇環覆蓋

複雜度?

不知道,但指數以上

Schwartz–Zippel lemma(之類的)

PP是一個有nn個變數、最大度數為dd的多項式,若從集合SS隨機(r1,r2,,rn)(r_1,r_2,\cdots,r_n),則

O(N3)O(N^3)

求出來

等等會用到的定義

A(S1,S2)代表刪掉S1中的行和S2中的列所得到的新矩陣A^{(S_1,S_2)}代表刪掉S_1中的行和S_2中的列所得到的新矩陣

A(S1,S2)代表留下S1中的行和S2中的列所得到的新矩陣A_{(S_1,S_2)}代表留下S_1中的行和S_2中的列所得到的新矩陣

斜對稱矩陣

一矩陣S,若S=ST,則稱S為斜對稱矩陣一矩陣S,若-S = S^T,則稱S為斜對稱矩陣

Tutte Matrix就是

Ti,j10G(vi,vj)有完美匹配T^{-1}_{i,j} \neq 0 \Leftrightarrow G - (v_i,v_j) 有完美匹配

A1=adj(A)/det(A)A^{-1} = adj(A)/det(A)

(adj(A))i,j=(1)i+jdet(Aj,i)(adj(A))_{i,j} = (-1)^{i+j}det(A^{j,i})

A:任意可逆矩陣

S : 斜對稱矩陣

T: Tutte Matrix

det(Si,j)0det(S(i,j),(i,j))0(S可逆)det(S^{i,j}) \neq 0\Leftrightarrow det(S^{(i,j),(i,j)}) \neq 0 (S可逆)

rank(S)是偶數rank(S) 是偶數

Sn×nn是奇數det(S)=0S是 n \times n 且 n是奇數\Rightarrow det(S) = 0

可以找到S=S(i1,i2...),(i1,i2...),使det(S)0rank(S)=rank(S)可以找到S'=S_{(i_1,i_2...),(i_1,i_2...)},使det(S') \neq 0且 rank(S') = rank(S)

O(N4)O(N^4)

每次只是刪兩行兩列,一定要重算反矩陣嗎?

A=[avTuB],A1=[a^v^Tu^B^]A = \begin{bmatrix} a& v^T \\ u & B \end{bmatrix},A^{-1} = \begin{bmatrix} \hat {a}& \hat v^T \\ \hat u & \hat B \end{bmatrix}

B1=B^u^v^T/a^B^{-1} = \hat{B} - \hat{u}\hat{v}^T/\hat {a}

Finally

O(N3)O(N^3)

感覺頗沒用?

最大匹配

Generalized Tutte Theorem

一張圖最大匹配的大小是rank(T(G))/2rank(T(G))/2

可以找到S=S(i1,i2...),(i1,i2...),使det(S)0rank(S)=rank(S)可以找到S'=S_{(i_1,i_2...),(i_1,i_2...)},使det(S') \neq 0且 rank(S') = rank(S)

找出來

轉換

加/刪點找完美匹配

重點整理

剛剛都沒聽也沒怎樣

1.Tutte Matrix的定義

2.模一個大質數

3.隨機賦值

4.最大匹配大小是rank(T(G))/2rank(T(G))/2

5.找最大匹配先轉完美匹配

6.(i,j)可在完美匹配中Ti,j10(i,j)可在完美匹配中\Leftrightarrow T^{-1}_{i,j} \neq 0

7.在原矩陣刪掉一行一列的話就用原逆矩陣對應的那行,消掉對應的那列,即可求出新的逆矩陣

例題

Undirected Vertex Geography

兩人玩遊戲,每次將棋子從圖上的一個節點移到相鄰且未走過的節點上,不可走者輸。哪些節點先手必勝?

結論

參考資料

Made with Slides.com