Vous êtes sur la page 1sur 57

ALGORITMOS

Parte I:
1. O que so? 2. O que os caracteriza

Parte II:
3. Algoritmos e computadores 4. O processo de compilao 5. Algoritmos e linguagens de programao

Parte III:
6. Algoritmos resolvendo problemas 7. Algoritmos e correo 8. Resolvem qualquer problema? 9. Adianta execut-los? 10.Nossa ignorncia
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 1

Algoritmos

O que so?

Algoritmo uma receita para resoluo de um problema

Exemplo: Problema: preparar bifes milanesa Algoritmo: precisamos descrever a receita

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos Bife milanesa:

O que so?

1. Limpar a pea de carne 2. Fatiar a carne em bifes 3. Colocar farinha de rosca em um prato 4. Bater 2 ovos em outro prato 5. Repetir, para cada bife: 5.1) passar cada lado do bife nos ovos; 5.2) passar cada lado do bife na mistura de farinha; 5.3) levar o bife frigideira; 5.4) aguardar dourar, virando ambas as faces; 5.5) retirar bife e colocar sobre papel toalha at secar; 5.6) retirar do papel toalha e juntar numa travessa; 6. Decorar a travessa com folhas de alface 7. Servir
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 3

Algoritmos
Objetos de consumo (entrada):
carne farinha ovos alface

O que so?

Objetos de apoio (atores, executores):


faca travessa fogo cozinheiro

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos
Objetos produzidos (sada):
bifes

O que so?

Objeto que controla o processo (receita):


algoritmo

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos
Problema Idia

O que so? Algoritmo

entrada

Algoritmo
Hardware

sada

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos
Um dos primeiros algoritmos:

O que so?

Euclides (300 . . . 400 BC): algoritmo para obter


o mximo divisor comum de dois inteiros positvos Sculo IX (800-899 DC), pennsula arbica/Prsia:
Matemtico Mohammed al-Khowrizm Cria regras passo-a-passo para se fazer aritmtica com algarismos decimais

Em latim:

al-Khowrizm

algorismus

algoritmo, algorithm, . . .

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos

O que so?

Exemplo: Problema: achar o mximo divisor comum (MDC) de dois inteiros positivos dados: M e N. Idia ?? . . .
Como aprendemos na escola ...

Algoritmo:
1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos
Dados: Dois nmeros inteiros, M >= 1 e N >=1

O que so?

Sada:
Um nmero inteiro Z, tal que Z = MDC(M,N)

Apoio, executores: Lpis, papel, borracha, humano

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos
Passo
--1 2 1 2 3 1 2 1 2 1 2 3 1

O que so?

Executando a receita: caso particular no qual M=36 e N=21


M N
36 36 15 15 15 15 15 9 9 3 3 3 3 3
3/2/2013 1:56 AM

Comentrios
36 <> 21 36 - 21 = 15 15 <> 21 no executado: 15 < 21 21 - 15 = 6 15 <> 6 15 - 6 = 9 9 <> 6 96=3 3 <> 6 3 < 6; no executado 6-3=3 MDC 3. Pare.

21 21 21 21 21 6 6 6 6 6 6 6 3 3

Algoritmo
1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1

Copyright@2007, 2008, 2009: Arnaldo V. Moura

10

Algoritmos

O que caracteriza?

1. Algoritmo formado por um texto finito: a receita dada.

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

11

Algoritmos

O que caracteriza?

2. O texto composto por instrues elementares: Elementar depende do contexto:


... juntar dois ovos ... elementar para um cozinheiro ... substituir M por (M-N) ... elementar para quem domina aritmtica bsica ... se hoje voc puder provar que a cotao do dlar vai subir 10% no prximo ms, compre $ 1.000,00 ... no elementar para mortais normais

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

12

Algoritmos

O que caracteriza?

3. O texto uma receita metdica, passo-a-passo:


Passo inicial Passo final Executado um passo, qual o seguinte?

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

13

Algoritmos
4. Ao executar:

O que caracteriza?

partindo de dados vlidos, deve sempre terminar. partindo de dados no-vlidos, pode produzir lixo, ou mesmo no terminar. parte difcil de garantir.

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

14

Algoritmos
e N >= 1:

O que caracteriza?

Exemplo: algoritmo do MDC sempre pra quando M >= 1


A cada execuo dos passos 2 ou 3, M ou N diminuem; logo (M+N) diminui. M e N sempre so >= 1
iniciam assim; M - N >= 1, se M > N N - M >= 1, se N > M
1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1 15

