prolo moodle

Upload: noxxrox

Post on 11-Jul-2015

301 views

Category:

Documents


1 download

TRANSCRIPT

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 decidveisGeorge 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-enumervelVamos 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 enumervel1. 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 MachinesGiven 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.

3

4

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

...

B

B

X1 X2

Xi

Xn B

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, , } M11

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: UndecidabilityGoal: 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 0001001001010011000100010001001019 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 05% 6 560 +-7(8 ! ! 0 ! 3 &

% "

(9 :

&;;! ( (!!( ;; 7?@( 4 A! 56

! 53C! ! 6 ( A C!

:!

3 0

C! D3 ((((

M

L ! +-

&

GK

8

G G

J

3 >!

R*C!

!3 ! ! +-

&

GK

GGS8

G G

J

3 T C!

! C!

!3 0

3 ! +-U

KV !VT( >

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 &J080'0((( ! +-

&

GK

8

G G

J

3 5 C!

A 0 -

!3 0 5 C!

-

!3 0

-

A8( '( >! ? C!

!3 M ? ! +-

>

? KV V

? &

8&V V VK8 VVKVKVVS8 VV

C! V V0 !D ! 4TE>M YZ4&

VVKVVS8[[[[ '&V V V8 VVKVKJ VV -

C! V V0

! 4TE>M YZ4&

[[[

VVKJ VV

X VVKVK

VVS8

V V

J

3

M

2 KN%0GO%

! ! !

0C! C!

G

- P 'KN%O%

! ! !

0C! 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 'osrauaMorabcuatigeeasNoteque 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

1

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; jaux){ 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