# What is the significance of the graph isomorphism problem?

It seems that graph isomorphism is an overwhelmingly interesting problem, particularly computationally. Why is that? What are the (theoretical and practical) implication of the existence of an algorithm, which decides isomorphism of graphs effectively? (I have assumed that there is still no such algorithm known to human, am I right?)

-

1
– binn Sep 3 '12 at 16:42

## 1 Answer

You are mistaken that there is no known algorithm for graph isomorphism. There is an obvious algorithm: given graphs $G$ and $H$ with the same number of vertices, enumerate all possible bijective mappings from the vertices of $G$ to the vertices of $H$, and then check (in $O(v^2)$ time) to see if each mapping is an isomorphism. This algorithm is guaranteed to terminate; it has running time $O(v!v^2)$.

As I understand it, though, the theoretical significance of this problem is that it is suspected to be NP-intermediate (NPI). That is:

1. It is clearly in NP. (The NTM guesses a possible isomorphism and then checks it in polynomial time)
2. It is suspected not to be NP-complete
3. It is suspected not to be in P.

The existence of an NPI problem is equivalent to P≠NP, so NPI problems are interesting for at least this reason.

Garey and Johnson give the following reasons for suspecting that graph isomorphism might be NPI:

Researchers who have attempted to prove that GRAPH ISOMORPHISM is NP-complete have noted that its nature is much more constrained than that of a typical NP-complete problem, such as SUBGRAPH ISOMORPHISM. NP-completeness proofs seem to require a bit of leeway; if the desired structure $X$ (subset, permutation, schedule, etc.) exists, it should still exist even if certain aspects of the instance are locally altered. Forexample, a function $f$ will be an isomorphism between a graph $H$ and a subgraph of a graph $G$ even if we add edges to $G$ or delete edges not in the image of $f$. However, if $f$ is an isomorphism between $H$ and $G$ itself, then any change in $G$ must be reflected by a corresponding change in $H$, or else $f$ will no longer be an isomorphism. In other words, proofs of NP-completeness seem to require a certain amount of redundancy in the target problem, a redundancy that GRAPH ISOMORPHISM lacks. Unfortunately, this lack of redundancy does not seem to be much of a help in designing a polynomial time algorithm for GRAPH ISOMORPHISM either, so perhaps it belongs to NPI.

(Computers and Intractibility, pages 155–156)

In contrast, the subgraph isomorphism problem is known to be NP-complete. This is the problem of deciding, given graphs $G$ and $H$, whether $G$ is isomorphisc to some subgraph of $H$. An efficient solution to this problem obviously solves Clique, Maximal Independent Set, Hamiltonian Cycle, and other similar problems.

-
Nice answer! Btw. I think the poster meant that there is no known "effective" (which probably means polynomial) algorithm that decides graph isomorphism. Which is true. – Gabor Csardi Sep 4 '12 at 4:47

1
@GaborCsardi I wondered that myself. But "effective" is an unusual word to use, and has a precise technical meaning in this context, so I took them at their word. – MJD Sep 4 '12 at 10:05
@MJD: Note that there are some languages where the word for "efficient" is disappointingly close to "effective". For example, "efficient" is effektiv in Danish. – Henning Makholm Sep 4 '12 at 13:44

1
@Henning Okay, but I'm not sure it would be useful for me to try to second-guess the poster's expressed meaning on what they might possibly have meant had it been written in some other language. I think a better strategy might be to take them at their word and then wait to see if they post clarifications in response. – MJD Sep 4 '12 at 22:09
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 22, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9532471895217896, "perplexity_flag": "head"}