Date post: | 03-Jan-2016 |
Category: |
Documents |
Upload: | virgil-strickland |
View: | 214 times |
Download: | 1 times |
Computing Tutte Polynomials
David J. PearceVictoria University of Wellington
Gary HaggardBucknell, USA
Gordon RoyleUniversity of Western Australia
Tutte Polynomial – what is it?
• It’s a 2-variable polynomial on graphs:
– T(x,y) = y + y2 + x + 2xy + 2x2 + x^3
• What can we do with it?– T(1,1) gives the number of spanning trees– T(2,2) gives 2|e|
– T(1-x,0) gives the Chromatic polynomial P(x)– T(0,1-x) gives the Flow polynomial F(x)
– T(…,…) gives … who knows?
Great, but why do we care?
• Many applications of Tutte polynomial– Physics (q-state Potts model), Biology and
probably lots more …
• Knots– Tangled cords which can’t be unravelled
– Problem: how do we know when two knots are same?
-- N.R. Cozzarelli and A. Stasiak
Computing Tutte Polynomials
• Delete/Contract Operations:
• Tutte Definition:
T(G) = 1, if G = T(G) = xT(G-e), if e is a bridgeT(G) = yT(G-e), if e is a loopT(G) = T(G-e) + T(G/e), otherwise
G = G–e = G/e =
An Example 1. T(G) = 1, if G = 2. T(G) = xT(G-e), if e is a
bridge3. T(G) = yT(G-e), if e is a loop4. T(G) = T(G-e) + T(G/e),
otherwise
An Example 1. T(G) = 1, if G = 2. T(G) = xT(G-e), if e is a
bridge3. T(G) = yT(G-e), if e is a loop4. T(G) = T(G-e) + T(G/e),
otherwise
x
2
An Example 1. T(G) = 1, if G = 2. T(G) = xT(G-e), if e is a
bridge3. T(G) = yT(G-e), if e is a loop4. T(G) = T(G-e) + T(G/e),
otherwise
x
x
2
4
An Example 1. T(G) = 1, if G = 2. T(G) = xT(G-e), if e is a
bridge3. T(G) = yT(G-e), if e is a loop4. T(G) = T(G-e) + T(G/e),
otherwise
x
x
x
x
2
24
4
An Example 1. T(G) = 1, if G = 2. T(G) = xT(G-e), if e is a
bridge3. T(G) = yT(G-e), if e is a loop4. T(G) = T(G-e) + T(G/e),
otherwise
x
x
x
x
x x y x2
2
2
22 3
4
4
Caching via Graph Isomorphism
• Are these two the same graph?
• Graph Isomorphism– Best known algorithm takes exponential
time– Nauty – implementation by Brendon McKay– What is complexity of graph isomorphism ?
3 4
5
21 4
51
32
Edge-Selection Heuristics
• Vertex Order (VORDER)– A fixed order of vertices is used– Edges from 1st node first, then 2nd, then 3rd, etc
• Minimise Single Degree (MINSDEG)– Edge selected whose end-point has smallest degree
• Minimise Degree (MINDEG)– Edge selection whose degree sum is smallest of any
• Maximise Single Degree (MAXSDEG)• Maximse Degree (MAXDEG)
12
34
5
Edge-Selection Heuristics
• Vertex Order (VORDER)– A fixed order of vertices is used– Edges from 1st node first, then 2nd, then 3rd, etc
• Minimise Single Degree (MINSDEG)– Edge selected whose end-point has smallest degree
• Minimise Degree (MINDEG)– Edge selection whose degree sum is smallest of any
• Maximise Single Degree (MAXSDEG)• Maximse Degree (MAXDEG)
12
34
5
Edge-Selection Heuristics
• Vertex Order (VORDER)– A fixed order of vertices is used– Edges from 1st node first, then 2nd, then 3rd, etc
• Minimise Single Degree (MINSDEG)– Edge selected whose end-point has smallest degree
• Minimise Degree (MINDEG)– Edge selection whose degree sum is smallest of any
• Maximise Single Degree (MAXSDEG)• Maximse Degree (MAXDEG)
12
34
5
Random Graph (12 vertices, 20 edges)
VOrder (272 Graphs, 72/170 hits)
Minsdeg (188 graphs, 47/91 hits)
Random Graph (9 vertices, 16 edges)
VOrder (138 Graphs, 24/86 hits)
Minsdeg (150 graphs, 14/50 hits)
Future Work
• Decremental Graph Algorithms:– Decremental Graph Isomorphism ?– Decremental Biconnected Components
• Edge Selection Heuristics:– Can we understand why Vorder and Minsdeg do
well?– Can we find better heuristics?
• Edge Addition/Contract:– Can we implement this for Tutte?– Can we move towards other graph classes --- e.g.
chordal graphs?
Edge Contract/Addition
• Contract/Addition– T(G) = T(G/e) + T(G-e) T(G-e) = T(G) – T(G/e) T(G) = T(G+e) – T(G/e)
• Idea:– For dense graphs move towards complete graph– For sparse graphs, move towards empty graph (as
before)
• Problem– Computing Tutte polynomial for complete multi-graph
is difficult ?
• BUT, for chromatic polynomial computation we have not multigraphs …
Future Work
• Decremental Graph Algorithms:– Decremental Graph Isomorphism ?– Decremental Biconnected Components
• Edge Selection Heuristics:– Can we understand why Vorder and Minsdeg do
well?– Can we find better heuristics?
• Edge Addition/Contract:– Can we implement this for Tutte?– Can we move towards other graph classes --- e.g.
chordal graphs?