A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO CENTRO DE TECNOLOGIA – COPPE PROBLEMAS NP-COMPLETO: O PROBLEMA DO CAIXEIRO VIAJANTE E APLICAÇÕES NA TEORIA DOS GRAFOS.

Apresentações semelhantes


Apresentação em tema: "UNIVERSIDADE FEDERAL DO RIO DE JANEIRO CENTRO DE TECNOLOGIA – COPPE PROBLEMAS NP-COMPLETO: O PROBLEMA DO CAIXEIRO VIAJANTE E APLICAÇÕES NA TEORIA DOS GRAFOS."— Transcrição da apresentação:

1 UNIVERSIDADE FEDERAL DO RIO DE JANEIRO CENTRO DE TECNOLOGIA – COPPE PROBLEMAS NP-COMPLETO: O PROBLEMA DO CAIXEIRO VIAJANTE E APLICAÇÕES NA TEORIA DOS GRAFOS POR Daniel Felipe Neves Martins PESC – ÁREA INTERDISCIPLINAR DE HCTE

2 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS ROTEIRO 1.Conceitos Históricos 2.O Conceito de Complexidade Computacional 3.A eficiência de algoritmos 4.Algoritmos P e NP 5.O problema do Caixeiro Viajante 6.Algoritmos Pseudo-Polinomiais 7.Conclusão

3 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 1. NOTAS HISTÓRICAS (a) Pioneiros em problemas NP-Completos: Steven Cook (1971) e Richard Karp (1972) (b) Garey e Johnson lançaram o primeiro livro em 1979 contendo uma série de problemas NP-Completo. (c) Principais problemas: A questão da satisfabilidade, os conjuntos independentes de vértices, Cliques, Isomorfismo de sub-grafos. (d) A terminologia atual para a questão do estudo da complexidade de algoritmos deve-se a Richard Karp. (e) O critério para considerar os algoritmos polinomiais como eficientes é anterior aos estudos de Steven Cook

4 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 2. O CONCEITO DE COMPLEXIDADE 2.1- A Complexidade Computacional é um ramo da Matemática Computacional que estuda a eficiência dos algoritmos Para medir a eficiência de um algoritmo freqüentemente usamos um tempo teórico que o programa leva para encontrar uma resposta em função dos dados de entrada Se a dependência do tempo com relação aos dados de entrada for polinomial, o programa é considerado rápido, pois dado um polinômio p(x) sabemos que p(x) cresce para + com x. Se, entretanto, a dependência do tempo for exponencial o programa é considerado lento.

5 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 3- ALGORITMOS P E NP 3.1- A classe de algoritmos P é formada pelos procedimentos para os quais existe um polinômio p(n) que limita o número de passos do processamento se este for iniciado com uma entrada de tamanho n Os algoritmos NP não se referem a procedimentos não polinomiais (na verdade isto é uma conjectura). A leitura correta para procedimentos NP é dizer que se referem a algoritmos "não-determinísticos-polinomiais" no tempo.

6 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 4- UM PROBLEMA DE COMPLEXIDADE (I) O número é um número primo? Solução pelo crivo de Erastóstenes – Lenta – Tente ! Procurar fatorar o número – Menos lenta – Euler resolve a questão em 1732.

7 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 5- O QUE SÃO OS ALGORITMOS NP AFINAL ? 5.1- A classe dos problemas NP é aquela para as quais podemos verificar, em tempo polinomial, se uma possível solução é correta Os problemas de classe P estão contidos nos de classe NP. De fato, se um algoritmo pode ser executado em tempo polinomial e tivermos em mãos um possível candidato S à solução, é possível executar o programa, obter uma solução correta C e comparar C com S para certificar que S é de fato solução, tudo em tempo polinomial.

8 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 6- COMO RECONHECER SE UM ALGORITMO É OU NÃO É EFICIENTE ? Um algoritmo é eficiente precisamente quando sua complexidade for um polinômio no tamanho de sua entrada De acordo com a definição, um problema seria considerado tratável, exibindo-se algum algoritmo de complexidade polinomial que o resolvesse Para verificar que é intratável, há necessidade de provar que todo possível algoritmo que o resolva não possui complexidade polinomial.

9 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 7- CLASSIFICAÇÃO DOS PROBLEMAS 7.1- Problema algorítmico: conjunto de dados +objetivos+instância 7.2- Tipos: Problema de Decisão: Existe estrutura S que satisfaça a propriedade P ? Problema de Localização: Encontrar uma estrutura S que satisfaça uma propriedade P. Problema de Otimização: Encontrar uma estrutura S que satisfaça critérios de otimização.

