Você está na página 1de 140

PARTE 2

INTRODUO COMPUTABILIDADE

CONCEITOS DA NOO INFORMAL DE COMPUTABILIDADE Prolo, agosto/2005 1. Procedimento efetivo e Algoritmo (a) Procedimento efetivo (ou programa): Tenta capturar a noo informal de um programa como uma especicao que pode ser transmitida uma mquina que vai executlo. uma descrio nita no-ambgua de um conjunto de operaes cada operao deve ser efetiva no sentido de que h um procedimento estritamente mecnico para comput-las a descrio deve incluir o processo de deciso da ordem de execuo das operaes, que tambm deve ser efetivo (mecanicamente computvel). Note quo informal a denio acima. E nem poderia ser de outra maneira para incluir todas as possveis descries que poderiam ser consideradas como sendo um procedimento efetivo. Note tambm que esta caracterizao implicitamente invoca a possibilidade de construir uma mquina capaz de executar as operaes e ordem de execuo. O fato de que o procedimento efetivo precisa ser interpretado por um agente implica na existncia de uma linguagem ou formalismo subjacente usado para codicar a descrio. So exemplos de procedimentos efetivos: programas em C, Java, linguagem assembly e de mquina; uxogramas; mquinas de estados, mquinas de Turing (veremos adiante); descries em portugus estruturado (??). Discusso: ser que uma receita de bolo um procedimento efetivo? (b) Algoritmo: um procedimento efetivo que quando executado com qualquer entrada sempre termina. Note que embora o procedimento efetivo seja uma descrio nita, ela pode descrever um processo que no termina (pense em um programa que entra em loop innito). O nome algoritmo muitas usado com sentido semelhante ao de procedimento efetivo acima. Para nosso estudo de teoria de computao vamos restringir o conceito de algoritmo ao de um procedimento efetivo ou programa que nunca entra em loop! Note que mesmo na prtica quando voc escreve um algoritmo, em geral, espera-se que sejam previstas todas as situaes de modo que ele nunca entre em loop innito, certo?

2. Funes: Seja f : A B uma funo, onde A o conjunto de partida e B o conjunto de chegada.. Em computao importante salientar o fato de que algumas funes no so denidas para todos os elementos do conjunto de partida. Por exemplo a funo inversa sobre os reais no denida para x = 0. Para deixar claro esta caracterstica deve car claro que sempre que usarmos o termo funo simplesmente, estamos nos referindo sua acepo mais geral, de funo parcial. (a) De maneira geral f uma funo parcial, isto , f no precisa estar denida para todo elemento de A. (b) domnio de f o conjunto dom(f ) A para cujos elementos f denida. (c) funo total uma funo que denida para todo elemento do conjunto de partida A. Qual o domnio de uma funo total? (d) Obviamente pelas denies acima toda funo total tambm uma funo parcial (na verdade um caso especial). (e) s vezes usa-se informalmente o termo funo parcial quando se sabe que a funo no denida para todo elemento. importante salientar que tcnicamente o termo a ser usado algo como funo no-total ou funo parcial no-total, pois que o termo funo parcial por si no implica necessriamente restrio do domnio como salientado no item anterior. (f) grafo de uma funo: gr(f ) = {(x, y) | y = f (x)}. Note que gr(f ) um conjunto de pares de A B. (g) Para funes totais, dene-se: f injetora ou 1-1 se x1 , x2 A, com x1 = x2 , f (x1 ) = f (x2 ). f sobrejetora ou onto se y B, x A, tal que y = f (x). f bijetora ou 1-1, onto se f simultaneamente injetora e sobrejetora. Em qual destes casos garantida a existncia de uma funo inversa f 1 ? Em qual deles a funo inversa garantidamente total? Em qual deles a funo inversa garantidamente uma bijeo?

3. Uma funo f dita computvel (ou efetivamente computvel) se existir um procedimento efetivo P que a computa. Note que pode-se combinar este adjetivo computvel com os adjetivos total, parcial, etc. e dizer por exemplo: funo total computvel, etc. No caso de uma funo computvel no ser total, a denio acima no ca clara! O que o procedimento efetivo deve fazer quando lhe submetida como entrada um valor de A fora do domnio da f ? Precisamos de uma denio mais precisa: Uma funo f dita computvel (ou efetivamente computvel) se existir um procedimento efetivo P tal que para todo x A, se P executado tendo x como entrada: (a) se x dom(f ), P termina e gera como sada f (x); (b) se x dom(f ), P no termina, isto , P entra em loop innito. Discusso: Por que a clusula 3b relevante? Porque a denio deve se importar com elementos para os quais f no denida? Voc acha que sempre possvel detectar via procedimento efetivo valores de x A fora do domnio da f , implementando uma extenso total da f na qual f (x) = erro para tais valores? Discusso: Como se prova que uma funo f computvel? Como se prova que uma funo f no computvel? Qual o papel do loop innito na computao? Ser que possvel construir uma linguagem que garanta que as descries quando executadas nunca entrem em loop innito? Ser que tais linguagens preservam o mesmo poder de computao de C ou Java? Alis, uma questo central: Ser que toda funo computvel por algum procedimento efetivo???

4. Propriedade ou Problema de Deciso: uma funo total binria (contradomnio tem apenas dois elementos: 0 e 1, true e false, etc.) P r : U {0, 1} Ex: Dado um grafo G, dizer se ele tem ciclos. (a) A funo Pr dene naturalmente um conjunto A = {x U | P r(x) = 1} dos elementos do domnio que satisfazem a propriedade. (b) Por outro lado, para todo conjunto A U , a sua funo caracterstica, denida como A : U {0, 1} x U 1 se x A, 0 se x A, uma funo total binria. (c) Concluso: propriedade, problema de deciso, funo binria total e conjunto nada mais so do que vises diferentes da mesma coisa. (d) Em computao estamos interessados em representaes mais do que em abstraes matemticas. Tais representaes de objetos matemticas so feitas atravs de strings de caracteres. Conforme veremos adiante, chamamos de linguagem um conjunto de strings. 5. Um problema (conjunto, linguagem) P r dito decidvel se existe um procedimento efetivo (programa) P que o decide, i.e., se a entrada do programa x, ento: (a) se x P r, P gera como sada 1; (b) se x P r, P gera como sada 0. Note que isto o mesmo que dizer que P r computvel. A funo caracterstica de um conjunto A tambm pode ser pensada como a sua funo de deciso.

INTRODUO SUSCINTA DEFINIO FORMAL DE LINGUAGENS Prolo, agosto/2005 1. smbolo: entidade abstrata mnima (como ponto na geometria, tomo na qumica). Ex: a b 0 1 # 9 < , 2. alfabeto: conjunto de smbolos. Ex: {0,1}, {a,b,c, ...,z}, ASCII. NOTA: Usualmente usaremos o smbolo para denotar alfabetos. 3. string, cadeia, palavra, sentena: sequncia nita de smbolos. Ex: abc else 105 37.537 4. O conjunto de todos os strings possveis usando smbolos de um alfabeto denotado por . 5. tamanho de um string: o nmero de ocorrncia de smbolos na sequncia. Ex: |abc| = 3, |37.537| = 6 6. O meta-smbolo usado para representar o string vazio. Qual o tamanho do string ? 7. Concatenao de strings w e v: o string formado pela justaposio dos strings w e v (wv). Notas: |wv| = |w| + |v|, w= w= w 8. LINGUAGEM: Conjunto (possivelmente innito) de strings de smbolos de um dado alfabeto. 9. Exemplos de linguagens: (a) linguagem ou {}. (b) L={} a linguagem que contm apenas o string vazio. (c) linguagem L das palndromes sobre = {a, b} Nota: palndrome uma sequncia que ca igual quando lida de trs para frente. (d) a mais ampla linguagem sobre um alfabeto . (e) Considere a linguagem L de todos os strings sobre = {a, b, c} que tem nmero de as maior do que o nmero de bs. Liste todos os strings de tamanho 5. L? Por que? (f) Considere a linguagem L {a, b, c} cujas sentenas tem a forma an bn para algum n 0. Liste todas as sentenas de w L tal que |w| 5. (g) Conjunto de todos os programas sintaticamente corretos em C ou Java. (h) Conjunto de todos os programas sintaticamente corretos em C ou Java que no tem entradas nem parmetros e que quando executados terminam (isto , no entram em loop innito). (i) Conjunto de todos os programas sintaticamente corretos em C que no tem entradas nem parmetros e que quando executados do segmentation fault.

(j) Conjunto de todas as representaes de nmeros naturais no sistema de representao romano. (k) Conjunto de todas as representaes de nmeros naturais no sistema posicional binrio. (l) Sejam L1 a linguagem das palndromes sobre = {a, b} e L2 a linguagem sobre cujas sentenas tem sempre a forma ww R, onde w {a, b} e w R o reverso de w. Qual a relao entre L1 e L2? a) L1 L2; b) L1 L2; c) L2 L1; d) L2 L1; e) L1 = L2. 10. Unio de linguagens: L1 L2 = {w|w L1 ou w L2} 11. Concatenao de linguagens: L1L2 = {xy|x L1 e y L2} 12. Interseco de linguagens: L1 L2 = {w|w L1 e w L2} 13. RELEMBRANDO: Um problema (conjunto, linguagem) P r dito decidvel se existe um procedimento efetivo (programa) P que o decide, i.e., se a entrada do programa x, ento: (a) se x P r, P gera como sada 1; (b) se x P r, P gera como sada 0. Note que isto o mesmo que dizer que P r computvel. A funo caracterstica de um conjunto A tambm pode ser pensada como a sua funo de deciso.

CARDINALIDADE Prolo, agosto/2005 1. Denio: 2 conjuntos A e B tem mesma cardinalidade cd(A) = cd(B), se existe uma bijeo h : A B (ou, equivalentemente, h : B A). 2. Denio: cd(A) cd(B), se existe funo 1-1 (injetora) h : A B 3. Note que: se cd(A) cd(B) h : A B injetora, ento bijeo h : A B e cd(B) cd(A) h : B A injetora, e portanto cd(A) = cd(B). 4. Denio: cd(A) < cd(B), se cd(A) cd(B) e cd(A) = cd(B) (ou equivalentemente se cd(A) cd(B) e not(cd(A) = cd(B))). 5. Intuio: Cardinalidade uma medida do tamanho de um conjunto. 6. Cardinalidade para conjuntos nitos simples: Se A nito, cd(A) o nmero de elementos de A. Ex: cd({0,1}) = cd({true,false}) = 2 Ex: cd({0,1}) < cd({high, low, off}) (= 3) 7. Cardinalidade para conjuntos innitos no to intuitiva, como veremos: (a) cd(N) (onde N o conjunto dos nmeros naturais) usualmente representada como 0 (l-se aleph 0 aleph uma letra do alfabeto hebreu). (b) Portanto, um conjunto A tem cardinalidade 0 se existe uma bijeo h : N A (ou equivalentemente, h : A N). (c) Cardinalidade para conjuntos innitos uma noo que confunde a princpio: i. Ser que todos os conjuntos innitos tem cardinalidade = 0 ? ii. Ser que todos os conjuntos innitos tem cardinalidades distintas? iii. Como ser a cardinalidade dos conjuntos innitos que usamos com maior frequncia? iv. IMPORTANTE: Se A e B so conjuntos innitos, e A B, ser que necessariamente cd(A) < cd(B)? Ou pode acontecer de cd(A) = cd(B)? 8. Exemplos de comparao de cardinalidades (em aula e exerccios)

9. As vezes difcil/complicado denir uma bijeo h entre os naturais e um conjunto A analiticamente (como uma frmula), mas pode ser bem mais fcil simplesmente ver que tal bijeo existe, mesmo sem den-la precisamente. TCNICA: Basta mostrar que existe uma ordenao linear a0 , a1 , a2 , a3 , dos elementos de A tal que: (a) Existe um primeiro (a0 ); (b) Para qualquer elemento a A, a est na ordenao e existe um nmero nito de elementos entre ele e a0 . (Ou de outra forma: Para todo a A, existe k N tal que a = ak ). Prova: a bijeo implcita dada por h(n) = an . 10. Denio: Um conjunto com cardinalidade 0 dito innito contvel ou innito enumervel. Um conjunto que nito ou tem cardinalidade 0 dito contvel ou enumervel. Nota: Estas denies sugerem a existncia de conjuntos innitos no-contveis. Nota: Os termos contvel e enumervel ou denumervel (denumerable) vem da idia de listagem (a0 , a1 , . . .) do item anterior. 11. Denio: Um conjunto(linguagem) A dito efetivamente enumervel se existe um procedimento efetivo (programa) P que o enumera nas mesma condies acima, isto : (a) o programa P s lista elementos de A; (b) para todo elemento x A, x listado pelo programa cedo ou tarde, isto , existe um k N tal que x o k-simo elemento listado por P . NOTA: Se A for innito, obviamente P no termina. NOTA: Obviamente para um conjunto ser eftivamente enumervel ele tem que ter cardinalidade 0 (ver denio anterior). NOTA: CUIDADO: As palavras contvel e enumervel sozinhas esto sendo usadas para a acepo matemtica de que o conjunto tem cardinalidade 0 (ou menor), no garantindo que o conjunto seja enumervel por computador. O termo efetivamente enumervel que caracteriza a possibilidade de enumerao por computador. 12. Teorema (no vamos provar): 0 a menor cardinalidade innita. Isto , se cd(A) < 0 para algum conjunto A, ento A nito. 13. Corolrio: Se A N, ento A nito ou A innito com cd(A) = 0 . ESTA UMA IMPORTANTE ESTRATGIA PARA DETERMINAR QUE UM CONJUNTO TEM CARDINALIDADE 0 . 14. Corolrio: Se A B, e cd(B) = 0 ento A nito ou A innito com cd(A) = 0 . ESTA TAMBM UMA IMPORTANTE ESTRATGIA PARA DETERMINAR QUE UM CONJUNTO TEM CARDINALIDADE 0 . 15. IMPORTANTE: Se A B, duas coisas ainda so possveis: (a) cd(A) < cd(B) (b) cd(A) = cd(B) A segunda possibilidade bastante contra-intuitiva inicialmente para alguns. S se pode garantir cd(A) cd(B). No se pode garantir cd(A) < cd(B) s porque A est propriamente contido em B (exceto se A for nito, claro). 16. Anal, onde esto os conjuntos no-contveis????

Seguir para...

Manuais

Contatos

Links Acadmicos

Moodle PUCRS 34649-03PPGCC-1112 Recursos Exemplos de conjuntos com cardinalidade aleph-0 trabalhados em aula

Exemplos de conjuntos com cardinalidade

trabalhados em aula

Abaixo esto listados alguns conjuntos infinitos com cardinalidade (infinitos contveis ou infinitos enumerveis) trabalhados em aula. As trs tcnicas usadas para isto foram: 1. Definir explicitamente uma bijeo com os naturais ( ). em geral muito difcil. 2. Definir uma ordem total entre os elementos do conjunto infinito , que tenha um elemento mnimo $a_0$ e que no tenha "gaps" infinitos, ou seja, para todo elemento $a$ do conjunto o nmero de elementos menores do que ele finito. 3. Se o conjunto que A que estamos considerando subconjunto de um conjunto B que tem cardinalidade (isto , e , ento, ou A finito ou . Portanto, se adicionalmente A for infinito, s resta concluir que . Conjuntos com cardinalidade 1. (por definio tem cardinalidade ). 2. 3. par 4. impar 5. linguagem (conjunto de strings usados para representar nmeros naturais em binrio sem 0s esquerda) 6. linguagem 7. linguagem 8. 9. (conjunto dos inteiros) 10. (conjunto dos racionais) 11. para qualquer alphabeto . Por exemplo, (alphabeto , notem que levemente a. diferente o exemplo 5 acima) b. ASCII* 12. Conjunto (linguagem) dos programas em C

ltima atualizao: tera, 9 agosto 2011, 08:57

Voc acessou como LEANDRO SEHNEM HECK (Sair)

EXERCCIOS COMPLEMENTARES SOBRE CARDINALIDADE Prolo, Teoria da Computabilidade, agosto/2004 A cardinalidade de um conjunto innito pode ser igual ou maior do que (se for menor o conjunto nito). Para cada conjunto abaixo: (1) mostre que a cardinalidade igual a (quase todos) ou (2) mostre que a cardinalidade no igual a a . Para tanto voc pode usar diversas estratgias, entre as quais achar uma expresso analtica de uma bijeo entre e o conjunto em questo, ou descrever uma estratgia de enumerao que implique em todo elemento do conjunto ser enumerado cedo ou tarde, ou mostrando um procedimento efetivo (em C por exemplo) para enumerar tal conjunto, ou ainda usando concluses lgicas baseadas em relaes com conjuntos j conhecidos (exemplo: ), etc. Para mostrar que cardinalidade maior que use algum argumento baseado na diagonal de Cantor ou algum teorema conhecido.

4. conjunto dos nmeros reais com representao decimal com mantissa nita 5. conjunto dos nmeros reais que podem ser representados como em C (exemplo: 2.5e-7) 6. conjunto dos programas em C que podem dar segmentation fault quando executados 7. conjunto dos programas em C que nunca do segmentation fault quando executados 8. conjunto das sentenas corretas do Portugus

X I"

12.

(conjunto de todos os subconjuntos de inteiros)

W I"

11.

(conjunto potncia de

2 2% ( QU!T

R 2% ( P H #U$TVGI

10.

2 2% ( QU!T

R P H SQ6I

9.

E ( B GFDCA

9 @

3.

4 4 8765

2.

32!1$0'$)'&$#!    "% (%  "   

1.

(conjunto dos nmeros inteiros)

(conjunto de triplas de naturais) (conjunto de k-tuplas de naturais)

para algum

(conjunto de todas as funes totais binrias sobre os naturais (conjunto de todas as funes totais binrias de domnio binrio) ou conjunto de todos os subconjuntos dos naturais)

Aula de Teoria da Computabilidade de 19.08.2004, Prof Prolo

1 Cantor, conjuntos no enumerveis, funes no-computveis e problemas no decidveis


George Cantor mostrou (1874) que existem cardinais acima de 0 , usando um mtodo que hoje conhecido como Mtodo da diagonal de Cantor. Nas prximas sees mostramos alguns conjuntos no enumerveis importantes, utilizando este mtodo. O trabalho de Cantor vai muito alm disto, mas aqui nos restringimos ao que nos interessa para a disciplina. Ao nal concluimos, a partir de resultados de cardinalidae vistos, que existem funes no computveis e problemas no decidveis.

2 O conjunto dos nmeros reais (R) no-enumervel


Vamos nos restringir aqui apenas ao intervalo (0, 1] por simplicidade. ( bvio que R no pode ser menor do que (0, 1]. 1. A prova por contradio (ou reduo ao absurdo). Primeiro assumimos como Hiptese que o conjunto enumervel. Ora, ns queremos provar exatamente o contrrio, isto , ao nal conclumos que se tal hiptese for verdadeira chega-se a uma contradio, e portanto a hiptese no verdadeira: o conjunto dos reais no enumervel. 2. Ora, se o conjunto enumervel por hiptese, ento deve existir uma enumerao para ele (mesmo que ns no saibamos qual/como ela ): r0 , r1 , r2 , r3 , r4 , r5 , r6

3. Nota: Todo nmero real pode ser representado em decimal com mantissa innita. Alguns porque naturalmente a tem como 0.033333 , , abc. Mas mesmo os que tem mantissa nita, como 0.25, podem ser representados como 0.2499999 . Isto no central ao argumento, apenas mostra que representaes com mantissa innita (sem zeros no signicativos esquerda) tem correspondncia bijetora com os reais. 4. O diagrama abaixo mostra esquematicamente uma enumerao qualquer do intervalo (0, 1], que deve existir de acordo com 2 acima. Cada linha representa um nmero. Cada nmero uma sequncia innita de dgitos a partir do ponto decimal (Como estamos representando apenas o intervalo (0, 1], antes do ponto decimal sempre 0, que no representado). O nmero /10, por exemplo, seria representado como 3 1 4 1 5 , e deve ser listado em uma linha k N. rk,0 = 3, rk,1 = 1, rk,2 = 4, rk,3 = 1, rk,4 = 5, . Na verdade, para todo nmero no intervalo (0, 1] deve haver um k N tal que o nmero representado na linha k da tabela abaixo. Linha 0 1 2 3 4 5 6 ... Representao do nmero r0,0 r0,1 r0,2 r0,3 r0,4 . . . r1,0 r1,1 r1,2 r1,3 r1,4 . . . r2,0 r2,1 r2,2 r2,3 r2,4 . . . r3,0 r3,1 r3,2 r3,3 r3,4 . . . r4,0 r4,1 r4,2 r4,3 r4,4 . . . r5,0 r5,1 r5,2 r5,3 r5,4 . . . r6,0 r6,1 r6,2 r6,3 r6,4 . . . ... ... ... ... ... ...

5. Imagine agora o nmero real x, cuja representao x0 x1 x2 x3 x4 . . . xl . . . construda da seguinte forma: x0 = 9 r0,0 x1 = 9 r1,1 x2 = 9 r2,2 x3 = 9 r3,3 x4 = 9 r4,4 ... xl = 9 rl,l Para cada l N, o l_simo dgito de x aps o ponto decimal o complemento de 9 do l_simo dgito do nmero listado na linha l da enumerao. 6. No h a menor dvida de que a construo acima representa um nmero real no intervalo (0, 1]. Portanto o nmero deve pertencer enumerao, por exemplo numa linha k N qualquer. Mas pela denio o k_simo dgito de x diferente do k_simo dgito desta linha. Ou seja, x no corresponde a nenhum dos elementos da enumerao. Isto uma CONTRADIO! A hiptese original , portanto, falsa; 7. NOTA1: O mtodo de Cantor acima chamado de mtodo da diagonal porque o nmero x foi denido utilizando os elementos da diagonal (rk,k ) da tabela da enumerao da hiptese.

3 O conjunto de funes totais dos naturais para os naturais (F = {f : N N|f total }) no enumervel
1. Primeiro note que ao provarmos que F no enumervel provamos tambm que as funes parciais no o so pois F um subconjunto das parciais. O motivo da restrio para totais por fora do argumento que ser utilizado abaixo. 2. O mtodo o mesmo usado acima. Primeiro assumimos como Hiptese que o conjunto F enumervel. Ora, ns queremos provar exatamente o contrrio, isto , ao nal conclumos que se tal hiptese for verdadeira chega-se a uma contradio, e portanto a hiptese no verdadeira: o conjunto das funes de N em N no enumervel. 3. Ora, se o conjunto enumervel por hiptese, ento deve existir uma enumerao para ele (mesmo que ns no saibamos qual/como ela ): f0 , f1 , f2 , f3 , f4 , f5 , f6 4. Nota: Duas funes f, g : N so iguais, sse elas so iguais par todo elemento do domnio; so diferentes sse existe algum x N para o qual f (x) = g(x). Podemos portanto representar uma tal funo f como uma sequncia innita f (0), f (1), f (2), f (3), ... (ou imagine o grafo de f = {(0, f (0)), (1, f (1)), (2, f (2)), (3, f (3)), . . .}). 5. O diagrama abaixo mostra esquematicamente uma enumerao qualquer de F , que deve existir pela hiptese. Cada linha representa uma funo. Cada coluna x corresponde ao valor da funo aplicada a x. Para toda a funo de F deve haver um k N tal que a funo representada na linha k da tabela abaixo.

Funo 0 1 2 3 4 5 6 ... 0 f0 (0) f1 (0) f2 (0) f3 (0) f4 (0) f5 (0) f6 (0) ... 1 f0 (1) f1 (1) f2 (1) f3 (1) f4 (1) f5 (1) f6 (1) ...

Argumentos 2 3 f0 (2) f0 (3) f1 (2) f1 (3) f2 (2) f2 (3) f3 (2) f3 (3) f4 (2) f4 (3) f5 (2) f5 (3) f6 (2) f6 (3) ... ...

4 f0 (4) f1 (4) f2 (4) f3 (4) f4 (4) f5 (4) f6 (4) ...

... ... ... ... ... ... ... ... ...

6. Imagine agora a funo f F , cuja representao f (0) f (1) f (2) f (3) f (4) . . . f (l) . . . construda da seguinte forma: f (0) = f0 (0) + 1 f (1) = f1 (1) + 1 f (2) = f2 (2) + 1 f (3) = f3 (3) + 1 f (4) = f4 (4) + 1 ... f (l) = fl (l) + 1 Para cada l N, f diferente da funo fl da linha l da enumerao, pois por construo, f diferente de fl quando aplicada ao argumento l (f (l) = fl (l) + 1). Portanto f no pertence enumerao. Mas como f F , por hiptese f pertence enumerao. Novamente chegamos a uma contradio. A hiptese original portanto falsa. F no enumervel.

4 CONCLUSO 1: Existe funo no computvel.


Vimos que o conjunto de todos os programas (procedimentos efetivos) em uma dada linguagem (PROGS) enumervel. Mas o conjunto das funes sobre os naturais (F ) no enumervel card(F ) > 0 .. Portanto, no existe bijeo entre PROGS e F . No tem como associar um programa para cada funo. Tem mais funes do que programas. Donde se conclui que existem funes no computveis (na verdade muitas!, innitas! existem mais funes no-computveis do que funes computveis).

5 CONCLUSO 2: Existe problema no decidvel.


1. Com argumento similar ao usado para o conjunto F das funes totais dos naturais para os naturais, pode-se mostrar o subconjunto de F , das funes totais binrias de naturais F B = {f : N {0, 1}|f total }) tambm no enumervel. Esta prova foi includa como exerccio na pgina da disciplina. 2. Ora, F B exatamente o conjunto dos problemas de deciso (denidos anteriormente) para os naturais. Em termos de conjuntos, F B representa o conjunto potncia de N (2N , o conjunto de todos os subconjuntos de naturais) de fato, cada membro f de F B a funo caracterstica de um subconjunto dos naturais. 3. Ou seja o nmero de problemas de deciso no enumervel. Visto que PROGS enumervel, novamente conclumos pela existncia de (inndveis) problemas que no so decidveis.

4. Note que F B F , portanto o fato de que F B no enumervel por si s implica que F tambm no .

6 Concluso nal:
Existem funes matemticas que no podem ser computadas (no podem ser expressas por procedimento efetivo), problemas que no podem ser decididos por computador e conjuntos que no podem ser enumerados por programa de computador.

But what about the program in Figure 8.2 on page 309 of the textbook?!

8: Intro. to Turing Machines


Given an input n, it prints hello, world only if the equation Problems that Computers Cannot Solve It is important to know whether a program is correct, namely that it does what we expect. It is easy to see that the following C program main() { printf(hello, world\n); } prints hello, world and terminates. Can we expect to write a program H that solves the general problem of telling whether any given program P , on any given input I, eventually prints hello, world or not?
1 2

xn + y n = z n has a solution where x, y, and z are integers. We know nowadays that it will print hello, world for n = 2, and loop forever for n > 2. It took mathematicians 300 years to prove this so-called Fermats last theorem.

We modify H1 to take P and I as a single input, getting a program H2: The Hypothetical hello, world Tester H Proof by contradiction that H is impossible to write. Suppose that H exists:
I P Hello-world tester H yes P H2 hello, world

We provide H2 as input to H2:


yes

yes no

H2

H2 hello, world

We modify the response no of H to hello, world, getting a program H1:


I H1 P hello, world yes

If H2 prints yes, then it should have printed hello, world. If H2 prints hello, world, then it should have printed yes. So H2 and hence H cannot exist. Hence we have an undecidable problem. It is similar to the language Ld we will see later.

Undecidable Problems A problem is undecidable if no program can solve it. Here: problem = deciding on the membership of a string in a language. Languages over an alphabet are not enumerable. Programs (nite strings over an alphabet) are enumerable: order them by length, and then lexicographically. Hence there are innitely more languages than programs. Hence there must be undecidable problems (Gdel, o 1931).
5

Problem Reduction If we already know problem P1 to be undecidable, can we use this fact to show that another problem P2 is undecidable? Assume there exists a program that decides whether its input instance of problem P2 is or is not in the language of P2. Reduce the known undecidable problem P1 to P2: Convert instances of P1 into instances of P2 that have the same answer. But we would then have an algorithm for deciding P1! Contradiction. Hence the assumed program for deciding P2 does not exist and P2 is in fact undecidable. Thereby, we proved the statement if P2 is decidable, then P1 is decidable and exploited its contrapositive.
6

Turing Machines (1936)

Finite control

...

X1 X2

Xi

Xn B

...

Careful: To prove P2 undecidable, we must not reduce P2 to some known undecidable problem P1 (by converting instances of P2 into instances of P1 that have the same answer), as we would then prove the vacuously true and thus useless statement if P1 is decidable, then P2 is decidable.

A move of a Turing machine (TM) is a function of the state of the nite control and the tape symbol just scanned. In one move, the Turing machine will:

1. Change state.

2. Write a tape symbol in the cell scanned.

3. Move the tape head left or right.


7 8

Formally, a Turing machine is a 7-tuple M = (Q, , , , q0, B, F ) where: Q is the nite set of states of the nite control. is the nite set of input symbols. is the nite set of tape symbols; .

Instantaneous Descriptions for TMs A Turing machine changes its conguration upon each move. We use instantaneous descriptions (IDs) for describing such congurations. An instantaneous description is a string of the form X1X2 Xi1qXiXi+1 Xn where

: Q Q {L, R} is the transition function, which is a partial function. q0 Q is the start state. B is the blank symbol; B . F Q is the set of nal or accepting states.
9

1. q is the state of the Turing machine. 2. The tape head is scanning the ith symbol from the left. 3. X1X2 Xn is the portion of the tape between the leftmost and rightmost nonblanks.
10

The Moves and Language of a TM We use to designate a move of a Turing M machine M from one ID to another. If (q, Xi) = (p, Y, L), then: X1X2 Xi1qXiXi+1 Xn M X1X2 Xi2pXi1Y Xi+1 Xn If (q, Xi) = (p, Y, R), then: X1X2 Xi1qXiXi+1 Xn M X1X2 Xi1Y pXi+1 Xn

Example: A TM for {0n1n : n 1}


M = ({q0 , q1 , q2, q3, q4}, {0, 1}, {0, 1, X, Y, B}, , q0, B, {q4 })

where is given by the following table:


q0 q1 q2 q3 q4 0 (q1 , X, R) (q1 , 0, R) (q2 , 0, L) 1 (q2 , Y, L) (q0 , X, R) X Y (q3 , Y, R) (q1 , Y, R) (q2 , Y, L) (q3 , Y, R) B

(q4 , B, R)

We can also represent M by the following transition diagram:


Y/ Y 0/ 0 Start q0 0/ X 1/ Y Y/ Y 0/ 0 q1 q2

The reexive-transitive closure of is denoted M by . M A Turing machine M = (Q, , , , q0, B, F ) accepts the language L(M ) = {w : q0w p, p F, , } M
11

X/ X Y/ Y B/ B

q3

q4

Y/ Y

12

Example: A TM With Output The following Turing machine computes m n = max(m n, 0)


q0 q1 q2 q3 q4 q5 q6 0 (q1 , B, R) (q1 , 0, R) (q1 , 1, L) (q3 , 0, L) (q4 , 0, L) (q5 , B, R) 1 (q5 , B, R) (q2 , 1, R) (q2 , 1, R) (q3 , 1, L) (q4 , B, L) (q5 , B, R) B (q4 , B, L) (q0 , B, R) (q6 , 0, R) (q6 , B, R)

Acceptance by Halting A Turing machine halts if it enters a state q, scanning a tape symbol X, and there is no move in this situation, i.e., (q, X) is undened. We can always assume that a Turing machine halts if it accepts, as we can make (q, X) undened whenever q is an accepting state. Unfortunately, it is not always possible to require that a Turing machine halts even if it does not accept. Recursive language: there is a TM, corresponding to the concept of algorithm, that halts eventually, whether it accepts or not. Recursively enumerable language: there is a TM that halts if the string is accepted.

The transition diagram is as follows:


B/ B 0/ 0 Start q0 0/ B 1/ 1 q1 q2 1/ 1 0/ 1 q3 0/ 0 1/ 1

1/ B

B/ B

q5

B/ B

q6

B/ 0

q4

0/ B 1/ B

0/ 0 1/ B

Decidable problem: there is an algorithm for solving it.


13 14

Turing Machines and Computers Alternative Models for Turing Machines Turing-machine programming techniques: storage in the state, multiple tape tracks, subroutines, . . . Extensions: multiple tapes, non-determinism, ... Restrictions: semi-innite tape, multiple stacks, counters, . . . All these models are equivalent: they accept the recursively enumerable languages (ChurchTuring thesis, 1936). Simulating a Turing machine by a computer: it suces to have enough memory to simulate the innite tape. Simulating a computer by a Turing machine: multiple tapes (memory, instruction counter, memory address, computers input le, and scratch) plus simulation of the instruction cycle. The simulating multitape Turing machine needs an amount of steps that is at most some polynomial, namely n3, in the number n of steps taken by the simulated computer. From now on: computer = Turing machine.
15 16

9: Undecidability
Goal: Prove undecidable the recursively enumerable language Lu consisting of pairs (M, w) such that: M is a Turing machine (suitably coded, in binary) with input alphabet {0, 1}. w is a string of 0s and 1s. M accepts input w. If this problem with binary inputs is undecidable, then surely the more general problem, where the Turing machines may have any alphabet, is undecidable. First step: codify a Turing machine as a string of 0s and 1s, and exhibit a language that is not even recursively enumerable, namely Ld.
17

Codes for Turing Machines We need to assign integers to all the binary strings so that each integer corresponds to one string and vice versa: is the rst string, 0 the second, 1 the third, 00 the fourth, 01 the fth, and so on. Equivalently, strings are ordered by length, and strings of equal length are ordered lexicographically. We will refer to the ith string as wi. We now want to represent Turing machines with input alphabet {0, 1} by binary strings, so that we can identify Turing machines with integers and refer to the ith Turing machine as Mi.
18

To represent a Turing machine M = (Q, {0, 1}, , , q1, B, F } as a binary string, we must rst assign integers to the states, tape symbols, and directions L and R:

Encode the transition rule (qi, Xj ) = (qk , X, Dm) by 0i10j 10k 1010m. Note that there are no two consecutive 1s. Encode an entire Turing machine by concatenating, in any order, the codes Ci of its transition rules, separated by 11: C111C211 Cn111Cn. Ex.: M = ({q1, q2, q3}, {0, 1}, {0, 1, B}, , q1, B, {q2}) where is dened by: (q1, 1) = (q3, 0, R), (q3, 0) = (q1, 1, R), (q3, 1) = (q2, 0, R), and (q3, B) = (q3, 1, L). Codes for the transition rules: 0100100010100 0001010100100 00010010010100 0001000100010010 Code for M : 010010001010011000101010010011 00010010010100110001000100010010
19 20

Assume the states are q1, q2, . . . , qr for some r. The start state is q1, and the only accepting state is q2.

Assume the tape symbols are X1, X2, . . . , Xs for some s. Then: 0 = X1, 1 = X2, and B = X3.

L = D1 and R = D2.

The Diagonalisation Language Ld The diagonalisation language Ld is the set of strings wi such that wi L(Mi). Given a Turing machine M with code wi, we can now associate an integer to it: M is the ith Turing machine, referred to as Mi. Many integers do no correspond to any Turing machine at all. Examples: 11001 and 001110. If wi is not a valid TM code, then we shall take Mi to be the Turing machine (with one state and no transitions) that immediately halts on any input. Hence L(Mi) = if wi is not a valid TM code. That is, Ld contains all strings w such that the Turing machine M with code w does not accept w. Consider the matrix with Turing machine indices i in the rows and string indices j in the columns, where the cell for row i and column j tells whether Mi accepts wj , yes being denoted by 1 and no by 0. The diagonal values tell whether Mi accepts wi. The strings of Ld correspond to the 0s of the diagonal. Is it possible that the diagonal complement is a row? No, because the diagonal complement disagrees with every row in some column. Hence Ld is not recursively enumerable and cannot be accepted by any Turing machine.
21 22

Recursive Languages Classes of Languages A language L is recursive if L = L(M ) for some Turing machine M such that: Recursive = decidable: their Turing machine always halt. If w L, then M accepts w (and halts). Recursively enumerable but not recursive: their Turing machines halt if they accept. Example: Lu.

If w L, then M does not accept w but eventually halts.

Such a Turing machine corresponds to our informal notion of an algorithm. The problem (of acceptance of L) is decidable if L is recursive, and undecidable otherwise.

Non recursively enumerable (non-RE): there are no Turing machines for them. Example: Ld.

23

24

Property of Recursive Languages Property of RE Languages The recursive languages are closed under complementation: Theorem 9.3: If L is a recursive language, then L is recursive. Proof: If L is recursive, then L = L(M ) for some Turing machine M that always halts. Transform M into M such that M accepts what M does not accept, and vice versa. So M always halts and accepts L. Hence L is recursive. Consequence: If L is RE, but L is not RE, then L cannot be recursive. Theorem 9.4: If L and L are RE, then L is recursive (and so is L, by Theorem 9.3). Proof: Let L = L(M1) and L = L(M2). Construct a Turing machine M that simulates M1 and M2 in parallel (using two tapes and two heads). If the input to M is in L, then M1 accepts it and halts, hence M also accepts it and halts. If the input to M is not in L, then M2 accepts it and halts, hence M halts without accepting it. Hence M halts on every input and L(M ) = L, so L is recursive.

25

26

L and L The Universal Language There are only four ways of placing L and L: Both L and L are recursive. Neither L nor L is RE. L is RE but not recursive, and L is not RE. L is RE but not recursive, and L is not RE. There is a Turing machine U , often called the universal Turing machine, such that Lu = L(U ). It has three tapes: one for the code of (M, w), one for the code of the simulated tape of M , and one for the code of the state of M . Thus U simulates M on w, and U accepts (M, w) if and only if M accepts w. Hence Lu is RE. Any Turing machine M may not halt when the input string w is not in the language, thus U will have the same behaviour as M on w. Hence Lu is RE but not recursive.
28

The universal language Lu is the set of binary strings that encode a pair (M, w) (by putting 111 between the code for M and w) where w L(M ).

Indeed, it is impossible that one language (L or L) is recursive and the other is in either of the other two classes (by Theorem 9.3). It is also impossible that both languages are RE but not recursive (by Theorem 9.4).
27

Closure Properties of Recursive Languages The Halting Problem Given a Turing machine M , dene H(M ) to be the set of strings w such that M halts on input w, regardless of whether or not M accepts w. The halting problem is the set of pairs (M, w) such that w H(M ). This problem (or language) also is recursively enumerable but not recursive. The recursive languages are closed under the following operations:

Union.

Intersection.

Concatenation.

Kleene closure.

29

30

Recursive and RE Languages Closure Properties of RE Languages The recursively enumerable (RE) languages are closed under the following operations: Union: RE. Union. Given a recursive language and a recursively enumerable (RE) language:

Intersection: RE.

Intersection.

Concatenation: RE.

Concatenation.

Kleene closure: RE.

Kleene closure.

If L1 is recursive and L2 is RE, then L2 L1 is RE and L1 L2 is not RE.

31

32

Examples of Undecidable Problems Theorem 9.11: All non-trivial properties of RE languages are undecidable. (Rice, 1953) All problems about Turing machines that involve only the language that the TM accepts are undecidable. Examples: Is the language accepted by the TM empty? Theorem 9.7: If P1 reduces to P2, then: Is the language accepted by the TM nite? Is the language accepted by the TM regular? Is the language accepted by the TM a CFL? If P1 is non-RE, then so is P2. Does the language accepted by the TM contain the string ab? Does the language accepted by the TM contain all even numbers?
33 34

Problem Reduction Recall Problem Reduction of Chapter 8. If P1 reduces to P2, then P2 is at least as hard as P1.

If P1 is undecidable, then so is P2.

Example of Decidable Problems Fortunately, not everything is undecidable! Some problems about the states of the Turing machine, rather than about the language it accepts, are decidable. Examples: Does the TM have ve states? Is there an input such that the TM makes at least ve moves?

35




 
   

  
 
 




 

! "

# 

$ % 
#$&
  
'()

* +-
'(/0
(
12
 3

!

3   4


   0
5 %

6 
 560

 +-
7(8

!
! 
  0



!
 
3  &



%  "
 (
9 :
 

 &;;! ( (!!( ;<  ; ! ;=$>;   7?@(   4
 
A !

56

!
 
 
 




53C! 

! 
6   (   
 
  
  

 A
C!

:!

  
  


3 0

C!
 
 D 3
 
 
(((
(



 
  M  


L
 

! +-


 &

G
K

G


3 >!
 
R*
C!


! 3
 !    

! +-


 &

G
K

GGS8


G


3 T
C!




 

 

!
C!

 

! 3 0

 

 3

!  +- U


K
V
 
!
V

T( > 

C!

C!




!
V

V > 

 +- 

W
 Q 


 
'0
! ?
C!

 Q 

=>$*>(

( (

( ( ( ( (



  -

#$ E4 E4&
8( '( /( 1( 2( L(


 



  M  






=>4&
4
:!

   



 !  
! 3 ( > 0

:!

! +F 
  
 !


-

! 3 
 
   


 :!

! +F 
 !  
  

 !  
! 3 (  
 0
G  H

!

!  +-

! +F &
J0
80
'0
(((  

! +-


 &

G
K


G


3 5   
C!




A 0
-


! 3 0
5   
C!

-

! 3 0

 

-

A
8( '( >! ?
C!


! 3 M   ?
!
 +-

 >

?
KV
 
V
? &

8&
V

V
VK8
VVKVK
VVS8

VV


 C!
V

V0



!D

!
4TE>M YZ4&

VVK
VVS8
[[[[ 
'&
V

V
V8
VVKVK
J

 
VV
-


 C!
V
V0


 



!
4TE>M YZ4& 

[[[

VVK
J

VV



X VVK
VK

VVS8

V


3



  M  


2
 
K
N%0G
O
%

!
  



!
!
  0
C!
C!


  
G

 -



 P  '
K
N%
O
%

!
  



!
!
  0
C!
C!


Q
  
%

 -



 P  !
C!



A
-
'
 
  9   C!
C!

! +-



 


! +-

-

'(  !- &
*

-

! 3
 A 0
'

A


 (  9  
   
C!

-

! 3

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosPotpourrideProblemasIndecidveis

Manuais

Contatos

LinksAcadmicos

HaltingProblem Segmentationfaultproblem "Helloworld"problem Antivirusperfeito Descobrirseumpedaodecdigointil Equivalnciaentreprogramas Equivalnciaentreespecificaesdealtonveleimplementaes Equivalnciaentregramticaslivresdecontexto Dizerseumafrmuladoclculodepredicadosde1aordemparanaturaiscommultiplicao valida

ltimaatualizao:segunda,4agosto2008,22:23

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosTuringReduction

Manuais

Contatos

LinksAcadmicos

AformamaisgeraldereduoaReduodeTuring:UmproblemaAreduzvel(Turingreducible) aumproblemaBseexistirumalgoritmoquedecideA,desdequetenhasedisponvelum"orculo" paraoproblemaB.Ouseja,desdequeseassumaqueexisteumalgortimoparaB,semnecessidade deexplicitlo,oumelhor,semnecessidadedequeeleexistarealmente. UmareduodeAparaB,ento,umalgoritmoquedecideAepodeconterchamadasaum algoritmoquedecideB,semnecessidadedeexplicitaroalgoritmoparaB.Aexistnciadareduo assumeentoqueAdecidveldesdequeBsejadecidvel. Exemplo:ConsidereosproblemasHelloWorldHW(P,x)eoHaltingProblemHP(P,x)vistosem aula.AbaixomostramosumalgoritmoquereduzoHWaoHP(decide_HPseriaoalgoritmohipottico dedecisodoHP). booldecide_Hello_World(P,x) if(not(decide_Halting_Problem(P,x)))//Pnoterminaquandoexecutadocomentrada x? returnfalse else simulaaexecuodeP(x)capturandoasada seasadafor"HelloWorld" returntrue elsereturnfalse ClaramenteseexistisseotalalgoritmoparaoHP,ouseja,seoHPfossedecidvel,entooalgortimo acimapoderiasertotalmentematerializado(semorculo)eoHWseriadecidvel.Porm...sabemos queoHWnodecidvel,portanto,pelaregradocontrapositivodaimplicao,podemosconcluirque noexisteotalalgoritmoparaoHP,isto,HPnodecidivel.Esta,portanto,umaprovade indecidibilidadeporreduo,umadasgrandesaplicaesdareduo. MastardeveremosousodareduoemComplexidade.

ltimaatualizao:quinta,25agosto2011,21:26

VocacessoucomoLEANDROSEHNEMHECK(Sair)

PARTE 3

MQUINAS DE TURING E CONCEITOS FORMAIS DE COMPUTABILIDADE

Seguirpara...

ToiaCmuaiiaeToiaCmua e r a d o p t b l d d / e r a d o p t o 2 0 / r f 06IPo PooUR rlPCS Eec isdTcmeaoaelnugn: x r c o e M o o g r d r s d i g a e s

1 o s r a u a M u e o h a s r n s q e t n a o m )CntumTqercne tiguehmafra an^aan=. ^bnpr>0 2osrauaMorabcuatigeeasiul )CntumTsbe{,,}cjssrnstm#d'ga aebs o#d'. 2)CntumTsbe{,,}cjssrnstm#d'o 'osrauaMorabcuatigeeas<d qe#d'. uebs 3 o s r a u a M u e o h a s r n s q e t n a o m )CntumTqercne tiguehmafra an^cnpr>0 ^bn^aan=. 4osrauaMorlruatigeelsiul )CntumTsbe{,}cjssrnstm#d'ga aers o#d', oopeiodetn eelsmirogao# e t d r f x a s n e a t m # d ' a o u i u l a d'. ers Iaieqel""=).Alnugmdfneu cae ( m g n u = ( e r " " i g a e e i e s q n i s d prnia a e t z o crea) orts. 5osrauaMueeasrnsnomt )CntumTqercbtigofrao x#y2#y..#y 1#y3#..n n e x 1 2 . o s q n i s d ' ' , n = , od,y,y,..s eu cae0se1s>0 cieosrnsopnnex1friulauoi eaettigseocmoet_ogamdsy. 6 o s r a u a M u e o h a s r n s q e t n a o m )CntumTqercne tiguehmafra an^cp ^bm^ o>>>0 cmnmp=.

Seguirpara...

ToiaCmuaiiaeToiaCmua e r a d o p t b l d d / e r a d o p t o 2 0 / r f 06IPo PooUR rlPCS Eec isdTcmxctrefn x r c o e M o o e e u o a d u e : s

0 o s r a u a M u e o h a s r n s s b e o a f b t )CntumTqercne tigorlaeo {,,} abc neteu ca e i v r a a s q n i Cnieeosseadersna o s d r i t m e r p e e t o u r o p r m r s n iaan eo ntri,cjlaeo auasuoafbt t m a e a i b l , e o m r s s s i e r s n a o : e p n s o s m o o 0 s n e o o a s m r p e e t d s zr esln(eai) eo piosqvza u m 0 di 0 os 0 t s r 00 0 qar00 uto 00 cno 000 ic 00 ... ... .. .. 1osrauaMueeecmnrdtigx, )CntumTqercbooetaaosrn1 n e x e r s n a u m r m u r o od1rpeetmn eoen i, rdzcmeutduesrd1(11 epouoorslaooscsoexx+) oavc pdsuiutigdnrdeoo N t : o o e a s m r q e o s r n e e t a a v m c m $1,ox=t. x#u$1,ec a a p d e e t u i a s o , o r s l a o m d f c A s d o e s r d s r t v , i t e u t d o i i a x, 1 un ,eg,1yney orslao o o . . x # 1 o d 1 e u t d . 2osrauaMueeecmnrdtig )CntumTqercbooetaaosrn x#2 1x acload1cmx ecluaasmexo2 3 o s r a u a M a a s b r o ( s u a q e x 2 = 0 )CntumTpruta asmu1x qad1x) unox<2 4 o s r a u a M a a m l i l c o )CntumTprutpia 5 * C n t u m T p r i i o )*osrauaMaadvs A s m u a o e o l a o o r p e e t d s c m n e r s suaqevlrsboenss ersnaoooitio cm oo f l o > z r > s q n i a i aseoeu cavza tu>qaqeur>qaqeeu ca r e u l u r o t o u l u r s q n i u r a n a i n i o v z a n eo m r 6osrauaMueeecmnrdtig )CntumTqercbooetaaosrn x#2 1x

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosAHIPTESEDECHURCH(verso1)

Manuais

Contatos

LinksAcadmicos

Apsestudarvriosmodelosdecomputaoeverquetodoseles,quandolevadosaoextremode suaspossibilidadeseraequivalentesMquinadeTuring,Churchformulouhiptesedeque: Umafunocomputvel, seesomentese elaforcomputvelporMquinadeTuring CURIOSIDADE:Otermo"funo"acimaserefereacepomaisamplade"funoparcial".Church, originalmenteformulousuahiptese,restritas"funestotais". NOTAS: 1Estumaasseroinformal.Notequecomooconceitodeprocedimentoefetivoinformaleno sepodetercertezadeseuslimitesderealizaoemlinguagensconcretas,impossvelformalizar estahipstese. 2Estahiptesequasequeuniversalmenteaceitapelospesquisadoresatuais. 3Seelaforrealmenteverdadeira,comoseacredita,infelizmenteistonuncaserprovado,pois conformeanota1,umaasseroinformal. 4Paramostrarqueelafalsabastariaencontrarumalinguagem/mquinaparadescrever procedimentosefetivos,quetivessepoderdecomputaomaiorqueodaMquinadeTuring. Obviamente,ningumconseguiuistoainda. 5ExisteumaparcelaMUUUUITOpequenadepesquisadoressriosquetrabalhacoma possibilidadedequeaHiptesedeChurchsejafalsaepesquisanestadireo.Veja "Hypercomputing"naInternet.

ltimaatualizao:quarta,17janeiro2007,12:36

VocacessoucomoLEANDROSEHNEMHECK(Sair)

DEFINITIONS, DEFINITIONS, AND, GOSH!, MORE DEFINITIONS! Denies de Conceitos Formais de Computabilidade Prolo, maio/2005 CONCEITOS RELACIONADOS COMPUTABILIDADE DE FUNES 1. Funo recursiva parcial (Partial Recursive Function): Def 1) Funo que pode ser implementada por uma Mquina de Turing (= funo computvel por Mquina de Turing, funo Turing-computable) Def 2) Funo -recursiva (= funo que pode ser denida usando o formalismo de Kleene, incluindo o operador de minimizao ). (Esta a origem do termo.) Def 3) Funo que pode ser denida em computador digital, mquinas de registradores, linguagens de programao C, Java ... 2. Funo recursiva total (Total Recursive Function): o mesmo que acima, porm para o caso particular em que a funo total. Def 1) Funo total que pode ser implementada por uma Mquina de Turing (= funo total computvel por Mquina de Turing, funo total Turing-computable). Nota: A tal MT nunca entra em loop innito. Por que? Def 2) Funo total -recursiva (= funo total que pode ser denida usando o formalismo de Kleene, incluind o operador de minimizao ). (Esta a origem do termo.) Def 3) Funo total que pode ser denida em computador digital, mquinas de registradores, lingugens de programao C, Java ... Nota: As funes primitivas recursivas formam um subconjunto prprio das funes recursivas totais. No tem uma caracterizao clara em MT. ou em mquinas de registradores (no formalismo de Kleene so as funes denidas sem minimizao; em linguagens de programao so as que podem ser denidas apenas com for do Pascal (sem while, goto e recurso).

CONCEITOS RELACIONADOS AO RECONHECIMENTO E ENUMERAO DE LINGUAGENS (CONJUNTOS) 1. Conjunto recursivo (Recursive Set): Def A1) Linguagem aceita por alguma Mquina de Turing que sempre pra. Ou seja, existe MT. M tal que: (a) Se x A, M atinge estado nal (b) Se x A, M tranca (atinge estado de rejeio) Def A3) Linguagem para a qual existe programa de computador digital que (a) Se x A, retorna true (b) Se x A, M retorna false Def A2) Linguagem para a qual existe funo -recursiva f tal que (a) f(x)=1 se x A; (b) f(x)= 0 se x A. Def B1) Linguagem que pode ser enumerada por alguma Mquina de Turing em ordem standard (primeiro critrio de ordenao o tamanho). Def B3) Linguagem que pode ser enumerada por algum programa de computador em ordem standard (primeiro critrio de ordenao o tamanho). Nota 1 A funo f das denies 2 e 3 a funo caracterstica do conjunto. Nota 2: A noo de conjunto recursivo formaliza a noo de decidibilidade de um conjunto. 2. Conjunto recursivamente enumervel (Conjunto r.e., Recursively Enumerable Set): Def A1) Conjunto semi-recursivo. Linguagem aceita por alguma Mquina de Turing. Linguagem A para a qual existe alguma Mquina de Turing M tal que para todo elemento x do universo de strings, x A sse M atinge estado nal quando executada com a entrada x. Ou seja, existe MT. M tal que: (a) Se x A, M atinge estado nal; (b) Se x A, M tranca (atinge estado de rejeio) ou entra em loop innito. Def A3) Linguagem para a qual existe programa de computador digital que (a) Se x A, retorna true (b) Se x A, retorna false ou entra em loop innito Def A2) Linguagem para a qual existe funo -recursiva f tal que (a) f(x)=1 se x A; (b) f(x)= 0 ou indenido se x A. Def B1) Linguagem que pode ser enumerada por alguma Mquina de Turing. Def B3) Linguagem que pode ser enumerada por algum programa de computador. Nota 1: Um conjunto recursivo tambm r.e. obviamente. Os conjuntos recursivos constituem um subconjunto prprio dos conjuntos r.e. Nota 2: A noo de conjunto r.e. formaliza a noo de semi-decidibilidade de um conjunto.

RELACO ENTRE CONCEITOS FORMAIS E INFORMAIS DE COMPUTABILIDADE Prolo, maio/2004 REFERNCIAS: B&L : Brainerd,W.S.; Landweber, L.H. Theory of Computation. 1974. HMU : Hopcroft,J.E.; Motwani,R; Ullman, J.D. Introduction to Automata Theory, Languages and Computation. 2001 D&M : Diverio,Tiaraj A.; Menezes, P. Blauth. Teoria da Computao. 2000. A tabela a seguir mostra a relao entre os conceitos informais e formais da Teoria da Computao. A relao entre as colunas da esquerda e a da direita que elas representam os mesmos conceitos SE E SOMENTE SE a hiptese de Church estiver correta ( o que praticamente todos acreditam ser verdade ).

Conceitos informais de computabilidade: B&L 1-9, sec 2.3; D&M 2-3,65-68,165-170 procedimento efetivo algoritmo funo total efetivamente computvel: B&L 41-42 funo (parcial) efetivamente computvel propriedade ou problema (de deciso) decidvel conjunto (ou linguagem) decidvel conjunto efetivamente enumervel (conjunto semi-decidvel ???) NOTAS:

Conceitos formais associados a Mquinas de Turing/programas de computador Mquina de Turing, programa de computador MT ou programa que nunca entra em loop innito funo recursiva (total): D&M 92-93,97 funo recursiva parcial: D&M 92-93,97 funcao recursiva com contradomnio = {0,1} conjunto (ou linguagem) recursivo: B&L sec. 6.1; D&M 91-92 conjunto recursivamente enumervel (conjunto semi-recursivo): B&L sec. 6.1; D&M 91-92 (1) (2)

1. As linhas marcadas (1) e (2) correspondem a conceitos equivalentes. Uma propriedade (ou problema de deciso) uma funo total ( que a cada atribui um valor ou (verdadeiro ou falso). Tal funo dene um conjunto } (um subconjunto do universo ). Da mesma forma, todo subconjunto de um universo tem associada uma funo caracterstica que para todo associa se e se . Note que nada mais do que a propriedade do incio desta nota. Em computadores, novamente esta noo se confunde. Ao implementarmos um programa que decide pertinncia a um conjunto recursivo na verdade estamos implementando sua funo caracterstica (uma funo recursiva com contra-domnio {0,1}). para algum alfabeto nito e tem a ver com 2. O universo usualmente assumido como sendo a idia de que computao manipulao simblica sobre um alfabeto nito. A mesma Teoria da computao pode ser desenvolvida de forma mais abstrata com .

(  9() & 8 77  9) & 8 7  () & # " !  '%$     C F G D EC

1 20   1 65 43 20

 @ BA

FACULDADE DE INFORMTICA - PUCRS 46180-04 TEORIA DA COMPUTABILIDADE T 590 PROF.: Carlos A. Prolo TRABALHO ENTREGA e APRESENTAO: 19/06/2007 GRUPOS DE at 2 alunos (upload no moodle e entrega do material escrito at 8h20) Neste trabalho voc vai demonstrar na prtica alguns teoremas de equivalncia entre conceitos de computabilidade envolvendo decidibilidade e aceitao (semi-decidibilidade) de linguagens, enumerao de linguagens, e computao de funces por mquina de Turing. Cada item abaixo uma equivalncia entre duas asseres A e B ( A sse B ) que so mais facilmente provadas decompondo-se em A B (ida, ) e B A (volta, ). A prova de cada cada direo em cada item vale 1.5 pontos mximo de 10 pontos. assumida aqui a equivalncia entre Mquinas de Turing (que o modelo abstrato no qual usualmente so denidos os conceitos de computabilidade apresentados abaixo) e programas de computador (que como vamos demonstrar os teoremas). Esta equivalncia foi mostrada em aula. Por simplicidade os domnios foram restritos aos Naturais. Dada a equivalncia entre a Teoria da Computao para strings de um alfabeto e a Teoria da Computao para os naturais (dualidade entre representao por nmero ou string) isto no um problema. O trabalho deve ser feito em Linux. Os arquivos mencionados abaixo so programas objetos pr-compilados em C++ para Linux (g++ -c -g). Eles esto em http://www.inf.pucrs.br/ prolo/Disciplinas/07I/TComp/objetos (tambm acessveis pela pgina da disciplina junto ao link para a descrio deste trabalho.) O grupo deve entregar as listagens (impressas) dos programas feitos com identicao dos componentes do grupo; um documento (impresso) com a descrio dos argumentos utilizados e com a maneira de executar cada programa, nomes de arquivos, etc. (tambm devidamente identicado) e nalmente um arquivo zipado com os programas e documntos via moodle. Na data de entrega os trabalhos sero apresentados no LAPRO (sala 309 ou 410). 1. (denies de conjunto recursivo). Seja A N. A decidvel por MT sse A enumervel por MT em ordem crescente. : Aqui voc vai mostrar que se existe um programa que decide A, ento tambm existe um programa que enumera A em ordem crescente. O arquivo objeto decide1.o contm apenas uma funo unsigned int testa (unsigned int x) que retorna 1 se x A para algum conjunto A N e 0 caso contrrio. A funo obviamente sempre retorna. Para test-la, compile o programa testa.cc com g++ -o decide1 -lg decide1.o testa.cc. Execute-o com ./decide1 3, ./decide1 5, ./decide1 7, etc. . O programa dever responder sim ou no a cada execuo. Para provar esta direo, voc deve fazer um programa que enumera A em ordem crescente usando a funo decide. : Aqui voc vai mostrar que se existe um programa que enumera A em ordem crescente, ento tambm existe um programa que decide A, conforme explicado abaixo. O arquivo objeto enumera1.o contm apenas uma funo void enumera() que enumera uma certa linguagem A N, que voc no conhece, em ordem crescente. Para listar um nmero, enumera chama uma funo void print (unsigned int) que est denida em outro arquivo print.o. Para testar a enumerao faa o seguinte: pegue o arquivo enum.cc (apenas uma main que chama enumera) e compile o com os outros arquivos acima com g++ -o enum1 -lg enumera1.o -lg print.o enum.cc (isto tambm est especicado nas primeiras linhas de comentrio de enum.cc. Execute como ./enum1 | more. Aps est longa introduo eis o que voc vai fazer: Construa um programa que decide A. Nota: a funo print foi fornecida em separado para que voc possa usar uma outra verso no seu programa diferente da original. Considere o uso de uma exceo na nova print. 2. (denies de conjunto recursivamente enumervel ou conjunto semi-recursivo). Seja A N. A aceito por MT sse A enumervel por MT. Nota: Lembre que A ser aceito por MT, equivale a dizer, no contexto de linguagens de programao, que existe programa que termina e retorna sim/1/true se a entrada x pertence a A e no retorna (entra em loop innito) ou retorna no/0/false se x A.

: Aqui voc vai mostrar que se existe um programa que enumera A ento tambm existe um programa que aceita A, conforme explicado abaixo. O arquivo objeto enumera2.o contm apenas uma funo void enumera() que enumera uma certa linguagem A N, que voc no conhece (a enumerao no segue uma ordem conhecida). Para listar um nmero, enumera chama uma funo void print (unsigned int) que est denida em outro arquivo print.o. Para testar a enumerao faa o seguinte: pegue o arquivo enum.cc e compile o com os outros arquivos acima com g++ -o enum2 -lg enumera2.o -lg print.o enum.cc. Execute como ./enum2 | more. Aps est longa introduo eis o que voc vai fazer: Construir um programa que aceita A (usando enumera). Note que a enumerao de enumera no segue necessariamente uma ordem denida! Por outro lado, seu programa tambm no deve (OK, no precisa) retornar se a entrada no pertence a A. Nota: a funo print foi fornecida em separado para que voc possa usar uma outra verso no seu programa diferente da original. Considere o uso de uma exceo na nova print. : Aqui voc vai mostrar que se existe um programa que aceita A ento tambm existe um programa que enumera A. O arquivo objeto aceita2.o contm apenas uma funo bool testa(unsigned int x) que retorna 1 se x A para algum conjunto A N, e entra em loop innito quando x A. Para testar, compile o programa testa.cc com g++ -o aceita2 -lg aceita2.o testa.cc. Execute-o com ./aceita2 3, ./aceita2 5, ./aceita2 7, etc. (Se o programa no responder sim imediatamente ele deve ter entrado em loop. Digite Ctrl-C.) Para provar esta direo, voc deve fazer um programa que enumera A usando aceita. O problema que neste caso, aceita pode no retornar (no d para fazer como no exerccio anterior)! Lembre-se da idia de enumerar pares de inteiros (x, k) onde para cada par voc vai simular a execuo da funo reconhece (ou execuo de ./reco2) com argumento x, por k passos recebendo de volta informao sobre se houve reconhecimento antes de terminarem os k passos ou no . NOTA: Como no temos disponvel uma ferramenta/simulador que execute por k passos, voc dever apenas organizar o argumento por escrito, imaginando a existncia de tal ferramenta. 3. Seja f : N N uma funo total. f uma funo recursiva total sse gr(f ) (o grafo de f ) um conjunto recursivo, onde gr(f ) = {(x, y) N N | y = f (x)} : Aqui voc vai usar o arquivo funcao3.o que contm uma funo total unsigned int func (unisgned int x) e vai us-lo para construir um programa que decida o seu grafo. Isto , seu programa recebe um par de valores x, y e responde SIM se (x, y) gr(f ) y = f (x), ou NO, em caso contrrio. : O arquivo decide3.o contm uma funo bool testa(unsigned int x, unsigned int y) (corrigido em 30/05) que retorna 1 se o par (x, y) pertence a um subconjunto de NN que o grafo de uma funo f que voc no conhece, e 0 caso contrrio (a funo nunca entra em loop, isto a funo decide a pertinncia ao grafo). Voc vai construir um programa que calcula a funo f para um argumento x fornecido como parmetro. O truque aqui ir procurando entre os naturais at encontrar o y tal que (x, y) est no grafo. 4. Seja f : N N. f uma funo recursiva parcial sse gr(f ) um conjunto recursivamente enumervel. : Aqui voc vai usar o arquivo funcao4.o que contm uma funo parcial unsigned int func (unisgned int x) e vai us-lo para construir um programa que aceite o seu grafo. Isto , seu programa recebe um par de valores x, y e responde SIM se (x, y) gr(f ), e entra em loop caso contrrio. Note que func no retorna quando chamada com um argumento x que no pertence ao seu domnio. Ateno: note ainda que mesmo que x esteja no domnio da funo e portanto func retorne, ainda assim o valor retornado pode ser diferente de y. : Imagine que o arquivo aceita4.o contenha uma funo bool aceita(unsigned int x, unsigned int y) que retorna 1 se o par (x, y) pertence a um subconjunto de N N que o grafo de uma funo parcial f que voc no conhece, e entra em loop caso contrrio. Voc teria que construir um programa que calculasse a funo f para um argumento x fornecido como parmetro. Note que a funo parcial: se x dom(f ), a funo no retorna. O truque acima de ir procurando entre os naturais at encontrar o y tal que (x, y) est no grafo no funciona. Por que? Aqui voc vai ter que desenvolver um argumento de enumerao de pares semelhante ao discutido acima. NO NECESSRIO IMPLEMENTAR EM COMPUTADOR ESTE ITEM.

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosAHIPTESEDECHURCH(versesformaise variaes)

HiptesedeChurch(HC)temvriasmaneirasequivalentesdeserexpressa: Umafunoparcialcomputvel sseforcomputvelporMquinadeTuring *Umafunoparcialcomputvel sseforumafunorecursivaparcial(versoformalatual) *Umafunototalcomputvel sseforumafunorecursivatotal(versoreduzidadeChurch) AmquinaTuringpossuipoderdecomputaomximo Noexisteformalismo/mquinaparadescriodeprocediemntoefetivoquetenhapoderde descriosuperioraodaMquinadeTuring ParaqualquerprocedimentoefetivoexisteumaMquinadeTuringqueexecutaamesma funo NOTAS:Algumasdasasseresacimasodotipo"sse",outrassodotipo"implicao".O"sse" umaduplaimplicao.AHCnaverdadeserefereapenasumadasdireesdo"sse"poisaoutra garantidadapelasprpriasdefiniesdosconceitosenvolvidos.Veja:asseguintesasseresso verdadeiras,independentedaHC UmafunoparcialcomputvelporMTcomputvel. Umafunorecursivaparcialfunoparcialcomputvel. Umafunorecursivatotalfunototalcomputvel. UmaMquinadeTuringumprocedimentoefetivo.
ltimaatualizao:tera,5agosto2008,00:15

VocacessoucomoLEANDROSEHNEMHECK(Sair)

PARTE 4

LINGUAGENS REGULARES

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Expresses Regulares

1. Escreva expresses regulares (ER) para as seguintes linguagens: a) b) c) d) L = {w {0,1}* / w possua nmero mpar de 0 ou 1} L = {w {0,1}* / w possua 11 como sub-palavra} conjunto de palavras sobre {a,b,c} contendo ao menos um a e ao menos um b; conjunto de palavras sobre {0,1} tal que cada par de 0s adjacentes aparece antes de qualquer par de 1s adjacentes; e) identificadores da linguagem Pascal que so compostos por uma letra (sem acentos, cedilha, etc. -- l = a | b | ...| z | A | B | ... | Z ) ou sublinhado (_) seguido por qualquer combinao de letras, sublinhados ou dgitos ( d = 0 | 1 | ... | 9 ). NOTA: Na construo de uma expresso regular vlido usar meta-smbolos (variveis) no lugar de outra expresso regular, como l e d acima, desde que no haja recurso no processo. A expresso completa pode ser obtida por mera substituio das variveis pelas respectivas expresses

2. Para cada uma das expresses regulares abaixo, qual a linguagem definida pela expresso? a) b) c) d) e) f) g) h) 00 (0 + 1)*00(0 + 1)* (0 + 10)* (0 +)(1 + 10)* (0 + 1)*011 0*1*2* 00*11*22* dd*, onde d = 0 + 1 + ... + 9

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Expresses Regulares

1. Escreva expresses regulares (ER) para as seguintes linguagens: a) L = {w {0,1}* / w possua nmero mpar de 0 ou 1} ((0+1)(0+1))*(0+1) b) L = {w {0,1}* / w possua 11 como sub-palavra} (0+1)*11(0+1)*

c) conjunto de palavras sobre {a,b,c} contendo ao menos um a e ao menos um b; c*a(a+c)*b(a+b+c)* + c*b(b+c)*a(a+b+c)*

d) conjunto de palavras sobre {0,1} tal que cada par de 0s adjacentes aparece antes de qualquer par de 1s adjacentes; (10+0)*(+1) (01+1)*( +0) e) identificadores da linguagem Pascal que so compostos por uma letra (sem acentos, cedilha, etc. -- l = a | b | ...| z | A | B | ... | Z ) ou sublinhado (_) seguido por qualquer combinao de letras, sublinhados ou dgitos ( d = 0 | 1 | ... | 9 ). (a+b+...+z+ _ +A+B+ ... + Z )(a+b+...+z+_ + A+B+ ... + Z + 0+...+9)* ou (l+_)(l+_+d)*

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosRespostasdoexerccio2dalista

Manuais

Contatos

LinksAcadmicos

a. {aa} b. Stringsde{0,1}*quecontmosubstring00 c. Linguagemsobre{0,1}*emcujosstringstodo1imediatamenteseguidode0(nocontm substring11enoterminaem1) d. Emvocpoderiapensarem:linguagemsobre{0,1}*emcujosstringstodo0imediatamente precedidode1,excetoo0inicial,seasentenacomearcom0.Analisandomais demoradamente,dparaconcluiralgomaissimples:linguagemsobre{0,1}*cujosstringsno contm00comosubstring) e. Conjuntodosstringsde0se1squeterminamem011 f. Subconjuntode{0,1,2}*cujossmbolosaparecem"ordenados":primeiroos0s,depoisos1s, eporfimos2s.Notemquenohnecessidadedeter0s,1se2snosstrings(ostringvazio pertencealinguagem).Apenas,sehouver0s,elesdevemestarnoincio,etc. g. Mesmalinguagemacima,pormcomarestrioadicionaldequeosstringsdevemconterpelo menosum0,um1eum2. h. Conjuntodasrepresentaesdenmerosnaturaisemdecimal.

ltimaatualizao:tera,18agosto2009,15:58

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Lista de Exerccios I Prolo, Linguagens Formais, T 128, 2004/II Construa expresses regulares e autmatos nitos determinsticos para as seguintes linguagens, onde o alfabeto o conjunto de caracteres ASCII. Notas: (1)para representar um dgito use d ou a expresso [0-9]; (2)para representar um caracter alfabtico maisculo ou minsculo use use l ou a expresso [a-zA-Z]; (3)para representar um caracter ASCII qualquer exceto newline use um ponto (.); (4)para representar caracteres especiais use uma sequncia de escape, por exemplo, n para o caracter newline (5)estabelea suas prprias convenes onde necessrio adicionalmente para os autmatos determinsticos. 1. Nmeros inteiros (sem sinal) 2. Nmeros em ponto utuante do C, que seguem a seguintes restries: (a) Tem que ter pelo menos o ponto decimal ou a clusula de expoente (123.4, 2e3) (123 no vale) (b) Se tiver ponto decimal deve ter pelo menos um dgito antes ou depois do ponto (2. , .3, 2.3) (s . no vale) (c) Clusula de expoente comea com o smbolo e, seguido opcionalmente de um sinal (+ ou -), seguido de 1 ou mais dgitos (d) Nmero no pode comear com smbolo e (2e5, 2.3e-5 esto OK) (e-7 no vale) 3. identicadores em Pascal que comeam com uma letra, que seguida por 0 ou mais caracteres que podem ser letra, nmero ou underscore (sublinhado, _), com a seguinte restrio adicional: No pode haver dois (ou mais) caracteres _ seguidos 4. Comentrios em C: Comeam com a sequncia /* seguido de qualquer smbolo, incluindo newline e terminam com */, com a seguinte restrio adicional: a sequncia */ s pode aparecer no nal do string 5. Comentrios em C++: Comeam com a sequncia // seguida de 0 ou mais caracteres ASCII exceto newline, (terminando em newline, se voc quiser) 6. Constantes do tipo string em linguagens de programao tradicionais, que comeam e terminam com e podem ter no meio desde que seja precedido de ( uma simplicao).

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos Determinsticos

1) Elabore um autmato finito determinstico que aceita a linguagem sobre o alfabeto {0,1} cujas palavras apresentem a seqncia 01 como substring, ou seja, L = {x01y | x,y {0,1}*} 2) Construa um autmato finito determinstico sobre o alfabeto {0,1} que aceite todas as palavras terminadas em 00. 3) Construa AFDs (Autmatos Finitos Determinsticos) que reconheam as linguagens abaixo: a) L1 = {w | w {0,1}* e w comea por 1 e termina por 0} b) L2 = {w | w {0,1}*-{}} c) L3 = {w | w {0,1}* e |w| 3} 4) Descreva um AFD capaz de reconhecer somente datas vlidas (no levando em considerao anos bissextos) no formato americano ms/dia, onde ms e dia so representados com dois dgitos. 5) Descreva com suas palavras a linguagem reconhecida pelo seguinte autmato:

6) Elabore um autmato finito determinstico que reconhece palavras que comeam por um a, terminam por um a e, entre estes dois smbolos h uma ou mais ocorrncias de a ou b. 7) Construa autmatos finitos determinsticos para as seguintes linguagens: a) L = {w {a,b}* / cada a em w imediatamente precedido e seguido por b} b) L = {w {a,b}* / w tem abab como subpalavra} 8) Encontre um autmato que reconhea a linguagem denotada pela expresso regular ((ab)* + (bc)*)ab.

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos Determinsticos

1) Elabore um autmato finito determinstico que aceita a linguagem sobre o alfabeto {0,1} cujas palavras apresentem a seqncia 01 como substring, ou seja, L = {x01y | x,y {0,1}*} 2) Construa um autmato finito determinstico sobre o alfabeto {0,1} que aceite todas as palavras terminadas em 00. 3) Construa AFDs (Autmatos Finitos Determinsticos) que reconheam as linguagens abaixo: a) L1 = {w | w {0,1}* e w comea por 1 e termina por 0} b) L2 = {w | w {0,1}*-{}} c) L3 = {w | w {0,1}* e |w| 3} 4) Descreva um AFD capaz de reconhecer somente datas vlidas (no levando em considerao anos bissextos) no formato americano ms/dia, onde ms e dia so representados com dois dgitos. 5) Descreva com suas palavras a linguagem reconhecida pelo seguinte autmato:

6) Elabore um autmato finito determinstico que reconhece palavras que comeam por um a, terminam por um a e, entre estes dois smbolos h uma ou mais ocorrncias de a ou b. 7) Construa autmatos finitos determinsticos para as seguintes linguagens: a) L = {w {a,b}* / cada a em w imediatamente precedido e seguido por b} b) L = {w {a,b}* / w tem abab como subpalavra} 8) Encontre um autmato que reconhea a linguagem denotada pela expresso regular ((ab)* + (bc)*)ab.

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos Determinsticos

1)

2)

3) a)

b)

c)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos Determinsticos

5) Palavras sobre {0,1} onde o primeiro smbolo diferente do ltimo smbolo. 6)

7) a)

b)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos Determinsticos

8)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

1) Construa autmatos finitos no-determinsticos (AFND) que reconheam as seguintes linguagens sobre = {0,1}: a) L1 = {w | w * e w comea por 1 e termina por 0} b) L2 = {w00 | w *} c) L3 = {x01y | x,y *} 2) Mostre um AFND que aceita o conjunto de palavras sobre o alfabeto {0,1,...,9} tal que o dgito final j tenha aparecido antes na palavra. 3) Converta o seguinte AFND para um AFD: A=({p,q,r,s},{0,1},, p, {s}) 1 0 p {p,q} {p} q {r} {r} r {s} s {s} {s} 4) Considere o seguinte AFND- (autmato finito no-determinstico com movimento vazio): A=({p,q,r},{a,b,c},, p, {r}) a b c p {p} {q} {r} q {p} {q} {r} r {q} {r} {p} a) Compute o Fecho- para cada estado no autmato. b) Converta o autmato para o AFND correspondente. c) A seguir, converta para o AFD correspondente. 5) Utilizando o software JFLAP, implemente e teste os autmatos desenvolvidos nos exerccios anteriores. 6) Converta as seguintes ER em AFND-, utilizando o algoritmo estudado: a) 01* b) (0+1)01 c) (0+1)*1(0+1)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

1) Construa autmatos finitos no-determinsticos (AFND) que reconheam as seguintes linguagens sobre = {0,1}: a) L1 = {w | w * e w comea por 1 e termina por 0} b) L2 = {w00 | w *} c) L3 = {x01y | x,y *} 2) Mostre um AFND que aceita o conjunto de palavras sobre o alfabeto {0,1,...,9} tal que o dgito final j tenha aparecido antes na palavra. 3) Converta o seguinte AFND para um AFD: A=({p,q,r,s},{0,1},, p, {s}) 1 0 p {p,q} {p} q {r} {r} r {s} s {s} {s} 4) Considere o seguinte AFND- (autmato finito no-determinstico com movimento vazio): A=({p,q,r},{a,b,c},, p, {r}) a b c p {p} {q} {r} q {p} {q} {r} r {q} {r} {p} a) Compute o Fecho- para cada estado no autmato. b) Converta o autmato para o AFND correspondente. c) A seguir, converta para o AFD correspondente. 5) Utilizando o software JFLAP, implemente e teste os autmatos desenvolvidos nos exerccios anteriores. 6) Converta as seguintes ER em AFND-, utilizando o algoritmo estudado: a) 01* b) (0+1)01 c) (0+1)*1(0+1)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

1)

a) b)

c)

2)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

3) 4) a) Fecho(p) = {p} Fecho(q) = {p,q} Fecho(r) = {p,q,r} b)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

c)

6) a)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

b)

c)

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMTICA Linguagens Formais Exerccios: Autmatos Finitos No-Determinsticos

PARTE 5

INTRODUO COMPLEXIDADE COMPUTACIONAL

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosQuatroalgoritmosparacalcularonsimotermoda sriedeFibonacci

AlgoritmosparacalcularonsimotermodasriedeFibonacci Osprogramasabaixo,escritosemC++,imprimemasriedeFibonacci.Amain()igualparatodose chamaumafunoparacalcularokesimotermodasrie.Estafunodiferenteemcada programa.OtempoquedecorreentreaimpressodeumtermoFibo(k)eoanterior,ento, exatamenteotempogastonaexecuodafunoparacalcularesteksimotermo. Baixeosprogramas,executeoseobserveocomportamentodostemposdeexecuo.Aanlisede complexidadedealgoritmosnospermitepreverosresultadossurpreendentes. (*)NOTA:Oproblemanoarecursoemsi.Osprogramas4e3soversesrecursivasdo1,e levamtemposemelhante.Emauladiscutiremosoprograma2(comparadocomosoutros) 1. fibo(algoritmointuitivorecursivo) 2. fibodin 3. fibodinrec 4. fibomemo

ltimaatualizao:segunda,23maio2011,12:36

VocacessoucomoLEANDROSEHNEMHECK(Sair)

File: /home2/leco/Desktop/ALGO

Page 1 of 1

4 ALGORITMOS PARA CALCULAR A SERIE DE FIBONACCI A FUNCAO MAIN IGUAL PARA TODOS ================================================================================ // INTUITIVO RECURSIVO double fibo(int n) { if (n==0) return 0; else if (n==1) return 1; else return (fibo(n-1) + fibo(n-2)); } int main() { for (int k=0; k<INT_MAX; k++) { cout << k << ":\t" << fibo(k) << endl; } return 0; } ================================================================================ double fibo(int n) { double d[n+3]; d[0]=0; d[1]=1; int k; for (k=2; k<= n; k++) d[k] = d[k-1] + d[k-2]; return (d[n]); } ================================================================================ void preenche (int k, double d[]) { if (k<0) return; else { preenche (k-1, d); if (k==0) d[k]=0; else if (k==1) d[k]=1; else d[k] = d[k-1] + d[k-2]; } } double fibo(int n) { double d[n+3]; preenche(n,d); return (d[n]); } ================================================================================ double fibo(int n, double d[]) { if (d[n] >=0); else if (n==0) d[n]=0; else if (n==1) d[n]=1; else d[n] = fibo(n-1,d) + fibo(n-2,d); return d[n]; } double fibo(int n) { double d[n+3]; for (int k=0; k<=n; k++) d[k]= -1; return (fibo(n,d)); } ================================================================================

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosTpicos:Noesbsicasdaanlisedecomplexidade

NOESBSICASDAANLISEDECOMPLEXIDADE 1. Oque"estimar": 1. TEMPO:quantotempodemoraparaexecutaroalgoritmo 2. ESPAO:Quantamemriaoprogramaocupaduranteaexecuo 3. OUTROSRECURSOS:disco,entradaesada,acessosrede... NESTADISCIPLINAFOCAREMOSAPENAS ANLISEDECOMPLEXIDADEDETEMPO 2. Como"estimar"otempodeexecuo(evoluodasalternativas): 1. Medindootempopropriamentedito:Estaalternativainvivelporvriasrazes: computadoresdiferentestemtemposdeexecuodiferentesomesmocomputadortem tempodeexecuodiferenteemmomentosdiferentes. NAVERDADEESTAALTERNATIVATIL EMUMNVELMAISBAIXODEANLISE. NESTADISCIPLINAUSAREMOS TCNICASDEMAISALTONVEL QUEFAZEMUMACLASSIFICAOPRELIMINARDOSALGORITMOS, MUITOMAISIMPORTANTEDOQUEAANLISEPOR "TESTEDEEXECUO" 2. Contandonmerodepassosdaexecuodoalgoritmo:Seconsiderarmosquecada "instruo"ou"passo"doalgoritmolevamaisoumenosomesmotempo,podemos contaronmerodepassosdoalgoritmoduranteaexecuoeestaumaexcelente estimativadaeficinciadotempo,principalmenteparacomparaoentredoisalgoritmos. 3. AnlisedetempodeexecuocomofunoT(n): Oprximoproblemaqueexecuesdoalgoritmoparadiferentesentradas,obviamentevo resultarem"tempos"(nmerosdepassos)diferentes.Oproblemaagora,comoexpressaro tempodeumamaneiraTILeCONCISA. Ora,emgeral,otempodeexecuo(nmerodepassos)doalgoritmodependefortementede um(ocasionalmentemaisdeum)parmetrosquecaracterizamasentradas.Porexemplo,nos algoritmosparaclculodostermosdeFibonacci,otempodependedondicendotermo.Para umalgoritmodepesquisaemvetorotempodependedonmerodeelementosdovetor.Este parmetro,geralmente,caracterizao"tamanho"daentrada. Oobjetivopassaentoaser: estimarafuno T(n) quedefine, paracadatamanhondaentrada otempo(nmerodepassos)deexecuo doalgoritmoparaentradasdaqueletamanho. 4. Anlisedetempo(nmerodepassos)comodelimitaodeumaregionogrficonXT( n): Aprximaquestoque,mesmofixandoumnotempodeexecuovariabastante dependendodaentradapropriamentedita.Porexemplo,napesquisasequencialemvetor,

