O Problema do Caixeiro Viajante - mat.ufrgs.brTranslate this pageportosil/caixeiro.htmlFormulando o problema do caixeiro: Suponha que um caixeiro viajante tenha de visitar n cidades

Embed Size (px)

Citation preview

O Problema do Caixeiro Viajante

No se iluda com a aparncia de brincadeira deste problema. Ele NO mais uma curiosidade inconsequente para entreter alunos desmotivados. Emverdade, ele um problemaque deve fazer parte da bagagem de todo profissional competente da rea matemtica.Sua importncia resume-se em duas capacidades:

de modo simples e concreto, exemplifica a enormevelocidade de crescimento da fatorial

prova-se que muitos problemas combinatrios envolvem tantasalternativas de soluo quanto este problema, de modo que ele uma espciede "metro" com o qual medimos a complexidade computacional dos problemascombinatrios ocorrendo em engenharia e no trabalho cientfico.

Formulando o problema do caixeiro:

Suponha que um caixeiro viajante tenha de visitar ncidades diferentes, iniciando e encerrando sua viagem na primeira cidade.Suponha, tambm, que no importa a ordem com que as cidades so 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 tornamnima a viagem total.

Exemplificando o caso n = 4:

se tivermos quatro cidades A, B, C e D, uma rotaque o caixeiro deve considerar poderia ser:saia de A e da v para B, dessa v para C, e da v para D e entovolte a A. Quais so as outras possibilidades ? muito fcil ver que existem seis rotas possveis:

ABCDA

ABDCA

ACBDA

ACDBA

ADBCA

ADCBA

Complexidade computacional do problema do caixeiro:

O problema do caixeiro um clssico exemplo de problema de otimizaocombinatria. A primeira coisa que podemos pensar para resolver esse tipode problema reduz-lo a um problema de enumerao: achamos todas asrotas possveis e, usando um computador, calculamos o comprimento de cada uma delas e ento vemos qual a menor. ( claro que se acharmostodas as rotas estaremos contando-as, da podermos dizer que estamos reduzindo o problema de otimizao a um de enumerao).

Para acharmos o nmero R(n) de rotas para o casode n cidades, basta fazer um raciocnio combinatrio simplese clssico. Por exemplo, no caso de n = 4 cidades, a primeira e ltima posioso fixas, de modo que elas no afetam o clculo; na segunda posiopodemos colocar qualquer uma das 3 cidades restantes B, C e D, e uma vezescolhida uma delas, podemos colocar qualquer uma das 2 restantes naterceira posio; na quarta posio no teramos nenhuma escolha, poissobrou apenas uma cidade; consequentemente,o nmero de rotas 3 x 2 x 1 = 6, resultado que tinhamos obtido antescontando diretamente a lista de rotas acima.

De modo semelhante, para o caso de n cidades, como a primeira fixa, o leitor no ternenhuma dificuldade em ver que o nmero total de escolhas que podemosfazer (n-1) x (n-2) x ... x 2 x 1. De modo que, usando a notaode fatorial: R(n) = (n - 1)!.

Assim que nossa estratgia reducionista consiste em gerar cada uma dessasR(n) = (n - 1)! rotas, calcularo comprimento total das viagens de cada rota e verqual delas tem o menor comprimento total. Trabalho fcil para o computador,diria algum. Bem, talvez no. Vejamos o porqu.

Suponhamos temos um muito veloz computador, capaz de fazer 1 bilho deadies por segundo. Isso parece uma velocidadeimensa, capaz de tudo. Com efeito, no caso de 20 cidades, o computadorprecisa apenas de 19 adies para dizer qual o comprimento de uma rota eento ser capaz de calcular 109 / 19 = 53 milhes de rotas porsegundo. Contudo, essa imensa velocidade um nada frente imensidodo nmero 19! de rotas que precisar examinar. Com efeito, acredite se puder,o valor de 19! 121 645 100 408 832 000 ( ou , aproximadamente, 1.2 x 1017 em notao cientfica).Consequentemente,ele precisar de

1.2 x 1017 / ( 53 milhes ) = 2.3 x 109 segundos

para completar sua tarefa, o que equivale a cerca de 73 anos .O problema que a quantidade (n - 1)! crescecom uma velocidade alarmante, sendo que muito rapidamente o computadortorna-se incapaz de executar o que lhe pedimos. Constate isso maisclaramente na tabela a seguir:

