Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... ·...
Transcript of Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... ·...
![Page 1: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/1.jpg)
Projeto e Análise de Algoritmos
NP Completude
Prof. Humberto Brandão
Universidade Federal de Alfenas
versão da aula: 0.4
![Page 2: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/2.jpg)
Introdução
• Problemas intratáveis ou difíceis são comuns na natureza e nas áreas do conhecimento;
![Page 3: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/3.jpg)
Introdução
• Problemas intratáveis ou difíceis são comuns na natureza e nas áreas do conhecimento;
• Problemas “fáceis”:– resolvidos por algoritmos polinomiais;
![Page 4: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/4.jpg)
Introdução
• Problemas intratáveis ou difíceis são comuns na natureza e nas áreas do conhecimento;
• Problemas “fáceis”:– resolvidos por algoritmos polinomiais;
• Problemas “difíceis”:– no momento, conhecemos apenas algoritmos exponenciais para
resolvê-los;
![Page 5: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/5.jpg)
Introdução
• Polinomial:
– função de complexidade é O(p(n)), onde p(n) é um polinômio.
![Page 6: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/6.jpg)
Introdução
• Polinomial:
– função de complexidade é O(p(n)), onde p(n) é um polinômio.
– Por exemplo:
• pesquisa binária (O(log n));
• pesquisa seqüencial (O(n));
• ordenação por inserção (O(n2));
• multiplicação de matrizes (O(n3));
![Page 7: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/7.jpg)
Introdução
• Exponencial:
– função de complexidade é O(cn), c > 1;
![Page 8: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/8.jpg)
Introdução
• Exponencial:
– função de complexidade é O(cn), c > 1;
– Por exemplo:
• Problema do caixeiro viajante (PCV);
• Problema de localização de Facilidades;
• Problema de Mochila;
• Problema de Roteamento de Veículos.
![Page 9: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/9.jpg)
Introdução
• Exponencial:
– função de complexidade é O(cn), c > 1;
– Por exemplo:
• Problema do caixeiro viajante (PCV);
• Problema de localização de Facilidades;
• Problema de Mochila;
• Problema de Roteamento de Veículos.
– Mesmo problemas de pequeno e médio porte não podem ser resolvidos por algoritmos não-polinomiais.
![Page 10: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/10.jpg)
Classe de Problemas: NP-Completo (Introdução)
• A teoria de complexidade a ser apresentada não mostra como obter algoritmos polinomiais para problemas que demandam algoritmos exponenciais, nem afirma que não existem;
![Page 11: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/11.jpg)
Classe de Problemas: NP-Completo (Introdução)
• A teoria de complexidade a ser apresentada não mostra como obter algoritmos polinomiais para problemas que demandam algoritmos exponenciais, nem afirma que não existem;
• É possível mostrar que os problemas para os quais não há algoritmo polinomial conhecido são computacionalmente relacionados.
![Page 12: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/12.jpg)
Classe de Problemas: NP-Completo (Introdução)
• Estes problemas formam a classe conhecida como NP-Completo;
![Page 13: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/13.jpg)
Classe de Problemas: NP-Completo (Introdução)
• Estes problemas formam a classe conhecida como NP-Completo;
• Propriedade:
– um problema da classe NP-Completo poderá ser resolvido em tempo polinomial se e somente se todos os outros problemas em NP também puderem;
![Page 14: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/14.jpg)
Classe de Problemas: NP-Completo (Introdução)
• Estes problemas formam a classe conhecida como NP-Completo;
• Propriedade:
– um problema da classe NP-Completo poderá ser resolvido em tempo polinomial se e somente se todos os outros problemas em NP também puderem;
• Este fato é um indício forte de que dificilmente alguém será capaz de encontrar um algoritmo eficiente para um problema da classe NP-Completo.
![Page 15: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/15.jpg)
NP-Completo e osProblemas de Decisão
• Para o estudo teórico da complexidade de algoritmos considera-se problemas cujo resultado da computação seja “sim” ou “não”;
![Page 16: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/16.jpg)
NP-Completo e osProblemas de Decisão
• Para o estudo teórico da complexidade de algoritmos considera-se problemas cujo resultado da computação seja “sim” ou “não”;
• Versão do Problema do Caixeiro Viajante (PCV) cujo resultado é do tipo “sim/não”:
– Dados: uma constante k, um conjunto de cidades C = {c1, c2, ..., cn}e uma distância d(ci, cj) para cada par de cidades ci, cj pertencente a C.
– Questão:
• Existe um “roteiro” para todas as cidades em C cujo comprimento total seja menor ou igual a k?
![Page 17: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/17.jpg)
NP-Completo e osProblemas de Decisão
• Característica fundamental da classe NP-Completo: problemas “sim/não” para os quais uma dada solução pode ser verificada facilmente.
![Page 18: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/18.jpg)
NP-Completo e osProblemas de Decisão
• Característica fundamental da classe NP-Completo: problemas “sim/não” para os quais uma dada solução pode ser verificada facilmente.
• A solução pode ser muito difícil de ser obtida, mas uma vez conhecida ela pode ser verificada em tempo polinomial.
![Page 19: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/19.jpg)
ProblemasFáceis vs. Difíceis
![Page 20: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/20.jpg)
Fácil vs. Difícil• Considere um grafo valorado, dois vértices i, j e um inteiro k > 0.
![Page 21: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/21.jpg)
Fácil vs. Difícil• Considere um grafo valorado, dois vértices i, j e um inteiro k > 0.
• Fácil:– Existe um caminho de i até j com peso <= k?
– Há um algoritmo eficiente com complexidade de tempo O(E log V), sendo E o número de arestas e V o número de vértices (algoritmo de Dijkstra);
![Page 22: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/22.jpg)
Fácil vs. Difícil• Considere um grafo valorado, dois vértices i, j e um inteiro k > 0.
• Fácil:– Existe um caminho de i até j com peso <= k?
– Há um algoritmo eficiente com complexidade de tempo O(E log V), sendo E o número de arestas e V o número de vértices (algoritmo de Dijkstra);
• Difícil:– Existe um caminho de i até j com peso >= k?
– Não existe algoritmo eficiente. É equivalente ao PCV em termos de complexidade. É preciso enumerar todas as possibilidades.
![Page 23: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/23.jpg)
Fácil vs. Difícil
• Caminho que passa por todos os vértices uma única vez e retorna ao vértice inicial;
• Exemplo de circuito Hamiltoniano: 0 1 4 2 3 0.
![Page 24: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/24.jpg)
Fácil vs. Difícil
• Caminho que passa por todos os vértices uma única vez e retorna ao vértice inicial;
• Exemplo de circuito Hamiltoniano: 0 1 4 2 3 0.
• Existe um ciclo de Hamilton no grafo G?– Fácil: Grafo onde cada vértice tem grau máximo = 2 (vértices
com no máximo duas arestas incidentes);
![Page 25: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/25.jpg)
Fácil vs. Difícil
• Caminho que passa por todos os vértices uma única vez e retorna ao vértice inicial;
• Exemplo de circuito Hamiltoniano: 0 1 4 2 3 0.
• Existe um ciclo de Hamilton no grafo G?– Fácil: Grafo onde cada vértice tem grau máximo = 2 (vértices
com no máximo duas arestas incidentes);
– Difícil: Grafo onde os vértices têm grau > 2.
• É um caso especial do PCV: Pares de vértices com uma aresta entre eles têm distância 1 e pares de vértices sem aresta entre eles têm distância infinita.
![Page 26: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/26.jpg)
Algoritmos Não-Determinísticos
![Page 27: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/27.jpg)
Algoritmos Não-Determinísticos
• Antes de falar de não-determinismo, vamos definir os Algoritmos determinísticos:
![Page 28: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/28.jpg)
Algoritmos Não-Determinísticos
• Antes de falar de não-determinismo, vamos definir os Algoritmos determinísticos:
– Algoritmos Determinísticos: o resultado de cada operação é definido de forma única;
![Page 29: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/29.jpg)
Algoritmos Não-Determinísticos
• Os algoritmos podem conter operações cujo resultado não é definido de forma única;
![Page 30: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/30.jpg)
Algoritmos Não-Determinísticos
• Os algoritmos podem conter operações cujo resultado não é definido de forma única;
• Algoritmo não-determinístico: capaz de escolher uma dentre as várias alternativas possíveis a cada passo;
![Page 31: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/31.jpg)
Algoritmos Não-Determinísticos
• Os algoritmos podem conter operações cujo resultado não é definido de forma única;
• Algoritmo não-determinístico: capaz de escolher uma dentre as várias alternativas possíveis a cada passo;
• Algoritmos não-determinísticos contêm operações cujo resultado não é unicamente definido, ainda que limitado a um conjunto definido de possibilidades.
![Page 32: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/32.jpg)
Algoritmos Não-Determinísticos
• Os algoritmos podem conter operações cujo resultado não é definido de forma única;
• Algoritmo não-determinístico: capaz de escolher uma dentre as várias alternativas possíveis a cada passo;
• Algoritmos não-determinísticos contêm operações cujo resultado não é unicamente definido, ainda que limitado a um conjunto definido de possibilidades.
• Vamos definir uma função irreal para os algoritmos não determinísticos...
![Page 33: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/33.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Algoritmos não-determinísticos utilizam uma função escolhe(C), que escolhe um dos elementos do conjunto C de forma arbitrária.
![Page 34: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/34.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Algoritmos não-determinísticos utilizam uma função escolhe(C), que escolhe um dos elementos do conjunto C de forma arbitrária.
• O comando de atribuição X = escolhe(1 : n) pode resultar na atribuição a X de qualquer dos inteiros no intervalo [1, n];
![Page 35: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/35.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Algoritmos não-determinísticos utilizam uma função escolhe(C), que escolhe um dos elementos do conjunto C de forma arbitrária.
• O comando de atribuição X = escolhe(1 : n) pode resultar na atribuição a X de qualquer dos inteiros no intervalo [1, n];
• A complexidade de tempo para cada chamada da função escolhe é O(1).
![Page 36: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/36.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Vamos fazer um paralelo com a Teoria da Computação:
• A palavra w = 1010 é reconhecida pelo AFN definido a seguir?
e1 e5
0,1
1e2
0e3
1e4
0
![Page 37: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/37.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• w = 1010
• Como um estudante de C.C deve pensar: Devemos criar uma árvore de possibilidades;
– Primeira tentativa: e1, e1, e2, e3 (estado não final). Não foi reconhecido...
• O backtracking volta na árvore...
– Segunda tentativa: e1, e2, e3, e4, e5 (estado final). Foi reconhecido.
e1 e5
0,1
1e2
0e3
1e4
0
![Page 38: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/38.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Podemos visualizar a função escolhe de duas formas:
e1 e5
0,1
1e2
0e3
1e4
0
![Page 39: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/39.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Podemos visualizar a função escolhe de duas formas:
– Ou ela faz a escolha certa a cada não determinismo;
e1 e5
0,1
1e2
0e3
1e4
0
![Page 40: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/40.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Podemos visualizar a função escolhe de duas formas:
– Ou ela faz a escolha certa a cada não determinismo;
– Ou ela recebe um ou mais processadores para continuar a computação em paralelo;
e1 e5
0,1
1e2
0e3
1e4
0
![Page 41: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/41.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Podemos visualizar a função escolhe de duas formas:
– Ou ela faz a escolha certa a cada não determinismo;
– Ou ela recebe um ou mais processadores para continuar a computação em paralelo;
• Por que ambas as escolhas são irreais com os computadores existentes?– Mesmo com a área do processamento paralelo e distribuído
bem desenvolvida na C.C...
e1 e5
0,1
1e2
0e3
1e4
0
![Page 42: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/42.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Uma máquina capaz de executar a função escolhe admite a capacidade de computação não-determinística.
![Page 43: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/43.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Uma máquina capaz de executar a função escolhe admite a capacidade de computação não-determinística.
• Uma máquina não-determinística é capaz de produzir cópias de si mesma quando diante de duas ou mais alternativas, e continuar a computação independentemente para cada alternativa.
![Page 44: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/44.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Uma máquina capaz de executar a função escolhe admite a capacidade de computação não-determinística.
• Uma máquina não-determinística é capaz de produzir cópias de si mesma quando diante de duas ou mais alternativas, e continuar a computação independentemente para cada alternativa.
• A máquina não-determinística que acabamos de definir não existe na prática, mas ainda assim fornece fortes evidências de que certos problemas não podem ser resolvidos por algoritmos determinísticos em tempo polinomial.
![Page 45: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/45.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Exemplo do poder computacional da máquina não-determinística:
• Seja o seguinte algoritmo não-determinístico para pesquisar o elemento x em um conjunto de elementos A[1 : n], n >= 1;
![Page 46: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/46.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Exemplo do poder computacional da máquina não-determinística:
• Seja o seguinte algoritmo não-determinístico para pesquisar o elemento x em um conjunto de elementos A[1 : n], n >= 1;
• Determina um índice j tal que A[j] = x para um término com sucesso ou então insucesso quando x não está presente em A.
![Page 47: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/47.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Exemplo do poder computacional da máquina não-determinística:
• Seja o seguinte algoritmo não-determinístico para pesquisar o elemento x em um conjunto de elementos A[1 : n], n >= 1;
• Determina um índice j tal que A[j] = x para um término com sucesso ou então insucesso quando x não está presente em A.
• Qual é a complexidade para a máquina determinística?
• E para a não determinística?
![Page 48: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/48.jpg)
Algoritmos Não-DeterminísticosFunção Escolhe
• Qual é a complexidade para a máquina determinística?
• E para a não determinística?
– O algoritmo tem complexidade não-determinística O(1).
– Para um algoritmo determinístico a complexidade é O(n).
![Page 49: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/49.jpg)
A Classe NP
![Page 50: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/50.jpg)
Classe NP
• Classe P:– conjunto de todos os problemas que podem ser resolvidos por
algoritmos determinísticos em tempo polinomial;
![Page 51: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/51.jpg)
Classe NP
• Classe P:– conjunto de todos os problemas que podem ser resolvidos por
algoritmos determinísticos em tempo polinomial;
• Classe NP: – conjunto de todos os problemas que podem ser resolvidos por
algoritmos não-determinísticos em tempo polinomial;
![Page 52: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/52.jpg)
Classe NP
• Classe P:– conjunto de todos os problemas que podem ser resolvidos por
algoritmos determinísticos em tempo polinomial;
• Classe NP: – conjunto de todos os problemas que podem ser resolvidos por
algoritmos não-determinísticos em tempo polinomial;
• Para mostrar que um determinado problema está em NP, basta apresentar um algoritmo não-determinístico (ou determinístico) que execute em tempo polinomial para resolver o problema;
![Page 53: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/53.jpg)
A Classe NP-Completo
O Célebre Problema da Satisfabilidade Booleana (SAT)
![Page 54: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/54.jpg)
SATO tamanho do espaço de buscas pode ser grande demais
• SAT: Encontrar um conjunto de valores para variáveis booleanas de forma a avaliar uma expressão booleana qualquer como VERDADEIRA.
![Page 55: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/55.jpg)
SATO tamanho do espaço de buscas pode ser grande demais
• SAT: Encontrar um conjunto de valores para variáveis booleanas de forma a avaliar uma expressão booleana qualquer como VERDADEIRA.
• Suponha a expressão:
– Defina valores para cada componente do vetor x, para que a função F(x) seja avaliada como VERDADEIRA.
)(...)()()( 22569910017889 xxxxxxxxF
![Page 56: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/56.jpg)
SATO tamanho do espaço de buscas pode ser grande demais
• Quantas diferentes atribuições existem para as componentes do vetor x?
• Em outras palavras, qual é o tamanho do espaço de busca do problema SAT?
)(...)()()( 22569910017889 xxxxxxxxF
![Page 57: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/57.jpg)
SATO tamanho do espaço de buscas pode ser grande demais
• Qual é o tamanho do espaço de busca ?
)(...)()()( 22569910017889 xxxxxxxxF
xS 2
30100 102 S
000.000.000.000.000.000.000.000.000.000.10
atribuições diferentes
![Page 58: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/58.jpg)
SATO tamanho do espaço de buscas pode ser grande demais
• Qual é o tamanho do espaço de busca ?
• Suponha que temos um computador que consegue avaliar 1000 atribuições diferentes por segundo.
30100 102 S
000.000.000.000.000.000.000.000.000.000.10atribuições diferentes
![Page 59: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/59.jpg)
SATO tamanho do espaço de buscas pode ser grande demais
• Qual é o tamanho do espaço de busca ?
• Suponha que temos um computador que consegue avaliar 1000 atribuições diferentes por segundo.
• Se este computador estivesse funcionando desde o BIG BANG (a 15 bilhões de anos), ele não teria analisado nem 1% de todas as possibilidades.
30100 102 S
000.000.000.000.000.000.000.000.000.000.10atribuições diferentes
![Page 60: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/60.jpg)
SAT
• O SAT foi o primeiro problema a ser classificado como NP-completopor Cook no ano de 1971;
![Page 61: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/61.jpg)
SAT
• O SAT foi o primeiro problema a ser classificado como NP-completopor Cook no ano de 1971;
• A SAT é um problema especial, pois todos os problemas que possuem algoritmos (polinomiais ou não) podem ser transformados no problema da SAT.
![Page 62: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/62.jpg)
SAT
• O SAT foi o primeiro problema a ser classificado como NP-completopor Cook no ano de 1971;
• A SAT é um problema especial, pois todos os problemas que possuem algoritmos (polinomiais ou não) podem ser transformados no problema da SAT.
– Prova usa definição matemática da Máquina de Turing não-determinística (MTND), capaz de resolver qualquer problema em NP. Incluindo uma descrição da máquina e de como instruções são executadas em termos de fórmulas booleanas.
Estabelece uma correspondência entre todo problema em NP (expresso por um programa na MTND) e alguma instância de SAT.
![Page 63: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/63.jpg)
SAT
• O SAT foi o primeiro problema a ser classificado como NP-completopor Cook no ano de 1971;
• A SAT é um problema especial, pois todos os problemas que possuem algoritmos (polinomiais ou não) podem ser transformados no problema da SAT.
– Prova usa definição matemática da Máquina de Turing não-determinística (MTND), capaz de resolver qualquer problema em NP. Incluindo uma descrição da máquina e de como instruções são executadas em termos de fórmulas booleanas.
Estabelece uma correspondência entre todo problema em NP (expresso por um programa na MTND) e alguma instância de SAT.
• Para completar o raciocínio, veremos a redução de problemas.
![Page 64: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/64.jpg)
Redução de Problemas
Introdução
![Page 65: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/65.jpg)
Redução de Problemas
• Ex.:
– Podemos resolver uma equação de primeiro grau através de um algoritmo que resolve equações de segundo grau...
![Page 66: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/66.jpg)
Redução de Problemas
• Ex.:
– Podemos resolver uma equação de primeiro grau através de um algoritmo que resolve equações de segundo grau...
• Ou seja, as equações de primeiro grau são um caso particular das equações de segundo grau.
45x + 10 = 0
0x2 + 45x + 10 = 0
![Page 67: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/67.jpg)
Redução de Problemas
• Se qualquer problema NP-Completo for reduzido em tempo polinomial a um problema qualquer P, então, P é NP-Completo
![Page 68: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/68.jpg)
Redução de Problemas
• Se qualquer problema NP-Completo for reduzido em tempo polinomial a um problema qualquer P, então, P é NP-Completo
• Vamos juntar os fatos:
– Todos os problemas que conhecemos algoritmos podem ser transformados na SAT;
![Page 69: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/69.jpg)
Redução de Problemas
• Se qualquer problema NP-Completo for reduzido em tempo polinomial a um problema qualquer P, então, P é NP-Completo
• Vamos juntar os fatos:
– Todos os problemas que conhecemos algoritmos podem ser transformados na SAT;
– Se transformamos, por exemplo, a SAT em um problema P, então:• P é pelo menos tão difícil quanto a SAT;
![Page 70: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/70.jpg)
Redução de Problemas
• Se qualquer problema NP-Completo for reduzido em tempo polinomial a um problema qualquer P, então, P é NP-Completo
• Vamos juntar os fatos:
– Todos os problemas que conhecemos algoritmos podem ser transformados na SAT;
– Se transformamos, por exemplo, a SAT em um problema P, então:• P é pelo menos tão difícil quanto a SAT;
• E a SAT é pelo menos tão difícil quanto P;
![Page 71: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/71.jpg)
Redução de Problemas
• Se qualquer problema NP-Completo for reduzido em tempo polinomial a um problema qualquer P, então, P é NP-Completo
• Vamos juntar os fatos:
– Todos os problemas que conhecemos algoritmos podem ser transformados na SAT;
– Se transformamos, por exemplo, a SAT em um problema P, então:• P é pelo menos tão difícil quanto a SAT;
• E a SAT é pelo menos tão difícil quanto P;
• Então, ambos possuem a mesma complexidade computacional;
![Page 72: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/72.jpg)
Redução de Problemas
• O PCV já foi mostrado ser NP-Completo.
![Page 73: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/73.jpg)
Redução de Problemas
• O PCV já foi mostrado ser NP-Completo.
• Se temos o Problema P1, e reduzimos o PCV a P1, isso quer dizer que:
![Page 74: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/74.jpg)
Redução de Problemas
• O PCV já foi mostrado ser NP-Completo.
• Se temos o Problema P1, e reduzimos o PCV a P1, isso quer dizer que:
– P1 é NP-Completo;
![Page 75: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/75.jpg)
Redução de Problemas
• O PCV já foi mostrado ser NP-Completo.
• Se temos o Problema P1, e reduzimos o PCV a P1, isso quer dizer que:
– P1 é NP-Completo;
– E mais importante do que isso: • Se algum dia alguém encontrar algum algoritmo polinomial para qualquer
problema NPC, todos os problemas da classe NPC são também resolvidos em tempo polinomial;
![Page 76: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/76.jpg)
Redução de Problemas
• O PCV já foi mostrado ser NP-Completo.
• Se temos o Problema P1, e reduzimos o PCV a P1, isso quer dizer que:
– P1 é NP-Completo;
– E mais importante do que isso: • Se algum dia alguém encontrar algum algoritmo polinomial para qualquer
problema NPC, todos os problemas da classe NPC são também resolvidos em tempo polinomial;
– É a famosa tentativa de mostrar que P=NP;
![Page 77: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/77.jpg)
Conclusões
• Quase ninguém acredita que P=NP;
• Atualmente, são conhecidos mais de 3.000 problemas NP-Completo, e para nenhum deles, foi encontrado algoritmo polinomial;
– Este é um forte indício de que as classes são realmente distintas;
• Acredita-se também que NPC seja muito maior do que P.
![Page 78: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/78.jpg)
Próxima aula
• Classe NP-Difícil (NP-Hard);
• Relacionamento entre as classes básicas de complexidade;
• Transformação polinomial de alguns problemas.
![Page 79: Projeto e Análise de Algoritmos NP Completudehumberto/disciplinas/2011_1_paa/aulas/aula10... · • Os algoritmos podem conter operações cujo resultado não é ... –Segunda tentativa:](https://reader030.fdocumentos.tips/reader030/viewer/2022040820/5e687966009a7d41b074c096/html5/thumbnails/79.jpg)
Bibliografia
• CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; (2002). Algoritmos – Teoria e Prática. Tradução da 2ª edição americana. Rio de Janeiro. Editora Campus.
• TAMASSIA, ROBERTO; GOODRICH, MICHAEL T. (2004). Projeto de Algoritmos - Fundamentos, Análise e Exemplos da Internet.
• ZIVIANI, N. (2007). Projeto e Algoritmos com implementações em Java e C++. São Paulo. Editora Thomson;
• Material de aulas do Professor Loureiro (DCC-UFMG)– http://www.dcc.ufmg.br/~loureiro/paa/