Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Markov Chain Mixing Times And Applications III:
Conductance and
Canonical Paths
Ivona Bezáková
(Rochester Institute of Technology)
Simons Institute for the Theory of Computing Counting Complexity and Phase Transitions Bootcamp
January 27th, 2016
Outline
Other techniques for bounding the mixing time:
• conductance
• canonical paths
• canonical flows
Thanks to:
Bhatnagar, Diaconis, Dyer, Jerrum, Lawler, Müller, Randall, Sinclair, Sokal, Štefankovič, Stroock, Vazirani, Vigoda, …
Outline
Recall:
• Ergodic MC (Ω,P) => unique stationary distribution ¼
• Mixing time: tmix(²) = minimum t such that for every start state x, after t steps within ² of ¼
An ergodic reversible Markov chain (Ω,P):
Outline
Recall:
• Ergodic MC (Ω,P) => unique stationary distribution ¼
• Mixing time: tmix(²) = minimum t such that for every start state x, after t steps within ² of ¼
An ergodic reversible Markov chain (Ω,P):
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
Example: suppose ¼ is uniform:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
Example: suppose ¼ is uniform:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
S ¼(S) = 3/11 · 1/2
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
Example: suppose ¼ is uniform:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
0.1
0.3
0.1 S ¼(S) = 3/11 · 1/2 0.4
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
Example: suppose ¼ is uniform:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
0.1
0.3
0.1 S ¼(S) = 3/11 · 1/2
3.0
113
4.01111.0
1113.0
1111.0
111
=+++
=ΦS
0.4
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
Example: suppose ¼ is uniform:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
0.1
S
02.0
115
1.0111
==ΦS
¼(S) = 5/11 · 1/2
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
Thm:
Recall: Thm: For an ergodic MC, let ¸2 be the 2nd largest eigenvalue of P and ¼min := minx ¼(x). Then
≤≤
min
2 1log1)(21log||
επε
ελ
gapspectralt
gapspectral mix
Φ≤≤Φ 222 gapspectral
[Jerrum-Sinclair, Diaconis-Stroock, Lawler-Sokal]
Conductance
Def: For an ergodic reversible MC (Ω,P), its conductance is defined as:
)(
),()(min ,
2/1)(,: S
yxPxSySx
SSS π
ππ
∑ ∉∈≤Ω⊆=Φ
Thm:
Thm: For a lazy ergodic MC, where ¼min := minx ¼(x):
Φ≤≤Φ 222 gapspectral
[Jerrum-Sinclair, Diaconis-Stroock, Lawler-Sokal]
Φ
≤≤
−
Φ min2
1log2)(21log1
21
21
επε
ε mixt
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F:
I
F
[Jerrum-Sinclair]
Canonical Paths
I F
[Jerrum-Sinclair]
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
I
F
[Jerrum-Sinclair]
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, take any S:
I
F
S
)()( SS ππ ∑∉∈ SFSI
FI,
)()( ππ=
[Jerrum-Sinclair]
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, take any S:
I
F
S
∑∉∈ SySx
yxPx,
),()(π
∑∉∈ SFSI
FI,
)()( ππ
= ∑
∉∈ SySxyxPx
,),()(π
)()( SS ππ
[Jerrum-Sinclair]
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, take any S:
I
F
S
∑∉∈ SySx
yxPx,
),()(π
∑∉∈ SFSI
FI,
)()( ππ
= ∑
∉∈ SySxyxPx
,),()(π∑
∉∈ SySxyxPx
,),()(π
2/)(Sπ·
)()( SS ππ
[Jerrum-Sinclair]
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, let S be the “smallest cut”:
I
F
S
∑∉∈ SySx
yxPx,
),()(π
∑∉∈ SFSI
FI,
)()( ππ
= ∑
∉∈ SySxyxPx
,),()(π∑
∉∈ SySxyxPx
,),()(π
2/)(Sπ·
Φ21 =
)()( SS ππ
[Jerrum-Sinclair]
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, let S be the “smallest cut”:
I
F
S
∑∉∈ SySx
yxPx,
),()(π
∑∉∈ SFSI
FI,
)()( ππ
= ∑
∉∈ SySxyxPx
,),()(π∑
∉∈ SySxyxPx
,),()(π
2/)(Sπ·
Φ21 = ·
∑ ∑∉∈
→∉∈SySx
pathFIonyxSFSIFI
FI,
),(,,:),(
)()( ππ
)()( SS ππ
[Jerrum-Sinclair]
∑∉∈ SySx
yxPx,
),()(π
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, let S be the “smallest cut”:
I
F
S
∑∉∈ SySx
yxPx,
),()(π
∑∉∈ SFSI
FI,
)()( ππ
= ∑
∉∈ SySxyxPx
,),()(π∑
∉∈ SySxyxPx
,),()(π
2/)(Sπ·
Φ21 = ·
∑→
∉∈pathFIonvuSFSIFI
FI),(
,,:),()()( ππ
for some u in S, v not in S.
),()( vuPuπ
)()( SS ππ
[Jerrum-Sinclair]
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, for some u in S, v not in S:
I
F
S
Φ21 ·
),()( vuPuπ
∑→
∉∈pathFIonvuSFSIFI
FI),(
,,:),()()( ππ
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
- Then, for some u in S, v not in S:
I
F
S
Φ21 ·
),()( vuPuπ
Congestion through transition (u,v)
∑→
∉∈pathFIonvuSFSIFI
FI),(
,,:),()()( ππ
u v
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
Def: Congestion
I
F
)()()(),()(
1max:),(
, pathFIoflengthFIvuPu
vuthroughpathFI
vu →= ∑→
πππ
ρ
u v
Canonical Paths
Bounding the conductance:
- Find a path in the transition graph from every state I to every other state F (|Ω|x|Ω| paths)
Def: Congestion
Thm [Sinclair]: For a lazy ergodic reversible MC:
≤
min
1ln4)(πε
ρεmixt
)()()(),()(
1max:),(
, pathFIoflengthFIvuPu
vuthroughpathFI
vu →= ∑→
πππ
ρ
Matchings Revisited
Given an undirected graph G=(V,E), a matching MµE is a set of vertex disjoint edges. A matching is perfect if |M|=n/2, where n = # vertices (and m = # edges).
Example:
Matchings Revisited
Given an undirected graph G=(V,E), a matching MµE is a set of vertex disjoint edges. A matching is perfect if |M|=n/2, where n = # vertices (and m = # edges).
Example:
A matching
Matchings Revisited
Given an undirected graph G=(V,E), a matching MµE is a set of vertex disjoint edges. A matching is perfect if |M|=n/2, where n = # vertices (and m = # edges).
Example:
A perfect matching
Matchings Revisited
Given an undirected graph G=(V,E), a matching MµE is a set of vertex disjoint edges. A matching is perfect if |M|=n/2, where n = # vertices (and m = # edges).
Example:
A perfect matching
Goal:
An FPRAS for • # matchings • # perfect matchings
Matchings Revisited
Given an undirected graph G=(V,E), a matching MµE is a set of vertex disjoint edges. A matching is perfect if |M|=n/2, where n = # vertices (and m = # edges).
Example:
A perfect matching
Goal:
An FPRAS for • # matchings • # perfect matchings
FPAUS (sampler)
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
e
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Input: a graph G
State space Ω: all matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random edge e=(u,v) 2 E and:
• if e 2 M, remove e from M
• if u,v are not covered by edges in M, add e to M
• if u is covered by edge e’ 2 M and v is not covered by M, replace e’ with e in M
• otherwise, stay in M
A Markov Chain for Matchings
Technicality: A lazy chain: with probability 1/2 stay in M, otherwise
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
?
I F
[Jerrum-Sinclair]
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
?
I F
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference)
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex
1st
2nd
3rd
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
1st
2nd
3rd
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if cycle: - remove lowest edge - slide the rest - add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
For any pair of matchings I,F, define a path from I to F in the transition graph:
Canonical Paths
I -> F
Going from red to blue: • take I © F (sym. difference) • components are alternating cycles or paths • order the components by the lowest vertex • process components in order
-if path: - if needed, remove lower end edge - slide the rest - if needed, add the last edge
1st
2nd
3rd
(dashed edges: not in the current matching)
1
Congestion through transition M->M’:
Since ¼(M)=¼(I)=¼(F)=1/|Ω| and P(M,M’)=1/(2m), and length(I->F)·n:
Bounding the Congestion
∑I->F path through M->M’ ¼(I)¼(F) length(I->F) 1 ¼(M)P(M,M’)
∑I->F path through M->M’ n 2m |Ω|
·
(# canonical paths through M->M’) 2mn |Ω| =
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition
Bounding the Congestion: Encoding
An I -> F path through M->M’
Legend: • purple: transition • red: initial matching • blue: final matching
M -> M’
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
An I -> F path through M->M’
Legend: • purple: transition • red: initial matching • blue: final matching
M -> M’
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
An I -> F path through M->M’
Legend: • purple: transition • red: initial matching • blue: final matching
M -> M’
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
An I -> F path through M->M’
Legend: • purple: transition • red: initial matching • blue: final matching
M -> M’
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
An I -> F path through M->M’
Legend: • purple: transition • red: initial matching • blue: final matching
M -> M’
Observation:
I © F – (M[M’) is a matching. => encoding E (for I,F given M)
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
An I -> F path through M->M’
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
Observation:
I © F – (M[M’) is a matching. => encoding E (for I,F given M)
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
Is E an “encoding”? (Given M->M’ and E, can reconstruct I,F?) If yes, then # can.paths through M->M’ is · |Ω|
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
Is E an “encoding”? (Given M->M’ and E, can reconstruct I,F?) If yes, then # can.paths through M->M’ is · |Ω|
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
Bounding the Congestion: Encoding
Know: • order of components • currently working on 2nd • 1st done, 3rd not yet • current: done up to the transition
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
Bounding the Congestion: Encoding
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
1st
2nd
3rd
Know: • order of components • currently working on 2nd • 1st done, 3rd not yet • current: done up to the transition
Bounding the Congestion: Encoding
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
1st
2nd
3rd
Know: • order of components • currently working on 2nd • 1st done, 3rd not yet • current: done up to the transition
Bounding the Congestion: Encoding
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
1st
2nd
3rd
Know: • order of components • currently working on 2nd • 1st done, 3rd not yet • current: done up to the transition
Bounding the Congestion: Encoding
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
1st
2nd
3rd
Know: • order of components • currently working on 2nd • 1st done, 3rd not yet • current: done up to the transition
Bounding the Congestion: Encoding
Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) E =
Reconstructing I,F from E,M->M’:
1st
2nd
3rd
Know: • order of components • currently working on 2nd • 1st done, 3rd not yet • current: done up to the transition
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I -> F
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd I -> F
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd I -> F
E =
I © F – (M[M’) Not a matching…
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd I -> F
I © F – (M[M’) - e Now a matching: E 2 Ω
E = e
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd I -> F
I © F – (M[M’) - e Now a matching: E 2 Ω
E = e
Can “decode” E into I,F?
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) - e Now a matching: E 2 Ω
E =
Can “decode” E into I,F?
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd
I © F – (M[M’) - e Now a matching: E 2 Ω
E =
Can “decode” E into I,F?
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd I -> F
I © F – (M[M’) - e Now a matching: E 2 Ω
E =
Can “decode” E into I,F?
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
1st
2nd I -> F
I © F – (M[M’) - e Now a matching: E 2 Ω
E =
Can “decode” E into I,F? - Is 2nd component a path?
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) - e Now a matching: E 2 Ω
E = 1st
2nd I -> F
Can “decode” E into I,F? - Is 2nd component a path?
e
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) - e Now a matching: E 2 Ω
E = 1st
2nd I -> F
Can “decode” E into I,F? - Is 2nd component a path? - Or a cycle?
e
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
Bounding the Congestion: Encoding
M -> M’ Legend: • purple: transition • red: initial matching • blue: final matching • orange: encoding
I © F – (M[M’) - e Now a matching: E 2 Ω
E =
Can “decode” E into I,F? - Is 2nd component a path? - Or a cycle?
1st
2nd I -> F
Redefine encoding: E’ := (E,0) E’ := (E,1) 2 Ω x 0,1
Let M->M’ be a transition. How many canonical paths go through it ? [Want · |Ω|poly(n)]
- For the sliding transition: · 2|Ω|
- Need to analyze the add and remove transitions
Bound on the congestion:
Mixing time: tmix(²) = O(mn log(1/(²¼min))) = O*(mn2) [O* - ignore polylog]
FPRAS: O( T(n,m,²/(6m)) m2/²² ) = O*(m3n2/²²)
Bounding the Congestion: Encoding
(# can. paths through M->M’) = 2|Ω| = 4mn 2mn |Ω|
½ · 2mn |Ω|
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
w
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
u
v
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
u
v
w
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
u
v
w
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
u
v
w
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
u
v
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
u
v w =
Input: a graph G
State space Ω: all perfect and near-perfect matchings of G
Markov chain (slide chain): Let M be the current matching, we get the next state by choosing a random vertex w and:
• if M is perfect: remove w’s edge
• if M is near-perfect with holes u,v:
• if w=u or v, add (u,v) if can
• else, randomly choose u or v, replace w’s current edge by (u,w) or (v,w)
A Markov Chain for Perfect Matchings
Exactly 2 vertices not matched
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
A Markov Chain for Perfect Matchings
I -> F
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
A Markov Chain for Perfect Matchings
I -> F
1st
2nd
3rd
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
A Markov Chain for Perfect Matchings
I -> F
1st
2nd
3rd
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
A Markov Chain for Perfect Matchings
I -> F
1st
2nd
3rd
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
A Markov Chain for Perfect Matchings
I -> F
1st
2nd
3rd
Want to process last, otherwise 4 holes -> not in Ω
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
• for near to near: go through a random perfect matching
(Instead of canonical paths, split into a flow.)
A Markov Chain for Perfect Matchings
Analysis of this MC:
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
• for near to near: go through a random perfect matching
(Instead of canonical paths, split into a flow.)
Mixing time: tmix(²) = O*(n3 (#nears/#perfects))
Polynomial if # near-perfect / # perfect matchings is polynomial… E.g. for dense graphs: every vertex of degree > n/2.
A Markov Chain for Perfect Matchings
What if improve mixing time analysis?
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
• Just one perfect matching…to near:
Mixing time: tmix(²) = O*(n3 (#nears/#perfects))
Polynomial if # near-perfect / # perfect matchings is polynomial… E.g. for dense graphs: every vertex of degree > n/2.
A Markov Chain for Perfect Matchings
What if improve mixing time analysis?
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
Just one perfect matching…to near:
Mixing time: tmix(²) = O*(n3 (#nears/#perfects))
Polynomial if # near-perfect / # perfect matchings is polynomial… E.g. for dense graphs: every vertex of degree > n/2.
A Markov Chain for Perfect Matchings
What if improve mixing time analysis?
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
Just one perfect matching… But exponentially many nears!
Mixing time: tmix(²) = O*(n3 (#nears/#perfects))
Polynomial if # near-perfect / # perfect matchings is polynomial… E.g. for dense graphs: every vertex of degree > n/2.
A Markov Chain for Perfect Matchings
What if improve mixing time analysis?
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
Just one perfect matching… But exponentially many nears! F
Mixing time: tmix(²) = O*(n3 (#nears/#perfects))
Polynomial if # near-perfect / # perfect matchings is polynomial… E.g. for dense graphs: every vertex of degree > n/2.
A Markov Chain for Perfect Matchings
This MC good only if #nears/#perfects polynomial…
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Another MC for Perfect Matchings
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Another MC for Perfect Matchings
u
v
y x
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Another MC for Perfect Matchings
u
v
y x
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Another MC for Perfect Matchings
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Another MC for Perfect Matchings
u
v
y
x
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Another MC for Perfect Matchings
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
Symmetric but state space disconnected…
Another MC for Perfect Matchings
Input: a graph G
State space Ω: all perfect matchings of G
Markov chain (swap chain): Let M be the current matching, choose two random edges (u,v) and (x,y) in M, replace them with (u,y) and (v,x) if can.
What if have an instance with connected state space:
Does it then mix rapidly?
Another MC for Perfect Matchings
Another MC for Perfect Matchings
Consider this instance (family of instances):
Consider this instance (family of instances):
From any matching can get to
Another MC for Perfect Matchings
Consider this instance (family of instances):
From any matching can get to
Another MC for Perfect Matchings
?
Consider this instance (family of instances):
From any matching can get to
Another MC for Perfect Matchings
?
Consider this instance (family of instances):
From any matching can get to
Another MC for Perfect Matchings
?
Consider this instance (family of instances):
From any matching can get to
Another MC for Perfect Matchings
?
Consider this instance (family of instances):
From any matching can get to
-> State space is connected
Another MC for Perfect Matchings
?
Consider this instance (family of instances):
Another MC for Perfect Matchings
# matchings that use the bottom edge: 1
# matchings that do not use the bottom edge: ¸ 2n/4-1
Consider this instance (family of instances):
Another MC for Perfect Matchings
Consider this instance (family of instances):
Conductance:
Another MC for Perfect Matchings
)1(21
2/1)1(2
1||
1
)(
),()(min: 12/
,
2/1)(,: −≤−Ω≤=Φ −
∉∈∑≤Ω⊆ nn
nnS
yxPxn
SySx
SSS π
π
π
Consider this instance (family of instances):
Conductance:
Another MC for Perfect Matchings
)1(21
2/1)1(2
1||
1
)(
),()(min: 12/
,
2/1)(,: −≤−Ω≤=Φ −
∉∈∑≤Ω⊆ nn
nnS
yxPxn
SySx
SSS π
π
π
S
Consider this instance (family of instances):
Conductance:
Another MC for Perfect Matchings
S
−−≥
−
Φ≥ −
εεε
21log
21)1(2
21log1
21
21)( 32/ nnt n
mix
Consider this instance (family of instances):
Conductance:
Another MC for Perfect Matchings
S
−−≥
−
Φ≥ −
εεε
21log
21)1(2
21log1
21
21)( 32/ nnt n
mix
More on this chain: Dyer-Jerrum-Müller
What if improve mixing time analysis?
• canonical paths as before for perfect to perfect
• for near to perfect: exactly one alternating path – process it last
Just one perfect matching…
But exponentially many nears!
Back to the Sliding Chain: Permanent
Perfect matchings
State space
Exponentially smaller!
Counts perfect matchings in bipartite graphs
Idea [Jerrum-Sinclair-Vigoda]:
Change the weights of the states (change stationary distribution).
Perfect matchings
State space
Exponentially smaller!
Back to the Sliding Chain: Permanent
Idea [Jerrum-Sinclair-Vigoda]:
Change the weights of the states (change stationary distribution).
Perfect matchings
Exponentially smaller!
Back to the Sliding Chain: Permanent
n2+1 regions, very different weight
u,v
Idea [Jerrum-Sinclair-Vigoda]:
Change the weights of the states (change stationary distribution).
Back to the Sliding Chain: Permanent
u,v
n2+1 regions, each about the same weight
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
target
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
Back to the Sliding Chain: Permanent
u,v
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
u,v
How to compute ???
Approximate: start with an easy graph, gradually get to the target graph
Back to the Sliding Chain: Permanent
Ideal weights (for a matching with holes u,v):
(# perfects) / (# nears with holes u,v)
Edge weights: • 1 for edge • ¸ for non-edge
• Start with ¸=1: #perfect/#nears = n!/(n-1)!
λ and 4-apx of weights
Back to the Sliding Chain: Permanent
Ideal weights (for a matching with holes u,v):
¸(perfects) / ¸(nears with holes u,v)
Edge weights: • 1 for edge • ¸ for non-edge
• Start with ¸=1: #perfect/#nears = n!/(n-1)! • Repeat until λ < 1/n!:
λ and 2-apx of weights
2-apx = 4-apx for new λ
Back to the Sliding Chain: Permanent
Thm [Jerrum-Sinclair-Vigoda]:
FPRAS for the permanent.
OPEN PROBLEM:
counting perfect matchings in non-bipartite graphs
u u,v
¸(perfects) / ¸(nears with holes u,v)