SlideShare uma empresa Scribd logo
1 de 9
Provas NP Completo
Problema do Isomorfismo em Subgrafos
Projeto e Análise de Algoritmos
1o. Semestre de 2014
Hugo Santos – silvasantosh@gmail.com
Definição
1) Na computação o Problema de Isomorfismos em grafos é um problema de
decisão do qual sabemos que pertence à classe NP-Completo. Na teoria dos
grafos, dois grafos H e G são isomorfos se existe uma correspondência 1-a-1
entre seus conjuntos de vértices que preserve as adjacências
(a - w; b - x; c - z; d- y).
Definição
1) O Problema do Isomorfismo em Subgrafos (Subgraph isomorphism problem) é
que dados dois grafos H e G, a pergunta que pode ser feita é: H é isomórfico a
um subgrafo de G?
H é isomórfico a um subgrafo de G
(u; v) = (f(u); f(v))
Etapas da Prova NP-Completo
1) Mostrar que Isomorfismo em Subgrafos (π) está em NP: problemas
de decisão cuja solução pode ser verificada em tempo polinomial
com algoritmo determinista.
2) Mostrar que um problema NP-completo conhecido (π‘) pode ser
polinomialmente transformado para ele (π‘ α π).
Mostrar que Isomorfismo em Subgrafos
(π) está em NP
1) Algoritmo determinista para verificar a solução em tempo
polinomial:
Sejam os grafos H e G, e os conjuntos de vértices pertencentes a cada um deles, v1, ...
vn e u1,...un, respectivamente. O algoritmo então verifica de forma trivial que
∀(vi,vj) ϵ H, ∃(ui,uj) ϵ G
Mostrar que um problema NP-completo conhecido (π‘)
pode ser polinomialmente transformado para ele (π‘ α π)
1) O problema da CLIQUE (π‘ ), conhecido por pertencer a classe
NP-Completo em sua versão de decisão. Na teoria dos grafos,
denomina-se a CLIQUE de um grafo como sendo um subgrafo
completo desse.
2) Problema: Dado um grafo G e um inteiro k, G tem uma CLIQUE
com k ou mais vértices?
Mostrar que um problema NP-completo conhecido (π‘)
pode ser polinomialmente transformado para ele (π‘ α π)
1) Dado um grafo H e o tamanho de um CLIQUE igual a k, então construímos
um grafo completamente conectado G com k vértices. Precisamos
mostrar que se o grafo H tem CLIQUE de tamanho >= k (Subgrafo C),
então ele é isomórfico a um subgrafo G.
2) Então seja Vg = v1,...,vk, já que G é um grafo completo, então ∃(vi,vj) ϵ G,
i≠j. Sabendo que H tem uma CLIQUE de tamanho >= k , escolhemos k
vértices nessa CLIQUE e criamos um conjunto de vértices C = ui,...,uk.
Agora é possível perceber que C também é uma CLIQUE em H, porém de
tamanho k. Então temos que ∀(vi,vj) ϵ G; ∃(ui,uj) ϵ C, desde que ambos os
conjuntos são completamente conectados. Portanto, G é um subgrafo
isomórfico de H.
Mostrar que um problema NP-completo conhecido (π‘)
pode ser polinomialmente transformado para ele (π‘ α π)
1) Agora, mostrando a “volta”, se G é um subgrafo isomórfico a H,
então H tem uma CLIQUE de tamanho >= k. Pela definição, G é um
grafo completamente conectado de tamanho k. Desde que ele é
um subgrafo isomórfico, então existe um correspondente C ⊂ H
que é completamente conectado e, também, é uma CLIQUE. Essa
CLIQUE tem tamanho k, e então mostramos que H tem uma
CLIQUE de tamanho >= k.
Exemplo
(π‘ α π)

Mais conteúdo relacionado

Mais procurados

Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Elaine Cecília Gatto
 
Biblioteca de interface grafica
Biblioteca de interface graficaBiblioteca de interface grafica
Biblioteca de interface graficaLeonardo Lima
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Aprenda a Programar com C#
Aprenda a Programar com C#Aprenda a Programar com C#
Aprenda a Programar com C#Antonio Trigo
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...Marcello Thiry
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
Introduction to Go language
Introduction to Go languageIntroduction to Go language
Introduction to Go languageTzar Umang
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em CCaique Silva
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosArthur Emanuel
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDjonathas Cardoso
 