No podemos passar de M=N=1


Nesse caso, MDC = 1 e para.

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos Exemplo: e com dados


Iniciando com M = 3 e N = -1
Passo
1 2 1 2 1 2 ... no pra

O que caracteriza? no vlidos?

M N
3 4 4 5 5 6 -1 -1 -1 -1 -1 -1

Comentrios
-1 <> 3 3 > -1; 3 - (-1) = 4 -1 <> 4 4 <> -1; 4 - (-1) = 5 -1 <> 5 5 <> -1; 5 - (-1) = 6 repete esse padro no vai parar nunca

1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1 16

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos
Algoritmo:
programa, software ...

... e computadores

Computador, HD, disquete, ... :


hardware, executores, atores

Entrada:
teclado, mouse, sensores, ...

Sada:
monitor, impressora, ...
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 17

Algoritmos
1. 2. Texto finito:

... e computadores

Caractersticas dos algoritmos como software:


todo programa tem um texto (talvez muitas linhas) finito ......

Instrues elementares:
elementares para o computador onde o software vai executar. Dificuldades:
Cada computador tem um particular conjunto de instrues bsicas Instrues do computador so muito primitivas

Soluo:escrever algoritmos em uma linguagem de programao (C, C++, JAVA, FORTRAN, . . .)


Programa (software): texto escrito numa particular LP
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 18

Algoritmos

... e computadores

Caractersticas dos algoritmos como software (cont):


3. Receita metdica:
texto escrito numa LP preciso e sem ambigidades

4.

Terminao:
1. Grande desafio: texto escrito numa LP no deixa isso claro. 2. Problema no desenvolvimento de software: execuo sem terminao (i.e. sem loops).
Outro problema: termina com a soluo errada ou tem interrupo abrupta.
19

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

Algoritmos

... e compilao

Um computador , essencialmente, uma mquina programvel muito primitiva


instrues elementares (de mquina) primitivas lidam apenas com cadeias de bits realizam operaes muito simples sobre essas cadeias de bits
trocar um bit (de 0 para 1, ou de 1 para 0), dependendo do valor atual de outro bit armazenar na memria uma cadeia de bits recuperar da memria uma cadeia de bits

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

20

Algoritmos Arquitetura bsica simplificada:

... e compilao

Memria
1 2

entrada memria
processador

N 10 20 27 30 32

2^N 1024 1048576 134217728 1073741824 4294967296

Bytes 1K 1M 128 M 1G 4G

2^N

sada

1 byte = 8 bits

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

21

Algoritmos

... e compilao

Arquitetura bsica simplificada (cont): Formado por memria (grande), processador e circuitos de entrada e de sada Processador executa instrues elementares especficas dessa mquina
inclusive armazenamento e recuperao de dados da memria

Processador e circuitos de e/s recebem dados das entradas e exibem dados nas sadas
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 22

Algoritmos
Compilao:

... e compilao

Processo de traduzir programas escritos em uma particular LP para cdigo em instrues bsicas de uma mquina especfica Traduo de LP para linguagem de mquina:
Dificuldades: processo laborioso, entediante e sujeito a erros. Soluo: Escrever um programa para fazer a traduo Esse programa um

compilador

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

23

Algoritmos

... e compilao

Para cada LP e cada computador (processador), um compilador especfico Existem milhares de LPs:
FORTRAN: cientfica, mais antiga ALGOL, C, PASCAL: estruturadas, generalistas C++, C#, JAVA : lidam com tecnologia de objetos LISP, PROLOG: voltadas para IA . . . (muitas outras)
Copyright@2007, 2008, 2009: Arnaldo V. Moura 24

3/2/2013 1:56 AM

Algoritmos

... e compilao

O processo de compilao/edio/execuo:
idia
problema algoritmo

programao programa
fonte (LP)

papel

arquivo

compilao

programa objeto (LM)

execuo
soluo

arquivo

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

25

Algoritmos
Codificao/compilao/execuo:

... e compilao

permite executar um algoritmo em um computador obtm soluo para problemas rapidamente (?!)

Algoritmo:
centro do universo demais componentes so acessrios Cincias da Computao: estudo de algoritmos

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

26

Algoritmos

... e linguagens de programao

Pessoas codificam algoritmos em LPs Que tipos de instrues (em geral) esto presentes em uma LP?
Atribuio: A = E; Seqenciamento: . . . faa A; faa B; . . . ... faa A; faa B; ...

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