mesmofixandon=50(vetoresde50elementos),oalgoritmomuitomaisrpidoseovalor procuradoestivernaprimeiraposiodovetor,comparadoaseestivernaltimaposio(ou senoestivernovetor). Observe,noentanto,queparaumdadonqualquer(porexemplo,vetoresde50elementos), existeumvalormnimopossveldenmerodepassos,queocorrenachamadassituaesde MELHORCASO(nocasodapesquisasequencial,quandoovalorprocuradoestnaprimeira posio)eumvalormximo,conhecidocomoPIORCASO.(Notequepodemexistir,emgeral existem,infinitasentradasdemelhorepiorcaso.)Ovalordetempoesperadoparauma entradaqualquerdetamanhonficarestritoentoaointervaloentreospontosdemelhorepior casoparaaquelen. Imagineagora,vocplotandoumgrafonXT(n),marcandoapenasospontos correspondentesaopioremelhorcasosparacadan(mnimosemximosdenmerosde passos).Unindoseospontosdemximoobtmseachamada curvadaanlisedepiorcaso (ousimplementecurvadepiorcaso,oufunodepiorcaso): T piorcaso(n). Damesmaforma,unindoseospontosdemnimoobtmseachamada curvadaanlisedemelhorcaso (ousimplementecurvademelhorcaso,oufunodemelhorcaso): T melhorcaso(n). Ora,otempodeexecuodoalgoritmopodeentosercaracterizadocomoaregiodelimitada pelascurvasdemelhorepiorcaso. 5. NOTASimportantesnestemomento: 1. AsfunesT(n)detempodeexecuotememgeralumcomportantomonotnico crescente. 2. NoestamosinteressadosnenhumpouconaregiodografonXT(n)ondeosvalores densobaixos.PORQUE??? 6. Anlisedecasomdio:Semdvidaalguma,aanlisedepiorcasomuitomaisimportante doqueademelhorcaso,atporque,,emgeral,bastantesimplesalteraroalgoritmopara quealgumaspoucassituaesdemelhorcasotenhambomdesempenho. Humaterceiraanlisequetooumaisimportantedoqueadepiorcaso,queaANLISE DOCASOMDIO,atravesdaqualseestimaotempodeexcuo"esperado"(conceitode expectnciadaanliseestatstica)oucomportamento"namdia".Halgumasdificuldades paraobteroT casomdio(n): 1. Aanlisedocasomdiopressupeaprviaestipulaodeumadistribuio estatsticadasentradas.Porexemplo,nocasodapesquisaemvetor,seassumirmos queovalorprocuradosempreestnovetor,eassumirmosumadistribuiouniformeda probabilidadedasentradas,otempodocasomdioaproximadamentemetadedo tempodepiorcaso.Masseassumirmosquevalgeradouniformementedeum universomuitomaiorqueotamanhodovetoramdiasersemelhanteaopiorcaso (porquenamaiorpartedoscasosovalorprocuradonoestarnovetor). 2. Mesmoassumindodistribuiouniforme(comonoprimeirocasoacima),,emgeral, MUITOMAISDIFCILfazeraanlisedecasomdiodosalgoritmosdoqueanlisede piorcaso. 3. Poroutrolado,felizmente(parafacilitaraanlise),otempodeexecuomdio,quando analisadoassintticamente(CONCEITOQUESERVISTONASAULASSEGUINTES) coincidecomotempodepiorcaso. Pororanotrataremosmaisdaanlisedepiorcaso.Maisadiantenosemestrehaveruma aulaespecficaparaisto. 7. EXEMPLO:Anlisedoalgoritmodepesquisasequenciaemvetorordenado. Chegaremosaumaconclusoinicialdotipo: T piorcaso(n)=3n+3 T melhorcaso(n)=4 8. Anliseassintticadascurvasdepiorcaso,melhorcasoecasomdio: Aanliseacima,expressandoT(n)comumaexpressoexatanoaindasatisfatria(mas

faltapouco!!)porqueconsideraesclaramenteinsignificantes(comooqueconstituium passo,oupequenasvariaesnaexpressodoalgoritmo)podemlevaraalteraesda expressescomoporexemploasseguintesvariaes: T piorcaso(n)=3n+3ou4n+3ou5n+4 T melhorcaso(n)=4ou5 Parasertil,precisamosuma"teoria"quenofaadistinesentreexpressescomoasque estoemumamesmalinhaacima,masquefaadistinodasexpressesdeumadaslinhas emrelaosdaoutra.Intuitivamente,oquequeremosalgocomo: T piorcaso(n)="umafunolinearemnqualquer" T melhorcaso(n)="umafunoconstantequalquer" EstanoocapturadapelachamadaAnliseAssintticadeComplexidade,queser objetodeestudodasprximasaulas.VeremosasnotaesTheta( ),OeOmega( ) eaofinalreescreveremosaanliseacimaassim: T piorcaso(n)= (lse:"T piorcaso(n)Thetaden") T melhorcaso(n)= (lse:"T melhorcaso(n)Thetade1")

ltimaatualizao:quarta,12janeiro2011,11:43

VocacessoucomoLEANDROSEHNEMHECK(Sair)

untitled Page 1 of 1 Sb 26 Nov 2011 17:57:23 BRST 1 2 EXEMPLO PESQUISA EM UM VETOR 3 4 ================================================================================ 5 6 // v um vetor com 7 // n elementos (0 at n-1) 8 // val o elemento procurado 9 bool pesq_seq_vetor (int v[], int n, int val) { 10 for (int k=0; k<n; k++) 11 if (v[k] == val) return true; 12 return false; 13 } 14 15 ================================================================================ 16 17 // v um vetor ORDENADO com 18 // n elementos (0 at n-1) 19 // val o elemento procurado 20 bool pesq_binaria_vetor_ordenado (int v[], int n, int val) { 21 int esq = 0; // ndice do primeiro elemento do intervalo considerado 22 int dir = n-1; // ndice do ultimo elemento do intervalo considerado 23 while (esq <= dir) { 24 int pivot = (esq+dir)/2; // ndice do elemento central do intervalo 25 if (v[pivot] == val) return true; 26 else if (val < v[pivot]) // valor deve estar esquerda do pivot 27 dir = pivot-1; 28 else esq = pivot+1; // valor deve estar direita do pivot 29 } 30 return false; 31 } 32 33 ================================================================================

- 1 -

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosTeoriadaAnliseAssinttica:NotaesTheta,Oe Omega

