O isomorfismo gráfico foi mencionado junto com os testes de primalidade já em 1971 no famoso artigo de Cook sobre NP-completeness. Cook menciona que ele não conseguiu provar a completude de ambos os problemas. Atualmente, sabíamos que o teste de primalidade está em P, mas o status do isomorfismo gráfico ainda é desconhecido. A maioria dos especialistas conjectura que é "NP intermediário", ou seja, não em P, mas não em NP completo. Alguma conjetura de que deve ser solucionável em tempo quase-polinomial (algoritmos em execução no tempo ). O algoritmo mais conhecido atualmente, devido a Luks, tem tempo de execução . Ele usa o chamado método da teoria de grupos.2logO(1)n2O(nlogn√)
As duas abordagens mais comuns são a individualização / refinamento e o método da teoria de grupos. A primeira abordagem tenta combinar vértices de um gráfico com vértices do outro. Dado um vértice de grau pertencente ao primeiro gráfico, ele só pode corresponder a um vértice de grau no outro gráfico, mas isso não oferece economia se os dois gráficos forem regulares. A individualização / refinamento é uma estrutura para gerar "tipos" de vértices mais detalhados.ddd
É possível que uma abordagem semelhante possa aprimorar o método espectral (que, como afirmado, falha nos gráficos cospectrais), mas não conheço nenhum trabalho nesse sentido (embora possa existir; não sou especialista nesta área).
O método da teoria de grupos reduz o isomorfismo de grafos ao problema de encontrar geradores para os grupos de grafos de automorfismos. Dados dois gráficos a idéia é calcular geradores para e verificar se algum deles alterna um vértice de com um vértice de . Para mais detalhes, consulte, por exemplo, notas de aula de Arvind.G1,G2Aut(G1∪G2)G1G2
Para uma visão geral recente do estado da arte, consulte um artigo de Babai; Babai é um dos principais pesquisadores da área.
O isomorfismo prático dos grafos é uma questão completamente diferente. Uma visão geral recente pode ser encontrada em um artigo de McKay, autor do popular pacote nauty
.