27

Algoritmos

... e linguagens de programao

Tipos de instrues (em geral) em uma LP (cont):

Desvio condicional: . . . se (A verdade) ento (faa B) seno (faa C); . . . . . . se (A verdade) ento (faa B); . . . Iteraes: . . . faa A exatamente N vezes; . . . . . . repita A at que (Q seja verdade); . . . . . . enquanto (Q verdade) faa A; . . .

Inmeras outras, mais sofisticadas, dependendo da LP

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

28

Algoritmos

... e linguagens de programao

Como dados so representados e manipulados em LPs?

Valores dos dados so armazenados na memria; A memria referenciada por meio de variveis:
Varivel: um nome simblico que designa uma, ou mais, posies na memria
Exemplo: X, Z, D3, CASA_DE_PEDRA, . . .

A cada varivel est associado um tipo de dados:


O nmero de posies de memria ocupadas pela varivel depende do seu tipo; As operaes e manipulaes permitidas com o valor e uma varivel dependem de seu tipo.
Copyright@2007, 2008, 2009: Arnaldo V. Moura 29

3/2/2013 1:56 AM

Algoritmos

... resolvendo problemas

Entender bem o problema a ser resolvido:


separar dados de entrada vlidos dos que no so vlidos definir como ser representada a soluo na sada

Criar uma idia para resolver o problema


desenvolver o algoritmo (processo criativo, rascunho, lpis e papel) simular execuo do algoritmo em casos de fronteira verificar correo e trmino

Traduzir a idia para uma LP, escrevendo um programa


restrito aos comandos e tipos de dados da LP

Editar/compilar/executar o programa
processo iterativo para retirar erros (algoritmo e cdigo)
Copyright@2007, 2008, 2009: Arnaldo V. Moura 30 3/2/2013 1:56 AM

Algoritmos

... correo

O algoritmo corretamente soluciona o problema? Provar um teorema (como em matemtica) mostrando que o algoritmo correto:

processo de convencimento dos pares possvel exibir uma prova formal da correo?
Dificuldades: preciso e rigor ao descrever a execuo do algoritmo especificar formalmente dados de entrada e a sada

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

31

Algoritmos
Questo:

... resolvem qualquer problema?

Dado um problema P, sempre haver um algoritmo que resolva P corretamente?

P deve ser um problema prtico, fcil de enunciar


- ordenar um conjunto de nmeros, - calcular produto de matrizes, . . .

O algoritmo A que resolve P deve funcionar corretamente em todas as (infinitas) entradas de P


- todos os conjuntos de inteiros quaisquer - quaisquer duas matrizes de quaisquer dimenses compatveis entre si
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 32

Algoritmos

... resolvem qualquer problema?

A Cincia da Computao tem a resposta para a questo SURPRESA ! ! !


NO. H problemas para os quais NO EXISTE algoritmos capazes de resolve-los corretamente. Com mais tecnologia (computadores mais rpidos, mais memria) e dado tempo suficiente para rodar o programa, poderemos resolver esses problemas, no futuro, certo? NO Computador nenhum vai resolver esses problemas, nem hoje, nem amanh, nem nunca; nem aqui, nem em Marte, em lugar algum; rodando qualquer programa por quanto tempo quiser (anos,sculos, ...)
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 33

Algoritmos

... resolvem qualquer problema?

Um problema indecidvel (insolvel) [Harel, Computers Ltd.]: Dado um conjunto finito T de ladrilhos quadrados:

Problema: podemos ladrilhar qualquer grade quadrada com ladrilhos de tipo T, casando as cores das faces que se tocam? SIM ou NO?

pode usar quantos ladrilhos quiser, de cada tipo os ladrilhos no podem ser girados

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

34

Algoritmos
Exemplo 1:

... resolvem qualquer problema?

consegue para toda regio do plano

SIM!

Exemplo 2:
todas as outras possibilidades falham nessa regio

NO!
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 35

Algoritmos

... resolvem qualquer problema?

Problema de ladrilhar toda regio do plano:

NENHUM computador JAMAIS vai conseguir resolver esse problema, nem agora, nem nunca, nem com QUALQUER melhoria de tecnologia, nem com QUALQUER tamanho de memria, nemcom QUALQUER tempo de execuo

Podemos demonstrar isso, matematicamente!

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

36

Algoritmos

