110 likes | 346 Views
Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo. Algoritmo polinomial para o problema de isomorfismo de grafos. Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti. Aplicações.
E N D
Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo Algoritmo polinomial para o problema de isomorfismo de grafos Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Aplicações • Isomorfismo de grafos é um problema que pode ser aplicado a diversas áreas como: • Química • Biologia Computacional • Papiloscopia Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Isomorfismo de grafos Dois grafos G1=(V1,E1) e G2=(V2,E2) são ditos isomorfos, se existir uma função bijetora f : V1 → V2 onde as seguintes condições são satisfeitas: • Para cada aresta (a, b) de E1, temos uma aresta (f(a), f(b)) em E2; • Toda aresta de E2 tem a forma (f(a), f(b)) para alguma aresta (a, b) de E1. Função: { (1 1), (2 2) , (3 4), (4 5), (53) } 1 3 3 2 2 4 5 1 5 4 Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Definições • Grafo Colateral: é o grafo G\uv (isso significa grafo G sem a aresta uv). • Grafo Par: é formado por vértices do grafo colateral, que estão presentes nos caminhos mínimais entre u e v e por arestas formadas por estes vértices, também presentes em G. • Matriz de códigos (matriz sinal): Cada célula é preenchida conforme a seguinte formula: Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Definições • +-: Se existe uma resta ligando u e v diretamente, então usamos o sinal +. Caso não exista essa aresta, usamos o sinal -. • d: mínima distância entre u e v no grafo colateral, se o vértice origem e destino são os mesmos, (caminho mínimo, Dijkstra). • nuv: número de vértices do grafo par Guv • muv: é o número de arestas do grafo par Guv • Vetor de freqüência de códigos: é um vetor relativo a um código, que armazena a freqüência que cada código aparece em uma coluna da matriz de códigos. • Classe: se dois vértices, linhas ou colunas, de uma matriz forem iguais eles pertencem a mesma classe. • Forma canônica: é uma permutação da matriz de código conforme a permutação dos vetores de freqüência de códigos. Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Matriz de Códigos/Vetor de Freqüências 1 3 2 5 4 Ordenado Forma canônica Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Matriz de Códigos/Vetor de Frequências 1 3 3 2 2 4 5 1 5 4 Forma canônica Ordenado Forma canônica Ordenado Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo • 1 - Calcular MCA e MCB dos grafos GA e GB dados; • 2 - Calcular VFCA e VFCB; • 3 - Ordenar lexicograficamente VFCA e VFCB , e obter SA* e SB*; • 4 - Se VFCA <> VFCB , então os grafos não são isomorfos; • 5 - Senão, para cada k = 1 .. n, faça: • 6 - A = SA* e B = SB*; • 7 - Troque as linhas (1,k) e as colunas (1,k) de B; • 8 - Se possível, reordene B para que fique igual a A; • 9 - Se A = B, pare pois os grafos são isomorfos; • 10 - Se A <> B, então os grafos não são isomorfos. Senão, os grafos são isomorfos e a reordenação dos vértices de G_B para se obter B = A fornece uma função explícita de isomorfismo. Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Complexidade • O algoritmo usa Dijkstra, que está em P, para calcular d(u,v) e as quantidades de vértices e arestas em Guv. Logo, precisamos de um tempo polinomial para obtermos os códigos: suv= +- duv.nuv.muv ; • Para obtermos uma MC precisamos calcular n² códigos, como para calcular um código levamos um tempo polinomial, temos que este passo termina em tempo polinomial; • A ordenação de VFC's leva um tempo polinomial, pois para isto basta usarmos um método de ordenação qualquer. Portanto, a obtenção da forma canônica de uma MC é polinomial; • O procedimento de mapeamento dos vértices de GA e GB, também é polinomial. São no máximo n² comparações entre células de A = S*A e B = S*B para encontrarmos uma ocorrência de células distintas. Durante este procedimento precisamos de um tempo polinomial para encontrar as células que devem assumir os lugares das células em B que forem distintas das células em A. Esse procedimento é feito em no máximo n² iterações e, portanto, o tempo é polinomial; Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Complexidade • O item anterior é executado em no máximo n vezes; • Portanto, o tempo total de execução do algoritmo é polinomial; Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Referências • J.W. Raymond e P. Willett. “Maximumcommonsubgraphisomorphismalgorithms for thematchingofchemicalstructures”. JournalofComputer-Aided Molecular Design, 16(7):521–533, July 2002. • H. H. Gan, S. Pasquali, e T. Schlick. “Exploringtherepertoireof RNA secondarymotifsusinggraphtheory; implications for RNA design”. NucleicAcidsRes, 31(11):2926–2943, June 2003. ISSN 1362-4962. • R. C. Nandi (2006). “Isomorfismo de Grafos Aplicado à Comparação de Impressões Digitais”. Dissertação de mestrado, Universidade Federal do Paraná. • AshayDharwadker, John-TagoreTevet. “TheGraphIsomorphismAlgorithm”. Acessado em: 21/06/2009. Disponível em: http://www.geocities.com/dharwadker/tevet/isomorphism/ Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti