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

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

Daniel Felipe Neves Martins

Apresentações semelhantes


Apresentação em tema: "Daniel Felipe Neves Martins"— Transcrição da apresentação:

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

2 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS
ROTEIRO Conceitos Históricos O Conceito de Complexidade Computacional A eficiência de algoritmos Algoritmos P e NP O problema do Caixeiro Viajante Algoritmos Pseudo-Polinomiais 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 2. O CONCEITO DE COMPLEXIDADE
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. 2.2- 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. 2.3- 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. 3.2- 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. 5.2- 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 6- COMO RECONHECER SE UM ALGORITMO É OU NÃO É EFICIENTE ?
COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 6- COMO RECONHECER SE UM ALGORITMO É OU NÃO É EFICIENTE ? 6.1 - Um algoritmo é eficiente precisamente quando sua complexidade for um polinômio no tamanho de sua entrada. 6.2- De acordo com a definição, um problema seria considerado tratável, exibindo-se algum algoritmo de complexidade polinomial que o resolvesse. 6.3- 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 8- UM OUTRO PROBLEMA DE COMPLEXIDADE (II)
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. Como transforma-lo num problema de enumeração ? Como determinar todas as rotas do caixeiro ? Como saber qual delas é a menor ? SOLUÇÃO: São (n-1)! Rotas É um trabalho fácil para a máquina ?

12 A quantidade ( n - 1 )! cresce com uma velocidade alarmante
COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS A quantidade ( n - 1 )! cresce com uma velocidade alarmante n Rotas por segundo (n - 1)! Cálculo total 5 250 milhões 24 insignificante 10 110 milhões 0.003 seg 15 71 milhões 87 bilhões 20 min 20 53 milhões 1.2 x 1017 73 anos 25 42 milhões 6.2 x 1023 470 milhões de anos

13 COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS
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. 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. Costuma-se resumir essas propriedades do problema do caixeiro dizendo que ele pertence à categoria dos problemas NP - completos.

14 UMA OUTRA VISÃO DO PROBLEMA - Grafos
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 UMA OUTRA VISÃO DO PROBLEMA - Grafos
COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS UMA OUTRA VISÃO DO PROBLEMA - Grafos d 1 5 2 c 4 6 a b

16 UMA OUTRA VISÃO DO PROBLEMA - Grafos
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 9-ALGORITMOS PSEUDO-POLINOMIAIS
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 Busca da eficiência dos algoritmos para diminuir o tempo de execução; Existem problemas que necessitam da adoção de processos analíticos para a avaliação da eficiência do algoritmo; A quantidade de memória de uma máquina influencia no tempo de execução de um algoritmo; A complexidade é um indicador para a avaliação da eficiência de tempo do algoritmo; A complexidade procura traduzir analiticamente uma expressão da eficiência de tempo no pior caso; A maioria dos algoritmos são da classe NP; Algoritmos que resolvem problemas de decisão são chamados pseudo-polinomiais, desde que tais problemas sejam codificados em unários.


Carregar ppt "Daniel Felipe Neves Martins"

Apresentações semelhantes


Anúncios Google