10 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 8- UM OUTRO PROBLEMA DE COMPLEXIDADE (II) Suponha que um caixeiro viajante tenha de visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade. Suponha, também, que não importa a ordem com que as cidades são visitadas e que de cada uma delas pode-se ir diretamente a qualquer outra. O problema do caixeiro viajante consiste em descobrir a rota que torna mínima a viagem total. O problema do Caixeiro Viajante

11 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS O problema do caixeiro viajante é um problema de otimização combinatória. (a)Como transforma-lo num problema de enumeração ? (b)Como determinar todas as rotas do caixeiro ? (c)Como saber qual delas é a menor ? SOLUÇÃO: São (n-1)! Rotas É um trabalho fácil para a máquina ?

12 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS A quantidade ( n - 1 )! cresce com uma velocidade alarmante n Rotas por segundo (n - 1)!Cálculo total 5250 milhões24insignificante milhões seg 1571 milhões87 bilhões20 min 2053 milhões1.2 x anos 2542 milhões6.2 x milhões de anos

13 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS (1)Se descobrirmos como resolver o problema do caixeiro viajante em tempo polinomial, ficaremos sendo capazes de resolver, também em tempo polinomial, uma grande quantidade de outros problemas matemáticos importantes. (2)Se um dia alguém provar que é impossível resolver o problema do caixeiro em tempo polinomial no número de cidades, também se terá estabelecido que uma grande quantidade de problemas importantes não tem solução prática. (3) Costuma-se resumir essas propriedades do problema do caixeiro dizendo que ele pertence à categoria dos problemas NP - completos.

14 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS UMA OUTRA VISÃO DO PROBLEMA - Grafos (1) Se tivermos as cidades A, B, C e D, uma rota que o caixeiro poderia considerar é sair de A para B, dessa vai para C, e daí ba para B e então volte para A. Existem mais seis rotas possíveis ABCDA, ABDCA, ACBDA, ACDBA, ADBCA e ADCBA. ( 2) Seja um grafo G completo, tal que cada aresta e possui um peso c(e) maior ou igual a zero. Um percurso de caixeiro viajante é simplesmente um ciclo hamiltoniano (um caminho que contenha cada vértice do grafo uma vez) de G. O peso de um percurso é a soma dos pesos das arestas que o formam. Um percurso de caixeiro viajante ótimo é aquele cujo peso é mínimo. No grafo abaixo, para o caminho a, b, c, d, a o peso é 16, enquanto que um peso ótimo é a, b, d, c, a de peso 11.

15 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS UMA OUTRA VISÃO DO PROBLEMA - Grafos d c 4 6 ab 2

16 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS UMA OUTRA VISÃO DO PROBLEMA - Grafos NOVAS FORMULAÇÕES PARA O PROBLEMA (1) Problema de decisão: Dados: um grafo G e um inteiro k maior do que zero. Objetivo: Verificar se g possui um percurso de caixeiro viajante de peso menor ou Ou igual ao valor de k. (2) Problema de localização: Dado um grafo G e um inteiro k maior do que zero. Objetivo: Localizar em G, um percurso de caixeiro viajante, de peso menor ou igual ao valor de k. (3) Problema de otimização: Dados: Um grafo G. Objetivo: Localizar em G, um percurso de caixeiro viajante que seja ótimo.

17 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 9-ALGORITMOS PSEUDO-POLINOMIAIS Seja P um problema de decisão. Um algoritmo A que resolva P é dito pseudopolinomial quando a complexidade de A for polinomial no tamanho da entrada de P, supondo que esta seja codificada em unário. Aplicações: Particionamento de árvores.

18 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 10- CONCLUSÕES (a)Busca da eficiência dos algoritmos para diminuir o tempo de execução; (b)Existem problemas que necessitam da adoção de processos analíticos para a avaliação da eficiência do algoritmo; (c)A quantidade de memória de uma máquina influencia no tempo de execução de um algoritmo; (d)A complexidade é um indicador para a avaliação da eficiência de tempo do algoritmo; (e)A complexidade procura traduzir analiticamente uma expressão da eficiência de tempo no pior caso; (f)A maioria dos algoritmos são da classe NP; (g)Algoritmos que resolvem problemas de decisão são chamados pseudo-polinomiais, desde que tais problemas sejam codificados em unários.


Carregar ppt "UNIVERSIDADE FEDERAL DO RIO DE JANEIRO CENTRO DE TECNOLOGIA – COPPE PROBLEMAS NP-COMPLETO: O PROBLEMA DO CAIXEIRO VIAJANTE E APLICAÇÕES NA TEORIA DOS GRAFOS."

Apresentações semelhantes


Anúncios Google