Mais procurados (20)

Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Biblioteca de interface grafica
Biblioteca de interface graficaBiblioteca de interface grafica
Biblioteca de interface grafica
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Aprenda a Programar com C#
Aprenda a Programar com C#Aprenda a Programar com C#
Aprenda a Programar com C#
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Introduction to Go language
Introduction to Go languageIntroduction to Go language
Introduction to Go language
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados I
 

NP-Completo Problema Isomorfismo Subgrafos

  • 1. Provas NP Completo Problema do Isomorfismo em Subgrafos Projeto e Análise de Algoritmos 1o. Semestre de 2014 Hugo Santos – silvasantosh@gmail.com
  • 2. Definição 1) Na computação o Problema de Isomorfismos em grafos é um problema de decisão do qual sabemos que pertence à classe NP-Completo. Na teoria dos grafos, dois grafos H e G são isomorfos se existe uma correspondência 1-a-1 entre seus conjuntos de vértices que preserve as adjacências (a - w; b - x; c - z; d- y).
  • 3. Definição 1) O Problema do Isomorfismo em Subgrafos (Subgraph isomorphism problem) é que dados dois grafos H e G, a pergunta que pode ser feita é: H é isomórfico a um subgrafo de G? H é isomórfico a um subgrafo de G (u; v) = (f(u); f(v))
  • 4. Etapas da Prova NP-Completo 1) Mostrar que Isomorfismo em Subgrafos (π) está em NP: problemas de decisão cuja solução pode ser verificada em tempo polinomial com algoritmo determinista. 2) Mostrar que um problema NP-completo conhecido (π‘) pode ser polinomialmente transformado para ele (π‘ α π).
  • 5. Mostrar que Isomorfismo em Subgrafos (π) está em NP 1) Algoritmo determinista para verificar a solução em tempo polinomial: Sejam os grafos H e G, e os conjuntos de vértices pertencentes a cada um deles, v1, ... vn e u1,...un, respectivamente. O algoritmo então verifica de forma trivial que ∀(vi,vj) ϵ H, ∃(ui,uj) ϵ G
  • 6. Mostrar que um problema NP-completo conhecido (π‘) pode ser polinomialmente transformado para ele (π‘ α π) 1) O problema da CLIQUE (π‘ ), conhecido por pertencer a classe NP-Completo em sua versão de decisão. Na teoria dos grafos, denomina-se a CLIQUE de um grafo como sendo um subgrafo completo desse. 2) Problema: Dado um grafo G e um inteiro k, G tem uma CLIQUE com k ou mais vértices?
  • 7. Mostrar que um problema NP-completo conhecido (π‘) pode ser polinomialmente transformado para ele (π‘ α π) 1) Dado um grafo H e o tamanho de um CLIQUE igual a k, então construímos um grafo completamente conectado G com k vértices. Precisamos mostrar que se o grafo H tem CLIQUE de tamanho >= k (Subgrafo C), então ele é isomórfico a um subgrafo G. 2) Então seja Vg = v1,...,vk, já que G é um grafo completo, então ∃(vi,vj) ϵ G, i≠j. Sabendo que H tem uma CLIQUE de tamanho >= k , escolhemos k vértices nessa CLIQUE e criamos um conjunto de vértices C = ui,...,uk. Agora é possível perceber que C também é uma CLIQUE em H, porém de tamanho k. Então temos que ∀(vi,vj) ϵ G; ∃(ui,uj) ϵ C, desde que ambos os conjuntos são completamente conectados. Portanto, G é um subgrafo isomórfico de H.
  • 8. Mostrar que um problema NP-completo conhecido (π‘) pode ser polinomialmente transformado para ele (π‘ α π) 1) Agora, mostrando a “volta”, se G é um subgrafo isomórfico a H, então H tem uma CLIQUE de tamanho >= k. Pela definição, G é um grafo completamente conectado de tamanho k. Desde que ele é um subgrafo isomórfico, então existe um correspondente C ⊂ H que é completamente conectado e, também, é uma CLIQUE. Essa CLIQUE tem tamanho k, e então mostramos que H tem uma CLIQUE de tamanho >= k.