ANLISEASSINTTICA 1. INTRODUO:Naaulaanteriorvimoscomoestimaraslinhasdepiorcasoemelhorcasoatravs deumafunoque,paracadatamanhondaentradaresultanonmerodepassos.Tambm vistoqueistoaindanoadequadoporquealmdesermuitogranular,difcildecalcular. muitogranularporquefazdistinesparamodificaesintuitivamenteirrelevantesnoalgoritmo e/ounaformadecontabilizarospassos.Nasprximasaulasveremoscomoagruparasfunes emclassesquesomaisadequadaspararepresentarascurvasquedefinemacomplexidadede tempodoalgoritmo.EstevisodeagrupamentodefunesconhecidacomoANLISEDE COMPLEXIDADEASSINTTICA. 2. ROTEIRO: 1. PrimeiroveremosanotaoTheta,queagrupafunesemclassesbaseadonasintuies degranularidadequerecmdiscutimos.anotaomaisimportantedaanlisede algoritmos,eportantodestadisciplina. 2. DepoisveremosasnotaesO(BigOh)eOmega(BigOmega)quecomparafunes comoumaordemlinear.Naverdade,estasnotaesestabelecemumaordenaolinear entreasclassesdanotaoTheta.Arelaodeordememsiimportanteparaa comparaodealgoritmos,masasnotaesOeOmegasomaisutilizadasemTeoriada Computaoenaanlisede"problemas". 3. Veremosaindaduasnotaesmenosusadas:anotaoo(littleO)eanotaoomega (litleOmega).(Diferenanagrafiadanotaesemrelaosdoitemanteriorqueuma osmbolomaisculoeaoutraminsculo) 4. Analogiaentreasnotaesassintticasparaorganizaododomniodasfunesde complexidadeeasrelaesdaaritmticatradicional.(Notequeapenasuma"analogia" parafacilitaracompreenso. Relaesentrefunesdadaspelas notaesassintticas (Big)Theta(= ) BigO(=O) BigOmega(= ) LittleO(=o) LitleOmega(= ) Relaesentrenmerosnaturaisoureais tradicionais = <= >= < >

3. ALGORITMOSversusPROBLEMAS.Antesdeiniciarasdefinies,importantesalientaras diferenasentreanlisedealgoritmoedeproblema. 1. Aanlisedealgoritmocomoaquefizemosparaoalgoritmodeordenaolineardevetor. Voctemoalgoritmosnasuafrenteeprecisaapenas("apenas"?)encontraruma expressoquecaracterizeoseucomportamentotemporal.Amaneiramaisprecisade caracterizarumalgortimoassintoticamentedizendoaqualclassedecomplexidade (Theta)pertencemcadaumadascurvasdografonXT(n)doalgoritmo(emespeciala curvadepiorcasoeacurvadecasomdio). 2. Muitomaisdifcilcaracterizaracomplexidadedeumproblema,porexemplo,doproblema genricodepesquisaemvetor,oudepesquisaemvetorordenado,oudeordenaode vetor,etc.Istoporqueexistemvriosalgoritmosparacadaproblema,naverdadeinfinitos! Enadagarantequeosqueconhecemossoosmaiseficientes.Aanlisedeproblemas serdiscutidaemaulamaisadiante.Porenquantoapenasadiantaseapenasquena

anlisedeproblemassetrabalhaemgeralporaproximaessucessivasenaquela momentoanotaoOvaidesempenharumpapelmaisrelevante(tambmnadisciplinade TeoriadaComputao). 4. NOTAO (BigTheta): Definio1(vialimites):Sejamfeg:NXNduasfunesassintoticamentepositivas(positivasa partirdealgumvalordenserasempreonossocaso): (lse"fThetadeg")==>fcresce"namesmataxadeg" sse

Definio2(maisinclusiva):Sejamfeg:NXNduasfunesassintoticamentepositivas (positivasapartirdealgumvalordenserasempreonossocaso): (lse"fThetadeg")==>fcresce"namesmataxadeg" sse Existemconstantespositivas , e talque paratodo . 5. PropriedadesdanotaoTheta. 1. AnotaoThetadefineumarelaodeequivalnciaentreasfunes,eportanto: 1. Se ento (simtrica) 2. (reflexiva) 3. Se e ento (transitiva) 2. Ouseja,arelaodeequivalnciadeThetaparticionaouniversodasfunesde complexidadesemclassesdeequivalnciadeacordocomoqueanossaintuiode "analistasdealgoritmos"requer. 6. Quando ou

podemosescrever

NOTA:Eseolimitenoestiverdefinido???Estecasoserdiscutidonadefinio2maisadiante. 7. Exemplos(eexerccios):Analiseasfunesabaixoeclassifiqueasdeacordoarelao" 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 8. NOTAO (BigO): ".

Definio1(vialimites):Sejamfeg:NXNduasfunesassintoticamentepositivas(positivasa partirdealgumvalordenserasempreonossocaso):

(lse"f(big)deg")==> fcrescemaislentamenteounamesmataxadeg fnocrescemaisrapidamentequeg gumlimitesuperiorparaataxadecrescimentodef sse

Definio 2 (mais inclusiva): Sejam f e g: N X N duas funes assintoticamente positivas (positivasapartirdealgumvalordenserasempreonossocaso): (lse"f(big)deg")==> fcrescemaislentamenteounamesmataxadeg fnocrescemaisrapidamentequeg gumlimitesuperiorparaataxadecrescimentodef sse Existemconstantespositivas e talque paratodo .

9. PropriedadesdanotaoO. 1. AnotaoOdefineumarelaodeordementreasclassesdeequivalnciade Theta,eportanto: 1. Se e ento (e ) 2. Ouseja:Se ento, implicaem (anti simtrica) 3. (reflexiva) 4. Se e ento (transitiva) 2. Ouseja,arelaodeequivalnciadeOordenaasclassesdeequivalnciadas funesagrupadaspelarelaoTheta,permitindocomparlascomoumanoode "menorouigual"(vejatabelanoincio),oquevainospermitircompararcurvasde complexidadedepiorcaso(oudecasomdio)dediferentesalgoritmos. 10. NOTAO (BigOmega): Definio1(vialimites):Sejamfeg:NXNduasfunesassintoticamentepositivas(positivasa partirdealgumvalordenserasempreonossocaso): (lse"f(big)Omegadeg")==> fcrescetorapidamenteoumaisrapidamentedoqueg gnocrescemaisrapidamentequef gumlimiteinferiorparaataxadecrescimentodef sse

ou

Definio 2 (mais inclusiva): Sejam f e g: N X N duas funes assintoticamente positivas (positivasapartirdealgumvalordenserasempreonossocaso): (lse"f(big)Omegadeg")==> fcrescetorapidamenteoumaisrapidamentedoqueg gnocrescemaisrapidamentequef gumlimiteinferiorparaataxadecrescimentodef sse Existemconstantespositivas e talque paratodo .

11. PropriedadesdanotaoOmega(AnlogassdanotaoO). 12. NOTAOo(LittleO):Definio1(vialimites). Definio1:Sejamfeg:NXNduasfunesassintoticamentepositivas(positivasapartirde algumvalordenserasempreonossocaso): (lse"flittledeg")==>fcrescemaislentamentedoqueg sse

13. NOTAO (LittleOmega):Definio1(vialimites). DEF:Sejamfeg:NXNduasfunesassintoticamentepositivas(positivasapartirdealgumvalor denserasempreonossocaso): (lse"f(little)omegadeg")==>fcrescemaisrapidamentedoqueg sse

14. VOLTEAGORATABELACOMPARATIVAdasrelaesdasnotaesassintticascomsda aritmticatradicional 15. LGEBRADASNOTAESASSINTTICAS.Almdaspropriedadesvistasacimaaps introduodasnotaes,vriasoutrasequaesrelacionamasnotaesentresi.Porexemplo: 1. sse 2. e sse 3. (corolrio)Se ento 4. (corolrio)Se ento 5. SeSe ,ento 6. Se ,ento (EXTREMAMENTEIMPORTANTE,generalizaa anterior) 7. Outraregramuitoimportante:Se ,paraumaconstantepositiva qualquer,ento . 16. Osignificadodasduasltimasregrasacimaque(istosermuitoimportanteetilnaanlisede algoritmosnaprtica): 1. Aclasseassintticadasomadeduasfunesaclasseassintticada"maior" delas 2. Constantesmultiplicandoumafunonoalteramaclasseassinttica. 17. "REPRESENTANTESDASCLASSES":Todasasclassesdecomplexidade(definidaspelarelao )temum"representantenatural",quea"funomaissimplesdaclasse",quenormalmente usadaparaexpressaraclasse.Esterepresentantetipicamenteaqueleemqueostermostem coeficiente1.Porexemplo: , , , , ,... ==>Noteque mas .

18. CLASSESDECOMPLEXIDADEMAISCOMUNSordenadasporO(ouo): 1. 2. 3. 4. 5. 6. 7.

8.

9. ...( ) (ataquivoasclassespolinomiaisou"tratveis") (apartirdaquivemasclassessuperpolinomiaisou"intratveis") 10. ... 11. (1.4~raizquadradadedois) 12. 13. 14. ... 15. 16. 19. NOTAIMPORTANTESOBREASFUNESLOGARTMICAS:Asfuneslogartmicasdebases diferentesestotodasnamesmaclasseTheta!!!!Vejaaseguir,porexemplo,que .Prova:

,queumacontanterealmaiorque0. Ouseja:asfuneslogartmicascrescembemmaislentamentedoqueaslinearesmasnoh diferenaentreoslogaritmosdediferentesbases.Esteresultadotemenormesconsequnciasna representaodedados.RepresentaesembinriosoMUIIIITOOOOOMAISSUSCINTASDO QUEEMUNRIO.Masrepresentaesembinrio,hexaoudecimalsorazoavelmentesimilares, temrazoconstante:cadadgitodecimalcorrespondecorrespondeamaisoumenos3em binrio(oumaisexatamentecada10digtosbinrioscorrespondema3decimais: 20. EXEMPLOSDECRESCIMENTODEFUNES f(n)\n ^ 1 1 0 1 0 1 0,1 1K 1 2 1 10 1 ~3 10 ~30 100 1 ~7 100 ~700 1.000 1 ~10 1.000 ~10.000 10.000 1 ~13 10.000 ~130.000 100.000 1 ~17 100.000 1.700.00 1.000.000 1 ~20 1.000.000 20.000.000

100 10.000 10 1.000 10K 100K 1K 1K CALCULATING ... OVERFLOW HELP!!! 1M 1M 1G 10M 1T 100M 1G

21.

ltimaatualizao:tera,4outubro2011,09:05

VocacessoucomoLEANDROSEHNEMHECK(Sair)

EXERCCIOS SOBRE COMPLEXIDADE DE ALGORITMOS (notaes O e ) Prolo, Teoria da Computabilidade, nov/2004 1. Mostre que: n2 = O(n3 ), n2 = (n3 ), n2 = (n3 ). 2. Mostre que n3 = O(n2 ). 3. Mostre que para todo k N, nk = O(nk+1), mas nk = (nk+1 ). 4. Mostre que para todo k N, nk+1 = O(nk ) e que nk+1 = (nk ) 5. Mostre que para todo k N e constantes c0 , c1 , . . . , ck N, tal que ck > 0 (note que algum(ns) dos itens abaixo so mera consequncia de outro(s)): (a) ck nk + ck1 nk1 + . . . + c1 n + c0 = O(nk ) (b) nk = O(ck nk + ck1 nk1 + . . . + c1 n + c0 ) (c) ck nk + ck1 nk1 + . . . + c1 n + c0 = (nk ) 6. Mostre que 4n3 + 2n = O(n3) ou mostre que 4n3 + 2n = O(n3). 7. Mostre que 2n2 + 10 = O(200n + 30) ou mostre que 2n2 + 10 = O(200n + 30). 8. Mostre que as trs denies da notao O so equivalentes (desde que f e g sejam assintoticamente positivas). Sejam f, g : N N: Def 1: f = O(g) sse limn f (n) = k R, k 0. g(n) Def 2: f = O(g) sse b, a 0 tal que n Nf (n) bg(n) + a. Def 3: f = O(g) sse b, n0 0 tal que n > n0 N, f (n) bg(n). 9. Neste exerccio e no prximo voc vai comparar as funes f 1(n) = 2n (exponencial base 2) com f 2k (n) = nk para alguma constante k N (na verdade f 2k uma famlia de funes chamadas polinomiais, e.g., 1, n, n2 , n3 , . . .). Embora seja intuitivamente bvio que f1 cresce muito mais rapidamente do que f2, no fcil provar formalmente. devido a natureza bastante diversa destas duas funes. Parta do seguinte fato, do clculo innitesimal, limn nk = 0, 2n

para qualquer constante k N, e diga o que se pode concluir sobre a comparao destas duas funes usando as notaes O, e. 10. Usando resultados anteriores desta lista mostre que para qualquer polinmio Pk de grau k N Pk (n) = (nk ). 11. Usando resultados anteriores desta lista e transitividade de = O e = mostre que para quaisquer dois polinmios P 1k e P 2k de mesmo grau k N, P 1k (n) = (P 2k (n)) 12. Usando resultados anteriores desta lista mostre que para qualquer polinmio Pk de grau k N Pk (n) = (2n ).

EXERCCIOS SOBRE COMPLEXIDADE DE ALGORITMOS (notaes O e ) Prolo, Teoria da Computabilidade, nov/2004 1. Mostre que: n2 = O(n3 ), n2 = (n3 ), n2 = (n3 ). n2 1 Sol: limn n3 = limn n = 0. Usando as denies vistas em aula para O, e , n2 = O(n3 ), 2 3 2 3 n = (n ), n = (n ). 2. Mostre que n3 = O(n2 ). n3 Sol 1: limn n2 = . Sol 2: n2 = (n3 ) (visto acima) implica em n3 = O(n2 ) (compare com x y implica em y x.) 3. Mostre que para todo k N, nk = O(nk+1 ), mas nk = (nk+1 ). k Sol: limn nn = 0. Portanto, nk = O(nk+1 ), nk = (nk+1 ), pelas denies. k+1 4. Mostre que para todo k N, nk+1 = O(nk ) e que nk+1 = (nk ) Sol: Relao com questo anterior (como entre as questes 1 e 2). 5. Mostre que para todo k N e constantes c0 , c1 , . . . , ck N, tal que ck > 0 (note que algum(ns) dos itens abaixo so mera consequncia de outro(s)): k k1 Sol: limn ck n +ck1 n nk +...+c1 n+c0 = ck (visto que ck > 0), donde se conclui que ck nk + ck1 nk1 + . . . + c1 n + c0 = (nk ) (e consequentemente as outras duas relaes). (a) ck nk + ck1 nk1 + . . . + c1 n + c0 = O(nk ) (b) nk = O(ck nk + ck1 nk1 + . . . + c1 n + c0 ) (c) ck nk + ck1 nk1 + . . . + c1 n + c0 = (nk ) 6. Mostre que 4n3 + 2n = O(n3 ) ou mostre que 4n3 + 2n = O(n3 ). 3 Sol: limn 4n n+2n = 4. Portanto 4n3 + 2n = O(n3 ). 3 7. Mostre que 2n2 + 10 = O(200n + 30) ou mostre que 2n2 + 10 = O(200n + 30). 2n2 +10 Sol: limn 200n+30 = . Portanto no verdade que 2n2 + 10 = O(200n + 30), ou seja, 2n2 + 10 = O(200n + 30). 8. Mostre que as trs denies da notao O so equivalentes (desde que f e g sejam assintoticamente positivas). Sejam f, g : N N: Def 1: f = O(g) sse limn f (n) = k R, k 0. g(n) Def 2: f = O(g) sse b, a 0 tal que n Nf (n) bg(n) + a. Def 3: f = O(g) sse b, n0 0 tal que n > n0 N, f (n) bg(n). 9. Neste exerccio e no prximo voc vai comparar as funes f 1(n) = 2n (exponencial base 2) com f 2k (n) = nk para alguma constante k N (na verdade f 2k uma famlia de funes chamadas polinomiais, e.g., 1, n, n2 , n3 , . . .). Embora seja intuitivamente bvio que f1 cresce muito mais rapidamente do que f2, no fcil provar formalmente. devido a natureza bastante diversa destas duas funes. Parta do seguinte fato, do clculo innitesimal, limn nk = 0, 2n

para qualquer constante k N, e diga o que se pode concluir sobre a comparao destas duas funes usando as notaes O, e. Sol: Conclui-se que nk = O(2n ), mas nk = (2n ) e nk = (2n ). 10. Usando resultados anteriores desta lista mostre que para qualquer polinmio Pk de grau k N Pk (n) = (nk ). Sol: Isto exatamente o que diz 5c

11. Usando resultados anteriores desta lista e transitividade de = O e = mostre que para quaisquer dois polinmios P 1k e P 2k de mesmo grau k N, P 1k (n) = (P 2k (n)) Sol: Usando o resultado da questo acima: P 1k (n) = (nk ) e P 2k (n) = (nk ). Como uma relao de equivalncia, ela simtrica: nk = (P 2k (n)). Por m, usando transitividade de , P 1k (n) = (P 2k (n)). 12. Usando resultados anteriores desta lista mostre que para qualquer polinmio Pk de grau k N Pk (n) = (2n ). Sol: Combinando 10 com a resposta de 9

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosPrticadaAnliseassinttica:Anlisedealgoritmos norecursivos

ANLISEASSINTTICADEALGORITMOS 1. Revisandooprocessoataqui:Peloquevimosatestemomento,paraanalisarumalgoritmo comofizemoscomoalgoritmodepesquisasequencialemvetor,faramososeguinte: 1. Caracterizarasituaodepiorcasodoalgoritmo:comosoasentradas,quaisaspartes executadas,quantasvezes,etc... 2. Paracadainstruodoalgoritmo,calcular(emfunodenotamanhondaentrada)qual onmerodevezesqueainstruoexecutadonopiorcaso. 3. Calcularonmerototaldepassos,somando,osvaloresparacadainstruo.Neste momento,chegaseaumaequaocomoporexemplo,T(n)=3n+3. 4. IdentificaseaclasseThetacorrespondenteereportaseoresultadoemnotao assintticausandoo"representantedaclasse".Porexemplo,paraoexemploacima, vocpoderiadizer: 1. Acurvadepiorcasodoalgoritmo . 2. Acurvadepiorcasodoalgoritmo . 3. OalgoritmoAcurvadepiorcasodoalgoritmo nopiorcaso. 4. Anlisedepiorcaso: . 5. . 5. Podemosrepetiroprocessoparaacurvademelhorcasosequisermos.Quanto anlisedocasomdio,quebastanteimportante,estaserpostergadaparaaula maisadiante. 2. ANLISEASSINTTICADEALGORITMOSNAPRTICA(abordageminicial):Noprocesso descritoacima,primeiroobtemoscomprecisodesnecessriaafunodonmerodepassos, edepoisasimplificamosparaanotaoassinttica.Ora,intuitivamente,estamosfazendo trabalhodesnecessrio,quedefatosvivelparaalgoritmosextremamentesimplescomoo dapesquisalinearemvetor.Naprtica,podemosestimarocomportamentoassinttico diretamentedoalgoritmo,avaliandoprogressivamenteotempoassintoticodeblocoscadavez maiores,agrupandoosatchegaraoalgoritmosinteiro.Estaanlise,segueasorientaes abaixo,quesofortementebaseadasnalgebradasnotaesassintticas: 1. Cadainstruodoalgoritmolevaumtempo 2. Umasequnciadeinstruescomtempo ,leva,comoumbloco,umetempototal 3. Naverdade,umasequnciadeinstrues/blocoscomtempo ,leva,comoum bloco,umetempototal Istoaplicaodasregrasdalgebradasnotaes assintticas. 4. Deformamaisgeral,setivermosumasequnciadeintrueseblocoscom complexidades , ,..., ,otempototaldobloco .Novamente,istoaplicaodasregrasdalgebra dasnotaesassintticas. 5. Quandotivermosumlaoqueexecuta vezes,eointeriordolaotem complexidade ,olaointeirolevarumtempototal ,desdequecadaumdestescomponentespossa serestimadoindependentemente(sempreconsiderandoanlisedepiorcaso). 6. Oproblemaqueoslaos,principalmentequandohaninhamento, frequentementetemumaestruturaquenopermitedeterminaracomplexidade

doscomponentesprogressivamente,emfunoapenasdotamanhodaentrada. ISTOFICARCLARONOSEXEMPLOS. 3. ANLISEASSINTTICADEALGORITMOSNAPRTICA(contornandooproblemado aninhamento):Naprtica,aanlisepodeserfeita,detectando(noalgoritmooubloco complexo),umainstruo/blocoqueexecutadaomaiornmerodevezes(deforma assinttica,nopiorcaso).Avaliamosentoassintoticamenteonmerodevezesquetal instruo/blocoexecutadonopiorcasoeotempototaloprodutodasduasfunes assintticas(semelhanteaocasodoslaos).Estatcnicatambmresultadodalgebradas notaesassintticas. 4. Comoquevimosagorapodemosanalisarqualqueralgoritmonorecursivo.Mesmoassim, algunsalgoritmosnoserotofceis.Maisadiantenosemestreveremosquealgoritmos recursivosconduzemnecessidadederesolveraschamadas"relaesderecorrncia". 5. Oprximopassoexercitaresteltimoprocessoanalisandovriosalgortimosnorecursivos. Duranteestesexercciosveremostcnicas,estratgias,macetes,etc.,usadosnascontagens, emumaabordagemquesemiformal,masquefortementecalcadanosconceitosformais vistosatagora. 6.

ltimaatualizao:segunda,23maio2011,13:05

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosAlgoritmosparaanlise:cincoversesdoalgoritmo deordenaobubblesort

Abaixoestotrsversesdoalgoritmodeordenaobubblesort: 1. bubblesort.cc//algortimotradicional 2. bublesort_v2.cc//igualaacimacomumasubrotinaparaswapc 3. bubblesort_otimizado.cc//versootimizadaquereduznmerodeiteraesdolaoexterno 4. bubblesort_otimizado_v2.cc//outraversootimizadaquereduznmerodeiteraesdolao interno 5. bubblesort_super_otimizado.cc//versocomotimizaotantodolaoexternocomodointerno. Faaasanlisesdepiorcasoedemelhorcasodosalgoritmosacima.

ltimaatualizao:quarta,11agosto2010,22:13

VocacessoucomoLEANDROSEHNEMHECK(Sair)

File: /home2/leco/Desktop/ALGO..

Page 1 of 2

Abaixo esto trs verses do algoritmo de ordenao bubblesort A FUNCAO DE SWAP IGUAL PARA TODOS QUE A USAM v um vetor com n elementos (0 at n-1) ================================================================================ void bubblesort (int v[], int n) { for (int j=0; j<n-1; j++) { for (int k=0; k<n-1; k++) { if (v[k]>v[k+1]) { int aux = v[k]; v[k]=v[k+1]; v[k+1]=aux; } } } } ================================================================================ void bubblesort (int v[], int n) { for (int j=0; j<n-1; j++) { for (int k=0; k<n-1; k++) { if (v[k]>v[k+1]) { SWAP (v[k], v[k+1]); } } } } ================================================================================ void bubblesort_otimizado (int v[], int n) { bool percorrernovamente = true; while (percorrernovamente) { percorrernovamente = false; for (int k=0; k<n-1; k++) { if (v[k]>v[k+1]) { SWAP (v[k], v[k+1]); percorrernovamente=true; } } } } ================================================================================ void bubblesort (int v[], int n) { for (int j=n-1; j>0; j--) { for (int k=0; k<j; k++) { if (v[k]>v[k+1]) { SWAP (v[k], v[k+1]); } } } } ================================================================================ void bubblesort_super_otimizado (int v[], int n) { bool percorrernovamente = true; for (int j=n-1; percorrernovamente; j--) { percorrernovamente = false; for (int k=0; k<j; k++) { if (v[k]>v[k+1]) { SWAP (v[k], v[k+1]); percorrernovamente=true; } } } }

File: /home2/leco/ALGOS.

Page 1 of 1

# OUTROS ALGORITMOS DE ORDENACAO PRA ANALISE ================================================================================ # INSERTION SORT ================================================================================ // v um vetor com n elementos (0 at n-1) void insertionsort (int v[], int n) { int aux; for (int j=1; j<n; j++) { aux = v[j]; int k; for (k=j-1; k>=0; k--) { if (v[k]>aux){ v[k+1] = v[k]; } else break; } v[k+1]= aux; } }

================================================================================ # SELECTION SORT ================================================================================ void SWAP (int &x, int &y) { int aux = x; x=y; y=aux; } // v um vetor com // n elementos (0 at n-1) void selectionsort (int v[], int n) { for (int j=0; j<n-1; j++) { int indmin=j; for (int k=j+1; k<n; k++) { if (v[k]<v[indmin]) { indmin=k; } } SWAP (v[j], v[indmin]); } }

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosQuandousaranotaoOparaanlisedeum algoritmo

AsnotaesOeOmegasoimportnatesnasseguintessituaes: 1. QUANDO A ANLISE DO ALGORTIMO MUITO COMPLEXA: s vezes a anlise do algoritmo to complexa (mesmo que a compreenso do algoritmo seja simples) que no conseguimos descobrir a classe assinttica da linha de pior caso. (Alternativamente o comportantodalinhadepiorcasopodeserumtantoerrticoenoconvergirparaumaclasse definida.) Nestes casos, podemos usar as notaes assintticas O e para definir limites assintticossuperioreseinferioresparaacurvadepiorcaso. Um excelente exemplo de anlise complexa o algoritmo de troca conhecido como shellsort (veja uma verso dele aqui). O livro clssico de algoritmos de Donald Knuth (volume de ordenao e pesquisa) tem uma anlise de vrias pginas deste algoritmo at chegar a uma aproximao (limite superior) para a curva de pior caso da verso acima de . Knuth (mesmonasegundaedio,recente)colocaaanlisedestealgoritmocomoumproblemaem aberto. NOTEQUE: 1. Nestecaso,porfaltadecondiesdecaracterizaracurvadepiorcasoexatamentecom anotao ,optamosporumacaracterizaoaproximadausandoasnotaesOe . 2. Poderamostambmusaromesmoexpedienteparacaracterizaracurvademelhorcaso eacurvadecasomdio. 2. QUANDO QUEREMOS ESTABELECER GARANTIAS DE COMPLEXIDADE. Por exemplo, comparandose as duas "implementaes" da interface list do JAVA, arraylist e linkedlist, a principaldiferenaparaousurio,defato,asgarantiasdecomplexidadedocomportamento depiorcaso. Operao arraylist linkedlist vetorbuiltinna linguagem O(n) O(1) notem O(1) O(n) videacima O(1) reacontguano expandvel

inseronoincio inseronofinal inseroviaiteradorj posicionado acessoindexado inseroemposio viandice remoo:igual insero acessoaoprximoou anterior implementaotpica

O(n) O(1)amortizada O(n) O(1)amortizada O(n) veracima O(1)

O(1) O(1) O(1) O(n) O(n) veracima O(1)

vetordinmico(= listaencadeada expandvel,relocvel)

Arazopelaqualanotaousada,queningumseimportariase,porexemplo,oacesso indexadonalinkedlistpudesseserimplementadoempiorcaso .Ouseja,a garantiaexigidaqueacurvadepiorcaso(econsequentementetodasascurvaspossveisno

grafodetempodoalgoritmo)tenhamumupperbound(limitesuperior)O(n).Atsesabeque nestecaso,nopossvel(?),dadasasoutrasrestries,fazermelhordoquepiorcaso ,masquemexpressaumrequisitodedesempenhonoestpreocupadoemfixarlimites inferioresdedesempenho. 3. PARASIMPLIFICAODEARGUMENTAONAAVALIAODACOMPLEXIDADEDEUM ALGORITMO.Por exemplo, suponha que voc tenha um algoritmo composto de duas partes emsequncia,comoabaixo,eestejadeterminandosuacomplexidadedepiorcaso.Suponha ainda que voc saiba que a "Parte 2" tem complexidade , mas que a parte 1 sejadifcildeavaliar.Vocnotemcertezaseela ou .Ouainda,voc podeatsaberqueacomplexidade ,masistodifcildeprovar. Algo(n) Parte1//??? Parte2//

ou

???

Ora,sevocpensarumpouco,nestecasotantofaz ou !Porquenahora desomarasduaspartes,prevaleceacomplexidademaiordentreasduaspartes.Naverdade, suficientevocanotar(noteamudanadanotaoparaO(): Algo(n) Parte1//O(nlog(n)) Parte2// Oresultadodacomposio,claramente .

4. ARGUMENTAO EM GERAL: H um outra situao de uso da notao O, que por exemplo,emargumentoscomo:"SuponhonhaqueoalgoritmoAsejaO(f).EntooalgoritmoB seria..." 5. USO INFORMAL DA NOTAO (Nesta disciplina evitaremos este uso informal, mas importante que o aluno tenha cincia dele): Algumas pessoas s vezes ainda usam, informalmente, a notao , para caracterizar um algoritmo, como se esta notao tivesse uma caracterstica inerentemente restrita como a notao Theta para pior caso. A respeito disto,olivrodeCormen,Leiserso,RivesteSteindiz,naseo3.1(segundaedio,versoem Portugus): "AlgunsleitoresqueviramantesanotaoOpodemacharestranhoquedevamos(sic) escrever, por exemplo, . Na literatura, a notao O usada s vezes de modoinformalparadescreverlimitesassintoticamenterestritos,ouseja,oquedefinimos usando a notao . Contudo, neste livro, quando escrevermos , estamos simplesmente afirmando que algum mltiplo constante de um limite assinttico superior sobre , sem qualquer meno sobre o quanto um limite superior r restrito. A distino entre limites assintticos superiores e limites assintoticamente restritos agora se tornou padro na literatura de algortimos." (grifomeu.) Elogoadiantecontinuam: "Tecnicamente,umabusodizerqueotempodeexecuodaordenaoporinsero ,pois,praumdadon,otempodeexecuorealvaria,dependendodaentrada especfica de tamanho n. Quando afirmamos que o tempo de execuo da ordenao porinsero ,queremosdizerqueexisteumafuno que tal que,paraqualquervalorden,noimportandoqueentradaespecficadetamanhonseja escolhida,otempodeexecuosobreestaentradatemumlimitesuperiordeterminado pelovalorf(n).Demodoequivalente,dizemosqueotempodeexecuodopiorcaso ." Finalmente,nasnotasdocaptulo: "Knuth(1973) traa a origem da notao O at um texto de teoria dos nmeros escrito porP.Bachmannem1982...

As notaes e foram defendidas por Knuth(1976) para corrigir a prtica popular,mastecnicamenteruim,deseusarnaliteraturaanotaoOparalimites superiores e inferiores. Muitas pessoas continuam a usar a notao O onde a notao maisprecisatecnicamente. Umadiscussoadicionaldahistriaedesenvolvimentodenotaes..."(grifomeu.) 6. COMPLEXIDADE DE PROBLEMAS: As notaes O e Omega so bastante usadas na descriodacomplexidadedeproblemascomoveremosmaisadiante.

ltimaatualizao:segunda,23maio2011,13:07

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosLeituracomplementar:Introduoanlisedocaso mdio

Anlisedocasomdio Nestaanlise,tentaseobterotempodeexecuodoalgoritmoemseuvalor"esperado"(conceitode expectnciadaprobabilidadeeestatstica).Ditodeoutraforma,suponhaqueoalgoritmoseja executadoparaumgrandenmerodeentradas,deummesmotamanhon,geradasaleatoriamente. Ovaloresperadoaestimativadamdiadostemposdeexecuoparaestasentradas. Primeiroproblema:Aanlisedocasomdioexigeapressuposiodeumadistribuioestatstica dasentradas.Normalmenteseassumedistribuiouniforme,isto,todasasentradastemamesma probabilidade,masistonemsempreestdeacordocomarealidadedoproblema.Algorimos "aleatorizados"svezesnosajudamagarantirestahiptese.Dadaumditribuioesttisticap(.)das entradas,seT(x)eotempodeexecuodaentradax,p(x)aprobabilidadedetalentradaeT(n) otempodeexecuoesperadoparaentradasdetamanhon(quequeremosestimar):

Segundoproblema:Onmerodasentradas,mesmoparaumvalornfixogeralmente potencialmenteinfinito,eafunodeprobabilidadeumadensidadedeprobabilidadenodomnio dosreais.Istopareceaprimeiravistaumagrandecomplicao.Naprtica,noentantopodemos agruparasentradasemumnmerofinitode"casos",tornandop(.)umafunodiscreta,conforme vistonosexemplosadiante.Masistosvezesexigeumacerta"maturidade"deanlise. Terceiroproblema:Omaiorproblema,naverdadeadificuldadedeprocedereanlise matemticapropriamenteditacomasfunesdeprobabilidade.Estimarocasomdio,mesmoque assintoticamente,bemmaisdifcilqueparaopiorcaso.Nestemomentoveremosapenasuma introduo. Exemplo1:Anlisedocasomdiodoalgoritmodepesquisasequencialemvetor,assumindoque nohrepetioentreoselementos,equeovalorprocuradosempreestnovetor. 1. Aentradaovetorvdenelementosmaisovalorprocuradoval. 2. Aoinvsdeconsiderarafunodeprobabilidadeaplicadoaodomniodasinfinitassequncias deconfiguraosdovetoredovalorprocurado,agrupasenosseguintescasos(assumindo indcesde1anporsimplicidade): entradatalqueval=v[1] entradatalqueval=v[2] entradatalqueval=v[3] ... entradatalqueval=v[n] 3. Comoagrupamentoacima,ficafcilaplicaradistribuiouniformecomoumafunodiscreta deprobabilidade.Cadacasoacimatemprobabilidade1/n. 4. Destaformaotempomdiodadopor onde otempoparaaentradadetamanhonquandoovalorprocuradovalestnai simaposiodovetor. 5. Observandooalgoritmodepesquisasequencial,verificamosqueoquevarianoalgoritmocom ovalori,onmerodevezesqueolaoexecuta:ivezes,eotempo ento: 6. Assim,temos:

7. Ouseja:otempoaproximadamentemetadedotempodepiorcaso,eassintoticamente exatamenteomesmo. 8. Exemplo2:Igualaoexemplo1,pormcompossibilidadedeovalorprocuradonoestarnovetor. Paraseterumaidiadasdificuldadesjnahoradeconsideraradistribuioestatstica,suponhaque admitamosapossibilidadedeovalorprocuradonoestarnovetor.Qualaprobabilidadeque devemosassociaraesteltimocaso?Noparecerazovelassumirgratuitamenteaprobabilidadedo elementonoestarnovetorserigualadeeleestaremumoutraposioqualquer(oqueseriaagora 1/(n+1)).Paraesteproblema,felizmente,indepentedequalafunodeprobabilidadeque assumirmos,acomplexidadeassintticacontinuariaamesma, ,mantidoquetodasasposies dovetorsoequiprovveisdeconterval. Exemplo3:Anlisedocasomdiodealgoritmosdeordenaodevetor 1. Porsimplicidadeeconveninciavamosassumirquenohvaloresrepetidos. 2. Assumindosedistribuiouniforme,comoagruparoscasosdasinfinitassequnciaspossveis paratrabalharcomumafunodiscreta?Umapossibilidadestandardaseguinte: 1. Considereumconjuntodevaloresnovetor,cujasequnciaordenada(sadado algoritmo)seja: Asdiferentessequnciasdeentradacomqueestesvalorespodemocorrersoas permutaesdasequnciaacima,emnmerode . 2. Assim,anoodedistribuiouniformeaquelaemquecadapermutaoda sequenciadesadaacimatemprobabilidade . 3. Exemplo:Assumaqueovetortenhatrsvalores:10,20,30.Eisaspossveisentradas: 10,20,30(vetorjordenadoemordemcrescente) 10,30,20 20,10,30 20,30,10 30,10,20 30,20,10(vetoremordemdecrescente) Pelahiptesededistribuiouniforme,cadaumdestecasosacimateriaprobabilidade 1/6. 4. Abstraindoosvaloresespecficosacima,paratrselementostemseasseguintes possibilidadesdeentrada: (vetorordenadocrescente) (menor,maior,meio) (meio,menor,maior) (meio,maior,menor) (maior,menor,meio) (vetorordenadodecrescente) 5. svezes,aobservaodoprprioalgoritmonosdum"insight"decomoagruparde formamaisadequada. 3. Aanlisefcilquandootempodemelhorcasoigualaodepiorcaso(exemplo,mergesort), masdefinitivamentecomplicaquandoistonoocorre.VejanolivrodoCLRanlisedocaso mdiodoQuickSort. 4. AnalisedocasomedioparaoQuickSort: 1. NaaulasobreoQuickSortchegamosseguinterelaoderecorrnciaparaoalgoritmo: ,para otempoquelevaparaparticionarointervaloemtornodeumpivotescolhido "aleatoriamente"(menoresqueopivotparaaesquerdaemaioresouiguaisparaa direita".Aasdoistermosrecorrentescorrespondemaostemposdaschamadas recursivasparaordenaroladoesquerdo(comkelementos,k>0,k<n)ouodireito(com osrestantesnk).Estarelaosugerequeotempodeexecuodoalgoritmodepende decomooparticionamentofeito.Apartirdaconsiderousedoiscasosextremos: 2. CASO1:Suponhaqueaexecuodoalgoritmo(poralgumacoincidnciainfortuita)

sempreparticionaumelementodoladoesquerdoeorestododireito,isto,sempre ocorrek=1.Nestecasotemos: ,ouseja, epodeseconcluir,resolvendoarelaoderecorrnciaque PIORCASOdoalgoritmo. .ESteo

3. CASO2:Suponhaqueaexecuodoalgoritmo(poralgumacoincidnciafortuita) sempredivideoselementosemmetadeparaaesquerdaemetadeparaadireita,isto, sempreocorrek=n/2.Nestecasotemos: epodeseconcluir,resolvendoarelaoderecorrnciaque EsteoMELHORCASOdoalgoritmo. .

4. Paraaanlisedocasomdio,ahiptesededistribuiouniformesetraduziriaemdizer queoparticionamentopodeocorreremqualquerpontodointervalocomamesma probabilidade1/n.Destaformaaequaoderecorrnciaficaria(simplificandoumpouco noscontornos):

Considerandosequeosdoissomatriosdaexpressoacimanaverdadesoomesmo, Asoluodestarelaoderecorrnciabastantedifcil,porqueenvolve,noumtermo recorrentedoladodireito,ou2,ou3,masumasomatriodentermos.Notequeistono aparecenarecorrnciaoriginal,porqueoalgoritmonofazisto.Elenotemnchamadas recursivasparasimesmo.Esteumnusespecficodoclculodamdia(reporteseao "terceiroproblema"noinciodestetexto).OlivrodoCLRusaatcnicadeinduoa partirdechuteinicialparaconcluiraumcertocusto,quearelaoacimaconduza .Juntandocomoquesabemosdaanlisedamelhorcaso(a mdianopodesermelhorqueomelhorcaso),temos,finalmentequenocasomdio, . Esteumraroproblemaemqueocasomdio,provadamente,muitomelhorqueo piorcaso. 5.

ltimaatualizao:segunda,26setembro2011,21:19

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosTpicos:ComplexidadedePROBLEMAS,lower boundsparacomplexidadedeproblemas

COMPLEXIDADEDEPROBLEMAS Atestemomentoanalisamosvriosalgoritmosparadiversosproblemas,masnodiscutimosos problemasemsi.Porexemplo,paraaordenaodevetor,vimosalgoritmosBubbleSort, InsertionSort,SelectionSort,ShellSort,MergeSort,HeapSort,QuickSort,...Uffa!Parapesquisaem vetorordenadovimosapesquisalineareapesquisabinria.Parapesquisaemvetoremgeral(no necessariamenteordenado)vimosapenasapesquisalinear.Paraclculodetermosdasriede Fibonaccitambmvimosvriosalgoritmos. Cadaumdosalgoritmosfoianalisadoecaracterizadasuascomplexidadesdepiorcaso,casomdioe melhorcaso(nestaordemdenfase).Istonospermitecompararosalgoritmos. Noentanto,considerequestescomo: 1. Oquemaisrpido(assintoticamente):ordenarumvetordenelementosoupesquisarum valoremumvetornoordenadodenelementos? 2. Oquemaisrpido(assintoticamente):pesquisarumvaloremumvetornoordenadoden elementosouencontraronsimotermodasriedeFibonacci? 3. Qualacomplexidade(assinttica)doPROBLEMAdeordenao? Tecnicamente,aindanotemosferramentalparadiscutirestasquestes.Intuitivamente,porm, provavelmentetodosnostemosumaposiosobreaprimeiraperguntaacima.Ouseja, precisamos,nestemomentocolocaremperspectiva,comocaracterizarformalmenteacomplexidade deumproblema. Costumasedizerqueumproblemafcil,quandoseconsegueresolverinstnciasdomesmo rapidamente.Docontrriodizsequeoproblemadifcil.(Oimportanteaquinotarquefciledifcil emnossocontextonotemavercomquofcil/difcilplanejarouconstruirumalgoritmoparao problema,massimcomavelocidadedeexecuodosmesmosumavezimplementados.)A complexidadedoproblemadeveportantoindicarquofcil(rpido)resolveroproblema. Umproblemapodeserresolvidoatravsdeumgrandonmerodealgoritmos(videocasodosort), naverdadeumnmeropotencialmenteinfinitodealgoritmos.Portanto,falardeumproblemaexige pensarnoconjuntodealgoritmosqueimplementamsuasoluocomputacional.ISTOINCLUI 1. ALGORITMOSQUECONHECEMOS 2. ALGORITMOSQUENOCONHECEMOSMASQUEALGUMCONHECE 3. ALGORITMOSQUENUNCAFORAMDESCOBERTOS Intuitivamente,acaracterizaodacomplexidadedeumproblematemavercomoconjuntodeseus algoritmos. INTUIO:Acomplexidadedeumproblema(digamos,depiorcaso)acomplexidadedomelhor algoritmoparaoproblema(complexidadedepiorcasodoalgoritmoquetemamaisbaixa complexidadedepiorcasodentretodos).Estaintuiopodeserfacilmentetestadanocasodos termosdasriedeFibonacci.Vimosumalgoritmoexponencial,eumque ,extremamente rpido!Entooproblemafcil,certo?Vamosusaroalgoritmorpidoeignorarooutro. MXIMADODIA:Podeserbastantedifcilcriarumalgoritmomaiseficiente,mascertamentebem fcilcriarumalgoritmomaisdemorado.

CONCLUSO:Dadaaintuioacima, cadavezquedescobrimosouestudamosumalgoritmoAparaumproblema , acomplexidadedepiorcasodestealgoritmoservecomo"UPPERBOUND"(LIMITESUPERIOR) paraacomplexidadedepiorcasodoproblema. PorissoanotaoOassumeumcartertoimportantenacomplexidadedeproblemasenateoria dacomputao.O doalgoritmosetransferacomoOparaoproblema. Agorapassamossegundapartedoproblema:comoobter"lowerbounds"(limitesinferiores)paraa complexidadedeumproblema.Istoremeteaperguntasdotipo: 1. Serquepossvelconstruirumalgoritmodeordenaoqueexecutecompiorcasoconstante ( )? 2. Serquepossvelconstruirumalgoritmodeordenaoqueexecutecompiorcaso ou ? 3. SerquepossvelconstruirumalgoritmodeordenaoqueexecutecompiorcasoMELHOR DOQUE ? Respostasaperguntascomoasacimaestabelecem"lowerbounds"paraoproblemaesobemmais difceisderesponderdoqueasde"upperbound"porquenopodemusaraexistnciadeum algoritmo.Precisamusarargumentosqueprovemaimpossibilidadedeconstruodealgoritmocom talcaracteristica.Provasdotipo"noexistealgoritmocompiorcaso paraosort"se transferecomo (limiteinferior)paraoproblema. Finalmente,seconseguirmosmostrar(e.g.,atravsdaexistnciadeumalgoritmo)umlimitesuperior paraoproblema,e,umlimiteinferior(poranliseterica)quesejamdamesmaclasse,finalmente teremoscaracterizadoperfeitamenteacomplexidadedoproblema,oqueEXTREMAMENTERARO DEOCORRERcomoproblemasinteressantes. Aseguirformalizamosadiscussoacima COMPLEXIDADEDETEMPOASSINTTICADEUMPROBLEMA Seja umafunoassintticapositiva apartirdealgum . 1. Umproblema 2. Umproblema anlisedepiorcaso. 3. Umproblema seexistealgumalgoritmoAqueimplementa eque . separatodoequalqueralgoritmoAqueimplemente ,A se e simultaneamente.

na

ESTUDODECASO:ANLISEDOPROBLEMADEORDENAO(SORTING) Sabesequeosalgoritmos``BubleSort'',``InsertionSort''evriosoutros so nopiorcaso.PortantopodesedizerqueSORT . Noentantosabesetambmqueosalgoritmos``MergeSort''e``HeapSort''so nopiorcaso. PortantopodesedizerqueSORT oqueumaconclusomaisfortedoquea anterior.(Notequese pordefinioeletambm paraqualquer funo talque .) Pergunta:Serqueexistealgoritmomaiseficientedoque ? Paraordenarumvetorprecisoaomenos``tocar''emcadaumdosvaloresdovetor,portanto qualqueralgoritmodeordenaodevelevarpelomenosumtempoproporcionala . Portanto,SORT .Atestepontodotextoamelhorcaracterizaodacomplexidadedo problemaSORTqueele e . Umresultadomaisdifcildeobterecujaprovaomitiremosaqui(aprovaservsitaemaulae esttambmnoinciodocaptulosobreordenaoemtempolineardo[CLR]masvidenota abaixo)queprecisoaomenosumnmeroproporcionala decomparaespara garantirordenaodovetor(resultadosde``lowerbound''precisossoviaderegraprovas tericasemaisdifceis).

ApartirdesteresultadopodesemelhoraraconclusoanteriorafirmandoqueSORT eportanto . NOTA:Osresultadosacimapermitemconcluirque"Noexisteordenaoemtempolinear...".Na verdade,estafirmaopoderiasercompletadacom:"...amenosquesaibamosdealguma caractersticaparticulardotipodedadoquepermitaotimizaraquelecasoespecfico."Naverdade distoquetrataocaptulosobreOrdenaoemTempoLineardo[CLR]:algoritmosqueseaproveitam dealgumapeculiaridadedodomniodeentradaparaburlarolimiteinferior.Istonoserabordado nestadisciplina.

ltimaatualizao:quarta,31maro2010,00:31

VocacessoucomoLEANDROSEHNEMHECK(Sair)

CLASSES DE COMPLEXIDADE Prolo, junho/2005 1. Introduo: (a) Complexidade (de tempo) de um Problema: Seja f : N R uma funo assinttica positiva a partir de algum n0 N. Um problema O(f ) se existe algum algoritmo A que implementa e que O(f ). Um problema (f ) se para todo e qualquer algoritmo A que implemente , A (f ) na anlise de pior caso. Um problema (f ) se O(f ) e (f ) simultaneamente. (b) Considere por exemplo o problema SORT de ordenao. Sabe-se que os algoritmos BubleSort, InsertionSort e vrios outros so (n 2 ) no pior caso. Portanto pode-se dizer que SORT O(n2 ). No entanto sabe-se tambm que os algoritmos MergeSort e HeapSort so (n log(n)) no pior caso. Portanto pode-se dizer que SORT O(n log(n)) o que uma concluso mais forte do que a anterior. (Note que se O(n log(n)) por denio ele tambm O(g) para qualquer funo g tal que n log(n) = O(g).) Pergunta: Ser que existe algoritmo mais eciente do que O(n log(n))? Para ordenar um vetor preciso ao menos tocar em cada um dos valores do vetor, por tanto qualquer algoritmo de ordenao deve levar pelo menos um tempo proporcional a n. Portanto, SORT (n). At este ponto do texto a melhor caracterizao da complexidade do problema SORT que ele O(n log(n)) e (n). Um resultado mais difcil de obter e cuja prova omitiremos aqui que preciso ao menos um nmero proporcional a n log(n) de comparaes para garantir ordenao do vetor (resultados de lower bound precisos so via de regra provas tericas e mais difceis). A partir deste resultado pode-se melhorar a concluso anterior armando que SORT (n log(n)) e portanto (n log(n)). (c) UM GRANDE INCONVENIENTE: Anlise de Complexidade Depende do Formalismo! Todos os resultados do exemplo acima so baseados em algoritmos em linguagens semelhantes a linguagens de programao (com acesso direto memria). A pergunta ento que se pode fazer (e que foi omitidade at o momento) : Se fossemos implementar SORT em mquinas de Turing, contando cada transio executada como um passo (no parece haver outra alternativa) ser que os resultados acima ainda permanecem? Resposta: NO!!! A anlise da complexidade depende do formalismo. (d) Anlise de complexidade em Linguagens de Programao versus Mquina de Turing: TEOREMA: Se um problema O(f ) em Mquina RAM (Linguagens de programao tradicionais) ento ele O(f 6 ) em MT (a prova est muito acima do escopo desta disciplina; uma referncia o livro do Papadimitriou Computational Complexity).

2. A classe P de complexidade (a) Diz-se que um problema est em P ou pertence a classe P de complexidade ( P), se existe constante k N tal que O(nk ), ou seja, existe(m) algoritmo(s) de tempo polinomial para . (b) P o conjunto de todos os problemas para os quais existe algoritmo que roda em tempo polinomial. (c) A pergunta imediata que vem a cabea de como conciliar esta denio com a dependncia de formalismo vista acima. E a resposta que talvez venha como surpresa que a denio da classe P independe do formalismo (computador digital ou MT)! (d) Um problema polinomial em computador digital (mquina RAM, linguagens de programao) sse polinomial em MT. Prova: Utilizando o teorem acima, se pode ser implementado por algoritmo O(n k ) em computador digital, ento pode ser implementado em MT em O((n k )6 ), isto , O((n6k ) que um polinmio (cujo grau a constante 6k, bem mais lento mas ainda polinomial). (e) Um problema fora de P s vezes chamado de superpolinomial. Estes problemas so frequentemente referidos como intratveis ou difceis 3. A classe EXP de complexidade (a) A classe EXP de complexidade contm todos os problemas que rodam em tempo expok nencial, isto , O(2n ) para algum k N. Note que a denio da classe EXP tambm independe de formalismo. (b) Observe que pela denio P EXP , isto todo algoritmo polinomial tambm exponencial, pois as classes so hierrquicas denidas atravs de limites superiores. (c) Teorema: Sabe-se que P EXP , isto , EXP P = existem problemas em EXP que no so polinomiais. Isto pode parecer bvio mas no . Existem problemas que aparentam a princpio serem superpolinomiais (por exemplo, pertencendo a EXP P) por natureza, mas que podem ser resolvidos por algoritmo polinomial, s vezes at de grau surpreendentemente baixo. (d) H muitos problemas em EXP que ainda no se sabe se esto em P ou no. (e) Em particular h toda um classe de problemas chamada NP, que se situa entre P e EXP, mas no se sabe exatamente onde. Para seus problemas mais difceis, bastante importantes, atualmente s se conhecem algoritmos exponenciais. A classe NP ser objeto da prxima aula, junto com um dos mais importantes problemas abertos na Teoria da Computao, a conjectura P=NP?

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosProblemasTratveiseIntratveis

Manuais

Contatos

LinksAcadmicos

Problemas,problemas,problemas... (Problemastratveiseintratveis) Atestepontodosemestre,abordamosvriosproblemaseestudamosalgoritmoseficientespara resolvlos.Emcertosmomentos,forammencionados"enpassant",problemasparaosquaisnose conhecealgoritmoeficientepararesolvlos. Aliteraturaemcomputaoconsagrouousodotermo"tratvel"paraproblemasquepodemser resolvidosporalgumalgoritmoqueexecutaemtempopolinomialcomotamanhadaentrada(anlise depiorcasopolinomial).Demodocomplementar,classificasecomo"intratveis"osproblemasque nopodemserresolvidospolinomialmente.Emaulaposterior,vamosdefinirmaisprecisamenteoque aliteratutradecomputaoclassificacomo"tratvel"e"intratvel".Nestemomento,vamosabordar vriosproblemaseusarnossaintuio,desenvolvidaaolongodosemestre,paradiscutirsua tratabilidade. Masprimeiro,vamoscolocartrspossibilidadesemrelaoaumproblema: 1. Oproblemapodeserindecidvel,ounocomputvel:Quandonoexistealgoritmopara resolveroproblema.EstecasotratadonadisciplinadeTeoriadaComputao(doCC). 2. Seoproblemafordecidveloucomputvel,entoelepodeser: 1. Tratvel:Seexistealgoritmo"eficiente"(polinomial)pararesolvlo.Estessoos problemastipicamenteabordadosatagoranadisciplinae,emgeral,emdisciplinas anterioresdocurso(AlProIeAlProII). 2. Intratvel:Senoexistealgoritmo"eficiente"(polinomial)pararesolvlo.Estasituao abordadatantonadisciplinadeTeoriadaComputaocomoemdisciplinasde Algortimos,comofaremosapartirdeagora,comenfoquesumpoucodiferentese complementares. Aindatemosumcomplicador:algumpodeperguntaroquesequerdizercom"existealgoritmo".Se ningumnomundoconhecealgoritmoeficientepararesolveralgumproblemaP,podesedizerque eleintratvel,eque"noexiste"algoritmoparaele?ArespostaNO!Quandosefaladeexisteou noexisteacimaistoindependentedoconhecimentomeu,oualgumaspessoas,oudetodos... umconceitoabsoluto. Eaentraocomplicador:Humaenormidadedeproblemasimportantesparaosquaisnose conhecealgoritmoseficientes,mastambmnoseconsegueprovarqueelesnoexistem.Es vezes,surpreeendentemente,paraalgunsdestestaisproblemas,algumderepenteatconsegue encontraralgoritmoeficiente. Vamosagoraauminventriodeproblemasparaosquaisvamosdiscutirsua"tratabilidade", mostrandopossveisalgoritmosineficientesedebatersobreapossvelexistnciadealgortimos eficientesparaosmesmos.Algunsatsurpreendentementeveremosquesodefatotratveis! Noteporfim,quealgunsdosproblemasabaixosodedeciso(simouno):"Existe...?",outras nosodedeciso:"Encontreomaior..."Tipicamenteparacadaproblemadeotimizaoexiste umaversodedeciso,queaquerealmenteestudadaemprimeirolugar. Importante:Nosproblemasdeotimizao,focamosapenasemsoluoexata,enoaproximada. Inventriodeproblemas

1. SUBSETSUM:Entrada:UmconjuntoSdenmerosinteiroseumnmerointeirok.Problema: DizerseexistesubconjuntoSdeScujasomadosnmerosigualak 2. EQUALSUBSETSouSETPARTITION:Entrada:UmconjuntoSdenmerosinteiros. Problema:DizersepossvelparticionarSemdoisconjuntos:AeSA,talqueasomados elementosdeAsejaigualsomadoselementosdeSA. 3. GRAPHCOLORING:Entrada:umgrafonodirigidoG.Problema:ColorirosvrticesdeG usandoomenornmerodecores,talquevrticesadjacentestenhamcoresdiferentes. 1. kCOLORING:Entrada:umgrafonodirigidoGeuminteiropositivok.Problema:Dizer sepossvelcolorirosvrticesdeGusandokcores(ou,nomximokcores)talque vrticesadjacentestenhamcoresdiferentes. 2. 3COLORING:Entrada:umgrafonodirigidoG.Problema:Dizersepossvelcoloriros vrticesdeGusando3cores(ou,nomximo3cores)talquevrticesadjacentes tenhamcoresdiferentes. 3. 2COLORING:Entrada:umgrafonodirigidoG.Problema:Dizersepossvelcoloriros vrticesdeGusando2cores(ou,nomximo2cores)talquevrticesadjacentes tenhamcoresdiferentes. 4. SAT:Entrada:umafrmulabooleana qualquer(frmuladoclculoproposicional).Problema: Dizerseafrmulasatisfazvel. NOTA:umafrmula doclculoproposicionalsatisfazvelseexistealgumassinalamento (assignment)devalorescadaumadasvariveisdafrmula(0ou1trueoufalse),quefaza avaliaodafrmularesultaremtrue(1). 1. 3SAT:ocasoespecialdeSATemqueafrmuladaentradaestnaformanormal conjuntiva(CNF:ConjunctiveNormalForm),eonmerodeliteraisemcadaclusula exatamente(ounomximo)trs.ACNFoqueemsistemasdigitaiseorganizaode computadoressechama"produtodesomas".ExternamentehumgrandeANDde clusulas,ondecadaclusulaumORdeliterais.Umliteralumavarivelouuma varivelnegada.No3SATasclusulas(OR)at3literais.Porexemplo: 2. 2SAT:ocasoespecialdeSATemqueafrmuladaentradaestnaformanormal conjuntiva(CNF:ConjunctiveNormalForm),eonmerodeliteraisemcadaclusula exatamente(ounomximo)dois. 5. CIRCUITSAT:SemelhanteaoSAT,squeaentradaumcircuitolgicocomportasAND,OR eNOT. 6. CLIQUE:Entrada:UmgrafoG,eumnmeropositivok.Problema:DizerseexistenografoG algumaclique(subgrafodeGquecompleto)detamanhok(comkvrtices). 1. MAXCLIQUE:Entrada:UmgrafoG.Problema:EncontrarumacliquedeGcomtamanho mximo. 2. MAXCLIQUED:Entrada:UmgrafoG,eumnmeropositivok.Problema:Dizera(s) clique(s)detamanhomximodeGtemtamanhoigualak. 7. HAMILTONIANCYCLE:Entrada:UmgrafonodirigidoG.Problema:Dizerseexisteumciclo simplesemGquepassaportodososvrtices,ou,demodoequivalente,dizerseexisteum cicloemGquepassaportodososvrtices,exatamenteumavez. 8. EULERIANCYCLE:Entrada:UmgrafonodirigidoG.Problema:DizerseexisteumcicloemG, nonecessariamentesimples(podepassarporummesmovrticemaisdeumavez),masque passaporcadaarestaexatamenteumavez.(VerpontesdeKnisgsberg.) 9. TSP:Entrada:UmgrafonodirigidoG,completo,compesosnonegativosnasarestas. Problema:Acharociclosimplesquepassaportodososvrticesequetemotamanhomais curto(somadasarestas)possvel. Noteque:OtalciclodeveserumcicloHamiltoniano(ciclosemrepetiodevrtices).Portanto oproblematambmpoderetornarquenoexistetalciclo. 10. TSPD:Entrada:UmgrafonodirigidoG,completo,compesosnonegativosnasarestase uminteirononegativok.Problema:Dizerseomenorciclosimplesquepassaportodosos vrticestemtamanhok. 11. KNAPSACK:Entrada:Umconjuntodeobjetos,cadaobjetocomumpesoeumvalor,eum limitedepesoW.Problema:Acharumconjuntodeobjetos,cujopesototalsejamenorouigual aW,ecujovaloragregado(somadosvaloresindividuais)sejamximadentretodasas alternativas 12. KNAPSACKD:Entrada:Umconjuntodeobjetos,cadaobjetocomumpesoeumvalor,um limitedepesoW,eumobjetivodevalorV.Problema:Dizerseexisteconjuntodeobjetoscom pesototalmenorouigualaWevalorigualaV(oumaiorouigualaV). 13. VERTEXCOVER:Entrada:GrafonodirigidoGeuminteirononegativok.Problema:Dizerse existeemGumconjuntodeVdekvrticesqueformaumacoberturadevrticesparaG,isto ,paratodaaresta(u,v)deG,ou ou (ouambos),isto,V"cobre"todasas arestasdeG. 14. INDEPENDENTSET:Entrada:GrafonodirigidoGeuminteirononegativok.Problema:

DizerseexisteemGumconjuntodeVdekvrticestalqueparatodaaresta(u,v)deG,pelo menosumdosvrticesu,vnoestemV. 15. GRAPHISOMORPHISM:Entrada:doisgrafosG1,G2.Problema:Dizerseosgrafosso isomorfos.

ltimaatualizao:tera,18outubro2011,10:45

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosAlgoritmosrecursivosparaoproblemaSUBSETSUM

AlgoritmosrecursivosparaoproblemaSUBSETSUM (comelementosdedepurao) 1. Verso1(custom) 2. Verso2(genricaapartirdoincio) 3. Verso3(genricaapartirdofim)

ltimaatualizao:quarta,17novembro2010,20:03

VocacessoucomoLEANDROSEHNEMHECK(Sair)

File: /home2/leco/Desktop/SUBSETSUM.TXT

Page 1 of 1

================================================================================ # VERSAO 1 ================================================================================ void SWAP (int & x, int & y) { int aux= x; x= y; y=aux; } void geravalores (int v[], int n) { srand(time(NULL)); for (int k=0; k < n; k++) v[k] = (rand()%20); } void ordena (int v[], int n) { for (int step=0; step < n-1; step++) for (int k=0; k < n-1; k++) if (v[k] > v[k+1]) SWAP (v[k], v[k+1]); } void imprimevalores (int v[], int n) { cout << "Valores do conjunto gerado" << endl; for (int k=0; k < n; k++) cout << v[k] << "\t"; cout << endl << endl ; } bool tenta (int v[], int sz, int posicao, int val, int acumulado) { if (posicao==sz) return (acumulado==val); else { // Primeiro tenta NO INCLUIR v[posicao] na soma acumulada if (tenta(v, sz, posicao+1, val, acumulado)) return true; // Se no funcionar tenta INCLUIR v[posicao] na soma acumulada return (tenta (v, sz, posicao+1, val, acumulado+v[posicao])); } } int main () { int * vteste; int sz, val; cout << "Entre com nmero de valores v e com o valor val: "; cin >> sz >> val; vteste = new int [sz]; geravalores (vteste, sz); // Gera sz valores aleatoriamente entre 0 e 19 cout << "vetor original:" << endl; imprimevalores (vteste, sz); if (tenta (vteste, sz, 0, val, 0)) cout << "\nResposta final: Sim" << endl; else cout << "\nResposts Final: Nao" << endl; return 0; }

File: /home2/leco/Desktop/SUBSETSUM.TXT

Page 1 of 1

================================================================================ # VERSAO 2 ================================================================================ void SWAP (int & x, int & y) { int aux= x; x= y; y=aux; } void geravalores (int v[], int n) { srand(time(NULL)); for (int k=0; k < n; k++) v[k] = (rand()%20); } void ordena (int v[], int n) { for (int step=0; step < n-1; step++) for (int k=0; k < n-1; k++) if (v[k] > v[k+1]) SWAP (v[k], v[k+1]); } void imprimevalores (int v[], int n) { cout << "Valores do conjunto gerado" << endl; for (int k=0; k < n; k++) cout << v[k] << "\t"; cout << endl << endl ; } bool tenta (int v[], int sz, int posicao, bool entra[], int val) { if (posicao==sz) { int soma1=0, soma2=0; for (int k=0; k<sz; k++) cout << entra[k] << "\t"; cout << endl; for (int k=0; k<sz; k++) if (entra[k]) soma1+= v[k]; return (soma1==val); } else { entra[posicao] = false; if (tenta (v, sz, posicao+1, entra, val)) return true; entra[posicao] = true; return (tenta (v, sz, posicao+1, entra, val)); } } int main () { int * vteste; int sz, val; cout << "Entre com nmero de valores v e com o valor val: "; cin >> sz >> val; vteste = new int [sz]; geravalores (vteste, sz); // Gera sz valores aleatoriamente entre 0 e 19 cout << "vetor original:" << endl; imprimevalores (vteste, sz); bool entra[sz]; cout << "Valores do vetor entra" << endl; if (tenta (vteste, sz, 0, entra, val)) cout << "\nResposta final: Sim" << endl; else cout << "\nResposts Final: Nao" << endl; return 0; }

File: /home2/leco/Desktop/SUBSETSUM.TXT

Page 1 of 1

================================================================================ # VERSAO 3 ================================================================================ void SWAP (int & x, int & y) { int aux= x; x= y; y=aux; } void geravalores (int v[], int n) { srand(time(NULL)); for (int k=0; k < n; k++) v[k] = (rand()%20); } void ordena (int v[], int n) { for (int step=0; step < n-1; step++) for (int k=0; k < n-1; k++) if (v[k] > v[k+1]) SWAP (v[k], v[k+1]); } void imprimevalores (int v[], int n) { cout << "Valores do conjunto gerado" << endl; for (int k=0; k < n; k++) cout << v[k] << "\t"; cout << endl << endl ; } bool tenta (int v[], int sz, int posicao, bool entra[], int val) { if (posicao<0) { int soma1=0, soma2=0; for (int k=0; k<sz; k++) cout << entra[k] << "\t"; cout << endl; for (int k=0; k<sz; k++) if (entra[k]) soma1+= v[k]; return (soma1==val); } else { entra[posicao] = false; if (tenta (v, sz, posicao-1, entra, val)) return true; entra[posicao] = true; return (tenta (v, sz, posicao-1, entra, val)); } } int main () { int * vteste; int sz, val; cout << "Entre com nmero de valores v e com o valor val: "; cin >> sz >> val; vteste = new int [sz]; geravalores (vteste, sz); // Gera sz valores aleatoriamente entre 0 e 19 cout << "vetor original:" << endl; imprimevalores (vteste, sz); bool entra[sz]; cout << "Valores do vetor entra" << endl; if (tenta (vteste, sz, sz-1, entra, val)) cout << "\nResposta final: Sim" << endl; else cout << "\nResposts Final: Nao" << endl; return 0; }

CLASSES DE COMPLEXIDADE Prolo, junho/2005 1. Introduo: (a) Complexidade (de tempo) de um Problema: Seja f : N R uma funo assinttica positiva a partir de algum n0 N. Um problema O(f ) se existe algum algoritmo A que implementa e que O(f ). Um problema (f ) se para todo e qualquer algoritmo A que implemente , A (f ) na anlise de pior caso. Um problema (f ) se O(f ) e (f ) simultaneamente. (b) Considere por exemplo o problema SORT de ordenao. Sabe-se que os algoritmos BubleSort, InsertionSort e vrios outros so (n 2 ) no pior caso. Portanto pode-se dizer que SORT O(n2 ). No entanto sabe-se tambm que os algoritmos MergeSort e HeapSort so (n log(n)) no pior caso. Portanto pode-se dizer que SORT O(n log(n)) o que uma concluso mais forte do que a anterior. (Note que se O(n log(n)) por denio ele tambm O(g) para qualquer funo g tal que n log(n) = O(g).) Pergunta: Ser que existe algoritmo mais eciente do que O(n log(n))? Para ordenar um vetor preciso ao menos tocar em cada um dos valores do vetor, por tanto qualquer algoritmo de ordenao deve levar pelo menos um tempo proporcional a n. Portanto, SORT (n). At este ponto do texto a melhor caracterizao da complexidade do problema SORT que ele O(n log(n)) e (n). Um resultado mais difcil de obter e cuja prova omitiremos aqui que preciso ao menos um nmero proporcional a n log(n) de comparaes para garantir ordenao do vetor (resultados de lower bound precisos so via de regra provas tericas e mais difceis). A partir deste resultado pode-se melhorar a concluso anterior armando que SORT (n log(n)) e portanto (n log(n)). (c) UM GRANDE INCONVENIENTE: Anlise de Complexidade Depende do Formalismo! Todos os resultados do exemplo acima so baseados em algoritmos em linguagens semelhantes a linguagens de programao (com acesso direto memria). A pergunta ento que se pode fazer (e que foi omitidade at o momento) : Se fossemos implementar SORT em mquinas de Turing, contando cada transio executada como um passo (no parece haver outra alternativa) ser que os resultados acima ainda permanecem? Resposta: NO!!! A anlise da complexidade depende do formalismo. (d) Anlise de complexidade em Linguagens de Programao versus Mquina de Turing: TEOREMA: Se um problema O(f ) em Mquina RAM (Linguagens de programao tradicionais) ento ele O(f 6 ) em MT (a prova est muito acima do escopo desta disciplina; uma referncia o livro do Papadimitriou Computational Complexity).

2. A classe P de complexidade (a) Diz-se que um problema est em P ou pertence a classe P de complexidade ( P), se existe constante k N tal que O(nk ), ou seja, existe(m) algoritmo(s) de tempo polinomial para . (b) P o conjunto de todos os problemas para os quais existe algoritmo que roda em tempo polinomial. (c) A pergunta imediata que vem a cabea de como conciliar esta denio com a dependncia de formalismo vista acima. E a resposta que talvez venha como surpresa que a denio da classe P independe do formalismo (computador digital ou MT)! (d) Um problema polinomial em computador digital (mquina RAM, linguagens de programao) sse polinomial em MT. Prova: Utilizando o teorem acima, se pode ser implementado por algoritmo O(n k ) em computador digital, ento pode ser implementado em MT em O((n k )6 ), isto , O((n6k ) que um polinmio (cujo grau a constante 6k, bem mais lento mas ainda polinomial). (e) Um problema fora de P s vezes chamado de superpolinomial. Estes problemas so frequentemente referidos como intratveis ou difceis 3. A classe EXP de complexidade (a) A classe EXP de complexidade contm todos os problemas que rodam em tempo expok nencial, isto , O(2n ) para algum k N. Note que a denio da classe EXP tambm independe de formalismo. (b) Observe que pela denio P EXP , isto todo algoritmo polinomial tambm exponencial, pois as classes so hierrquicas denidas atravs de limites superiores. (c) Teorema: Sabe-se que P EXP , isto , EXP P = existem problemas em EXP que no so polinomiais. Isto pode parecer bvio mas no . Existem problemas que aparentam a princpio serem superpolinomiais (por exemplo, pertencendo a EXP P) por natureza, mas que podem ser resolvidos por algoritmo polinomial, s vezes at de grau surpreendentemente baixo. (d) H muitos problemas em EXP que ainda no se sabe se esto em P ou no. (e) Em particular h toda um classe de problemas chamada NP, que se situa entre P e EXP, mas no se sabe exatamente onde. Para seus problemas mais difceis, bastante importantes, atualmente s se conhecem algoritmos exponenciais. A classe NP ser objeto da prxima aula, junto com um dos mais importantes problemas abertos na Teoria da Computao, a conjectura P=NP?

(Gentle Introduction to) Classe NP e Completude NP Prolo, maio/2011 (adaptado de material de CAA de nov/2010) 1. A classe NP de complexidade (Non-deterministic Polinomial) (a) Em particular h toda um classe de problemas chamada NP, que se situa entre P e EXP, mas no se sabe exatamente onde. Ou seja sabe-se que P NP EXP , mas no se sabe por exemplo se P = NP ou se P NP . (Da mesma forma, no se sabe se NP = EXP ou se NP EXP .) (b) A denio da classe NP parte da idia de Mquinas de Turing nodeterminsticas, ou programas no-determinsticos, como veremos a seguir. Ela tambm pode ser estudada atravs da noo de vericao polinomial de soluo de problemas, mas esta viso no ser abordada nesta disciplina. (c) Os problemas mais difcies da classe NP (em termos de complexidade de tempo) so conhecidos como NP-completos. Ningum sabe como construir algoritmos polimomiais para esta classe. (d) Um fato MUITO IMPORTANTE desta classe que se para qualquer um dos problemas NP-completos puder ser construdo um algoritmo polinomial, ento pode-se construir um algoritmo polinomial para TODOS(!!) os problemas em NP (conceito de reduo polinomial). Este o problema no resolvido mais importante de Algoritmos e Teoria da Computao na atualidade, frequentemente conhecido simplesmente como: P=NP?. (e) H realmente muitos problemas importantes nesta classe: KNAPSACK (problema da mochila), 3-coloring, k-coloring, SAT/3-SAT (minimizao de expresses booleanas, mapas de Karnaugh), TSP Traveling Salesman Problem (problema do caixeiro viajante). H um famoso livro de Garey/Johnson (1979) que fez uma coletnea de problemas NP-completos conhecidos poca. (f) Por outro lado, h muitos problemas em NP que parecem precisar de algoritmo exponencial mas para os quais aps algum esforo conseguese achar algoritmo polinomial. Por exemplo, 2-coloring, All-pairs Shortest Path, LCS (Longest Common Subsequence). (g) NOTA: Quando se fala aqui em problemas difceis signica problemas cujos algoritmos conhecidos so super-polinomiais. Na verdade, construir um algoritmo recursivo de tempo exponencial para os problemas NP-completos frequente bastante simples.

A CLASSE NP DE COMPLEXIDADE Prolo, junho/2005 1. Mquina de Turing No-determinstica (MTN): (a) Na MT determinstica tradicional a funo de transio uma funo parcial, que dene um nico comportamento para cada situao estado atual e smbolo de entrada corrente, ou nenhum, que equivale a trancar: : Q Q {L, R, =} (q, a) (q, a) = (X, p, dir) | q, p Q, a , X , dir {L, R, =} (b) Na MT no-determinstica (MTN) a funo de transio tal que, para cada par (estado, smbolo de entrada) pode haver vrias transies (nenhuma, uma, ou mais ). : Q 2Q{L,R,=} (q, a) (q, a) = {(X1 , p1 , dir1 ), (X2 , p2 , dir2 ), . . . , (Xk , pk , dirk )}, k 0 Note que este no um modelo realista de computao e necessrio denir tambm qual o resultado de uma computao com esta mquina. Para nossos objetivos precisaremos apenas dar uma interpretao para as MTN funcionando como reconhecedores de linguagens, conforme segue. (c) Interpretao da MTN como reconhecedor de linguagens: Uma MTN M aceita uma sentena w, sse existir uma (pelo menos uma) sequncia de execuo iniciando com a entrada w que conduz a um estado nal. Uma MTN M aceita uma linguagem L se para todo w , M aceita w sse x L. Uma MTN M decide uma linguagem L se, M aceita L e M nunca entra em loop innito (ou seja, no existem sequncias de computao innita, para nenhuma entrada). (d) Questes?? 2. A classe NP de complexidade (a) Uma MTN M decide uma linguagem L em tempo O(f ) se M decide L (vide 1c acima) e para toda entrada x , todos os caminhos de computao de M (cada um deles) terminam em tempo O(f ). Note que, implicitamente, isto por si j garantiria que no haja caminhos que levam a loops innitos. (b) Uma MTN M decide uma linguagem L em tempo polinomial, se M decide L em tempo O(nk ) para alguma constante k (onde n o tamanho da entrada). Note que isto exige que TODOS os caminhos para uma sentena w (tanto os que levam a estado nal como os que levam a trancar) levem tempo O(nk ) para o tal k N (n = |w|). (c) Um problema de deciso est em ou pertence NP (nondeterministic polinomial) se existe alguma Mquina de Turing no-determinstica (MTN) M que decide em tempo polinomial. (d) NP o conjunto de todos os problemas de deciso para os quais existe MTN que decide em tempo polinomial.

3. Denio da classe NP de complexidade usando Linguagens de programao (a) Considere uma extenso (no-realista) CN da linguagem C, na qual as subrotinas do C que retornam bool sejam extendidas para permitir o uso de um comando choose com estrutura abaixo (semelhante ao switch mas sem condies): choose { choice: ------choice: ------choice: ------... } A idia a seguinte: ao atingir um comando choose durante a execuo de um programa, o computador escolhe no-deterministicamente uma das choices e a executa. O retorno da subrotina denido da seguinte forma: se existir algum caminho de computao que atinge um return true a subrotina retorna true independente dos outros caminhos. caso contrrio, se existir algum caminho de computao innito a subrotina no retorna. por m, se nenhum das duas alternativas anteriores se aplicar, a subrotina retorna false (ou seja, apenas se todos os caminhos terminam, e em return false). (b) Uma subrotina PROG de CN decide uma linguagem L em tempo polinomial, se PROG decide L em tempo O(nk ) para alguma constante k N. (TODOS os caminhos de computao terminam com return true ou false, e levam tempo O(n k ) para o tal k N). (c) Um problema de deciso est ou pertence NP (nondeterministic polinomial) se existe alguma subrotina em CN que decide em tempo polinomial. (d) NP o conjunto de todos os problemas de deciso para os quais existe rotina em CN que decide em tempo polinomial. (e) O teorema visto anteriormente que relaciona tempos de execuo em computadores digitais e Mquinas de Turing pode ser usado para mostrar que a denio acima equivalente usando MT. (f) Exerccio: Mostrar que 3-Coloring est em NP. (Denir uma subrotina em CN de tempo polinomial para 3-Coloring.)

4. P N P . bvio: uma MT tambm MTN. 5. N P EXP . O no determinismo pode ser simulado testando todas as possibilidades de escolhas a cada momento. Suponha que cada caminho do algoritmo no determinstico leve O(n k ) para algum k N. Suponha o pior caso, em que cada um destes passos seja um choose. Por simplicidade, k suponha que existam duas choices para cada choose. Ento, haver um mximo de 2 O(n ) diferentes sequncias de escolhas. Cada sequncia de escolhas um caminho diferente que k k leva O(nk ). O total de tempo levado pelo simulador ento O(nk 2O(n ) ) que O(2n ), para alguma constante k > k, ou seja, dentro da denio de EXP. A questo de como operacionalizar a simulao ser omitada aqui, mas pode ser feita facilmente com auxlio de uma pilha ou de forma recursiva (a stratgia pode ser depth-rst visto que todos os caminhos terminam). 6. Function Problems versus Problemas de Deciso. Ao denir a classe NP considerando apenas problemas de deciso, ignoramos importantes problemas de otimizao cujo complexidade a mesma dos de deciso de NP. Por exemplo, considere o seguinte problema. COLORING: Dado um grafo G, diga qual o menor nmero de cores necessrio para colorir o grafo de modo que vrtices adjacentes tenham cores diferentes. Ocorre que para todos tais problemas existe uma verso de deciso associada. Por exemplo, k-coloring: Dado um grafo G, diga se possvel colorir o grafo com k cores de modo que vertces adjacentes tenham cores diferentes. A complexidade do problema de otimizao no mnimo igual a do problema de deciso associado, e frequente pode-se mostrar que igual, justicando-se assim mais uma vez a concentrao no estudo de NP. 7. O problema SAT: Um dos problemas mais famosos em NP o SAT (Satisfazibilidade boolena, que foi o primeiro a ser provado NP-completo como veremos depois): Dada uma expresso booleana na forma normal conjuntiva, por exemplo,: = ((x1 x2 x3 ) (x1 x2 ) (x2 x3 ) (x1 x3 ) (x1 x2 x3 )), diga se satisfazvel, isto , se existe algum assinalamento de valores s variveis de que torna verdadeiro. Note que o nmero de possveis assinalamentos de valores 2 n onde n o nmero de variveis de , e serve tambm como estimativa de tamanho da frmula. Portanto, possvel construir um algoritmo exponencial para SAT, testando todas as combinaes de assinalamentos. EXERCCIO: Mostre que SAT est em NP construindo um algoritmo no-determinstico polinomial.

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosDefinioalternativadaclasseNPdecomplexidade comoverificaopolinomial

ClasseNP 1. Oacrnimo"NP"vemde"PolinomialNodeterminstico".Emteoriadacomputaoaclasse NPdefinidaenfunodeMquinasdeTuring(oualgoritmos)nodeterminsticosque executamemtempopolinomial. 2. Nestedisciplinaveremosoutradefinio,queequivalente,baseadanaverificaopolinomial de"certificados". 3. AclasseNPdefinidacomoaclassedosproblemasquepodemser"verificados polinomialmente",conformesegue: 1. Primeiramente,aclasseNPsdefinidaparaProblemasdeDeciso(problemasde sim/no). 2. UmalgoritmoAverificaumproblemadedeciso seasseguintescondiesforem satisfeitas: 1. Condio1:Oalgoritmorecebecomoentrada(parmetros)aentrada convencionalparaoproblemaA,maisumaentradaadicionalchamada certificado. 2. Condio2:Paratodaaentradaconvencionalxparaaqualoproblema verdadeiro,existeumcertificadoytalquequandoxeysoaplicadoscomo entradadoalgoritmoA,Aretornaverdadeiro.Aidiaqueoalgoritmousao certificadoyparaconfirmarqueoproblemaverdadeiroparax. 3. Imagineporexemplo,demaneiraalegrica,queoproblemasejaodeumporteiro quetemnasuafrenteumapessoaqueclamaserPaulaTina(entrada),etenha queconferirseelarealmentePaulaTina.Istopodedarmuitotrabalho consultandoumbancodedadosdefotos.Umalgoritmodeverificao,nestecaso, poderiarecebercomoentradaadicionalumacarteiradeidentidade.Seacarada pessoaconferircomafotoeonomenacarteiraforPaulaTina,entooalgoritmo retornafacilmentesim. 4. Notequeparatodaaentradaconvencionalxparaaqualoproblemaverdadeiro, podemexistirvrioscertificadoytalquequandoxeysoaplicadoscomoentrada doalgoritmoA,Aretornafalso.Porexemplo,apessoapodeserrealmentePaula Tina,masapresentarumaidentidadeoutrapessoaporengano,oudeumaoutra PaulaTina(homnima).Noimporta,oimportantequeexistaumcertificadoque provequeelaPaulaTina. 5. Condio3:Porfim,oqueacontecequandooproblemafalsoparaaentradax? Nestecaso,paraqualquercertificadoyapresentadooalgoritmodeveretornar falso,certo?SeapessoanoforPaulaTina,oalgoritmonopodeconfirmar verdadeiro,noimportaqualcertificadosejaapresentado. 3. UmalgoritmoAverificaumproblemadedeciso polinomialmenteseeleverifica conformedefinioacima,eseutempodeexecuopolinomial(ouseja,ele "eficienteparaverificaroproblema") 4. Paramostrarqueumproblemapodeserverificadopolinomialmente,precisoencontraruma estruturadecertificado(e.g.,carteiradeidentidade),eapartirda,imaginarumalgoritmo polinomialparafazeraverificao 5. Exemplo:ProblemaSubsetSum:Ocertificadopodesersimplesmenteumconjuntodenmeros S'.OalgoritmodecertificaoprimeiroconfeeresetodososelementosdeS'estonaentrada S(istopodeserfeitoemtempoO(nlogn),certo?),edepoissomaoselementosdeS'para verseoresultadoigualak.Seasduasverificaesforemverdadeiraseleretornatrue,caso contrriofalso 6. Agoratemosumalistadeexerccios:Imaginecertificadosealgoritmosdeverificaopolinomial

paratodososproblemasdedecisodoinventriodeproblemasapresentadoemaulaanterior. 7. Oops,voctentouMAXCLIQUED?Entotenteagora.Querdizer,apstentarpelomenos algunsdosoutrosesteumdesafio! 8. AgoralembredadefiniooriginaldaclasseNP:Umproblema(dedeciso)perence classeNPseexistiralgoritmopolinomialdeverificaoparaele.Quaisdosproblemasdo inventriovocconseguiumostrarqueestoemNP?Quaisvocnoconseguiu? 9. Notequemuitomaisfcilverificarumproblemapolinomialmentedoqueresolvlo polinomialmente.Ouseja,umproblemadaclasseNPpodeemprincpioestarnaclassePou no. 10. MostrequetodososproblemasqueestonaclassePtambmtrivialmenteestonaclasseNP, ouseja, .Ocontrriononecessariamenteverdadeiro.Naverdade,ningum sabe.

ltimaatualizao:tera,25outubro2011,08:08

VocacessoucomoLEANDROSEHNEMHECK(Sair)

REDUCIBILIDADE E PROBLEMAS NP-COMPLETOS Prolo, junho/2005 (modicado em junho/2010) A classe NP tem um subconjunto de problemas chamados NP-completos, que tem a seguinte surpreendente propriedade: se qualquer um deles puder ser resolvido em tempo polinomial (determinstico claro, P ) ento todos os outros problemas em NP tambm podem! 1. REDUO: (a) Uma reduo R de um problema A em um problema B, um algoritmo que mapeia instncias w do problema A em instncias w = R(w) do problema B tal que a soluo do problema B para w tambm a soluo do problema A para w. (b) Um problema A reduzvel a um problema B se existe uma reduo R de A para B. (c) Utilizao positiva do conceito de reduo: Se queremos resolver um problema A, sabemos como resolver o problema B e conhecemos uma reduo R de A para B, ento podemos construir um procedimento efetivo para A da seguinte forma: resolveA (w) { w = R(w) return resolveB(w) } Exemplo: Considere o seguinte problema A: Dado um programa PC em C e uma entrada x, ache o resultado da execuo de PC sobre x. Considere o seguinte problema B: Dado um programa PM em alguma linguagem de mquina e uma entrada x, qual o resultado da execuo de PM sobre x. Ora, voc sabe como resulver o problema B (basta rodar), mas resolver o A complicado: algum conhece um interpretador de C? Mas voc tem um algoritmo que converte instncias de problemas de A em instncias de problemas de B, o compilador C! Este compilador implementa uma reduo de A para B. (d) Utilizao negativa do conceito de reduo: Se queremos mostrar que um problema B indecdivel, uma maneira bastante comum partir de um problema A que j se sabe ser indecidvel e mostrar que A reduzvel a B. Prova: Pois se R uma reduo de A para B (existente de fato, provada), pode-se cogitar de decidir uma instncia w de A, como no algoritmo acima, transformando-a em instncia w = R(w) de B, atravs da reduo R e ai resolvendo a instancia w de B. Mas a, se sabemos de antemo que A indecidvel, a nica maneira de no cair em contradio concluir que B no decidvel. (e) Note que na utilizao positiva de R : A B mostramos como resolver A, enquanto que na negativa mostramos que B no computvel. ESTE UM PONTO DE CONFUSO MUITO FREQUENTE!!!!

2. Reduo polinomial (a) Um problema A reduzvel polinomialmente a um problema B (A P B) se existe uma reduo R de A para B que reduz A para B tal que a converso da instncia w de A em instncia w de B se d em tempo polinomial com o tamanho de w, ou seja, R roda em tempo O(nk ) onde k uma constante e n = |w|. (b) Se B um problema polinomial (B P ) e A P B ento A tambm polinomial (A P ). Note que este um caso de utilizao positiva da reduo polinomial para mostrar que A polinomial. (c) Se A no um problema polinomial (A P ) e A P B ento B tambm no polinomial (A P ). Prova: Se B for polinomial, posso resolver instncias de A convertendo-as em tempo polinomial T 1 para instncias de B e depois resolvendo as instncias de B em tempo polinomial T 2. A composio dos tempos T1+T2 polinomial sobre n = |w|. (Nota: H uma sutileza aqui a respeito da possibilidade de w ser maior do que w que estamos jogando debaixo do carpete para no complicar.) Note que este um caso de utilizao negativa da reduo polinomial para mostrar que B no polinomial. 3. Teorema de Cook: Todo problema A NP pode ser polinomialmente reduzido ao problema SAT (A P SAT ). A prova bastante tediosa/complexa e no ser apresentada aqui. Basicamente ela mostra como codicar a explorao dos possveis caminhos de execuo de uma Mquina de Turing No-determinstica polinomial em uma frmula de SAT de modo que exista um caminho de aceitao na MTN sse a frmula for satisfazvel. (O algoritmo que constroi esta codicao roda em tempo polinomial). 4. NP-completeness Concluso imediata do Teorema de Cook: SAT P sse P = NP (Se SAT for polinomial todo P NP polinomial e P = NP ; se SAT no for polinomial (SAT P ), ento obviamente P = NP . Neste sentido, diz-se que no h problema em NP mais difcil que SAT (embora possa haver e efetivamente h problemas to difceis quanto SAT em NP). SAT um representante dos chamados problemas mais difceis de NP, chamados NP-completos. O que acontece se para um dado problema B NP , SAT P B? Isto estabelece uma circularidade (SAT to difcil ou mais que B, B to difcil ou mais que SAT). Isto signica que B como SAT , da sub-classe mais dcil de NP. DEFINIO DE NP-COMPLETO: Um problema B dito NP-completo se B NP e para todo problema A em NP A P B. Dados os resultados anteriores, para mostrar que um problema B NP-completo, basta achar um outro NP-completo A e mostrar que A P B. Exemplo de prova de NP-completeness: 5. Lista suscinta de problemas NP-completos. H realmente muitos problemas importantes nesta classe. Entre outros, h um famoso livro de Garey/Johnson (1979) que fez uma coletnea de problemas NP-completos conhecidos poca. 3-coloring, k-coloring SAT/3-SAT (minimizao de expresses booleanas, mapas de Karnaugh) TSP (Traveling Salesman Problem: problema do caixeiro viajante) KNAPSACK (problema da mochila).

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosRefernciasparaoTeoremdeCookLevin

Manuais

Contatos

LinksAcadmicos

Tipicamente,umproblemaprovadoNPhard(econsequentementeNPcompleto,seadicionalmente oproblemaestiveremNP)encontrandoseumareduopolinomialparaeleapartirdealgumoutro problemaquesesabepreviamenteserNPcompleto.Mascomoquesemostraqueumdado problemadeNPNPcompletodonada,isto,semusarumoutroproblemaNPcompletocomo auxiliar?Ou,emoutraspalavras,comofoiencontradooprimeiroproblemaNPcompleto? OprimeiroproblemaaserprovadoNPcompletofoioproblemaSAT(algumadesuasvariantes).O creditoatribudoindependenteadoispesquisadores(nostemposdaguerrafria,emque americanoserussosnosefalavam):StephenCook(1971)eLeonidLevin(1973),poralguns chamadoTeoremadeCook,poroutrosTeoremadeCookLevin. OproblemamostrarquetodooproblemaemNPpodeserreduzidopolinomialmenteaSAT.Ora,se umproblemaestemNPento,pordefinio,existeumaMTN(MquinadeTuringNo Determinstica)Mqueaceitaoproblemaequeexecutaemtempopolinomialcomaentrada.Emalto nvel,aprovadeCookLevinconsistiaemmostrarque,dadoumproblemaqualquer emNP,era possvelprovaraexistnciadeumareduopolinomialde paraSAT,maisoumenosassim: 1. Se umproblemaemNP,entoexisteexisteMTNMqueaceita emtempopolinomial 2. ConhecendoM,podeseconstruirumalgoritmoR(baseadonestamquinaM),quea reduo:paraqualquersentenawdeentradaelegeraumafrmulaboolena (mesmonos termosrestritosdadefiniodeSAT,3SAT)talque satisfazvelsseMaceitaw. 3. OndeestealgoritmodereduoRexecutaemtempopolinomialcomaentradaw. Estaprovanopropriamentedifcil,maslongaetalvezumpouco(oumuito!!!)tediosa.Ela codificaminunciosamentetodasasdependnciastemporaisdosmovimentosdeM.Porexemplo (informalmentefalando):"senotempo=5,cursorestnaposio6,smbolonaposio6a,e estadop1,ento,notempo7,cursorestnaposio7,estadop2",etc.Cadaafirmaocomo "tempo=5","posio=6",etc.umavarivelboolena.Areduogerariaumgrandenmerode vriveisparatempo,estado,contedodeclulas,etc.,eumainfinidadedepequenassubfrmulas, masestenmeroenormepolinomial! Entenderumaprovadestetiponosseusdetalheslevamuitotempoestemumautilidade:mostrar queSATNPcompleto.Amenos,claroquevoctrabalhecomlgicaequeiraexercitar modelagemdeespecificaesalgortmicascomoespecificaeslgicas.Nestadisciplinanovamos abordarestaprova,masvoudeixaralgumasreferncias.legaltalvezfolharasrefernciasda Internetdofinal 1. LivrodoHopcroft,MotwanieUllman(seo10.2.3) 2. LivrodeComputationalComplexitydoPapadimitriou(Teoremas8.1e8.2) 3. LivrodoGarey&Johnson 4. OlivrodoCormen,LeisersoneRivestmostraqueCIRCUITSAT(similaraSAT)NPcompleto 5. http://www.inf.ed.ac.uk/teaching/courses/propm/papers/Cook.pdf 6. http://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theorem

ltimaatualizao:segunda,31outubro2011,19:08

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosNPcompletenessversusNPhardness

Manuais

Contatos

LinksAcadmicos

NPcompletenessversusNPhardness Humaoutradefinioimportante,adeNPhardness,quemuitosemelhanteadeNP completeness,excetoquenoexigequeoproblemaestejaemNP. 1. Umproblema NPcompletosse: 1. 2. eparatodoproblema 2. OsegundoitemacimadefineoconceitodeNPhardness: Umproblema NPhardseparatodoproblema . Ouseja,umproblemaNPhardseeleto"difcil"oumaisdoqueosproblemasmaisdifcies deNPou,emoutraspalavrasseeletodifciloumaisdoqueumNPcompleto.Notequeum problemahardpodenoestaremNP. 3. Assim,umadefiniomaiscompactaparaNPcompletenessqueumproblema NP completosse: 1. 2. NPhard. 4.

ltimaatualizao:segunda,21junho2010,19:09

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosExemplodereduo:3SATpara3COLORING

Manuais

Contatos

LinksAcadmicos

Veremosemaulaumesquemaparareduzirpolinomialmente3SATpara3COLORING(problema propostocomoexerccionofinaldaseodeNPcompletenessdolivrodoCLR).Comosabemosque 3SATNPcompleto,areduonosmostraque...3COLORINGNPhard.Comosabemos adicionalmenteque3COLORINGpertenceaNP(existealgoritmopolinomialdeverificaode certificado)entotambmpodemosdizerque3COLORINGNPcompleto. Esteexemploimportanteporquedumaidiadecomoproblemasdenaturezacompletamente distintapodemserinterrelacionadospelapossibilidadedereduopolinomialeassimdefinira importantesubclassedosproblemasNPcompletos.

ltimaatualizao:tera,31maio2011,17:49

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosPotpourrideproblemasNPcompletos

Manuais

Contatos

LinksAcadmicos

SAT,3SAT kcoloring,3coloring DTSP(Caixeiroviajante,deciso):DadoumgrafocomdistnciasGeumobjetivokdizerse existecaminhoquepassaportodososvrticescomdisttotal<=k) KNAPSACK(Problemadamochila):Dadoumconjuntodeitemscomvalorepeso,uma restriodepesoWeumobjetivodevalorV,dizerseexistesubconjuntodeitenscomvalor agregado>=Vepesototal<=W SUBSETSUM:DadoumconjuntofinitoSeumaconstantek,dizerseexistesubconjuntoSde StalqueasomadoselementosdeSigualak. EQUALSUBSETS:DadoumconjuntofinitoS,dizerseexistemsubconjuntosS1eS2deStal queS=S1US2easomadoselementosdeS1igualasomadoselementosdeS2 MINIMIZAODEEXPRESSESBOOLEANAS:Dadaumexpressobooleana(frmulado clculoproposicional)phieuminteirok,dizerseexistealgumaexpressomnimadesomade produtoscomtamanho<=k DIstribuiodefrequnciasdeestaesderdio:DadoumconjuntodeemissorasderdioG, comdistnciasentrecadapardelas,umarestrioDdedistnciamnimaeumnmerokde freqnciasderdio,dizersepossvelatribuirumafrequnciaderdioacadaemissora(k frequncias)talqueadistnciaentreparesedeemissorascomamesmacomamesma frequnciaseja>=k. HAMILTONIANPATH/CYCLE(CIRCUIT):DadoumgrafoG,dizerseexistecaminho/cicloque passaportodososnodosexatamenteumavez. CLIQUE:DadografoGeinteirok,dizerseexistealgumacliqueemGcomkvrtices. NOTA:ConsidereoproblemarelacionadoMAXCLIQUEdedizerseamaiorcliquedeGtemk nodos.NosesabeseMAXCLIQUEestemNP!!!MAXCLIQUEseguramenteNPhard(to difciloumaisqueCLIQUE)maspodenemestaremNP!!! MINESWEEPER(CampoMinado)comtabuleiroinfinito:Dadoumcontextodejogoeumaclula alvodizersepossvelconcluirquehumabombanela(ou,outravariante,dizersepossvel concluirquenohbombanela).[HedMan,Shawn.Afirstcourseinlogic.p.351.] VERLIVRODOGAREY&JOHNSON.

ltimaatualizao:tera,5agosto2008,00:11

VocacessoucomoLEANDROSEHNEMHECK(Sair)

PARTE 6

ANLISE DE ALGORITMOS RECURSIVOS

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosANLISEDEALGORTIMOSRECURSIVOS:parte1:Do algoritmorelaoderecorrnciaervoredecusto

ANLISEDEALGORITMOSRECURSIVOS:parte1:doalgortimorelaoderecorrnciaervore decusto 1. Quandooalgoritmotemrecurso,atentativadeobteraestimativadotempodeexecuoT(n ),sejaelaemnmerodepassosouassinttica,esbarranofatodequeoalgoritmochamaasi mesmo,eassim,nahoradecomporotempoT(n)surgeanecessidadedeconsideraro tempodaschamadasrecursivaseTacabaaparecendotambmdoladodireito.Esteprocesso decomposioacabaentoresultandoumachamadaRELAOdeRECORRNCIA. Normalmenteestarelaocaiemumdosdoistiposabaixo: 1. Relaoderecorrncialinear: 1. Exemplo1: T(n)=2,ifn=1 T(n)=3T(n3)+2n+4,ifn>1 Estaequaodizquesen=1,otempo2passos massen>1,entootempo"2n+4"passosmais3vezesotempoqueoalgoritmo levaparaumaentradadetamanhoiguala"n3" 2. Exemplo2,assinttico T(n)= ifn=0,1 T(n)=2T(n1)+ ifn>0 3. Notequeestetiponestetipoderelaoderecorrncia,ostermosemTdolado direitososempredotipoT(nk)paraalgumaconstantek.Daacaracterizao comolinear. 4. AsoluoexatadestasequaesEXTREMAMENTECOMPLEXA.Naaulaque vemvamosveralgunscasosespeciais. 2. Relaoderecorrnciatipodivideandconquer 1. Exemplo1: T(n)=1,ifn==0,1 T(n)=2T(n/2)+ ,ifn>1 2. Exemplo2: T(n)= ,ifn==0,1 T(n)=T(n/4)+T(3n/4)+ ,ifn>1 3. Notequeestetiponestetipoderelaoderecorrncia,ostermosemTdolado direitososempredotipoT(n/k)paraalgumaconstantek. 4. Asoluodestasequaesbemmaissimplesqueocasolinear,maisainda assimapresentadesafios.Naaulaquevemvamosveralgumastcnicas.

ltimaatualizao:quinta,18maro2010,21:09

VocacessoucomoLEANDROSEHNEMHECK(Sair)

File: Untitled Document 1

Page 1 of 1

# Exemplo de algoritmo recursivo para anlise # Pesquisa binria recursiva em vetor ordenado ================================================================================ // v um vetor ORDENADO com n elementos (0 at n-1) // val o elemento procurado bool pesq_binaria_vetor_ordenado_recursiva (int v[], int val, int esq, int dir) { // esq o ndice do primeiro elemento do intervalo considerado // dir o ndice do ultimo elemento do intervalo considerado // o tamanho do intervalo (entrada) n= dir-esq+1 if (esq > dir) return false; else { int pivot = (esq+dir)/2; // ndice do elemento central do intervalo if (v[pivot] == val) return true; else if (val < v[pivot]) // valor deve estar esquerda do pivot return (pesq_binaria_vetor_ordenado_recursiva (v, val, esq, pivot-1)); else // valor deve estar direita do pivot return (pesq_binaria_vetor_ordenado_recursiva (v, val, pivot+1, dir)); } } bool pesq_binaria_vetor_ordenado (int v[], int n, int val) { return pesq_binaria_vetor_ordenado_recursiva (v, val, 0, n-1); }

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosTpicos:TcnicasGeraisdeResoluodeRelaes deRecorrncia

TcnicasgeraisdeSoluodeRelaesdeRecorrncia 1. Expansosucessivaseguidadeinfernciadasoluofechada. Partesedarelaoderecorrncia,substituindoseasocorrnciaste noladodireitopela aplicaodaprpriarelaoderecorrnciasucessivasvezes,atqueseconsigainferiruma formageraldaexpansoaps$k$substituies.Apartirdestatentaseinferiraexpressoda expansoquandoforematingidosostermosconhecidos ,obtendoseento atravsdemanipulaoalgbricaaformafechada.Exemplo:Considerearelao:

Expansoinicial: ,(da,usando ,(da,usando ,(da,usando ,(da,usando ,(infereseaformageraldaksimaexpanso...) obtmse...) obtmse...) obtmse...) obtmse...)

Queremoschegarcomaexpansoatovalorconhecido ,isto,queremosexapandir atqueo daexpressogeraldaexpansosejao ,queocorrequando Substituindo naformageralacima,obtemos:

2. Adivinhaodeumaformageralseguidadeusodeinduopara: 1. Provarqueaformarealmentecorrespondesoluo 2. Descobriroscoeficientes. 3. rvoresdecusto. DesenhaseumarvorecomraizT(n),espandindocadanodocomfilhoscorrespondentesas chamadasrecursivasdonodo.Acadanodoassociaseotempocorrespondentesua execuo(custodonodo)excetuandoseaschamadasrecursiva(representadaspelosfilhos narvore).Estimaseentoasomadoscustossobretodososnodosdarvorequea soluodoT(n). 4. AproximaoassintticavianotaesOe .Emvriassituaes,arelaoderecorrncia muitocomplexaparaserresolvidadeformaexata(querpelastcnicasgeraisacimaoupelas tcnicasespecficasaseremvistasaseguir)everificamosquesuficienteparanossos propsitosterumaaproximaodafunovialimitesuperioreinferiordacurvaemque estamosinteressados.Nestecasopodemosprocurarrelaesderecorrncia e mais simplestalque Nestecaso,encontrasesolues e para e ,edizseque .Muitasvezesestaaproximaosuficiente. e

Porexemplo,considerearelaodereconhnciadoalgortimorecursivoparaostermosda sriedeFibonacci:

Considerandoseque baixoeporcimaassim:

,podemosaproximararelaoacimapor

Resolvendosearelaoderecorrnciacorrespondenteaexpressodaesquerda(FAAISTO COMOEXERCO,USANDOATCNICADAEXPANSOSUCESSIVA): ,obtmse . Resolvendosearelaoderecorrnciacorrespondenteaexpressodadireita(FAAISTO COMOEXERCO,USANDOATCNICADAEXPANSOSUCESSIVA): ,obtmse . Destaformaconcluiseque e

ltimaatualizao:quinta,18maro2010,22:07

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosTpicos:TcnicasEspecficasdeResoluode RelaoesdeRecorrnciaLineares

ResoluodeRelaoesdeRecorrnciaLineares Aformageraldestasrelaes: ,onde soconstantes ou

Emgeralastcnicasutilizveisso: 1. Expansosucessivaseguidadeinfernciadasoluofechada. 2. Adivinhaodeumaformageralseguidadeusodeinduopara: 1. Provarqueaformarealmentecorrespondesoluo 2. Descobriroscoeficientes. 3. Existemtcnicasexatasqueresolvemquaisquerequaesdestetipo,masestastcnicasso extremamentetrabalhosas.Amaiorpartedoslivrosdealgoritmosnocobremestastcnicas. VejaporexemploolivrodaJudithGerstingnabibliografia. 4. CASOSPARTICULARESIMPORTANTES:Existeumasoluosimplespararecorrnciasem formasmaisrestritas(deveriamencionaraquiumareferncia,masnolembromaisdeonde tireiestescasos). 1. Searecorrnciatemaforma asoluo:

2. Searecorrnciatemaforma: com asoluo(naverdade,umlimiteinferiorparaasoluo): ,paraalgumk>1(EXPONENCIAL!!!) 5. Notequeoprimeirocasoparticularacimatemsoluopolinomial,atfrequentementecom polinomiosdegraubaixo.Conversamente,osegundocasoumacomplexidade superpolinomial,muitoruim!importanterefletirsobreascaractersticasdarecursoque

levamaumcasoououtro. 6. Revejaarelaoderecorrnciadoalgoritmorecursivoparaacharostermosdasriede Fibonacci,evejaoquevocpodeconcluirdeleapartirdasregrasacima.Vejasesuas conclusesbatemcomasoluoaproximadavistaanteriormente.

ltimaatualizao:sexta,20agosto2010,20:46

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosTpicos:TcnicasEspecficasdeResoluode RelaoesdeRecorrnciaDivideandConquer

ResoluodeRelaoesdeRecorrnciaDivideandConquer Aformageraldestasrelaes: ou

Hummtodoespecficoderesoluocomoumaboacoberturadecasos,devidoaCoremn, LeisersoneRivest,doqualapresentamosabaixoumaversoadaptada. 1. Mtodo"master"parasoluoderelaesderecorrnciatipo"divideandconquer" (VERSO"ADAPTADA"daapresentadanolivrodoCormen,LeisersoneRivest) Testeprimeiroocaso2abaixo.Apenasseocaso2falhar,verifiquequaldosoutrosdois casos(1ou3abaixo)seaplica Caso2(primeiroasertestado):Se Caso1:Se Caso3:Se ,ento ,ento . ,ento

ltimaatualizao:sexta,19maro2010,16:23

VocacessoucomoLEANDROSEHNEMHECK(Sair)

EXERCCIOS SOBRE RELAES DE RECORRNCIA DIVIDE-AND-CONQUER e ALGORITMOS Prof. Prolo, Construo e Anlise de Algortimos, T 138, mar/2010 1. Resolva as seguintes relaes de recorrncia. Para todas elas assuma que T (1) = (1). (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) T (n) = T (n/2) + (1) T (n) = T (n/2) + (n) T (n) = T (n/2) + (n) + (log n) + (1) T (n) = T (n/2) + 2n T (n) = 2T (n/2) + 2n T (n) = 2T (n/2) + (1) T (n) = 2T (n/2) + (n) T (n) = 2T (n/2) + (n2 ) T (n) = 4T (n/2) + (1) T (n) = 4T (n/2) + (n) T (n) = 2T (n/4) + (1) T (n) = 2T (n/4) + (n)

2. Considere o algoritmo abaixo (ctcio). Monte as equaes de recorrncia que determinam o comportamento da funo no pior caso e no melhor caso. Depois resolva as equaes indicando as complexidades em cada caso usando notaes , O e . int f1 (int v[], int e, int d) {// n= d-e+1 assert (e<=d && e>=0); if (e==d) return v[e]; else if (v[e]>0) { int ndiv3 = (d-e+1)/3; int x1 = e + ndiv3; int x2 = e + 2*ndiv3; return (f1(v[],e, x1) + f1(v[], x1+1, x2) - f1(v[], x2+1, d)); } else { int ndiv2 = (d-e)/2; int x1 = e + ndiv2; return f1(v[], x1+1, d); } } 3. Faa o mesmo que no item anterior para o algoritmo abaixo. Cuidado! Aqui vai pode ser difcil achar a soluo exata. Tente espremer usando O e ao invs de . int f1 (int v[], int e, int d) {// n= d-e+1 assert (e<=d && e>=0); if (e==d) return v[e]; else { int ndiv3 = (d-e+1)/3; int x1 = e + 2*ndiv3; // Divide na proporo 2/3 e 1/3 return (f1(v[],e, x1) + f1(v[], x1+1, d)); } }

EXERCCIOS SOBRE RELAES DE RECORRNCIA DIVIDE-AND-CONQUER e ALGORITMOS Prof. Prolo, Construo e Anlise de Algoritmos, T 138, mar/2010 1. Resolva as seguintes relaes de recorrncia. Para todas elas assuma que T (1) = (1). NOTA SOL: Todos os itens abaixo puderam ser resolvidos sem muita diculdade sem o uso do Teorema master, usando o mtodo do clculo do custo nas rvores das chamadas recursivas, exceto 1d e 1e para os quais mais difcil somar o custo total precisamente. (a) T (n) = T (n/2) + (1). Sol: T (n) = (lg(n)). (b) T (n) = T (n/2) + (n). Sol: T (n) = (n). (c) T (n) = T (n/2) + (n) + (log n) + (1). Sol: Igual ao item anterior. (d) T (n) = T (n/2) + 2n . Sol: T (n) = (2n ). (e) T (n) = 2T (n/2) + 2n . Sol: T (n) = (2n ). (f) T (n) = 2T (n/2) + (1). Sol: T (n) = (n). (g) T (n) = 2T (n/2) + (n). Sol: T (n) = (nlg(n)). (h) T (n) = 2T (n/2) + (n2 ). Sol: T (n) = (n2 ). (i) T (n) = 4T (n/2) + (1). Sol: T (n) = (n2 ). (j) T (n) = 4T (n/2) + (n). Sol: T (n) = (n2 ). (k) T (n) = 2T (n/4) + (1). Sol: T (n) = ( x). (l) T (n) = 2T (n/4) + (n). Sol: T (n) = (n). 2. Considere o algoritmo abaixo (ctcio). Monte as equaes de recorrncia que determinam o comportamento da funo no pior caso e no melhor caso. Depois resolva as equaes indicando as complexidades em cada caso usando notaes , O e . int f1 (int v[], int e, int d) {// n= d-e+1 assert (e<=d && e>=0); if (e==d) return v[e]; else if (v[e]>0) { int ndiv3 = (d-e+1)/3; int x1 = e + ndiv3; int x2 = e + 2*ndiv3; return (f1(v[],e, x1) + f1(v[], x1+1, x2) - f1(v[], x2+1, d)); } else { int ndiv2 = (d-e)/2; int x1 = e + ndiv2; return f1(v[], x1+1, d); } } 3. Faa o mesmo que no item anterior para o algoritmo abaixo. Cuidado! Aqui vai pode ser difcil achar a soluo exata. Tente espremer usando O e ao invs de . int f1 (int v[], int e, int d) {// n= d-e+1 assert (e<=d && e>=0); if (e==d) return v[e]; else {

int ndiv3 = (d-e+1)/3; int x1 = e + 2*ndiv3; // Divide na proporo 2/3 e 1/3 return (f1(v[],e, x1) + f1(v[], x1+1, d)); } }

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosExercciodivertido:Comoseriaapesquisabinriaem umvetornoordenado???

PESQUISABINRIAEMVETORNOORDENADO???? Apesquisabinriaaplicvelevantajosaquandoovetorestordenado.Masoqueaconteceriase tentssemosadaptaroalgortimoparavetoresnoordenados?Aquiestumapossveladaptao, emquecadavezquev[pivot]diferentedovalorprocurado,asduasmetadestemqueser consideradas.Notequeo"OU"(||)porsemnticasdaslinguagensCeJAVAgarantequeseder"true" naprimeirametadeelenoexecutaparaasegunda,masnopiorcasoelevaifazerparaasduas metades. Faaaanlisedepiorcasodoalgoritmo: 1. Achearelaoderecorrncia 2. Classifiquecomolinearoudivideandconquer 3. Tenteresolverusandoosmtodosdervoredecustoesubstituiessucessivas 4. Resolvausandoomtodoparacasosespeciaisqueforaplicvel 5. Compareasrespostasdositens4e5 6. Compareanlisecomaanlisedoalgortimodepesquisalinearemvetor

ltimaatualizao:sexta,20agosto2010,21:34

VocacessoucomoLEANDROSEHNEMHECK(Sair)

File: Untitled Document 1

Page 1 of 1

# Aqui est uma possvel adaptao, # Em que cada vez que v[pivot] diferente do valor procurado, # as duas metades tem que ser consideradas. ================================================================================ // // // // // Obviamente este algoritmo apenas uma exeprincia divertida A pesquisa binria vantajosa apenas quando o vetor est ordenado. Como aqui no se assume que o vetor esteja ordenado, cada vez que o v[pivot] diferente do valor procurado eu tenho que, no pior caso, repetir a pesquisa nas duas metades ...

// v um vetor ORDENADO com // n elementos (0 at n-1) // val o elemento procurado bool pesq_binaria_vetor_NAO_ordenado_recursiva (int v[], int val, int esq, int dir) { // esq o ndice do primeiro elemento do intervalo considerado // dir o ndice do ultimo elemento do intervalo considerado // o tamanho do intervalo (entrada) n= dir-esq+1 if (esq > dir) return false; else { int pivot = (esq+dir)/2; // ndice do elemento central do intervalo if (v[pivot] == val) return true; else return ( pesq_binaria_vetor_NAO_ordenado_recursiva (v, val, esq, pivot-1) || pesq_binaria_vetor_NAO_ordenado_recursiva (v, val, pivot+1, dir) ); } } bool pesq_binaria_vetor_NAO_ordenado (int v[], int n, int val) { return pesq_binaria_vetor_NAO_ordenado_recursiva (v, val, 0, n-1); }

PARTE 7

Tcnicas de Projeto de Algoritmos Programao Dinmica

Seguirpara...

MoodlePUCRS3464903PPGCC1112RecursosTpicos:ProgramaoDinmica

Manuais

Contatos

LinksAcadmicos

TcnicadeProgramaoDinmicaparaProjetodeAlgoritmos 1. Aplicadaaproblemasdeotimizao(emboranosaestes,videexemplodeFibonacci). 1. Umproblemadeotimizaoenvolveabuscadevriasalternativasparaacharasoluo tima. 2. Exemplosdeproblemasdeotimizao: 1. AcharocaminhomaiscurtodaminhacasaataPUC 2. Achararotamaiscurtaquepasseporumconjuntodencidadesvoltandoaoponto original(TSP:TravelingsalesmanproblemouProblemadoCaixeiroViajante). 3. Multiplicaodematrizes:Dadaumasequnciadematrizesaseremmultiplicadas: A1XA2XA3X...XAn acharamaneiradeprocedersmultiplicaesdeparesdematrizesquegera menornmerodemultiplicaoentrenmerosdentrodasmatrizes.Porexemplo, (A1X(A2X(A3X(A4XA5)))) ou ((A1X(A2XA3))X(A4XA5)) 4. Encontraromenornmerodeediesemumstrings1(inserodecaracter, remoodecaracterousubstituiodeumcaracterporoutro)queotransforma emumoutrostrings2.(Problemaeditdistance,ousimiliaridadeentrestrings) 5. Dadosdoisstringss1es2,encontraromaiorstringquesubstringdes1edes2 simultaneamente.(Ou,encontrarotamanhodomaiorsubstringcomum). 6. LCS(longestcommonsubsequence):Dadosduassequncias(strings)s1,es2, encontraramaiorsequnciaqueuma"subsequncia"s1edes2 simultaneamente.Notequenestecaso,aidiadesubsequnciamaisamplado quesubstring,nosentidodequeoselementosnoprecisamestaradjacentesem s1/s2.Podehavergaps.Porexemplo,BCAumasubsequnciadeABCBDAB. 7. Voctemumestoqueinfinitodemoedasdevalores Dadoum valordecentavos$n$qualomenornmerodemoedasquevocprecisardarde troco? 3. Osproblemasdeotimizaotemumobjetivoquedevesermaximizadoouminimizado. Umavezencontradoumalgoritmoparacalcularestecustomximo/mnimo,achara soluotimapropriamenteditafcil. 4. Osalgoritmosdeotimizaotipicamenteimplicamemumasequnciadeescolhas,por exemplo,dobraresquerda,cruzarasinaleira,depoisdireita,...Acadamomentode escolhaexistemvriasalternativas.Oproblemacomosaberqualamelhoralternativa. 2. Subestruratima(optimalsubstructure). Problemasdeotimizaotemacaractersticadequesuasoluotima,passapelasoluo timadesubproblemasdomesmo.Paraacharomenorcaminho,fazseumadecisoinicial,e depoistemseumsubproblemadeacharocaminhomnimoapartirdopontoseguinte. 3. Umavezbemcaracterizadososproblemasdeotimizaoemtermosdecomoresolvlo combinandosubproblemas,fcilacharumalgoritmoparaosmesmos.Estealgoritmo naturalmenterecursivo,comonodivideandconquer.

4. Frequenteocorredeestesalgoritmosteremtempodeexecuoexponencialoupior(piorcaso iguala ,paraalgumaconstantek),oqueosinviabiliza. 5. Noentantosvezesocorreumasituaocuriosa:apesardeoalgoritmoestar resolvendoumnmeroexponencialdeinstnciasdeproblemas(nmeroexponencialde chamadasrecursivas),verificamosqueonmerodesubproblemasexistentes polinomial!!Isto,dadaumaentradan,onmerodesubproblemasquesepodeprecisar resolverlimitadopor ,paraalgumaconstantek.Istonomnimocurioso!! 6. Arespostaparaesteapartenteparadoxoqueoalgoritmoestcalculandomltiplasvezeso mesmoproblema.Eestamultiplicidadetograndequetornaonmerodeinstncias exponencial. 7. Atcnicadaprogramaodinmicaseaplicaexatamentenestassituaes.Elaconsisteem calcularapenasumavezcadasubproblema,armazenandoseuresultadoemalgumaestrutura dedadosdeformaaquequandoasoluodaquelesubproblemafornovamenterequisitada nohnecessidadederesolvlodenovo.Bastaacessarovalorpreviamentearmazenado. 8. Tipicamenteatcnicadeprogramaousaumagrandematrizparaarmazenartodosos subproblemas.Ossubproblemastemparmetros,cadaparmetrotemumintervalodevalores possveis,constituindoseemumadimensodamatriz.(svezespossvelotimizarousode espao,masistonoservistonestemomento). 9. Amaneiramaisconvencionaldeimplementaraprogramaodinmica,verificaratravsdas dependnciasentreossubproblemasaordememqueossubproblemastemqueseravaliados deformaquequandoseprecisardeumresultadoelejestejacalculado.Destaforma,define seumaestratgia(ordem)depreenchimentodamatriz. 10. Umatcnicaalternativachamadamemoizationconsisteemmarcarcadaelementodamatriz inicialmentecomonopreenchido(NULL)eusarumavariantedoalgoritmorecursivooriginal modificadaparaqueantesdeumachamadarecursivaelaverifiqueamatriz.Seoproblemaj foiresolvido(posiodamatrizdiferentedeNULL)usaovaloraramzenado.Casocontrrio,faz achamadarecursiva,enoretornodamesmaarmazenaoresultadonamatriz.Destaforma cadasubproblematambmavaliadoapenasumavez.

ltimaatualizao:quarta,22setembro2010,20:11

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosProblemaparaserdiscutidoemsaladeaula:Longest CommonSubsequence

LongestCommonSubsequence(LCS) Oproblema"intLCS(strings1,ints1,stringv2,intn2)"consisteemdadosduassequncias(strings) v1ev2detamanhosn1en2respectivamente,dizerqualotamanhodamaiorsequnciaque subsequnciasimultaneamentedes1es2.\ NOTA:Subsequnciaaquimaisampladoqueoconceitodesubstring,poispodeterelementosno contguosnasequnciaoriginal.Porexemplo:BCAumasubsequnciadeABCBDAB. Paraefeitosdenossadiscusso,vamosassumirqueaindexaofeitaapartirde1nosstrings(e noaaprtirde0).Umavezobtidooalgoritmofcilmodificloparafuncionarapartirde0. Nestaauladiscutiremoscomoconstruirumalgoritmopararesolveresteproblema. ROTEIRO: 1. Pensememumaformaderesolveroproblemacomparandooscaracteresfinaisdosstringse reduzindoasubproblemas.Tipo:quaissoasalternativaspossveis. 2. Caracterizeaestruturarecursivadoproblemaapartirdaanliseacima.(Ospassos1e2so osmaisdifceis). 3. Construaumalgoritmorecursivoparaoproblema. 4. Analiseoalgoritmoeverifiquequeeleexponencial. 5. Verifiquequeonmerototaldesubproblemaspolinomial(corrigidoem10denovembro). 6. Projeteumalgoritmoeficientecomprogramaodinmica

ltimaatualizao:quinta,10novembro2011,13:05

VocacessoucomoLEANDROSEHNEMHECK(Sair)

Seguirpara...

Manuais

Contatos

LinksAcadmicos

MoodlePUCRS3464903PPGCC1112RecursosResumadaSoluodoProblemadiscutidoemsalade aula:LongestCommonSubsequence(corrigiequaodoitem2quinta,17denovembrodemanh)

LongestCommonSubsequence(LCS) Oproblema"intLCS(strings1,ints1,stringv2,intn2)"consisteemdadosduassequncias(strings) v1ev2detamanhosn1en2respectivamente,dizerqualotamanhodamaiorsequnciaque subsequnciasimultaneamentedes1es2.\ NOTA:Subsequnciaaquimaisampladoqueoconceitodesubstring,poispodeterelementosno contguosnasequnciaoriginal.Porexemplo:BCAumasubsequnciadeABCBDAB. Paraefeitosdenossadiscusso,vamosassumirqueaindexaofeitaapartirde1nosstrings(e noapartirde0).Umavezobtidooalgoritmofcilmodificloparafuncionarapartirde0. Nestaauladiscutiremoscomoconstruirumalgoritmopararesolveresteproblema. ROTEIRO: 0. ISTOUMRESUMODASOLUOVISTAEMAULA.UMAEXPLICAOBASTANTE DETALHADAPODESERENCONTRADA,POREXEMPLO,NOLIVRODOCORMEN, LEISERSON,RIVEST&STEIN,SEO15.4DATERCEIRAEDIO(todasasediestem variaonmerodocaptuloedaseo). 1. Pensememumaformaderesolveroproblemacomparandooscaracteresfinaisdosstringse reduzindoasubproblemas.Tipo:quaissoasalternativaspossveis. Idia:Sejams1es2osstringsdeentrada,comtamanhosn1,n2respectivamente.Para qualquerstringss[i..j]osubstringdesdaposioiataposioj.Consideramos subproblemasdotipo LCS(s1,i,s2,j), onde s1es2soosstringsdeentrada, ivariade0atn1, jvariade0atn2, LCS(s1,i,s2,j)designaotamanhodamaiorsubsequnciacomumentre s1[1..i]es2[1..j] PodesetambmabreviarLCS(s1,i,s2,j)comoLCS(i,j),umavezques1es2sero constantesparaumadadaentradadoproblema. NossoobjetivoportantocalcularLCS(s1,n1,s2,n2)(ouLCS(n1,n2)).Aseguir veremosumamaneiradeobterasoluodeproblemasapartirdeseussubproblemas. 2. Caracterizeaestruturarecursivadoproblemaapartirdaanliseacima.(Ospassos1e2so osmaisdifceis). LCS(s1,i,s2,j)= 0sei=0ouj=0 1+LCS(s1,i1,s2,j1)ses1[i]==s2[j]//corrigido17denovembrodemanh max(LCS(s1,i1,s2,j),LCS(s1,i,s2,j1))ses1[i]!=s2[j] ou,deformasimplificada,assumindoques1es2nomudam LCS(i,j)= 0sei=0ouj=0 1+LCS(i1,j1)ses1[i]==s2[j]//corrigido17denovembrodemanh

max(LCS(i1,j),LCS(i,j1))ses1[i]!=s2[j] Aequaoacima,comovimosapartemaisdifcildesechegaredeentender. Experimentecomela.Certifiquesedequevocaentendeu.Vejaexplicaonolivrodo Cormemetalii. 3. Construaumalgoritmorecursivoparaoproblema. (verpginadadisciplina,algortimoexponencial,ineficiente) 4. Analiseoalgoritmoeverifiquequeeleexponencial. Resumo:Considerandosequeotamanhodaentradanasomaden1comn2, considereocasoemquen1=n2=n/2,eques1[i]nuncaigualas2[j](isto,s1es2no temsmbolosemcomum).Nestecaso,arvoredechamadasrecursivas(esbocea rvore)serumarvorebinriaquecompletaatonveln/2,indicandoquetemmais de2n/2~1.4nnodos.Considerandoarvoredecustoassociada,emquecadanodode chamadarecursivatemcusto ,ocustototalnomnimo1.4nparaocaso considerado.Ouseja,otempodepiorcaso .Oalgoritmoineficiente. 5. Verifiquequeonmerototaldesubproblemaspolinomial(corrigidoem10denovembro). Comoivariade0an1ejde0an2,onmerodesubproblemasn1*n2(mais precisamente(n1+1)*(n2+1)).Nopiorcaso,onden1=n2=n/2,onmerodeproblemas . 6. Projeteumalgoritmoeficientecomprogramaodinmica Comoadefiniodossubproblemastemdoisndicesvariveis,adequadaumamatriz bidimensional,M[0..n1,0..n2].Considerandoasdependnciasdadefiniorecursiva (desenhandoamatriz,cadaclulaM[i,j]dependedaqueestacima,esquerda,ena diagonal("noroeste")),qualquerordemdepreenchimentoquepercorraasclulasda esquerdaparaadireitaedecimaparabaixo(tantofazporlinhasprimeirooupor colunasprimeiro)serve(possveltratamentoprviodainicializodalinhaM[0,j]e colunaM[i,0]).Vejaagoraoalgoritmonapginadadisciplina. 7. VejatambmnapginaenolivrodoCormemetaliioalgoritmoparaobtenoda subsequnciamximapropriamentedita.

ltimaatualizao:quinta,17novembro2011,21:42

VocacessoucomoLEANDROSEHNEMHECK(Sair)

File: /home2/leco/Desktop/teste

Page 1 of 2

LCS: Longest Common Subsequence OBS: TODAS NOS TRES CASOS A FUNCAO MAIN EH IGUAL ================================================================================ Algoritmo natural recursivo ineficiente (exponencial) ================================================================================ int LCS (const string & s1, const string & s2, int i, int j) { if (i==0 || j==0) return 0; if (s1[i] == s2[j]) return (1 + LCS (s1, s2, i-1, j-1) ); int alt1 = LCS (s1, s2, i, j-1); int alt2 = LCS (s1, s2, i-1, j); if (alt2>alt1) return alt2; else return alt1; } int main () { string s1, s2; while (1) { cin >> s1 >> s2; s1 = "@" +s1; s2 = "@" +s2; int maior = LCS (s1, s2, s1.size()-1, s2.size()-1); cout << s1 << endl << s2 << endl << "##MAX = " << maior << endl; } } ================================================================================ Algoritmo eficiente (n^2) prog dinmica separ parte de init (verso vista em aula) ================================================================================ int LCS (const string & s1, const string & s2, int ni, int nj) { int mat [s1.size()+2] [s2.size()+2]; for (int i=0; i<=ni; i++) mat [i][0] = 0; for (int j=0; j<=nj; j++) mat [0][j] = 0; for (int i=1; i<=ni; i++) for (int j=1; j<=nj; j++) { if (s1[i] == s2[j]) mat [i][j] = 1 + mat [i-1][j-1]; else { int alt1 = mat [i][j-1]; int alt2 = mat [i-1][ j]; if (alt2>alt1) mat[i][j] = alt2; else mat[i][j]= alt1; } } return (mat[ni][nj]); } ================================================================================ Verso altern do algo eficiente (n^2) com prog dinmica, parecido com recursivo ================================================================================ int LCS (const string & s1, const string & s2, int ni, int nj) { int mat [s1.size()+2] [s2.size()+2]; for (int i=0; i<=ni; i++) for (int j=0; j<=nj; j++) { if (i==0 || j==0) mat[i][j]= 0; else if (s1[i] == s2[j]) mat[i][j] = 1 + mat [i-1][j-1]; else { int alt1 = mat [i][j-1]; int alt2 = mat [i-1][ j]; if (alt2>alt1) mat[i][j] = alt2; else mat[i][j]= alt1; } } return (mat[ni][nj]);

File: /home2/leco/Desktop/teste

Page 1 of 1

LCS: Longest Common Subsequence COM IMPRESSAO DO LCS ================================================================================ IMPRIMINDO A SEQUENCIA ENCONTRADA ================================================================================ int LCS (const string & s1, const string & s2, int ni, int nj) { int mat [s1.size()+2] [s2.size()+2]; for (int i=0; i<=ni; i++) for (int j=0; j<=nj; j++) { if (i==0 || j==0) mat[i][j]= 0; else if (s1[i] == s2[j]) mat[i][j] = 1 + mat [i-1][j-1]; else { int alt1 = mat [i][j-1]; int alt2 = mat [i-1][ j]; if (alt2>alt1) mat[i][j] = alt2; else mat[i][j]= alt1; } } int i=ni, j=nj; while (i!=0 && j!=0) { if (s1[i] == s2[j]) {cout << s1[i]; i--; j--; } else if (mat[i][j-1] >= mat [i-1] [j]) j--; else i--; } cout << endl; return (mat[ni][nj]); } int main () { string s1, s2; while (1) { cin >> s1 >> s2; s1 = "@" +s1; s2 = "@" +s2; int maior = LCS (s1, s2, s1.size()-1, s2.size()-1); cout << s1 << endl << s2 << endl << "##MAX = " << maior << endl; } }

PARTE 8

Algoritmos Gulosos

28/4/2010

Tcnicas de Projeto de Algoritmos


Tendo visto:
Diviso e Conquista Programao Dinmica

Algoritmos Gulosos
Carlos A. Prolo Maio 2009

Vamos ver agora: MTODO GULOSO (GREEDY)

Problemas de Otimizao
Encontrar menor conjunto de moedas necessrio para dar o troco no nibus. Achar o menor caminho entre dois nodos de um grafo Planejar o uso compartilhado de um computador de forma a atender as necessidades do maior nmero de pessoas possvel

Problemas de Otimizao
Tipicamente, a cada passo do algoritmo temse vrias alternativas a explorar para obter a soluo tima desejada
Alternativa1 ... Alternativak

Alternativa1

... Alternativak

Alternativa1

...

Alternativak

...

...

...

...

Problemas de Otimizao: Abordagens de soluo


Explorao de todas as alternativas
A estratgia natural de explorao de todas as alternativas (e.g., recursiva) frequentemente conduz a um crescimento exponencial do tempo de execuo. s vezes possvel caracterizar o problema como de programao dinmica, reduzindo o crescimento para polinomial. Ainda assim, o algoritmo explora todas ou grande parte das alternativas.

Mtodo Guloso (Greedy)


Explorao de todas as alternativas
A estratgia natural de explorao de todas as alternativas (e.g., recursiva) frequentemente conduz a um crescimento exponencial do tempo de execuo. s vezes possvel caracterizar o problema como de programao dinmica, reduzindo o crescimento para polinomial. Ainda assim, o algoritmo explora todas ou grande parte das alternativas.

NA ESTRATGIA GULOSA (GREEDY) a cada passo o algoritmo escolhe UMA alternativa de explorao, QUE PARECE A MAIS ADEQUADA NAQUELE MOMENTO -ESCOLHA TIMA LOCAL, -- e aposta-se que esta escolha vai conduzir no final soluo tima desejada.

28/4/2010

Mtodo Guloso (Greedy)


A cada passo o algoritmo escolhe a alternativa que parece ser a melhor no momento
Alternativa1 ... Alternativak

Mtodo Guloso (Greedy)


Na verdade, fazendo as escolhas timas localmente, pode acontecer de, ao final:
Chegar-se a uma soluo tima; No se chegar a soluo nenhuma; Chegar-se a uma soluo qualquer que pode ser boa ou ruim; Chegar-se a uma soluo boa, aceitvel, que no a soluo tima.

Alternativa1

... Alternativak

Alternativa1

...

Alternativak

...

...

...

...

Soluo otima???

Mtodo Guloso (Greedy)


Na verdade, fazendo as escolhas timas localmente, pode acontecer de, ao final:

Exemplo: problema do troco


Tem-se disponveis moedas, digamos com os valores 100, 25, 10, 5 e 1 centavos. O problema dado um determinado valor de centavos na entrada, achar o menor nmero de moedas que somadas do o valor da entrada.

Chegar-se a uma soluo tima;


No se chegar a soluo nenhuma; Chegar-se a uma soluo qualquer que pode ser boa ou ruim;
Chegar-se a uma soluo boa, que no a soluo tima (aceitvel ??).

Exemplo: problema do troco


TROCO (n) // n o valor do troco C {100, 25, 10, 5, 1} T < > // Sequncia de moedas que comporo o troco // (inicialmente vazia) enquanto n!=0 m maior x C tal que x n // escolhe a maior moeda T. insert (m) n n-m // Calcula o que falta para completar o troco return T

Exemplo: problema do troco


155 100 25 55 25 --25 --5 5 ------0 4 20 25 29 30 45 50 54 130 10 145 5 150 154 1

28/4/2010

Exemplo: problema do troco Soluo final otima?


Para o conjunto de moedas C = {100, 25, 10, 5, 1}, SIM! Algoritmo poderia no chegar a soluo alguma se o conjunto de moedas fosse C = {100, 25, 10, 5} e n=7 Algoritmo poderia no chegar soluo tima se C = {100, 25, 10, 5, 4, 1} e n = 8: Algoritmo resultaria T = <5, 1, 1, 1> Soluo tima T = <4, 4>

Caractersticas tpicas de problemas que podem ser resolvidos pelo Mtodo Guloso
Subestrutura tima
Soluo tima para o problema contm internamente solues timas para o subproblema (Como na Programao Dinmica)

Greedy-choice property
Soluo tima global pode ser atingida fazendo solues timas locais Suficiente mostrar que cada escolha tima local (a cada passo) faz parte de pelo menos uma das possveis solues timas globais do problema

Exemplo mais elaborado: Problema da seleo de atividades (CLR)


Descrio do problema:
H uma instncia de recurso a ser compartilhada, digamos um computador H vrias pessoas querendo usar. Cada pessoa estipula um intervalo de tempo desejado [hi, hf), onde hi a hora de incio desejado e hf a hora de fim. Ou a pessoa atendida integralmente ou no atendida. Note que uma pessoa pode comear a usar no exato momento em que a outra termina. Os tempos podem ser inteiros ou reais. A entrada ento o conjunto {[hik, hfk) | 1<=k<=n} das n solicitaes de uso O problema achar um conjunto mximo de solicitaes que podem ser atendidas

Problema da seleo de atividades: algoritmo guloso


Greedy activity selector (A,n) // A um vetor de n solicitaes, de 1 a n. // A[k].inicio a hora de incio da solicitao de ndice k, // A[k].fim a hora de fim // Sol conter o ndice das solicitaes a serem atendidas Ordena A por ordem crescente de horrio de fim Sol {1} // Inclui a soluo de menor tempo de fim ultimo 1 // ndice da ltima includa para k 2 at n Se (A[k].inicio >= A[ultimo].fim) Sol.insere (k) ultimo k return Sol

Prova da correo do algoritmo (isto , de que ele conduz soluo tima) Roteiro de prova:
Argumentar que existe uma soluo que contm a primeira solicitao (de menor tempo de fim) Eliminar do conjunto de solicitaes esta solicitao e todas as outras incompatveis com esta Mostrar que o problema restante se reduz ao problema inicial, apenas com nmero menor de solicitaes (tamanho menor)

Concluso
Algoritmos gulosos so uma excelente alternativa programao dinmica ... ... quando tiverem a greedy-choice property, ... ou seja, quando conseguirmos construir uma estratgia de decises timas locais que estejam garantidamente em uma soluo tima global. Alternativamente, algoritmos gulosos so teis quando se mostra que as escolhas timas locais conduzem a uma boa aproximao de soluo tima local vide algoritmos de aproximao gulosos para soluo de problemas NP-hard