Graph isomorphism problem
![]() |
Open problem in computer science: Can the graph isomorphism problem be solved in polynomial time?
(more open problems in computer science) |
The graph isomorphism problem is the computational problem of determining whether two finite graphs are isomorphic.
The problem is neither known to be solvable in polynomial time nor NP-complete, and therefore may be in the computational complexity class NP-intermediate. It is known that the graph isomorphism problem is in the low hierarchy of class NP, which implies that it is not NP-complete unless the polynomial time hierarchy collapses to its second level.[1] At the same time, isomorphism for many special classes of graphs can be solved in polynomial time, and in practice graph isomorphism can often be solved efficiently.[2]
This problem is a special case of the subgraph isomorphism problem,[3] which is known to be NP-complete. It is also known to be a special case of the non-abelian hidden subgroup problem over the symmetric group.[4]
Contents
State of the art
The best current theoretical algorithm is due to Babai & Luks (1983), and is based on the earlier work by Luks (1982) combined with a subfactorial algorithm due to Zemlyachenko, Korneenko & Tyshkevich (1985). The algorithm relies on the classification of finite simple groups. Without CFSG, a slightly weaker bound 2O(√n log2 n) was obtained first for strongly regular graphs by László Babai (1980), and then extended to general graphs by Babai & Luks (1983). Improvement of the exponent √n is a major open problem; for strongly regular graphs this was done by Spielman (1996). For hypergraphs of bounded rank, a subexponential upper bound matching the case of graphs, was obtained by Babai & Codenotti (2008).
In 2015, Babai announced a quasipolynomial time algorithm.[5][6]
On a side note, the graph isomorphism problem is computationally equivalent to the problem of computing the automorphism group of a graph, and is weaker than the permutation group isomorphism problem, and the permutation group intersection problem. For the latter two problems, Babai, Kantor & Luks (1983) obtained complexity bounds similar to that for graph isomorphism.
There are several competing practical algorithms for graph isomorphism, due to McKay (1981), Schmidt & Druffel (1976), Ullman (1976), etc. While they seem to perform well on random graphs, a major drawback of these algorithms is their exponential time performance in the worst case.[7]
Solved special cases
A number of important special cases of the graph isomorphism problem have efficient, polynomial-time solutions:
- Trees[8][9]
- Planar graphs[10] (In fact, planar graph isomorphism is in log space,[11] a class contained in P)
- Interval graphs[12]
- Permutation graphs[13]
- Bounded-parameter graphs
- Graphs of bounded treewidth[14]
- Graphs of bounded genus[15] (Note: planar graphs are graphs of genus 0)
- Graphs of bounded degree[16]
- Graphs with bounded eigenvalue multiplicity[17]
- k-Contractible graphs (a generalization of bounded degree and bounded genus)[18]
- Color-preserving isomorphism of colored graphs with bounded color multiplicity (i.e., at most k vertices have the same color for a fixed k) is in class NC, which is a subclass of P[19]
Complexity class GI
Since the graph isomorphism problem is neither known to be NP-complete nor to be tractable, researchers have sought to gain insight into the problem by defining a new class GI, the set of problems with a polynomial-time Turing reduction to the graph isomorphism problem.[20] If in fact the graph isomorphism problem is solvable in polynomial time, GI would equal P.
As is common for complexity classes within the polynomial time hierarchy, a problem is called GI-hard if there is a polynomial-time Turing reduction from any problem in GI to that problem, i.e., a polynomial-time solution to a GI-hard problem would yield a polynomial-time solution to the graph isomorphism problem (and so all problems in GI). A problem is called complete for GI, or GI-complete, if it is both GI-hard and a polynomial-time solution to the GI problem would yield a polynomial-time solution to
.
The graph isomorphism problem is contained in both NP and co-AM. GI is contained in and low for Parity P, as well as contained in the potentially much smaller class SPP.[21] That it lies in Parity P means that the graph isomorphism problem is no harder than determining whether a polynomial-time nondeterministic Turing machine has an even or odd number of accepting paths. GI is also contained in and low for ZPPNP.[22] This essentially means that an efficient Las Vegas algorithm with access to an NP oracle can solve graph isomorphism so easily that it gains no power from being given the ability to do so in constant time.
GI-complete and GI-hard problems
Isomorphism of other objects
There are a number of classes of mathematical objects for which the problem of isomorphism is a GI-complete problem. A number of them are graphs endowed with additional properties or restrictions:[23]
- digraphs[23]
- labelled graphs, with the proviso that an isomorphism is not required to preserve the labels,[23] but only the equivalence relation consisting of pairs of vertices with the same label
- "polarized graphs" (made of a complete graph Km and an empty graph Kn plus some edges connecting the two; their isomorphism must preserve the partition)[23]
- 2-colored graphs[23]
- explicitly given finite structures[23]
- multigraphs[23]
- hypergraphs[23]
- finite automata[23]
- Markov Decision Processes[24]
- commutative class 3 nilpotent (i.e., xyz = 0 for every elements x, y, z) semigroups[23]
- finite rank associative algebras over a fixed algebraically closed field with zero squared radical and commutative factor over the radical.[23][25]
- context-free grammars[23]
- balanced incomplete block designs[23]
- Recognizing combinatorial isomorphism of convex polytopes represented by vertex-facet incidences.[26]
-
This list is incomplete; you can help by expanding it.
GI-complete classes of graphs
A class of graphs is called GI-complete if recognition of isomorphism for graphs from this subclass is a GI-complete problem. The following classes are GI-complete:[23]
- connected graphs[23]
- graphs of diameter 2 and radius 1[23]
- directed acyclic graphs[23]
- regular graphs[23]
- bipartite graphs without non-trivial strongly regular subgraphs[23]
- bipartite Eulerian graphs[23]
- bipartite regular graphs[23]
- line graphs[23]
- split graphs[27]
- chordal graphs[23]
- regular self-complementary graphs[23]
- polytopal graphs of general, simple, and simplicial convex polytopes in arbitrary dimensions.[28]
-
This list is incomplete; you can help by expanding it.
Many classes of digraphs are also GI-complete.
Other GI-complete problems
There are other nontrivial GI-complete problems in addition to isomorphism problems.
- The recognition of self-complementarity of a graph or digraph.[29]
- A clique problem for a class of so-called M-graphs. It is shown that finding an isomorphism for n-vertex graphs is equivalent to finding an n-clique in an M-graph of size n2. This fact is interesting because the problem of finding an (n − ε)-clique in a M-graph of size n2 is NP-complete for arbitrarily small positive ε.[30]
- The problem of homeomorphism of 2-complexes.[31]
GI-hard problems
- The problem of counting the number of isomorphisms between two graphs is polynomial-time equivalent to the problem of telling whether even one exists.[32]
- The problem of deciding whether two convex polytopes given by either the V-description or H-description are projectively or affinely isomorphic. The latter means existence of a projective or affine map between the spaces that contain the two polytopes (not necessarily of the same dimension) which induces a bijection between the polytopes.[28]
Program checking
Manuel Blum and Sampath Kannan (1995) have shown a program checker for graph isomorphism. Suppose P is a claimed polynomial-time procedure that checks if two graphs are isomorphic, but it is not trusted. To check if G and H are isomorphic:
- Ask P whether G and H are isomorphic.
- If the answer is "yes':
- Attempt to construct an isomorphism using P as subroutine. Mark a vertex u in G and v in H, and modify the graphs to make them distinctive (with a small local change). Ask P if the modified graphs are isomorphic. If no, change v to a different vertex. Continue searching.
- Either the isomorphism will be found (and can be verified), or P will contradict itself.
- If the answer is "no":
- Perform the following 100 times. Choose randomly G or H, and randomly permute its vertices. Ask P if the graph is isomorphic to G and H. (As in AM protocol for graph nonisomorphism).
- If any of the tests are failed, judge P as invalid program. Otherwise, answer "no".
- If the answer is "yes':
This procedure is polynomial-time and gives the correct answer if P is a correct program for graph isomorphism. If P is not a correct program, but answers correctly on G and H, the checker will either give the correct answer, or detect invalid behaviour of P. If P is not a correct program, and answers incorrectly on G and H, the checker will detect invalid behaviour of P with high probability, or answer wrong with probability 2−100.
Notably, P is used only as a blackbox.
Applications
In cheminformatics and in mathematical chemistry, graph isomorphism testing is used to identify a chemical compound within a chemical database.[33] Also, in organic mathematical chemistry graph isomorphism testing is useful for generation of molecular graphs and for computer synthesis.
Chemical database search is an example of graphical data mining, where the graph canonization approach is often used.[34] In particular, a number of identifiers for chemical substances, such as SMILES and InChI, designed to provide a standard and human-readable way to encode molecular information and to facilitate the search for such information in databases and on the web, use canonization step in their computation, which is essentially the canonization of the graph which represents the molecule.
In electronic design automation graph isomorphism is the basis of the Layout Versus Schematic (LVS) circuit design step, which is a verification whether the electric circuits represented by a circuit schematic and an integrated circuit layout are the same.[35]
See also
Notes
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
References
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found.
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found.. English translation in Journal of Mathematical Sciences 22 (3): 1285–1289, 1983.
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found.. Full paper in Information and Control 56 (1–2): 1–20, 1983.
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found.; also Journal of Computer and System Sciences 37: 312–323, 1988.
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
Surveys and monographs
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found.. (Translated from Zapiski Nauchnykh Seminarov Leningradskogo Otdeleniya Matematicheskogo Instituta im. V. A. Steklova AN SSSR (Records of Seminars of the Leningrad Department of Steklov Institute of Mathematics of the USSR Academy of Sciences), Vol. 118, pp. 83–158, 1982.)
- Lua error in package.lua at line 80: module 'strict' not found.. (A brief survey of open questions related to the isomorphism problem for graphs, rings and groups.)
- Lua error in package.lua at line 80: module 'strict' not found.. (From the book cover: The books focuses on the issue of the computational complexity of the problem and presents several recent results that provide a better understanding of the relative position of the problem in the class NP as well as in other complexity classes.)
- Lua error in package.lua at line 80: module 'strict' not found.. (This 24th edition of the Column discusses the state of the art for the open problems from the book Computers and Intractability and previous columns, in particular, for Graph Isomorphism.)
- Lua error in package.lua at line 80: module 'strict' not found..
Software
- Graph Isomorphism, review of implementations, The Stony Brook Algorithm Repository.
- ↑ Schöning (1987).
- ↑ McKay (1981).
- ↑ Ullman (1976).
- ↑ Moore, Russell & Schulman (2008).
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Babai (2015)
- ↑ Foggia, Sansone & Vento (2001).
- ↑ Kelly (1957).
- ↑ Aho, Hopcroft & Ullman (1974), p. 84-86.
- ↑ Hopcroft & Wong (1974).
- ↑ Datta et al. (2009).
- ↑ Booth & Lueker (1979).
- ↑ Colbourn (1981).
- ↑ Bodlaender (1990).
- ↑ Miller 1980; Filotti & Mayer 1980.
- ↑ Luks (1982).
- ↑ Babai, Grigoryev & Mount (1982).
- ↑ Miller (1983).
- ↑ Luks (1986).
- ↑ Booth & Colbourn 1977; Köbler, Schöning & Torán 1993.
- ↑ Köbler, Schöning & Torán 1992; Arvind & Kurur 2006
- ↑ Arvind & Köbler (2000).
- ↑ 23.00 23.01 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09 23.10 23.11 23.12 23.13 23.14 23.15 23.16 23.17 23.18 23.19 23.20 23.21 23.22 23.23 Zemlyachenko, Korneenko & Tyshkevich (1985)
- ↑ Narayanamurthy & Ravindran (2008).
- ↑ Grigor'ev (1981).
- ↑ Johnson (2005); Kaibel & Schwartz (2003).
- ↑ Chung (1985).
- ↑ 28.0 28.1 Kaibel & Schwartz (2003).
- ↑ Colbourn & Colbourn (1978).
- ↑ Kozen (1978).
- ↑ Shawe-Taylor & Pisanski (1994).
- ↑ Mathon (1979); Johnson 2005.
- ↑ Irniger (2005).
- ↑ Cook & Holder (2007).
- ↑ Baird & Cho (1975).