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

Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugolGabriel Faustino
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaLeinylson Fontinele
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Ricardo Longa
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01thomasdacosta
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação cClausia Antoneli
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1Carlos Eugenio Torres
 
01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel BásicoRoney Sousa
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Leinylson Fontinele
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia iFábio Costa
 

Mais procurados (20)

Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugol
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Construcao de Algoritmos - Aula 06
Construcao de Algoritmos - Aula 06Construcao de Algoritmos - Aula 06
Construcao de Algoritmos - Aula 06
 
So-mod-1
So-mod-1So-mod-1
So-mod-1
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
 
Pensamento Computacional aula 01
Pensamento Computacional aula 01Pensamento Computacional aula 01
Pensamento Computacional aula 01
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Curso MySQL #01 - Surgimento dos Bancos de Dados
Curso MySQL #01 - Surgimento dos Bancos de DadosCurso MySQL #01 - Surgimento dos Bancos de Dados
Curso MySQL #01 - Surgimento dos Bancos de Dados
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
 
01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
 
Aula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveisAula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveis
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia 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.