universidade federal do espírito santo – ufes mestrado em informática projeto e análise de...
Post on 17-Apr-2015
113 Views
Preview:
TRANSCRIPT
Universidade Federal do Espírito Santo – UFES
Mestrado em Informática
Projeto e análise de algoritmo
Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Isomorfismo de grafos é um problema que pode ser aplicado a diversas áreas como:QuímicaBiologia ComputacionalPapiloscopia
Aplicações
Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
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) }
Isomorfismo de grafos
1 5
2 3
4
1 3
2
54
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
+-: 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 Guvmuv : é o número de arestas do grafo par GuvVetor 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.
Algoritmo - Definições
Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Matriz de Códigos/Vetor de Freqüências1 3
2
54
G2 (Matriz de código)
1 2 3 4 5
1 +2.3.3 -2.3.2 -2.3.2
2 +2.3.3 -0.1.0 +2.3.3 +3.4.4
3 +2.3.3 +2.3.3 -0.1.0 -2.4.4 +3.4.4
4 -2.3.2 +3.4.4 -2.4.4 -0.1.0
5 -2.3.2 -2.4.4 +3.4.4 +3.4.4 -0.1.0
3 2 5 4 1
3 -0.1.0 +2.3.3 +3.4.4 -2.4.4 +2.3.3
2 +2.3.3 -0.1.0 -2.4.4 +3.4.4 +2.3.3
5 +3.4.4 -2.4.4 -0.1.0 +3.4.4 -2.3.2
4 -2.4.4 +3.4.4 +3.4.4 -0.1.0 -2.3.2
1 +2.3.3 +2.3.3 -2.3.2 -2.3.2 -0.1.0
G2 (Vetor de freqüência de código)
1 2 3 4 5
-2.3.2 0 0 1 1
-2.4.4 1 1 1 1
-0.1.0 1 1 1 1
+2.3.3 2 2 0 0
+3.4.4 1 1 2 2
3 2 5 4 1
-2.3.2 0 0 1 1 2
-2.4.4 1 1 1 1 0
-0.1.0 1 1 1 1 1
+2.3.3 2 2 0 0 2
+3.4.4 1 1 2 2 0
Forma canônica Ordenado
Classe 1 1 2 2 3
Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo - Matriz de Códigos/Vetor de Frequências
1 5
2 3
4
1 3
2
54
G1 (Matriz de código)
1 2 3 4 5
1 -0.1.0 +2.3.3 -2.3.2 -2.3.2 +2.3.3
2 -2.3.3 -0.1.0 +3.4.4 -2.4.4 +2.3.3
3 -2.3.2 +3.4.4 -0.1.0 +3.4.4 -2.4.4
4 -2.3.2 -2.4.4 +3.4.4 -0.1.0 +3.4.4
5 +2.3.3 +2.3.3 -2.4.4 +3.4.4 -0.1.0
5 2 3 4 1
5 -0.1.0 +2.3.3 -2.4.4 +3.4.4 +2.3.3
2 +2.3.3 -0.1.0 +3.4.4 -2.4.4 +2.3.3
3 -2.4.4 +3.4.4 -0.1.0 +3.4.4 -2.3.2
4 +3.4.4 -2.4.4 +3.4.4 -0.1.0 -2.3.2
1 +2.3.3 +2.3.3 -2.3.2 -2.3.2 -0.1.0
G1 (Vetor de freqüência de código)
1 2 3 4 5
-2.3.3 2 0 1 1 0
-2.4.4 0 1 1 1 1
-0.1.0 1 1 1 1 1
+2.3.3 2 2 0 0 2
+3.4.4 0 1 2 2 1
5 2 3 4 1
-2.3.3 0 0 1 1 2
-2.4.4 1 1 1 1 0
-0.1.0 1 1 1 1 1
+2.3.3 2 2 0 0 2
+3.4.4 1 1 2 2 0
Forma canônica Ordenado
G2 (Matriz de código)
1 2 3 4 5
1 -0.1.0 +2.3.3 +2.3.3 -2.3.2 -2.3.2
2 +2.3.3 -0.1.0 +2.3.3 +3.4.4 -2.4.4
3 +2.3.3 +2.3.3 -0.1.0 -2.4.4 +3.4.4
4 -2.3.2 +3.4.4 -2.4.4 -0.1.0 +3.4.4
5 -2.3.2 -2.4.4 +3.4.4 +3.4.4 -0.1.0
3 2 5 4 1
3 -0.1.0 +2.3.3 +3.4.4 -2.4.4 +2.3.3
2 +2.3.3 -0.1.0 -2.4.4 +3.4.4 +2.3.3
5 +3.4.4 -2.4.4 -0.1.0 +3.4.4 -2.3.2
4 -2.4.4 +3.4.4 +3.4.4 -0.1.0 -2.3.2
1 +2.3.3 +2.3.3 -2.3.2 -2.3.2 -0.1.0
G2 (Vetor de freqüência de código)
1 2 3 4 5
-2.3.2 2 0 0 1 1
-2.4.4 0 1 1 1 1
-0.1.0 1 1 1 1 1
+2.3.3 2 2 2 0 0
+3.4.4 0 1 1 2 2
3 2 5 4 1
-2.3.2 0 0 1 1 2
-2.4.4 1 1 1 1 0
-0.1.0 1 1 1 1 1
+2.3.3 2 2 0 0 2
+3.4.4 1 1 2 2 0
Forma canônica Ordenado
Classe 1 1 2 2 3Classe 1 1 2 2 3
Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Algoritmo
1 - Calcular MCA e MC
B dos grafos G
A e G
B dados;
2 - Calcular VFCA e VFC
B;
3 - Ordenar lexicograficamente VFCA e VFC
B , e obter S
A* e S
B*;
4 - Se VFCA <> VFC
B , 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 G
uv. 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
Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti
Referências
J.W. Raymond e P. Willett. “Maximum common subgraph isomorphism algorithms for the matching of chemical structures”. Journal of Computer-Aided Molecular Design, 16(7):521–533, July 2002.
H. H. Gan, S. Pasquali, e T. Schlick. “Exploring the repertoire of RNA secondary motifs using graph theory; implications for RNA design”. Nucleic Acids Res, 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á.
Ashay Dharwadker, John-Tagore Tevet. “The Graph Isomorphism Algorithm”. Acessado em: 21/06/2009. Disponível em: http://www.geocities.com/dharwadker/tevet/isomorphism/
top related