Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
Problemas intratveis ou difceis so comuns na natureza e nas reas do conhecimento. Problemas fceis: - resolvidos por algoritmos polinomiais. Problemas difceis: - somente possuem algoritmos exponenciais para resolv-los. A complexidade de tempo da maioria dos problemas polinomial ou exponencial.
Funo Polinomial
Funo Exponencial
Comparativo de Funes
Para o estudo terico da complexidade de algoritmos considera-se problemas de deciso cujo resultado da computao seja sim ou no. Verso do Problema do Caixeiro-Viajante (PCV) cujo resultado do tipo sim/no:
- Dados: uma constante k, um conjunto de cidades C = {c1 , c2 , , cn } e uma distncia d(ci , cj ) para cada par de cidades ci , cj C. - Questo: Existe um roteiro para todas as cidades em C cujo comprimento total seja menor ou igual a k?
Caracterstica da classe NP: problemas sim/no para os quais uma dada soluo pode ser verificada facilmente. A soluo pode ser muito difcil ou impossvel de ser obtida, mas uma vez conhecida ela pode ser verificada em tempo polinomial.
Caminho em um Grafo
Considere um grafo com peso nas arestas, dois vrtices i, j e um inteiro k > 0.
O Circuito Hamiltoniano:
- Dado um grafo orientado, determine se h um ciclo que visite cada n exatamente uma vez, terminando no n inicial.
Mochila Booleana
10
Algoritmos Determinsticos
So algoritmos onde o resultado de cada operao definido de forma nica e apresentam comportamento previsvel. Dada uma determinada entrada, o algoritmo apresenta sempre a mesma sada. S podem estar em um estado por vez, onde entende-se por um estado, o que a mquina est fazendo em um determinado tempo. Em um arcabouo terico, possvel remover a restrio de comportamento previsvel. Apesar de parecer irreal, este um conceito importante e geralmente utilizado para definir a classe NP. Neste caso, os algoritmos podem conter operaes cujo resultado no definido de forma nica.
11
Algoritmos No-Determinsticos
Algoritmo no-determinista: capaz de escolher uma dentre as vrias alternativas possveis a cada passo. Algoritmos no-deterministas contm operaes cujo resultado no unicamente definido, ainda que limitado a um conjunto especificado de possibilidades.
12
Funo escolhe(C)
Algoritmos no-deterministas utilizam uma funo escolhe(C), que escolhe um dos elementos do conjunto C de forma arbitrria. O comando de atribuio X escolhe (1:n) pode resultar na atribuio a X de qualquer dos inteiros no intervalo [1, n]. A complexidade de tempo para cada chamada da funo escolhe O(1). Neste caso, no existe nenhuma regra especificando como a escolha realizada. Se um conjunto de possibilidades levam a uma resposta, este conjunto escolhido sempre e o algoritmo terminar com sucesso. Em contrapartida, um algoritmo no-determinista termina sem sucesso se e somente se no h um conjunto de escolhas que indique sucesso.
13
Algoritmos No-Determinsticos
Algoritmo no-determinista: capaz de escolher uma dentre as vrias alternativas possveis a cada passo. Algoritmos no-deterministas contm operaes cujo resultado no unicamente definido, ainda que limitado a um conjunto especificado de possibilidades.
14
Os comandos insucesso e sucesso so usados para definir uma execuo do algoritmo. Esses comandos so equivalentes a um comando de parada de um algoritmo determinista. Os comandos insucesso e sucesso tambm tm complexidade de tempo O(1).
15
Mquina No-Determinstica
Uma mquina capaz de executar a funo escolhe admite a capacidade de computao no-determinista. Uma mquina no-determinista capaz de produzir cpias de si mesma quando diante de duas ou mais alternativas, e continuar a computao independentemente para cada alternativa. A mquina no-determinista que acabamos de definir no existe na prtica, mas ainda assim fornece fortes evidncias de que certos problemas no podem ser resolvidos por algoritmos deterministas em tempo polinomial, conforme mostrado na definio da classe N P-completo frente.
16
Passo 0
17
Passo 1
18
Passo 2
19
Passo 3
20
21
Mquina No-Determinstica
Em outras palavras:
- Problema inicial com resoluo em 2n passos em mquina determinstica (pior caso) - Em mquina no determinstica leva tempo n.
Intrigante:
- Ser que existe algum problema que apenas uma mquina no-determinstica resolva? - No. Uma mquina no-determinstica calcula apenas mais rpido, pois equivalente a mquinas determinsticas.
22
Pesquisa No-Determinstica
void pesquisaND ( x , A, 1 , n){ j escolhe (A, 1 , n); if (A[ j ] == x ) sucesso; else insucesso ; }
Determina um ndice j tal que A[j] = x para um trmino com sucesso ou ento insucesso quando x no est presente em A. O algoritmo tem complexidade no-determinista O(1). Para um algoritmo determinista a complexidade O(n).
23
P: conjunto de todos os problemas que podem ser resolvidos por algoritmos deterministas em tempo polinomial. NP: conjunto de todos os problemas que podem ser resolvidos por algoritmos no-deterministas em tempo polinomial. Para mostrar que um determinado problema est em NP, basta apresentar um algoritmo no-determinista que execute em tempo polinomial para resolver o problema. Outra maneira encontrar um algoritmo determinista polinomial para verificar que uma dada soluo vlida.
24
P NP, pois algoritmos deterministas so um caso especial dos no-deterministas. - A questo se P = NP ou P NP. - Esse o problema no resolvido mais famoso que existe na rea de cincia da computao. - Se existem algoritmos polinomiais deterministas para todos os problemas em NP, ento P = NP. - Em contrapartida, a prova de que P NP parece exigir tcnicas ainda desconhecidas. Descrio tentativa do mundo NP:
Acredita-se que NP >> P, pois para muitos problemas em NP, no existem algoritmos polinomiais conhecidos, nem um limite inferior no-polinomial provado.
25
NP P ou NP = P? Consequncias?
Muitos problemas prticos em NP podem ou no pertencer a P (no conhecemos nenhum algoritmo determinista eficiente para eles). Se conseguirmos provar que um problema no pertence a P, ento temos um indcio de que esse problema pertence a NP e que esse problema to difcil de ser resolvido quanto outros problemas NP. Como no existe tal prova, sempre h esperana de que algum descubra um algoritmo eficiente. Quase ningum acredita que NP = P. Existe um esforo considervel para provar o contrrio, mas a questo continua em aberto!
26
Problemas NP-Completo
A teoria de complexidade a ser apresentada no mostra como obter algoritmos polinomiais para problemas que demandam algoritmos exponenciais, nem afirma que no existem. possvel mostrar que os problemas para os quais no h algoritmo polinomial conhecido so computacionalmente relacionados.
- Formam a classe conhecida como NP.
Propriedade: um problema da classe NP poder ser resolvido em tempo polinomial se e somente se todos os outros problemas em NP tambm puderem. Este fato um indcio forte de que dificilmente algum ser capaz de encontrar um algoritmo eficiente para um problema da classe NP.
- difcil mas no se sabe se impossvel, algum quer tentar?
27
Problemas NP-Completo
Problemas que pertencem a NP, mas que podem ou no pertencer a P. Propriedade: se qualquer problema NP-completo puder ser resolvido em tempo polinomial por uma mquina determinista, ento todos os problemas da classe podem, isto , P = NP. A falha coletiva de todos os pesquisadores para encontrar algoritmos eficientes para estes problemas pode ser vista como uma dificuldade para provar que P = NP. Contribuio prtica da teoria: - fornece um mecanismo que permite descobrir se um novo problema fcil ou difcil. Se encontrarmos um algoritmo eficiente para o problema, ento no h dificuldade. Seno, uma prova de que o problema NP-completo nos diz que o problema to difcil quanto todos os outros problemas difceis da classe NP-completo.
28
Problemas NP-Difcil
Alm da classe NP-Completo, existe a classe NP-Difcil. Para mostrar que um problema NP-Difcil, basta satisfazer as condies:
- Ser possvel mostrar que pelo menos um problema NP-Completo pode ser reduzido diretamente ao problema estudado. - Mostre que o problema no est em NP: - Mostrando que no existe nenhum algoritmo para ele;
29
Resumo:
P: Problemas solucionveis em tempo polinomial, ou seja, podemos solucionar o problema em tempo polinomial no tamanho da entrada do problema. NP: problemas verificveis em tempo polinomial, ou seja, dada uma soluo proposta, podemos verificar que esta uma soluo para o problema em tempo polinomial do tamanho da entrada e do tamanho da soluo proposta. NP-Difcil: um problema onde, se existir um algoritmo em tempo polinomial para solucionar o problema, ento poderemos converter cada problema em NP neste problema de modo a solucionar cada problema em NP em tempo polinomial. NP-Completo: um problema que NP-Difcil e tambm NP.
30
Problemas Exponenciais
desejvel resolver instncias grandes de problemas de otimizao em tempo razovel. Os melhores algoritmos para problemas NP-completo comportamento de pior caso exponencial no tamanho da entrada. tm
Para um algoritmo que execute em tempo proporcional a 2N , no garantido obter resposta para todos os problemas de tamanho N 100. Independente da velocidade do computador, ningum poderia esperar por um algoritmo que leva 2100 passos para terminar sua tarefa. Um supercomputador poderia resolver um problema de tamanho N = 50 em 1 hora, ou N = 51 em 2 horas, ou N = 59 em um ano. Mesmo um computador paralelo contendo um milho de processadores, (sendo cada processador um milho de vezes mais rpido que o melhor processador que possa existir) no seria suficiente para chegar a N = 100.
31
Usar algoritmos exponenciais eficientes aplicando tcnicas de tentativa e erro. Usar algoritmos aproximados. Acham uma resposta que pode no ser a soluo tima, mas garantido ser prxima dela. Concentrar no caso mdio. Buscar algoritmos melhores que outros neste quesito e que funcionem bem para as entradas de dados que ocorrem usualmente na prtica.
- Existem poucos algoritmos exponenciais que so muito teis na prtica. - Exemplo: Simplex (programao linear). Complexidade de tempo exponencial no pior caso, mas muito rpido na prtica. - Tais exemplos so raros. A grande maioria dos algoritmos exponenciais conhecidos no muito til.
32
Problemas Exponenciais
desejvel resolver instncias grandes de problemas de otimizao em tempo razovel. Os melhores algoritmos para problemas NP-completo tm comportamento de pior caso exponencial no tamanho da entrada. Para um algoritmo que execute em tempo proporcional a 2N , no garantido obter resposta para todos os problemas de tamanho N 100. Independente da velocidade do computador, ningum poderia esperar por um algoritmo que leva 2100 passos para terminar sua tarefa. Um supercomputador poderia resolver um problema de tamanho N = 50 em 1 hora, ou N = 51 em 2 horas, ou N = 59 em um ano. Mesmo um computador paralelo contendo um milho de processadores, (sendo cada processador um milho de vezes mais rpido que o melhor processador que possa existir) no seria suficiente para chegar a N = 100.
33
34
35
Complexidade: O(n2 ), sendo n o nmero de cidades, ou O(d), sendo d o conjunto de distncias entre cidades. Aspecto negativo: embora todas as arestas escolhidas sejam localmente mnimas, a aresta final pode ser bastante longa.
36
Caminho timo para esta instncia: 0 1 2 5 3 4 0 (comprimento 58). Para a heurstica do vizinho mais prximo, se iniciarmos pelo vrtice 0, o vrtice mais prximo o 1 com distncia 3. A partir do 1, o mais prximo o 2, a partir do 2 o mais prximo o 4, a partir do 4 o mais prximo o 3, a partir do 3 restam o 5 e o 0. O comprimento do caminho 0 1 2 4 3 5 0 60.
37
Embora o algoritmo do vizinho mais prximo no encontre a soluo tima, a obtida est bem prxima do timo. Entretanto, possvel encontrar instncias em que a soluo obtida pode ser muito ruim. Pode mesmo ser arbitrariamente ruim, uma vez que a aresta final pode ser muito longa. possvel achar um algoritmo que garanta encontrar uma soluo que seja razoavelmente boa no pior caso, desde que a classe de instncias consideradas seja restrita.
38