Daniel Felipe Neves Martins

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Grafos eulerianos 1.
Projeto de Programação PD-I
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos.
Grafos - Caminhos Caminhos Máximo / Mínimo:
Celso C. Ribeiro Caroline T. Rocha
Fluxo em Redes Prof. Ricardo R. Santos.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Amintas engenharia.
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Problema do caixeiro viajante
Pesquisa em profundidade
A Classe de Problemas NP
Grafos Grafo G = (V, E) V — conjunto de vértices
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
GRAFOS EULERIANOS E HAMILTONIANOS
Metaheurísticas Prof. Aurora Pozo Departamento de Informática Universidade Federal do Paraná
UM ESTUDO SOBRE O PROBLEMA DO CAIXEIRO VIAJANTE
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Algoritmos e Estruturas de Dados
Dárlinton B. Feres Carvalho
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Estruturas de Dados e Complexidade de Algoritmos
Introdução à NP-completude
Complexidade de Algoritmos
Problemas NP-completo
3 - Equações Lineares de Segunda Ordem
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Heurísticas, algoritmos gulosos e aproximações
Produtos Notáveis 8ª ANO Prof.: Sergio Wagner. Os produtos Produtos notáveis são assim chamados por serem tipos fixos, facilmente reconhecidos, de produtos.
Algoritmos em Grafos Conceitos principais Prof. André Renato
Prof. Roberto Cristóvão
Informática Teórica Engenharia da Computação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Problemas NP-Completos
Otimização Inteira 5a. Aula Franklina.
Tópicos em otimização combinatória
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Histórico, exemplos e problemas
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Heurísticas, algoritmos gulosos e aproximações
Introdução e Busca Cega
Introdução à NP-completude Katia S. Guimarães
Liliane Salgado NP-Completude Liliane Salgado
NP-Completude Algoritmos e Estruturas de Dados – IF672
Algoritmos de Busca Local
Aulão de Linguagens Formais e Compiladores
Complexidade computacional
Complexidade de Algoritmos
Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas aplicadas no Problema do Caixeiro Viajante Aluno: Hedley Luna Gois Oriá Disciplina: Introdução.
Campus de Caraguatatuba Matemática Discreta 1 – MD 1
Fontes de Erros Aula 1 Introdução; Erros em processos numéricos;
Busca Combinatorial e Métodos de Heurística
Análise e Síntese de Algoritmos
Estatística Geral (Elementos de Probabilidade)
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Construção e Análise de Algoritmos
Problemas NP-completos e Programação Dinâmica
Algoritmos FPT para o Problema da k-Cobertura por Vértices
Introdução à NP-completude
NP A Classe de Problemas NP Referências: M. R. Garey and D. S. Johnson. Computers and Intractability: a Guide to the Theory of NP Completeness. Freeman,
Teoria da complexidade
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Mailson Felipe da Silva Marques Johnson Cordeiro Sarmento
1 Máquinas de Turing 3 Exercícios Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens.
Comportamento Assintótico
Transcrição da apresentação:

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 dmartin@cos.ufrj.br

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

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

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.

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.

COMPLEXIDADE EM ALGORÍTMOS COMPUTACIONAIS 4- UM PROBLEMA DE COMPLEXIDADE (I) O número 4.294.967.297 é 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.

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.  

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.

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.

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

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 ?

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 362 880 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  

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.

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.

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

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.

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.

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.