universidade federal do espírito santo – ufes mestrado em informática projeto e análise de...

11
Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti

Upload: internet

Post on 17-Apr-2015

113 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti

Universidade Federal do Espírito Santo – UFES

Mestrado em Informática

Projeto e análise de algoritmo

Diego Barcelos Rodrigues / Kamila Ribeiro Ghidetti

Page 2: 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

Page 3: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 4: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 5: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 6: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 7: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 8: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 9: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 10: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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

Page 11: Universidade Federal do Espírito Santo – UFES Mestrado em Informática Projeto e análise de algoritmo 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/