... resolvem qualquer problema?

Um problema decidvel (solvel) [Harel, Computers Ltd.]: Dado um conjunto finito T de ladrilhos quadrados:

Dadas duas posies (I e F) na grade infinita do plano Problema: podemos ladrilhar um caminho na grade, partindo de I e chegando em F, com ladrilhos de tipo T, e casando as cores das faces que se tocam? SIM ou NO?
pode usar quantos ladrilhos quiser, de cada tipo os ladrilhos no podem ser girados

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

37

Algoritmos
Exemplo:

... resolvem qualquer problema?

F I

Com esses ladrilhos Com essas posies I e F

SIM!
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 38

Algoritmos

... resolvem qualquer problema?

Problema de ladrilhar um caminho entre duas posies:

EXISTE um algoritmo que decide se h, ou se no h, o caminho entre as duas posies dadas, usando ladrilhos do conjunto dado

Podemos exibir o algoritmo e mostrar sua correo e terminao, no importa qual o conjunto T dado e no importa quais as posies I e F dadas

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

39

Algoritmos

... adianta execut-los?

Dado um problema P, e conseguido um algoritmo A para P, ento podemos resolver qualquer instncia de P, com dados de entrada E, executando A sobre os dados E. CORRETO? NEM SEMPRE:
ao executar sobre E, o algoritmo A pode precisar de um tempo muito longo (anos, sculos, milhes de sculos, ...) ao executar sobre E, o algoritmo A pode precisar de um muita memria (vrios GBs, muitos milhes de GBs, ...)

Nesses casos, A um algoritmo imprestvel!

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

40

Algoritmos

... adianta execut-los?

Se A um algoritmo ruim, ento basta criar outro algoritmo para P, que seja mais eficiente (em tempo e/ou em memria) CORRETO?

SURPRESA !!!
Pode ser que NO EXISTA um algoritmo mais eficiente do que A para resolver P e podemos provar isso matematicamente!

P um problema computvel, porm intratvel

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

41

Algoritmos
Dado um mapa rodovirio:

... adianta execut-los?

Exemplo: O jogo do bloqueio [Harel, op. cit.]

I1 I1 I2

I2

Posies iniciais de J1 (jogador 1): I1 Posies iniciais de J2 (jogador 2): I2


F2 F1 I2 F1 I1 I1 F2 I2

Posies finais de J1: F1 Posies finais de J2: F2


3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

42

Algoritmos

... adianta execut-los?

Problema: Ser que o jogador J1 tem uma estratgia vencedora? Regras de movimentos:

J1 inicia; depois os jogadores se alternam. Em um movimento, um jogador pode percorrer qualquer trecho (concatenado) de mesma cor, partindo de uma posio ocupada por si
no pode passar por interseces ocupadas (por si ou pelo adversrio) ponto final deve estar tambm desocupado

Vencedor: aquele jogador que chegar a um ponto final primeiro


F2

F1 I2 F1

I1 I1 F2 I2

Nesse mapa, nessas posies iniciais e finais

J1 TEM estratgia (seq. de movimentos) sempre vencedora


Copyright@2007, 2008, 2009: Arnaldo V. Moura 43

3/2/2013 1:56 AM

Algoritmos
Jogo do bloqueio:

... adianta execut-los?

Algoritmo A: De forma sistemtica, tente todas as possibilidades de seqncias alternadas de movimentos, comeando com J1 Possvel: nmero finito de possibilidades Dificuldade:
o nmero de possibilidades enorme para cada movimento de J1, deve tentar todos os movimentos de J2 para cada movimento de J2, deve tentar todos os movimentos de J1

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

44

Algoritmos

... adianta execut-los?

Estimando o tempo de execuo do algoritmo A:

Uma quantidade, N, mede o tamanho (num. de bits na representao) da entrada


-- por exemplo, N pode ser o nmero de interseces, ou o nmero de vias, ou ....

Tempo de execuo dado pela contagem do nmero de passos elementares que A executa, no pior caso, para entradas de tamanho N dado pela funo f(N) = 2^N.

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

45

Algoritmos

... adianta execut-los?

Tempo de execuo do algoritmo A: Em um computador que realiza 1 milho de passos elementares por segundo, o tempo de execuo de A seria
n
f(n)=2^n 10 1 ms 20 1s 50 35.7 anos 60 3.000 anos 100 + 400 trilhes anos 200 num. sc. tem 45 dgitos!

