高斯消去+一般圖匹配
矩陣乘法?
行列式?
行列式(det)
det(A)=σ∈Sn∑sgn(σ)i=1∏nAi,σ(i)
其中sgn(σ)=(−1)N(σ)
N(σ)是逆序數對數或將該排列排好所需的對換數
(兩者奇偶性相同)
降階
高斯消去
示範
*把一行乘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)=0⇔A可逆
2.解(多元)一次方程組
3. 求秩(rank)
- 行秩 = 列秩
- rank(A)=n⇔det(A)=0
4.求反矩陣
一般圖匹配
縮花><
我不會QQ
可以用線性代數?!
Tutte Matrix
T(G)i,j=⎩⎨⎧0xi,j−xi,jif(vi,vj)∈/E(G)if(vi,vj)∈E(G) and i<jif(vi,vj)∈E(G) and i>j


完美匹配
Tutte 定理(1947)
G有完美匹配⇔det(T(G))=0
Try Try see.
證明
環覆蓋
用一堆有向環去覆蓋一個無向圖,使得每個頂點恰在一個環中。
可以用一個排列p表示,其中i=pi,且(i,pi)∈E(G)

3 4 1 2
證明
det(T)=σ∈Sn∑sgn(σ)∏i=1nTi,σ(i)
考慮非零項
有機?
無機?
det(T(G))=0⇔G有完美匹配
奇環覆蓋不會對det有貢獻
G有完美匹配⇔G有無奇環覆蓋
複雜度?
不知道,但指數以上
Schwartz–Zippel lemma(之類的)

若P是一個有n個變數、最大度數為d的多項式,若從集合S中隨機取(r1,r2,⋯,rn),則
O(N3)
求出來
等等會用到的定義
A(S1,S2)代表刪掉S1中的行和S2中的列所得到的新矩陣
A(S1,S2)代表留下S1中的行和S2中的列所得到的新矩陣
斜對稱矩陣
一矩陣S,若−S=ST,則稱S為斜對稱矩陣
Tutte Matrix就是
Ti,j−1=0⇔G−(vi,vj)有完美匹配
A−1=adj(A)/det(A)
(adj(A))i,j=(−1)i+jdet(Aj,i)
A:任意可逆矩陣
S : 斜對稱矩陣
T: Tutte Matrix
det(Si,j)=0⇔det(S(i,j),(i,j))=0(S可逆)
rank(S)是偶數
S是n×n且n是奇數⇒det(S)=0
可以找到S′=S(i1,i2...),(i1,i2...),使det(S′)=0且rank(S′)=rank(S)
O(N4)
每次只是刪兩行兩列,一定要重算反矩陣嗎?
若A=[auvTB],A−1=[a^u^v^TB^]
B−1=B^−u^v^T/a^
Finally
O(N3)
感覺頗沒用?
最大匹配
Generalized Tutte Theorem
一張圖最大匹配的大小是rank(T(G))/2
可以找到S′=S(i1,i2...),(i1,i2...),使det(S′)=0且rank(S′)=rank(S)
找出來
轉換
加/刪點找完美匹配
重點整理
剛剛都沒聽也沒怎樣
1.Tutte Matrix的定義
2.模一個大質數
3.隨機賦值
4.最大匹配大小是rank(T(G))/2
5.找最大匹配先轉完美匹配
6.(i,j)可在完美匹配中⇔Ti,j−1=0
7.在原矩陣刪掉一行一列的話就用原逆矩陣對應的那行,消掉對應的那列,即可求出新的逆矩陣
例題
Undirected Vertex Geography
兩人玩遊戲,每次將棋子從圖上的一個節點移到相鄰且未走過的節點上,不可走者輸。哪些節點先手必勝?
結論
參考資料
deck
By Zi-Hong Xiao
deck
- 836