a fast algorithm for enumerating bipartite perfect matchings takeaki uno (national institute of...

Post on 28-Dec-2015

220 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

A Fast Algorithm for Enumerating Bipartite Perfect Matchings

Takeaki Uno (National Institute of Informatics, JAPAN)

MotivationsGoal: find out general techniques and properties for

speed up enumeration algorithmsSpeeding up discrete algorithms. A lot of studies have been done.Enumeration algorithms: Algorithms have been proposed for various problems.Speeding up enumeration algorithm: Only few studies have been done.

Optimization => find a solutionEnumeration => find many solutions Techniques, structures , and analysis do not work well.

Original techniques for enumeration algorithms are required

Enumeration Problem of Bipartite Perfect Matchings

For a given bipartite graph G = (V, E),

output all the perfect matchings included in G

per matching

Matsui, Fukuda (’93) O(|E|)

I (’97) O(|V|) (amortized analysis)

Minimum weighted perfect matchings

Matsui, Fukuda O(|E||V|)

I (’01: submitting) O(|V|)

This talk: O( log |V|) ( both )

Partition the problem into two subproblems, and solve the subproblems recursively

1. Choose a vertex v

2. E1, E2 = Partition of edges incident to v

3. Solve two subproblems: enumeration of perfect matchings including an edge of Ei for i = 1,2

Subproblem of E1

= problem of ( V, E \ E2 )

Simple Algorithm

E1

E2

v

To partition the problem, subproblem of ( V, E \ Ei ) has to include at least one perfect matching

For a perfect matching M and a vertex v

1. Find a perfect matching M’ ≠ M

2. E1, E2 = Partition of edges incident to v such that

E1 includes an edge of M

E2 includes an edge of M’

Simple Algorithm 2

MM’v

How to find M’ ?

E1

E2

# iter ≤ 2 # perfect matchings

Use a directed graph DG( G, M )

· Orient edges of M in a direction

· Orient other edges in the opposite direction

A perfect matching M‘ exists a directed cycle is in DG( G, M )

M‘ is obtained by exchanging edges along the cycle

Finding M’ from M

M Operation of an iteration

= Finding a directed cycle

= O( |E|)

Consider speeding up an iteration

· Really take O( |E| ) time? --- in worst case, really take

· Dynamic graph approach --- maintain directed cycle

Similar to transitivity update, O( |V|2 )

· Amortized analysis --- distribute time to subproblems

A graph including a perfect matching requires O( |V|2 ) time

Difficulty of Speed up

Needs of

· improve algorithms

· improve amortized analysis

“Trimming and balancing“ generalized technique for speeding up

Proposed 3 years ago ( by I ) : Isaac98

· Time complexity analysis and speeding up using the analysis, specialized for enumeration algorithms

· Improved several algorithms, which had not been improved by existing techniques

Corollary of “Trimming and balancing“

For an iteration x of an (recursive type) enumeration algorithm,

T(x) : computation time for x

Chd(x) : Children of x

T* : amortized computation time for an iteration

Tl : maximum computation time of bottom level iterations

If for a constant α >1, for any x,

α T(x) - α ≤ ∑ T(y)       => T* = O ( Tl )                            y Chd(x)∈

If for a constant α > 1 , for any x and its child y ,

αT(y) + α ≥ T(x) => T* = O ( Tl × log ( input size ) )

( we use this here)

“Trimming and balancing“

Trimming and balancing improves algorithms by adding trimming phase and balancing phase to each iteration

Simple algorithm

· satisfies no these conditions

· Tl = O(|E|)

For each iteration,

add “trimming phase” to decrease Tl → O( 1 )

add “balancing phase” to satisfy T(x)-2 ≤ 4T(y)

Trimming PhasePass reduced graphs to subproblems

Remove edges

· included in all perfect matchings

· included in no perfect matching

→ included in no directed cycle

Contract 3 consecutive edges into an edgeTake O(|E|) time

Reduce to an equivalent problem

On bottom level input graph includes one perfect matching

→ O(1) size graph

→ Tl = O( 1 )

Trimming Phase 2

Lemma For a trimmed graph G = (V, E) a perfect matching M,DG(G, M) includes at least f(G) = |E| - |V| +cc(G) directed cycles(cc(G) : # of connected components of G )

In a trimmed graph G = (V, E) |E| ≥ 1.25|V| → |E| - |V| ≥ 0.2|E|

→ G = (V, E) includes at least 0.2|E| perfect matchings

→ Tl = O( 1 )

Balancing Phase

Set E1 , E2 in arbitrary way

If ( V, E \ Ei ) has few edges after trimming phase,

re-choose E1 , E2

f(G) = |E| - |V| + ( # of connected components of G )

→ ( V, E \ Ei ) can includes few edges but

4 f( ( V, E \ Ei ) ) + 2 ≥ f(G)

Re-choose edge sets

If ( V, E \ Ei ) has few edges after trimming phase

then DG(G, M) includes many edges included in only directed cycles including edges of Ei

E1

E2

Take O(|E|) time

Ei

Analysis

An iteration inputting G=( V, E ) takes

O(|V|+|E|) = O( f(G) ) time

On bottom level, O(|V|+|E|) = O( f(G) ) = O(1) → Tl = O( 1 )

From balancing phase, 4 f( (V, E \ Ei ) ) + 4 ≥ f(G)

From Theorem,

time complexity = O( 1 × log n (=log m) ) per perfect matching

Conclusion

Speeded up enumeration algorithm of perfect matchings, using “trimming and balancing”

top related