Impraticvel para 50 ou mais cidades Rodando A em um computador 10.000 vezes mais rpido
n
f(n)=2^n 50 1,29 dias 60 3 anos 100 + 40 bilhes sc. 200 num. sc. tem 41 dgitos!

Impraticvel para 60 ou mais cidades: quase nada muda!


3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 46

Algoritmos

... adianta execut-los?

Algoritmo A no bom para o problema do bloqueio: Precisamos de outro algoritmo, mais eficiente

O que um algoritmo eficiente?


N: o tamanho de uma entrada vlida f(N): quantos passos, no mximo, A executa com entradas de tamanho N

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

47

Algoritmos

... adianta execut-los?

com um milho de passos por segundo N f(N)


N^2 N^5 2^N N^N

10
0,1 ms 0,1s 1ms 2,8s

20
0,4ms 3,2s 1s 3,3 trilhes anos

50
2,5ms 5,2m 35,7anos sculos 70 dgitos

100
10ms 2,8h sculos 400 trilhes sculos 185 dgitos 40s

200

3,7dias sculos 45 dgitos sculos 445 dgitos

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

48

Algoritmos

... adianta execut-los?

Tempos de execuo, de pior caso: Polinomiais: resultam em algoritmos eficientes Exponenciais: resultam em algoritmos no eficientes

Problemas tratveis: tm algoritmos polinomiais Problemas intratveis: no tm algoritmos polinomiais Problema do bloqueio: intratvel

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

49

Algoritmos

... nossa ignorncia

Dado um problema P, como saber se tratvel? SURPRESA!!! Para muitos problemas de grande interesse prtico, no sabemos se so tratveis ou no!

Essa um das maiores questes em aberto em Cincias da Computao!

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

50

Algoritmos

... nossa ignorncia

Exemplo: problema do caixeiro viajante


Dado:
mapa de cidades, com custo de viagem entre cada par de cidades cidade de incio, I, cidade de trmino, F um valor K

Problema:
existe rota, de I at F, visitando as cidades exatamente uma vez com custo no mximo K? SIM/NO?

A notar:
problema de grande interesse prtico problema simples de entender
Copyright@2007, 2008, 2009: Arnaldo V. Moura 51

3/2/2013 1:56 AM

Algoritmos
Instncia: O mapa:
3

... nossa ignorncia

6 4 9 8 10 3

10 4 7 5

O valor mximo do percurso: 29 F


9

2 7 4

EXISTE um percurso? SIM/NO

Os pontos inicial e final

3/2/2013 1:56 AM

Copyright@2007, 2008, 2009: Arnaldo V. Moura

52

Algoritmos
6 3 4 9 4 3 7 5 7 4 2 9 8 10

... nossa ignorncia


6 3

10

I F

10 3

K=29
3/2/2013 1:56 AM

3+6+10+4+2+3 = 28
Copyright@2007, 2008, 2009: Arnaldo V. Moura

SIM
53

Algoritmos
6 3 4 9 4 3 7 5 7 4 2 9 8 10

... nossa ignorncia

10

I F

???

Com esse custo no possvel

K=25
3/2/2013 1:56 AM

NO
Copyright@2007, 2008, 2009: Arnaldo V. Moura 54

Algoritmos

... nossa ignorncia

Algoritmos para o problema do caixeiro viajante: Partindo da posio I, tente todas as possibilidades que fiquem dentro do custo K
Se achar um caminho at F, responda SIM Se no achar, responda NO

Nmero de possibilidades finito


algoritmo corretamente resolve o problema

Nmero de possibilidades muito grande


tempo de execuo exponencial no nmero de cidades

O algoritmo impraticvel
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 55

Algoritmos

... nossa ignorncia

Problema do caixeiro viajante: Existe um algoritmo mais eficiente (polinomial no nmero de cidades)?
SURPRESA !!! NO SABEMOS !?! Esse o caso com MUITOS outros problemas de interesse prtico (classe NP)
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 56

Algoritmos
O que podemos fazer, por ora?

... alternativas

Uso de heursticas:
obtm boas solues, sem garantia de otimalidade

Algoritmos randomizados:
do a resposta correta quase sempre

Algoritmos aproximativos:
do soluo com garantia de proximidade da tima

Computao quntica:
baseado na mecnica quntica, nova maneira de programar

Computao molecular:
paralelismo macio usando reaes moleculares

...
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 57

Vous aimerez peut-être aussi