Markov Chain Mixing Times And Applications III: …Markov Chain Mixing Times And Applications III:...

Post on 25-Jul-2020

4 views 0 download

Transcript of Markov Chain Mixing Times And Applications III: …Markov Chain Mixing Times And Applications III:...

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)