nrotas por segundo( n - 1 )!clculo total5250 milhoes24insignific10110 milhoes362 8800.003 seg1571 milhoes87 bilhoes20 min2053 milhoes1.2 x 101773 anos2542 milhoes6.2 x 1023470 milhoes de anos

Observe que o aumento no valor do n provoca uma muito lenta diminuio navelocidade com que o computador calcula o tempo de cada rota (eladiminui apenas de um sexto ao n aumentar de 5 para 25), mas provoca umimensamente grande aumento no tempo total de clculo. Em outras palavras: a inviabilidade computacional devida presena da fatorial namedida do esforo computacional do mtodo da reduo. Com efeito, se essacomplexidade fosse expressa em termos de um polinmio em n o nosso computadorseria perfeitamente capaz de suportar o aumento do n. Confira isso na seguinte tabela que corresponde a um esforo computacional polinomial R( n ) = n5:

nrotas por segundon 5clculo total5250 milhoes3 125insignific10110 milhoes100 000insignific1571 milhoes759 3750.01 seg2053 milhoes3 200 0000.06 seg2542 milhoes9 765 6250.23 seg

Entoo mtodo reducionista no prtico (a no ser para o caso de muitopoucas cidades), mas ser que no pode-se inventar algum mtodo prtico (por exemplo, envolvendo esforo polinomial na varivel nmero de) pararesolver o problema do caixeiro? Bem, apesar de inmeros esforos, ainda nofoi achado um tal mtodo e comea-se a achar que o mesmo no existe.

A existncia ou no de um mtodo polinomial para resolver o problema do caixeiro viajante um dos grandes problemas em aberto da Matemtica na medida em que S. A. COOK (1971) e R. M. KARP (1972)) mostraramque uma grande quantidade de problemasimportantes (como o caso de muitos tipos de problemas de otimizao combinatria, o caso do problema da decifragem de senhas criptografadas com processos modernos como o DES, etc) podem ser reduzidos, em tempo polinomial, ao problema do caixeiro.

Consequentemente: se descobrirmos como resolver o problema do caixeiro em tempo polinomial ficaremos sendo capazes de resolver, tambm em tempopolinomial, uma grande quantidade de outros problemas matemticos importantes; por outro lado, se um dia algum provar que impossvel resolver o problema do caixeiro em tempo polinomial no nmero de cidades, tambm se ter estabelecido que uma grande quantidade de problemas importantes no tem soluo prtica.

Costuma-se resumir essas propriedades do problema do caixeiro dizendoque ele pertence categoria dos problemas NP - completos.

EXERCICIO

Por que o computador, no caso de 21 cidades, precisaria de 20 vezesmais anos do que precisou para resolver o caso de 20 cidades pelo metodoreducionista?

EXERCICIO

V. seria capaz de ver relao entre o problema do caixeiro viajante e osseguintes problemas tecnolgicos, de enorme importncia econmica?

a minimizao do tempo que um robot industrial gasta para soldar a carcaa de um automvel

custo em tempo ou combustivel na rota da distribuio diria de um jornal produzido numa grande cidade?

custo em tempo na rota de abastecimento das vrias bases militares envolvidas numa guerra?

EXERCICIO

Imagine um computador com velocidade fantstica, sua escolha. Faatabeladas fatoriais de 10 a 100, pulando de 10 em 10. Para cada uma dessasfatoriais, calcule o tempo que esse computador levaria para resolver orespectivo problema do caixeiro viajante. Concluso?

EXERCICIO

Compare o esforo da resoluo do problema do caixeiro viajante com odo clculo - diretamente, pela definio - de um determinante n x n.

EXERCICIO

Faa a anlise da complexidade computacional da variante do problema docaixeiro que tem cidade inicial e cidade final distintas.

Exemplo do uso do problema do caixeiro comoum "metro" de complexidade computacional.

Uma das grandes tarefas do sculo XXI ser a construo de novos paradigmascomputacionais que transcendam a j quase exaurida capacidade doscomputadores eletrnicos digitais. Isso nos permitir resolver problemascientficos e tcnicos de tratamento atualmente inacessvel. Uma promissorapossibilidade de novo paradigma computacional a dos computadores genticos.

Os genes dos seres vivos podem ser vistos como computadores processando ainformao gentica contida nas molculas de DNA que os formam. Enquanto os computadores eletrnicos processaminformao codificada em sequncias de 0's e 1's, os genes processam informao (gentica) codificada em sequncias feitas com os quatro nucleotdeosque formam as molculas de DNA: adenina, citosina, guanina e timina. Os genespodem ser vistos como um computador que trabalha com base=4, explorando as correspondncias:

0 - adenina, 1 - citosina, 2 - guanina e 3 - timina.

O potencial computacional a envolvido enorme:

um kilograma de DNA armazena mais informao do que a soma de todos os computadores eletrnicos at hoje construdos o processamento da informao gentica simultneo e, ento, muito mais rpido do que o processamento sequencial dos computadores eletrnicos; provavelmente, uma mera gotcula de DNA teria maior poder computacional do que o maior computador eletrnico que j foi construdo

( alguns pesquisadores estimam que se conseguiria velocidades de clculo at um milho de vezes maior do que a dos atuais computadores eletrnicos)

A primeira pessoa conseguindo demonstrar na prtica esse potencial foi Leonard Adleman, em 1994. Ele construiu um prottipo de computadorgentico pararesolver o Problema do Caixeiro Viajante, na variante em que se tem setecidades, quatorze caminhos e cidade inicial distinta da final.

A primeira tarefa de Adleman foi dar uma representao biolgica para osdados do problema: as cidades e os caminhos entre cidades. Para tal, eleiniciou associando bijetoramente ascidades envolvidas sequncias com nmero fixo de nucleotdeos(ele usou sequncias com 20 nucleotdeos e em nossa ilustraoabaixo usaremos, para simplificar, apenas 8). Para representaros caminhos entre pares de cidades, ele explorou um fenmeno bsico queocorre com os quatro nucleotdeos. Eles formam pares complementares,atraindo-se Guanina com Citosina e Adenina com Timina, sendo exatamenteesses acoplamentos que do origem ao conhecido formato de hlice dupla da DNA.

Assim, para representarcada "caminho da cidade X at a cidade Y", Adleman usou tcnicas laboratoriais para fazer oacoplamento da segunda metade da sequncia dede nucleotdeos da cidade X com a primeira metade da sequncia de Y e ento fabricar a sequncia complementar desse acoplamento.Exemplificando, se X=ACGAGTTG e Y=AGCTCAGGento o caminho de X para Y fica:GTTG + AGCT = GTTGAGCT ---> CAACTCGA. Acompanhe na ilustrao abaixo e, em particular, observe e verifique que as atraes de pares complementares quem justifica usarmos a sequncia CAACTCGA como representante docaminho da cidade X para a cidade Y:

As sequncias das cidades X e Y, por fora da atrao complementar,juntam-se - como chaves em fechaduras - com a sequncia do caminho de Xpara Y formando uma "sequncia hibridizante":

Conseguida a representao gentica dos dados do problema do caixeiro, veio a segunda e mais difcil tarefa de Adleman: fazer com que a informaoassociada ao problema fosse processada geneticamente e assim obter ocaminho timo desejado. Para conseguir isso, ele precisou usar dezenasde procedimentos laboratoriais que consumiram uma semana. Esses iniciaramcom a ligao das sequncias hibridizantes (de modo a obter rotaspassando por todas as cidades), continuaram com a separao das rotaslegtimas ( as que iniciavam na primeira cidade e terminavam na ltima,e, ademais, passavam exatamente uma vez por cada outra cidade), eterminaram com a determinao da rota minimal.

O trabalho de Adleman foi apenas um primeiro passo, sendo que ainda existemmuitos obstculos a vencer antes de se conseguir tornar a computaogentica prtica no trabalho cientfico. Por exemplo, para poder garantirque as DNA hibridizantesseriam capazes de gerar todos os possveis caminhos, ele precisou usarcerca de um trilho de cpias da sequncia de cada cidade e da sequnciade cada caminho entre pares de cidades. Isso faz com que, para resolver oproblema do caixeiro com 200 cidades e pelo mtodo de Adleman, seja precisouma quantidade de DNA pesando mais do que nosso planeta. Outras dificuldadesimportantes so a demora e os erros dos procedimentos laboratoriais envolvidos. De qualquer modo, s o tempo dirse os cientistas e matemticos, j trabalhando na computao gentica,conseguiro remover esses obstculos.

verso: 29-junho-2 000

localize esta pgina em: http://athena.mat.ufrgs.br/~portosil/caixeiro.html

J.F. Porto da Silveira ( [email protected] )

permitida a reproduo, desde que com fins acadmicos e no comerciais