Anda di halaman 1dari 189

Teoria da Computao

Engenharia Informtica ps-laboral

Pedro Mariano

Departamento de Informtica Faculdade de Cincias Universidade de Lisboa


Ano Lectivo 2011/2012

Apresentao
Corpo Docente

Pedro Mariano
Atendimento

3a -feira, sala 1.3.10, 18:00-19:00 Frum Dvidas no Mocho Email plmariano@fc.ul.pt

Pr-requisitos

Linguagens Formais e Autmatos

Programa
Computabilidade Mquinas de Registos Universais Funes Recursivas Parciais Mquinas de Turing Tese de Churh-Turing Indecidibilidade Complexidade

Bibliograa
[1, 3, 4, 5, 6, 2] Francisco Coelho and Joo Pedro Neto. Escolar Editora, 2010.
Teoria da Computao Computabilidade e Complexidade

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliord Stein. Introduction to Algorithms. MIT Press, second edition, 2003. Nigel J. Cutland. Cambridge University Press, 1980.
Computability: An Introduction to Recursive Function Theory

Raymond Greenlaw and James Hoover. Morgan Kaufmann, 1998.


Fundamentals of the theory of computation: principles and practice

John E. Hopcroft, Rajeev Motwani, and Jerey D. Ullman. Addison-Wesley, second edition, 2001. Michael Sipser. PWS Publishing Company, 1997.

Introduction to Automata Theory, Languages and Computation

Introduction to the Theory of Computation

Avaliao
Dois mini-testes, 50% cada

Meio do semestre  1a parte da matria Final do semestre  2a parte da matria Nota mnima de 8
Exame poca normal e 2

a data

Obrigatrio para quem no tem nota mnima no mini-teste

Mquinas de Registos Ilimitados


1 2

3 4 5

Codicaes de Outros Domnios Denio URM 7 Enumerao de Programas Computao URM Nmero de Godel de um Exemplo Programa Denio de Computao Codicao de Instrues Computabilidade Codicao de Qualquer Funo Caracterstica Instruo Mdulos URM Codicao de um Programa Converso Programa com Nmero de Godel Mdulos Descodicao de um Programa Exemplo de Converso Programa 8 Funo Universal com Mdulos 9 Referncias Computao Noutros Domnios

Denio URM
URM

Unlimited Register Machine

Mquina de Registos Ilimitados Modelo de computao Micro

assembler

Fornece memria ilimitada Computao com nmeros inteiros Programa

Denio URM  Memria


Registos

R1 , R2 , R3 , . . . R1 R2 R3 . . . r1 r2 r3 . . .

Registos guardam valores de tamanho arbitrrio

Denio URM  Programa


Lista numerada de instrues Zero

Z(n)

coloca a zero o registo

Rn

Rn 0
Sucessor

S(n)

incrementa o registo

Rn

Rn Rn + 1
Transfere

T(n, m)
registo

transfere o valor do registo

para o

Rn Rm
se os valores dos registos

Salto

J(n, m, q )

forem iguais, passa para a instruo

Rn q

Rm

Casos omissos: Controlo passa para a prxima instruo

Computao URM  Exemplo


Computao prossegue de instruo em instruo Saltos podem alterar a prxima instruo a ser executada Memria alterada pelas instrues

Z(n), S(n)e T(n, m)

Example (Computao Programa)


[S(2), Z(1), J(1, 2, 5), T(2, 4)]
com memria

(4, 8, 3, 1, 0, . . .)

Denio de Computao URM  1


Denition (Instrues)
Z(a) S(a) T(a, b) J(a, b, c )
com

a , b , c N \ { 0}

Denition (Programa)
Lista nita de instrues

P = [I1 , . . . , Im ]

Denition (Espao de Trabalho)


Maior ndice de registo nas instrues de um programa

(P ) = min{i |Z(a), S(a), T(a, b), J(a, b, c ) P , i a, b}

Denio de Computao URM  2


Denition (Estado Instantneo)
Sequncia nita de nmeros

S = (q , r1 , . . . , rk )
com

q1

k (P )

No necessrio guardar mais registos que o espao de trabalho

Denio de Computao URM  3


Denition (Computao)
Computao do programa

x1 , . . . , xn

P = [I1 , . . . , Im ]

com argumentos

uma sequncia de estados instantneos

P (x1 , . . . , xn ) = (S0 , S1 , . . . , Si , Si +1 , . . .)
Sequncia pode ser innita

[S(1), J(1, 1, 1)]


Se a computao for nita dizemos que termina

Denition (Resultado)
Resultado de uma computao valor do registo estado instantneo

R1

no ltimo

Computabilidade  1
Denition (Convergncia)
Um programa

com argumento

que termine com resultado

diz-se que converge

P (a ) b

Denition (Divergncia)
Um programa que no termine diz-se que diverge

P (a )

Computabilidade  2
f : Nn N computvel se existir um programa P que com argumento (a1 , . . . , an ) calcule f (a1 , . . . , an ) Comparar programa QuaseDividir(x , y ) com programa Quociente(x , y ) QuaseDividir(x , 0) 0 Quociente(x , 0)
Uma funo

Funo Caracterstica  1
Denition (Funo Caracterstica)
Seja

um predicado num domnio

Funo caracterstica de

a funo 1 0 se

c : D {0, 1}

(a)

caso contrrio

Predicado dene valores num domnio que vericam uma propriedade Dado um alfabeto

e uma linguagem

funo caracterstica de

L
1 0

a funo se

L A cL : A {0, 1}

aL

caso contrrio

Funo Caracterstica  2
Funo caracterstica do predicado  x 1 0 se se

par

cpar (x ) =

x x

par mpar

Qual o programa que computa a funo caracterstica do predicado  x

par?

Mdulo URM
Programa URM pode ser utilizado noutro programa

Soma = [J(3, 2, 5), S(1), S(3), J(1, 1, 1)] Soma[Ri , Rj Rk ] representa


Seja

invocar mdulo Soma argumentos nos registos Ri e Rj resultado colocado no registo Rk


Como converter programa URM com mdulos num programa s com instrues URM?

Denition (Normalizao)
Um programa

diz-se normalizado se para todas as instrues

J()

J(a, b, c ) : q |P | + 1
Salto no mximo para o tamanho do programa mais 1

Converso Programa com Mdulos  1


Programa

tem

argumentos  usa mdulo

argumentos e espao de trabalho Passos converso


1

que tem

Salvaguardar argumentos programa

P P

T(n, r + n), . . . T(1, r + 1)


2

Acertar ndices dos registos nas instrues de

Z(a) Z(a + r ) ...


3

P J(a, b, c ) J(a, b, c + n) Adicionar instruo no m de P para transferir resultado T(r + 1, 1) Expandir o mdulo M
Acertar ndices de salto nas instrues de

Converso Programa com Mdulos  2


Programa

tem

argumentos  usa mdulo

argumentos e espao de trabalho Passos expanso mdulo


1

que tem

Transferir argumentos para registos

R1 a Rm
m

T(Ra1 , R1 ), . . . , T(Ra , Rm )
2

Colocar a zero registos Rm+1 a Rr

Z(Rm+1 ), . . . , Z(Rr )
3 4

Colocar instrues do programa M Colocar resultado T(R1 , Rk ) Acertar todas as instrues J()

Converso Programa com Mdulos  3


Acerto aps passos iniciais de converso Acerto instruo salto do mdulo

Somar

espao de trabalho posio mdulo M no programa -1 acerto nal

Acerto instruo salto do programa

Salto para depois do mdulo


Somar

r |M |
1

espao de trabalho tamanho mdulo M instruo transferncia resultado

Salto para antes do mdulo No necessrio acertar

Exemplo de Converso Programa com Mdulos


Example (Multiplicao)
Estado tpico

R1 R2 R3 R4 . . . x y kx k . . .
Programa

Produto = [J(2, 4, 5), Soma[1, 3 3], S(4), J(1, 1, 1), T(3, 1)]
com

Soma = [J(3, 2, 5), S(1), S(3), J(1, 1, 1)]

Computao Noutros Domnios


Como computar funo Arranjar funes

f : A B?

:AN :NB

f A F N N B

Codicaes de Outros Domnios  1


Codicar

Z Z : Z N
x
2x se se

x 0 x <0

2x 1

Inversa de

Z
Z1 : N Z n 2 n n + 1
2

se se

n n

par mpar

Codicar

Z2 2 : Z2 N (x , y ) 2Z (x ) 3Z (y )

Codicaes de Outros Domnios  2


Codicar

N2 : N2 N (m, n) 2n (2m + 1) 1

Inversas de

1 : N

N (x + 1)1

Expoente do nmero 2 na factorizao prima de x = 2a 3b 5c 7d 11e . . .

2 : N

N 1 x +1 ( 1) 2 21 (x )

Enumerao de Programas
Denition (Nmero de Godel um Programa)
Qualquer programa URM pode ser codicado num inteiro Conjunto

contem todos os programas URM enumervel

Codicar Codicar Codicar Codicar

Z() S() T() J()

Codicar um programa Descodicar um programa

Codicao de Instrues Individuais  1


Codicao de

Z(n)
Z (n) = n 1

Funo de codicao

Representao funo

Z(1) Z(2) Z(3) . . . 0 1 2 ...


Codicao de

S(n)
S (n) = n 1

Funo codicao Representao funo

S(1) S(2) S(3) . . . 0 1 2 ...

Codicao de Instrues Individuais  2


Codicao de

Utilizar funo : N2 N Funo de codicao

T(n, m)

T (n, m) = (n 1, m 1)
Representao funo

T(1, 1) T(2, 1) T(1, 2) T(3, 1) T(1, 3) T(2, 2) . . . 0 1 2 3 4 5 ...

Codicao de Instrues Individuais  3


Codicao de

Utilizar duas vezes a funo : N2 N Funo de codicao

J(n, m, q )

J (n, m, q ) = ((n 1, m 1), q 1)


Representao funo

J(1, 1, 1) J(2, 1, 1) J(1, 1, 2) J(1, 2, 1) J(1, 1, 3) . . . 0 1 2 3 4 ...

Codicao de Instrues Individuais  4


Alguns valores da funo

N2 N (m, n) 2n (2m + 1) 1
n

0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18

1 1 5 9 13 17 21 25 29 33 37

2 3 11 19 27 35 43 51 59 67 75

3 7 23 39 55 71 87 103 119 135 151

4 15 47 79 111 143 175 207 239 271 303

5 31 95 159 223 287 351 415 479 543 607

6 63 191 319 447 575 703 831 959 1087 1215

7 127 383 639 895 1151 1407 1663 1919 2175 2431

8 255 767 1279 1791 2303 2815 3327 3839 4351 4863

9 511 1535 2559 3583 4607 5631 6655 7679 8703 9727

Codicao de Qualquer Instruo


Distribuir as instrues em intervalos de quatro

Representao funo

Z(1) S(1) T(1, 1) J(1, 1, 1) Z(2) S(2) T(1, 2) . . . 0 1 2 3 4 5 6 ...


Funo de codicao se 4Z (n) 4 (n) + 1 se S (I ) 4T (n, m) + 2 se 4J (n, m, q ) + 3 se

I I I I

= Z(n) = S(n) = T(n, m) = J(n, m, q )

Codicao de um Programa
Programa URM Funo de

P = [I1 , . . . , In ] codicao cod : P N

Codicao soma de potncias de base 2 Associar a cada instruo um expoente Expoente de Ii funo de I1 , I2 , . . . , e Ii Expresso de cod

cod(P ) = 2(I1 ) + 21+(I1 )+(I2 ) + 22+(I1 )+(I2 )+(I3 ) . . . + 2n1+(I1 )+(I2 )+...+(I 1
Cada expoente um nmero crescente
No h sobreposies de instrues Z(1)

Nmero de Godel
Denition (Nmero de Godel)
Seja P = [I1 , . . . , In ] um programa URM cod(P ) o nmero de Godel de P

Descodicao de um Programa  1
Funo de codicao associa a cada instruo um expoente de uma potncia de base 2 Funo de descodicao

Dado o nmero n Representao em binrio de tem o programa Inversa de (I )

dec : N P

n + 1 indica quantas instrues

Resto diviso por 4 indica qual das funes Z , S , T ou J se usa

Descodicao de um Programa  2
Example (Descodicao do nmero 99)
99

= 100 1 = 11001002 1 = 22 + 25 + 26 1

Trs potncias  trs instrues

(I1 ) = 2
1 2

+ (I1 ) + (I2 ) = 5

+ (I1 ) + (I2 ) + (I3 ) = 6

resolvendo ca

(I1 ) = 2 (I2 ) = 2 (I3 ) = 0


Programa

[T(1, 1), T(1, 1), Z(1)]

Funo Universal
Qualquer programa URM pode ser convertido num nmero e vice-versa Um programa URM pode ter como argumento outro programa URM

Denition (Funo ( ) )
n m

(n )

representa a funo
n

Seja

x N , podemos escrever
(n)

n-ria

igual ao programa URM

dec(m)

m (x) = y dec(m)(x) y
Descodicar nmero

m y

Executar programa URM obtido com argumento Programa converge com resultado

Funo Universal  2
Denition (Funo Universal)
Funo universal

(n + 1)-ria

U :
(n)

(n)

Nn +1 N (n ) (x , a1 , . . . , an ) x (a1 , . . . , an )
computvel

Funo

Funo dec computvel Fazer a computao dec(x )(a1 , . . . , an ) Se a computao terminar (n ) o valor de U (x , a1 , . . . , an ) est no registo

r1

Denition (Computador)
Mquina que executa um programa universal

Referncias
Captulo 2 de Francisco Coelho and Joo Pedro Neto.

da Computao Computabilidade e Complexidade.


Editora, 2010

Teoria

Escolar

Captulos 1 e 4 de Nigel J. Cutland. Computability: An Introduction to Recursive Function Theory. Cambridge University Press, 1980

Funes Parciais Recursivas


10 Introduo 11 Axiomas 12 Correspondncia entre Primitivas 13 19 Generalizao Soma, Produto e 20 Exemplo de Funo Obtida com 21 Regra de Construo 

Minimizao Limitada Minimizao Limitada

14

15 16 17 18

Recursivas e URM Regra de Construo  Composio Denio Prova Computabilidade Composio Alguns Exemplos Recombinao dos Argumentos Regra de Construo  Recurso Denio Prova Computabilidade Recurso Exemplos de Funes Obtidas por Composio e Recurso Soma Limitada Produto Limitado Minimizao Limitada

Minimizao Denio da Regra de Construo Minimizao Ilustrao Minimizao Prova Computabilidade Minimizao Exemplo Minimizao 22 Provas Axiomticas Denio Exemplos Provas Axiomticas Compilao Provas Axiomticas 23 Equivalncia entre Funes Recursivas e URM 24 Referncias

Funes Parciais Recursivas  Introduo


Abordagem axiomtica computao Prova-se computabilidade de uma funo utilizando

axiomas regras de construo: composio, recurso e minimizao hipteses


Contraste com abordagem operacional

resultado de um processo mecnico e sequencial de execuo de instrues

Axiomas
Constantes naturais 0, 1, 2, . . . Funo zero

zero : N N n 0 succ : N N n n+1

Funo sucessor

Funes projeco

projm : i

Nm N (n1 , . . . , nm ) ni

Denition (Primitivas Recursivas)


Axiomas

zero, succ

projm i

so primitivas recursivas

Correspondncia entre Primitivas Recursivas e URM


Qual o programa URM que calcula

constante n funo zero funo succ funes projm i

Denio da Regra de Construo Composio


Theorem (Composio)
Seja f :BC g1 : A B1 B = B1 . . . Bk gk : A Bk

...

Se f e g forem computveis ento h: A C x f (g1 (x ), . . . , gk (x )) computvel e escreve-se h = C[f ; g1 , . . . , gk ]


Como se prova o teorema? Programa que calcule

h?

Ilustrao da Composio
A g1 B1 A gk Bk

B1 ... Bk

Prova Computabilidade Composio


Equivalncia entre Composio e URM Considerar conjuntos

A = B1 = . . . = Bk = C = N B = Nk
Considerar mdulos

F com k argumentos G1 a Gk com 1 argumento

Programa URM que calcula composio

. . . Gk [1 k + 1] F[2, 3, . . . , k + 1 1]
Se

G1 [1 2] G2 [1 3]

A = Nn ?

Alguns Exemplos  1
Example (Identicao)
Tenho funo

f :D E F h: D F (x ) f (x , x )

Quero obter funo

Usar funes

g1 : D D g2 : D D
Mas

g 1 = P1 1

g2 = P1 1

(axiomas projeco)

Concluso

h = C[f ; P1 , P2 ] 1 1

Alguns Exemplos  2
Identicao Requisitos

D=E h(x )

Aplicao funo

= f (P1 (x ), P1 (x )) 1 1 = f (x , x )

= C[f ; P1 , P1 ](x ) 1 1

Alguns Exemplos  3
Example (Rearranjo)
Tenho funo

f :D E F h : E D F (x , y ) f (y , x )

Quero obter funo

Usar funes

g1 : E D D g2 : E D E
Mas

g 1 = P2 2

g2 = P2 1

(axiomas projeco)

Concluso

h = C[f ; P2 , P2 ] 2 1

Alguns Exemplos  4
Rearranjo Aplicao funo

h(x , y ) = C[f ; P2 , P2 ](x , y ) 2 1

= f (P2 (x , y ), P2 (x , y )) 2 1

= f (y , x )

Alguns Exemplos  5
Example (Adio)
Tenho funo

f :D E F h : D G E (x , y , z )

Quero obter funo

F f (x , y )

Usar funes

g1 : D G E D g2 : D G E E
Mas

g 1 = P3 1

g2 = P3 3

(axiomas projeco)

Concluso

h = C[f ; P3 , P3 ] 1 3

Recombinao dos Argumentos  1


Exemplos anteriores so resultado da recombinao de argumentos

Denition (Recombinao dos Argumentos)


Tenho funo

f : D1 D2 . . . . . . Dn E h

Quero obter funo

h : Di1 Di2 . . . Dik (x1 , . . . , xk )

E f (xj1 , . . . , xjn )

Recombinao dos Argumentos  2


Denition (Recombinao dos Argumentos)
Usar funes

g1 : Di1 Di2 . . . Dik (xi1 , . . . , xik ) gn : Di1 Di2 . . . Dik (xi1 , . . . , xik )
Axiomas projeco Concluso

D1 xj1
. . .

Dn xjn

Pk1 , j

...,

Pkn j

h = C[f ; Pk1 , . . . , Pkn ] j j

Denio da Regra de Construo Recurso


Theorem (Recurso)
Seja f :AB g :ANB B Se f e g forem computveis ento h: AN B (x , 0) f (x ) (x , y + 1) g (x , y , h(x , y ))

computvel e escreve-se h = R[f ; g ]


Como se prova o teorema? Programa que calcula

h?

Prova Computabilidade Recurso  1


Equivalncia entre Recurso e URM Prova da computabilidade Ciclo com

iteraes

Acumulador iniciado com Actualizar acumulador

i varivel controlo do ciclo a acumulador

f (x) com g (x, i , a)

Pseudo-cdigo

a f (x ) i 0 while y = i do a g (x , i , a ) i i +1

end while return a

Prova Computabilidade Recurso  2


Considerar conjuntos

A=B=N
Considerar mdulos

F com 1 argumento G com 3 argumentos


Programa URM que calcula recurso

Estado tpico

R1 R2 R3 R4 x y i a
F[1 4] J(2, 3, 6) G[1, 3, 4 4] S(3) J(1, 1, 2) T(4, 1)

... ...

Programa

Prova Computabilidade Recurso  3


Se

f : Nn N g : Nn +2 N
Denio da recurso

h : Nn+1 N f (x) (x, y ) g (x, y , h(x, y 1))

se se

y =0 y >0

Exemplos de Funes Obtidas por Composio e Recurso


Soma Produto Factorial Predecessor Monus Sinal Sinal Inverso Relaes e Operadores Lgicos

Soma Limitada  1
Denition (Soma Limitada)
Seja

h :ANB
a funo

denida por

s : AN B (x , y ) h(x , 0) + h(x , 1) + . . . + h(x , y 1)


computvel e escreve-se

h(x , z )
z

<y

Regras de composio e recurso podem ser utilizadas para obter funes mais complexas

Soma Limitada  2
s (x , y )
computvel por recurso

s (x , 0) = 0 s (x , y + 1) = h(x , y ) + s (x , y )
Utilizando a denio de recurso

f (x ) = 0 g (x , y , z ) = h(x , y ) + z
Representao de
z

<y

h(x , z )

em funo das regras

h(x , z ) = R[Z; C[soma; C[h; P3 , P3 ], P3 ]] 1 2 3


z

<y

h x y

( , )

Se

A = Nn ?

Exemplo de Funo Obtida com Soma Limitada


D(x )
 Nmero de divisores de

Utilizando funes
rm  resto da diviso sg  sinal inverso

Vericar para cada nmero Denio da funo

(de 0 a x ) se divisor de

D(x ) =
Exemplo

i <x +1

sg(rm(i , x ))

D(3) =

sg(rm(i , 3)) i <4 = sg(rm(0, 3)) + sg(rm(1, 3)) + sg(rm(2, 3)) + sg(rm(3, 3)) = sg(3) + sg(0) + sg(2) + sg(0) = 0+1+0+1

Produto Limitado  1
Semelhante soma limitada nas utiliza multiplicao

Denition (Produto Limitado)


Seja

h :ANB
a funo

denida por

p : AN B (x , y ) h(x , 0) h(x , 1) . . . h(x , y 1)


computvel e escreve-se

h (x , z )
z

<y

Produto Limitado  2
p (x , y )
computvel por recurso

p (x , 0 ) = 1 p (x , y + 1) = h(x , y ) p (x , y )
Utilizando a denio de recurso

f (x ) = 1 g (x , y , z ) = h(x , y ) z
Representao de
z

<y

h(x , z )

em funo das regras

h(x , z ) = R[1; C[prod; C[h; P3 , P3 ], P3 ]] 1 2 3


z

<y

h x y

( , )

Se

A = Nn ?

Minimizao Limitada  1
Procura o menor valor que anula uma funo Procura tem um limite

Denition (Minimizao Limitada)


Seja

h :ANN
a funo

denida por

m : AN N

(x , y )

min{z |h (x , z )

= 0 z < y}
caso conjunto vazio

computvel e escreve-se

<y

[h(x , z )]

Minimizao Limitada  2
Seja

f (x , v ) =
u

sg(h(x , u ))
<v +1

Se h(x , u ) no se anular entre 0 e v + 1 f (x , v ) igual a 1


Soma valor que anula Mas

f (x , 0) + f (x , 1) + . . . + f (x , y 1) f entre 0 e y 1

devolve o menor

f (x , 0) + f (x , 1) + . . . + f (x , y 1) =
v

f (x , v )
<y

Expresso da minimizao limitada

<y

[h(x , z )] =
v

sg(h(x , u ))
<y u <y +1

Generalizao Soma, Produto e Minimizao Limitada


Limite da soma, produto e minimizao pode ser dado por uma funo Ver expresso da minimizao limitada Dados

h :ANB

g :ANN h(x , z )
z

s (x , w ) =
<g (x ,w )

p (x , w ) =
z

h(x , z )
<g (x ,w )

m(x , w ) =
z

[h(x , z )]

<g (x ,w )

Exemplo de Funo Obtida com Minimizao Limitada


p(x )
calcula o

x -simo

primo

Denio utilizando recurso

p(0) = p(x + 1) =

<p(x )!+1

[sg(primo(i ) i > p(x ))]

Valor p(x)!+1 sucientemente alto para procurar o x + 1-simo primo Condio primo(i ) i > p(x ) verica se i primo e maior x -simo primo
Funo base e funo de acumulao

g (x , z ) =
i

<z !+1

[sg(primo(i ) (i > z ))]

Denio
Theorem (Minimizao)
Seja A funo h denida por h : A N1 x min{y |f (x , y ) = 0 z < y , f (x , z ) } computvel e escreve-se f : A N1 N2

[f ]

Pode no existir

f (x , y ) = 0 f (x , 3) = 0

f (x , 2)

pode estar indenido e

Ilustrao Minimizao
A N1
c0 c1 c2 k1 k2 k0 1 0 k

N2
2

A
c

h
1

N1
2

Valor de

h(c ) = [f ]

y =2

porque

f (c , 0) 1 f (c , 1) 2 f (c , 2) 0
Valor de

h(k ) = [f ]

no est denido porque

f (k , 0) 1 f (k , 1)

Prova Computabilidade Minimizao  1


Equivalncia entre Recurso e URM Varivel auxiliar iniciada a 0 Condio paragem do ciclo Retornar varivel auxiliar Pseudo-cdigo

f (x , i ) = 0

i 0

while f (x , i ) = 0 do
i i +1

end while return i

Prova Computabilidade Minimizao  2


Considerar mdulo

com 2 argumentos

Programa URM que calcula recurso

Estado tpico

R1 R2 R3 x i f (x , i )
F[1, 2 3] J(3, 4, 5) S(2) J(1, 1, 1) T(2, 1)

... ...

Programa

Se

A = Nn ?

Exemplo Minimizao
Funo calcula a raiz quadrada se quadrado perfeito

h(x ) = [|x y 2 |]
Funo minimizada

f (x , y ) = |x y 2 |
Se x no quadrado perfeito No h nenhum y que anule a expresso

Denio Provas Axiomticas


Mtodo de demonstrao da computabilidade de uma funo Sequncia de constantes ou funes f1 , f2 , . . . , fn Parte-se dos axiomas Cada passo da sequncia aplicao

Axiomas Regras de construo Hipteses Teoremas


Formato passo de uma prova axiomtica
1 2 3 4

Identicador Argumentos Expresso da funo fi Axioma ou regra ou hiptese ou teorema aplicado

Exemplos Provas Axiomticas


Prova axiomtica da computabilidade da funo 1 2 3 4 5

soma

x x x, y, z x, y, z x, y

x +1 S 0 Z z P3 Funes f1 , f2 e f3 so axiomas 3 z + 1 C[1; 3] f4 = f1 f3 x + y R[2; 4] Recurso base f2 e passo f4

Prova axiomtica da computabilidade da funo 1 2 3 4 5 5

prod

x x, y, z x, y, z x, y x, y, z x, y

Z z P3 3 x P3 1 x +y T z + x C[4; 23] x y R[1; 5]


0

Usamos teorema para

soma

Compilao Provas Axiomticas


Prova axiomtica pode ser convertida num programa URM Utiliza-se programas URM equivalentes aos axiomas e regras de construo

Z S Pn i

[Z(1)] [S(1)] [T(i , 1)]

R[f ; g ]

. . C[f ; g1 , . . . , gk ] . Gk [1 k + 1] F[2, 3, . . . , k + 1 1] F[1 4] F[1, 2 3] J(3, 4, 5) J(2, 3, 6) G[1, 3, 4 4] [f ] S(2) J(1, 1, 1) S(3) J(1, 1, 2) T(2, 1) T(4, 1)

G1 [1 2] G2 [1 3]

Equivalncia entre Funes Recursivas e URM  1


Conjunto das Funes Parciais Recursivas igual ao conjunto das funes computveis pelas URM Prova requer

Funo codicar programa URM

c = cod(P ) Funo codicar memria URM (R1 , R2 , . . . Rn )


Funo codicar congurao

Funo calcula nmero de Godel de um programa

m = codmem(R1 , R2 , . . . Rn ) = 2r1 3r2 5r3 . . . pn r


c cdigo do programa P i ndice instruo actual m cdigo memria URM

s = config(c , i , m) = ((c , i ), m)

Equivalncia entre Funes Recursivas e URM  2


Prova requer (continuao)

Funo que dado uma congurao da URM


devolve ndice prxima instruo Se for terminal devolve 0

= instr(s )

Funo que dado uma congurao da URM devolve prximo cdigo memria

= mem(s )

Cdigo da nova congurao da URM

passo(s ) = config(c , i , m ) = config(c , instr(s ), mem(s ))

Equivalncia entre Funes Recursivas e URM  3


Prova requer (continuao)

Sucesso de cdigos de congurao


Congurao inicial

config(c , 1, m)
Conguraes seguintes

s0 = config(c , 1, m) s1 = passo(s0 ) s2 = passo(s1 )


...

Denio utilizando recorrncia

comput(s , 0) = s comput(s , n + 1) = passo(comput(s , n))

Equivalncia entre Funes Recursivas e URM  4


Prova requer (continuao)

Atravs da minimizao obtemos o tempo de computao Nmero de passos at o programa terminar


Funo a minimizar

f (c , m, z ) = instr(comput(config(c , 1, m), z ))
Tempo de computao

tempo(c , m) = [f ]

Funo universal
Dados o cdigo de um programa URM e uma congurao de memria Devolve o resultado da computao URM

u(c , m) = (2 (comput(config(c , 1, m), tempo(c , m))))1


Inversa da funo Expoente do primeiro primo

Funo Universal
Denition (Funo Universal)
Funo universal dois argumentos

u:

N2 N (c , m) (2 (comput(config(c , 1, m), tempo(c , m))))1


c m
cdigo do programa URM cdigo da memria

Equivalncia entre as funes universais das URM e Funes Parciais Recursivas

U (c , x ) = u(c , 2x ) U (c , x , y ) = u(c , 2x 3y ) U (c , x1 , x2 , x3 ) = u(c , 2x1 3x2 5x3 )


(3) (2)

(1)

Referncias
Captulo 3 de Francisco Coelho and Joo Pedro Neto.

da Computao Computabilidade e Complexidade.


Editora, 2010

Teoria

Escolar

Captulo 2 de Nigel J. Cutland. Computability: An Introduction to Recursive Function Theory. Cambridge University Press, 1980

Mquinas de Turing
25 Introduo 29 Mquina de Turing Determinstica 30 Mquina de Turing Multi-Fita 31 Mquina de Turing com Registos 32 Mquina de Turing 33 Referncias

Reviso  Autmato Finito Reviso  Autmato de Pilha 26 Denio Mquina Turing 27 Fita de Trabalho e Codicaes 28 Computao Noutros Domnios

com 1 Fita de Trabalho

No-Determinstica

Introduo
Alternativa ao estudo da computao Composta por

Fita Unidade de controlo Cabea de leitura/escrita


Reconhecedor de palavras

Extenso de Autmato Finito e Autmato de Pilha

Reviso  Autmato Finito


unidade controlo

q 0 1 0 1
fita de entrada

0/1

(A, Q , q0 , , F )
A Q q0 F
alfabeto ta de entrada conjunto de estados estado inicial funo de transio

:AQ Q

conjunto de estados de aceitao

F Q

Reviso  Autmato de Pilha


unidade controlo

q 0 1 0 1
fita de entrada

0/1

1 0 1
pilha

(A, Q , q0 , , C , Z )
Z C
alfabeto da pilha conjunto de estados de aceitao

C Q
funo de transio

: A Q Z Q {push(Z ) pop}

Denio Mquina de Turing


Q A T
conjunto de estados alfabeto da palavra de

unidade controlo

entrada alfabeto da ta de

trabalho

AT
funo

0 1 0 1
fita de trabalho

:Q T Q T {esq, dir}
de transio

q0

estado inicial smbolo

q0 Q B T

(Q , A, T , , q0 , B , F )

B F

branco F Q

conjunto de estados de

aceitao

Fita de Trabalho e Codicaes  1


Denition (A )
Conjunto de todas as palavras que se podem construir com alfabeto

representa-se por

Denition (Linguagem)
Dado um alfabeto

A,

uma linguagem um conjunto

tal que

L A
Mquina de Turing faz computaes com palavras do alfabeto

A
Alfabeto pode ser diferente,

Codicao entre A e A Mquina de Turing M e

A
fazem a mesma computao

Fita de Trabalho e Codicaes  2


Existe uma codicao entre

Example (Codicao entre linguagem e N)


Seja

A = {x , y }

Uma codicao entre

x y xx
0 1 2 3

xy
4

yx
5

yy
6

xxx
7

xxy
8

xyx
9

xyy
10

yxx
11

yxy
12

... ...

Codicao nas URM e Funes Parciais Recursivas permite

Computao noutro domnio, por exemplo Z Obter correspondncia entre uma URM e uma Mquina de Turing

Computao Noutros Domnios  1


Como computar funo Arranjar funes

f : A B?

:AN :NB

f A F N N B

Codicaes Noutros Domnios  2


Codicar

Z Z : Z N
x
2x se se

x 0 x <0

2x 1

Inversa de

Z
Z1 : N Z n 2 n n + 1
2

se se

n n

par mpar

Codicar

Z2 2 : Z2 N (x , y ) 2Z (x ) 3Z (y )

Mquina de Turing Determinstica com 1 Fita de Trabalho


unidade controlo
Variaes MT determinstica so mais teis para representar um problema No acrescenta poder

0 1 0 1
fita de trabalho

computacional Reconhecem a mesma classe de linguagens

(Q , A, T , , q0 , B , F )
uma funo pode no estar denido

para alguns argumentos Determinstica porque s existe uma transio

Mquina de Turing Multi-Fita  1


0 1 0 1
unidade controlo

a b b c x y x x

Mquina de Turing com vrias tas Cada ta tem a sua cabea de leitura-escrita Funo de transio indica os movimentos e o smbolo a escrever em cada ta

Mquina de Turing Multi-Fita  1


unidade controlo

0 1 0 1
unidade controlo

a b b c x y x x

0 1 0 1 N a b b c N

Equivalente a uma MT com uma nica ta Alfabeto da ta de trabalho codica

alfabetos das vrias tas posio das cabeas nas vrias tas

Mquina de Turing com Registos

3 2 7 1 0 0
unidade controlo

0 J 3 2 5 S 1 S 3 J 1 1 1
Fita especial contm o programa

Fita s de leitura
Outras tas representam registos Variante da Mquina de Turing Multi-Fita

Mquina de Turing No-Determinstica  1


(Q , A, T , , q0 , B , F )
uma relao entre

Q T

Q T {esq, dir}

Para o mesmo par estado e smbolo podem existir mltiplos triplos estado, smbolo e movimento Mquina de Turing pode

estar em vrios estados em simultneo ta de trabalho pode conter vrias palavras em simultneo
Existem vrios os de computao em paralelo Mquina de Turing termina quando um dos os entrar num estado de aceitao

Mquina de Turing No-Determinstica  2


Descrio Instantnea (DI)

fila de DIs

estado posio cabea leitura contedo ta de trabalho

DI1 + DI2 * DI3 + DI4 +


unidade controlo

a b b c
fita rascunho

Unidade de controlo codica transies possveis a partir de uma DI Para a DI actual escreve na ta

la de DI's

descries

instantneas das possveis transies Mquina faz pesquisa em largura das possveis descries instantneas Mquina de Turing pra quando a DI actual de aceitao

Referncias
Captulo 8 de John E. Hopcroft, Rajeev Motwani, and

Introduction to Automata Theory, Languages and Computation. Addison-Wesley, second


Jerey D. Ullman. 2001. Captulo 3 de Michael Sipser.

edition,

Computation.

Introduction to the Theory of

PWS Publishing Company, 1997.

Tese Church-Turing
34 Diferentes Modelos de Computao 36 Tese de Church-Turing 35 Denio de Algoritmo 37 Referncias

Diferentes Modelos de Computao


Mquinas de Registos Ilimitados

Computao como sequncia de estados instantneos Estado instantneo contm


ndice instruo actual contedo dos registos
Funes Parciais Recursivas

Computao como resultado de uma prova axiomtica


Mquinas de Turing

Computao como sequncia de descries instantneas

Denio de Algoritmo
No h descrio formal de algoritmo Noo intuitiva de sequncia de instrues

para executar algo para resolver um problema

Example (Zeros de um Polinmio)


Dado um polinmio, determinar se tem um nmero inteiro zero do polinmio Para polinmios de uma nica varivel o problema decidvel

Existe uma funo que dado os coecientes um possvel zero retorna se efectivamente zero Existe uma funo que dado os coecientes devolve uma codicao dos zeros
No caso geral o problema indecidvel

Tese de Church-Turing
Denition (Tese de Church-Turing)
Todas as funes algortmicas so computveis Estabelece ligao entre noo informal de algoritmo e computao Alonzo Church props clculo- Vrios modelos de computao so equivalentes entre si

Geram o mesmo conjunto de funes computveis

Referncias
Seco 2.6 de Francisco Coelho and Joo Pedro Neto.

da Computao Computabilidade e Complexidade.


Editora, 2010 Seco 3.3 de Michael Sipser.

Teoria

Escolar

Computation.

Introduction to the Theory of

PWS Publishing Company, 1997.

Indecibilidade
38 Motivao 39 Linguagens Decidveis e 42 Conjunto Todas as Linguagens 43 Problemas Indecidveis

Mtodo da Diagonal

Semi-Decidveis Denio Linguagem Decidvel Denio Linguagem Semi-Decidvel Operaes sobre Linguagens 40 Problemas Decidveis Linguagens Regulares Linguagens Independentes de Contexto 41 Relao entre Classes de Linguagens

Problema da Aceitao Problema da Paragem Problema Vazio Problema da Equivalncia 44 Problema da Correspondncia de Post Introduo Descrio Demonstrao 45 Referncias

Motivao
Estudo dos limites tericas da computao Que problemas podem ser resolvidos computacionalmente? Que linguagens podem ser decididas? Limite est no modelo terico

No depende da tecnologia
Problema pode ser expresso como a determinao de uma palavra pertencer ou no a uma linguagem

Linguagem Decidvel
Denition (Linguagem Turing-Decidvel)
Uma linguagem de Turing

Turing-Decidvel se existe uma Mquina

que s aceita as palavras dessa linguagem

As palavras que no pertencem so rejeitadas

nunca entra em ciclo

Denition (Linguagem Recursiva)


Uma linguagem

Recursiva se a seguinte funo for computvel 1 0 se se

cL (n ) =

nL nL /

Linguagem Semi-Decidvel
Denition (Linguagem Turing-Reconhecvel)
Uma linguagem linguagem Se

Turing-Reconhecvel se existe uma

Mquina de Turing

que s aceita as palavras dessa

uLM /

rejeita ou no termina

Denition (Linguagem Recursivamente Enumervel)


Uma linguagem

Recursivamente Enumervel se a seguinte

funo for computvel 1 se se

cL (n) =

nL nL /

Operaes sobre Linguagens


Interseco, unio e diferena de linguagens decidveis so linguagens decidveis

Seja L1 e L2 linguagens decidveis As seguintes funes so computveis

cL1 L2 cL1 L2 cN\L1


Se

N\L

so linguagens semi-decidveis ento

decidvel

Algoritmo executa em paralelo cL e cN\L

Problemas Decidveis  Linguagens Regulares  1


Example (Problema Aceitao)
Dado um AFD aceita

u?

M = (A, Q , q0 , , F )

e uma palavra aceita

ser que

LA AFD = { M , u |M

u}

Estado tpico computao mquina URM

A Q q0 F
|u | comprimento palavra i ndice letra actual qi estado actual ui i -sima letra de u

u |u | i

qi

ui

...

Problemas Decidveis  Linguagens Regulares  2


Example (Problema Vazio)
Dado um AFD vazia?

M = (A, Q , q0 , , F )

ser que

gera a linguagem

LV AFD = { M |L(M ) = }
Descrio geral algoritmo

Marcar o estado inicial Repetir at que nenhum estado seja marcado


Marcar todos os estados que transitem de um estado marcado

Se nenhum estado de aceitao est marcado a palavra pertence linguagem

Problemas Decidveis  Linguagens Regulares  3


Example (Problema Equivalncia)
Dados dois AFDs

M1

M2

ser que ambos os autmatos

reconhecem a mesma linguagem?

LE AFD = { M1 , M2 |L(M1 ) = L(M2 )}


Calcular o AFD C

L(C ) = L(A) L(B ) L(A) L(B )


Linguagens regulares so fechadas para a unio, interseco e diferena L(C ) diferena simtrica
Descrio geral do algoritmo

Utilizar o algoritmo do problema vazio no autmato C Se o algoritmo diz que a palavra pertence, ento L(A) = L(B )

Problemas Decidveis  Linguagens Independentes de Contexto  1


Example (Problema Aceitao)
Dado uma GIC

u?

G = (N , T , S , P )

e uma palavra gera

ser que

gera

LA GIC = { G , u |G

u} GC

Forma Normal de Chomsky de gramtica

A BC Aa
Qualquer palavra u gerada por GC tem 2n 1 passos n comprimento palavra u Um passo corresponde substituio de uma varivel

Problemas Decidveis  Linguagens Independentes de Contexto  2


Descrio geral do algoritmo

Converter G para a Forma Normal de Chomsky Calcular todas as derivaes com 2n 1 passos Se alguma das derivaes gerar u a palavra pertence linguagem

Problema aceitao relacionado com o problema de compilao de linguagens No o algoritmo mais eciente para compilar um programa

Problemas Decidveis  Linguagens Independentes de Contexto  3


Example (Problema Vazio)
Dado uma GIC vazia?

G = (N , T , S , P )

ser que

gera a linguagem

LV GIC = { G |L(G ) = }
Descrio geral do algoritmo

Marcar todos os smbolos terminais Repetir at nenhuma varivel ser marcada

Marcar toda o smbolo no-terminal A tal que exista produo A U1 U2 . . . Uk todos os smbolos Ui estejam marcados

Se o smbolo inicial no estiver marcado a palavra pertence linguagem


Algoritmo resolve problema mais geral de determinar se algum smbolo no-terminal gera alguma palavra

Problemas Decidveis  Linguagens Independentes de Contexto  4


Example (Linguagens Independentes de Contexto So Linguagens Decidveis)
Para qualquer GIC

G = (N , T , S , P )

existe uma funo computvel

cG (u ) =

1 0

se se

u L(G ) u L(G ) /

Funo utiliza o algoritmo do problema da aceitao

Utiliza G e u como argumentos Se o algoritmo responde aceita a funo devolve 1

Relao entre Classes de Linguagens


semidecidvel decidvel independente contexto regular

Conjunto Todas as Linguagens


A
alfabeto

Conjunto Seja

enumervel

o conjunto de todas as linguagens sobre

Theorem (No-Enumerabilidade de

C)

O conjunto de todas as linguagens sobre um alfabeto A no enumervel


Corolrio: h linguagens que no so semi-decidveis H mais linguagens que funes computveis

Conjunto Todas as Linguagens  Mtodo da Diagonal


Prova no-enumerabilidade de

C yx
1 0 0 1 0

L0 L1 L2 L3 L4
. . .

x
0 1 0 1 1 1 0 0 1 1

y
1 0 0 1 1

xx
0 0 0 1 1

xy
1 0 0 1 0

yy
0 0 0 1 0

xxx
0 0 0 1 0

xxy
1 0 0 1 0

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

Construir linguagem

a partir da diagonal 1 1 1 0 1

L L
a diferente de

...
Li

i -sima

Li

porque

palavra ou pertence a

ou pertence a

Problemas Indecidveis
Prova que uma linguagem indecidvel faz-se por vrios mtodos

Reduo
converter uma linguagem noutra usar uma linguagem A na prova de indecibilidade da linguagem B propriedades de uma linguagem aplicam-se noutra

Problema da Aceitao  1
Example (Problema da Aceitao)
Dado uma especicao de um algoritmo que

aceita

u? LA = { M , u |M

e uma entrada

u,

ser

aceita

u}

Problema geral da vericao de programas no solucionvel por computadores

Theorem
Linguagem LA semi-decidvel

Theorem
Linguagem LA no decidvel

Problema da Aceitao  2
Prova por contradio Utiliza o mtodo da diagonal Supor que existe programa URM Construir programa URM

Aceita

Foo

argumento um cdigo de Godel de um programa utiliza mdulo Aceita devolve o oposto do resultado de Aceita instrues estado tpico

Aceita[1, 1 2] SigInv[2 1]

R1 R2 P a

... ...

Programa aceita o argumento se o resultado for positivo

Rejeita se o resultado for negativo ou programa divergir

Problema da Aceitao  3
Resultado computao

Pi (nj )
Valores escolhidos aleatoriamente

n0 n1 n2 n3 . . . P0 > 0 0 > 0 P1 > 0 > 0 > 0 P2 0 >0 P3 1

Problema da Aceitao  4
Resultado computao

Aceita(Pi , nj )
Valores dependem da computao Se

Pi (nj )

Pi (nj )

diverge, o

P0 P1 P2 P3

n0 n1 n2 n3 . . .
1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0

resultado 0

Problema da Aceitao  5
Resultado computao

Aceita(Pi , nj )
O que fazer no caso do programa

Foo?

Aceita[1, 1 2] SigInv[2 1]
Resultado inverso da diagonal O que colocar na casa

P0 P1 P2 P3
. . .

n0 n1 n2 n3 . . . Foo
1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 .. 0 0 0 1 .

Foo

(Foo, Foo)?

Problema da Paragem
Example (Problema da Paragem)
Dado uma especicao de um algoritmo ser que

termina com

u?

e uma entrada

u,

Termina aceitando ou rejeitando

LH = { M , u |M termina

comu }

Theorem
Linguagem LH indecidvel
Alan Turing mostrou que o

Halting Problem

indecidvel

Prova do teorema utiliza a reduo Aplica a linguagem

LA MT

Problema Vazio
Example (Problema Vazio)
Dado uma especicao de um programa produzida por

ser que a linguagem

a linguagem vazia?

LV = { P |L(P ) = }

Theorem
Linguagem LV indecidvel
Prova por reduo utilizando linguagem Supor que existe mdulo

LA

Vazio

e por reduo obter

Aceita

Construir linguagem auxiliar

Problema da Equivalncia
Example
Dados as especicaes de duas mquinas

M1

M2

ser que a

linguagem gerada por ambas equivalente?

LE = { M1 , M2 |L(M1 ) = L(M2 )}

Theorem
Linguagem LE indecidvel
Prova por reduo utilizando a linguagem

LV

Problema da Correspondncia de Post  Introduo


Conjunto de domins

b ca

a ab

ca a

abc c

Obter uma sequncia de domins (com repetio) tal que a palavra de cima seja igual palavra de baixo Soluo

a ab

b ca

ca a

a ab

abc c

Para alguns conjuntos no h sequncias

abc ab

ca a

acc ba

Problema da Correspondncia de Post  Descrio


Example
LPCP = { P |P
Linguagem

um conjunto de domins em que existe uma sequncia} composta pelos conjuntos de domins

LPCP

em que

existe uma sequncia (com repetio) tal que a palavra de cima seja igual palavra de baixo

Theorem
Linguagem LPCP indecidvel
Prova por reduo linguagem Utiliza Mquinas de Turing

LA

Problema da Correspondncia de Post  Demonstrao  1


Denio Mquina de Turing

Q conjunto de estados A alfabeto da palavra de entrada T alfabeto da ta de trabalho AT : Q T Q T {esq, dir}
funo de transio

(Q , A, T , , q0 , B , F )

q0 estado inicial q0 Q B smbolo branco B T F conjunto de estados de aceitao F Q

Problema / Linguagem

LA

Dado uma especicao de um algoritmo ser que M aceita u ?

e uma entrada u ,

LA = { M , u |M

aceita u }

Problema da Correspondncia de Post  Demonstrao  2


Domins simulam histrico de conguraes da Mquina de Turing Congurao

#w1 w2 . . . qwi . . . wn #

wi i -simo smbolo na ta de trabalho qwi cabea de leitura est sob o i -simo smbolo mquina est no estado q
# Smbolo especial para separar conguraes

Problema da Correspondncia de Post  Demonstrao  3


Criar os seguintes domins
1

Domin correspondente palavra inicial

# #q0 w1 w2 . . . wn #
2

Para cada

a, b T

q, r Q

tal que

(q , a) = (r , b, dir)

qa br
3

Para cada

a, b T

q, r Q

tal que

(q , a) = (r , b, esq)

cqa rcb
4

Para cada

aT

a a

Problema da Correspondncia de Post  Demonstrao  4


Criar os seguintes domins (continuao)
1

Domins para separar conguraes

# #
2

# B# q a q

Para cada

qF

aq q

remover smbolos para que a palavra de cima corresponda de baixo


3

Para cada

qF

q ## #

terminar a equivalncia

Referncias
Captulo 5 de Michael Sipser.

Computation.

Introduction to the Theory of Teoria

PWS Publishing Company, 1997.

Captulo 4 de Francisco Coelho and Joo Pedro Neto.

da Computao Computabilidade e Complexidade.


Editora, 2010

Escolar

Complexidade
46 Ordens de Crescimento Limite Assimpttico Limite Assimpttico Superior Limite Assimpttico Inferior 47 Programas URM Binrios Motivao Denio Instrues Exemplo  Soma Binria Comparao Tempo de Computao 48 mbito de Estudo da Complexidade 49 Classes P e NP Vericar e Decidir um Problema Comparao entre Resolver e Vericar Decisor Vericador Tempo de Computao Classe P Classe NP 50 Propriedades Relao entre P e NP 51 Redues Polinomiais 52 Problemas em P Programao Linear Minimum-Weight Spanning Tree Nmeros Primos 53 Problemas em NP Clculo do Equilbrio de Nash 54 Reduo Polinomial 55 Linguagem NP Completa 56 Teorema de Cook Converso Nmero Natural SAT pertence a NP SAT Completo
SAT

57 Problema Cobertura dos Vrtices Denio Complexidade de COBV

Programa VerificadorA Estado Inicial Transio Entre Estados Estado Final Reduo Polinomial

Limite Assimpttico
Denition (Limite Assimpttico)
Para uma dada funo o conjunto de funes

f (n ) (f (n))

denido por

(f (n)) = {g (n) : c1 ,c2 ,n nn0 0 c1 g (n) f (n) c2 g (n)}


f(n) c1 g(n) c2 g(n)

f(n) = (g(n))

Limite Assimpttico Superior


Denition (Limite Assimpttico Superior)
Para uma dada funo o conjunto de funes

f (n ) O (f (n))

denido por

O (f (n)) = {g (n) : c ,n0 nn0 0 f (n) cg (n)}


f(n) c g(n)

f(n) = O(g(n))

Limite Assimpttico Inferior


Denition (Limite Assimpttico Inferior)
Para uma dada funo o conjunto de funes

f (n ) O (f (n))

denido por

(f (n)) = {g (n) : c ,n0 nn0 0 cg (n) f (n)}


f(n) c g(n)

f(n) = (g(n))

Programas URM Binrios  Motivao


Programa URM que calcula a soma

J(2, 3, 5) S(1) S(2) J(1, 1, 1)


Quantos passos leva a somar os nmeros Nmero

m?

representado por

n+1

contas

Notao unria vantajosa? Quantos passos so necessrios se usarmos a notao posicional?

Programas URM Binrios  Denio


Instrues adicionais

R(a, b, c )Leitura de um bit


Escreve no registo

W(a, b, c , d )Escrita de um bit L(a, b)Tamanho de um valor


Escreve no registo

c o b-simo bit do registo a c o b-simo bit do registo a

Escreve no d -simo bit do registo

b o nmero de bits usados no registo a

Outras denies da URM mantm-se

Instrues
Estado da memria

R1
45

= 1011012

R2 16 = 10002

R3 3 = 112

R4 R5 4 = 1002 0 ...

Resultados de instrues

R(1, 3, 4) R(1, 5, 4) W(1, 4, 2, 3) W(1, 3, 2, 4) L(1, 5) L(5, 2)

R4 R4 R2 R2 R5 R2

1 1 0 48 = 110002 6 0

Exemplo  Soma Binria  1


Soma dos nmeros 110102 e 11002 bit

7 0 0 0 0

6 1 0 0 1

5 1 1 0 0

4 1 1 1 0

3 0 0 1 1

2 0 1 0 1

1 0 0 0 0

transporte

xk yk (x + y )k
Estado tpico

R1 R2 x y

bitk

R3

R4
transporte

R5 R6 R7 xk yk x + y

R8 R9 |x | |y | . . .

Exemplo  Soma Binria  2


Sub-Rotina 20-22

3: 10 : 12 : 15 :

L(1, 8) L(2, 9) S(3) R(1, 3, 5) R(2, 3, 6) J(4, 10, 12) J(5, 10, 10) J(6, 10, 26) J(1, 1, 30) J(6, 10, 23) J(1, 1, 26) J(5, 10, 15) J(6, 10, 23) J(1, 1, 26) J(6, 10, 20) J(1, 1, 23) J(3, 8, 34)

20 : 23 : 26 :

30 :

34 :

J(3, 9, 34) J(1, 1, 3) W(10, 3, 7, 3) Z(4) J(1, 1, 17) W(1, 8, 7, 3) Z(4) J(1, 1, 17) W(10, 3, 7, 3) Z(4) S(4) J(1, 1, 17) W(1, 8, 7, 3) Z(4) S(4) J(1, 1, 17) T(7, 1)

xk + yk = R7 = 0 e transporte = R4 = 0
Sub-Rotina 23-25

xk + yk = R7 = 1 e transporte = R4 = 0
Sub-Rotina 26-29

xk + yk = R7 = 0 e transporte = R4 = 1
Sub-Rotina 26-29

xk + yk = R7 = 1 e transporte = R4 = 1

Comparao Tempo de Computao


45 40 35 30 25 20 15 10 5 0 0 2 4 6 argumento 8 10 Soma SomaBin

tempo

mbito de Estudo da Complexidade  1


Dado um programa

e argumento

com

bits

Qual o tempo de computao de

P (x )? P (x )?

Qual o espao necessrio computao de

Qual a relao entre nmero de bits do argumento e o tempo da computao

P (x )

(tempo(P (x ))) = log n (tempo(P (x ))) = na (tempo(P (x ))) = e n


Qual melhor num computador que executa 10 por segundo?

9 operaes

Programa EncriptarV1 demora nn passos 101 Programa EncriptarV2 demora 101101 passos 10 passos Programa EncriptarV3 demora 10

mbito de Estudo da Complexidade  2


Principais recursos estudados
1 2

Tempo de Computao nmero de estados intermdios entre estado inicial e estado nal Espao de Computao nmero mximo de bits usados pela memria do programa desde estado inicial at estado nal
Em

Limitando tempo de computao, limita-se o espao

n estados intermdios s possvel mudar n registos

Se no houver limite ao tempo de computao

Programa pode no alterar nenhum registo Exemplo [J(1, 1, 1)]


Estudo do tempo de computao mais pertinente

Vericar e Decidir um Problema


Considere o problema

Divisvel por 4

Problema representado por uma linguagem

LD 4 = {x |Rm(x , 4) = 0}
Cenrio 1  Decidir

Queremos saber se 84 divisvel por 4


Basta dividir por 4 Resto zero Resposta SIM
Cenrio 2  Vericar

Queremos saber se 88 divisvel por 4 Ajuda: considere nmero 22


Calculamos 22 4 Resultado igual a 88 Resposta SIM

Comparao entre Resolver e Vericar


Decidir um problema consiste em resolver

Implica executar um algoritmo necessrio encontrar o algoritmo


Vericar um problema consiste em ver se um candidato ou no soluo

Abordagem diferente sobre a soluo de um problema Vericar se um determinado candidato ou no soluo


Como relacionar
1 2

Resolver

Vericar?

Vericar nunca ser mais difcil que resolver Pode ser mais fcil que resolver Devem existir problemas mais difceis de resolver do que vericar Tarefa de vericao pode ser transformada numa de resolver
Tempo de transformao da mesma ordem de grandeza

Ser que existe um problema


Com vericao acessvel? Sem resoluo acessvel?

Decisor e Vericador
Denition (Decisor)
Dada uma linguagem o decisor de

A x A x A /

a funo caracterstica 1 0 se se

x A cA (x ) =

Decisor e Vericador
Denition (Vericador)
Dada uma linguagem um vericador de

uma funo

x A y |vA (x , y ) = 1 y
um

testemunho
Qualquer

ou

certicado

de

Exemplos de vericadores

serve

vA (x , y ) = cA (x ) vA (x , y ) = cA (x )y

S quando

y =1

Tempo de Computao
Caracterizao do tempo de computao da funo caracterstica

cA

ou da funo vericador

vA

Se forem computveis, ento existe um programa BURM Qual a ordem de crescimento de argumento?

em relao ao seu

Denition (Tempo de Computao)


Seja Um programa BURM

Um vector de argumentos tempo da computao

D (x)

x = x1, . . . , x

escreve-se

tD (x) = tempo(cod(D ), 2x1 3x2 pk xk )


Funo Funo

tempo cod

denida aquando da equivalncia entre Funes

Parciais Recursivas e URM codica um programa BURM

Classe

P 1
P
composta pelas linguagens

Denition (Classe P)
Classe o decisor

cA

tais que

verica

O (cA (x )) = nk x

com

nmero de bits do argumento

Classe

P Polynomial time decisor

Classe

P 2
Linguagem A Programa BURM D Vector de argumentos x = x1 , . . . , xk Maior nmero de bits |x| = max{|x1 |, . . . , |xk |}

Denition (Classe P)
Seja

Menor nmero de passos que qualquer computao argumentos de tamanho mximo

com

termina

dtD (n) = max{tD (x)||x| < n}


2 3

Programa

um decisor

cA

da linguagem

Conjunto das linguagens decidveis em tempo polinomial

A P D ,k (x A D (x ) 1) (dtD O (nk ))

Classe

P 3
Linguagem

decidvel

Existem programas BURM caracterstica de A


Existe um programa que um polinmio

que computam funo

cujo tempo de computao menor

tD (x) < |x|k


Expoente s depende da linguagem No depende de elementos da linguagem
Restrio no tempo de computao vlido para qualquer argumento

x quer pertena ou no linguagem

Classe

P o conjunto das linguagens decidveis em tempo

polinomial

Classe NP
Denition (Classe NP)
Classe

NP

composta pelas linguagens

o vericador

vA

tais que

verica

O (vA (x , y )) = nk
com

nmero de bits do argumento

Classe P 

Non-Deterministic Polynomial time decisor

Mquinas de Turing No-Determinsticas

Fio de execuo polinomial Um dos os de execuo encontra a soluo Simulao por uma Mquina de Turing Determinstica cresce exponencialmente no nmero de transies

Propriedades  Relao entre


Theorem

P e NP

P NP
Qualquer decisor de uma linguagem um vericador Como construir

vA (x , y ) = cA (x )

vA (x , y )

a partir de

cA (x )?

Ignora-se o testemunho y vA (x , y ) corre em tempo polinomial

Propriedades 

NP Como Encontrar o Testemunho  1


y
para o vericador

Como encontrar um testemunho Vericador corre em Em

vA (x , y )?

passos

passos s podem ser usados no mximo

nk

bits do

testemunho Quantos nmeros existem com

nk

bits?

Theorem

Se A NP ento A decidvel em tempo O (2n )


k

Propriedades 
Se

NP Como Encontrar o Testemunho  2

A NP

Existe um vericador vA

x A y vA (x , y ) = 1 Existe um programa BURM que computa vA Existe um inteiro k tal que para cada n vtV (n) O (nk )
Esquema de simulao

dA (x )

n |x | m nk y 2m

i {1, . . . y }
se

V (x , u )
retorna 1

em

passos

retorna 0

Redues Polinomiais
Mtodo para provar que um problema classe

P2

no pertence

Dado um problema

Reduz-se a instncia x de P1 a uma instncia de A instncia de P2 fornecida ao decisor de P2

P1

que no pertence a

P2

Problemas em

P
Minimum-Weight Spanning

Programao Linear rvore de Extenso Mnima ou

Tree

de um grafo

Determinar se um nmero Primo

Programao Linear
Maximizar uma funo custo dado um conjunto de restries max c1 x1

+ . . . + cn xn
. . .

a11 x1 + . . . + a1n xn < b1 aj 1 x1 + . . . + ajn xn < bj x 0


Melhor algoritmo resolve em tempo

O (n3.5 L2 log L log log L)

n nmero de variveis L nmero de bits usados para representar valores das variveis
Descoberto por Karmarkar em 1984

Minimum-Weight Spanning Tree


Dado um grafo obter uma rvore

que contenha todos os ns a soma dos pesos dos arcos seja mnima
Algoritmo de Kruskal resolve em tempo

O (e (e + m))

e nmero de arcos m nmero de ns

Nmeros Primos
Algoritmo decide se um nmero

primo em

O (log15/2 n)
Demonstrado por Agrawal em 2002 De Hopcroft 2001

Both the primes and the complement of the language of primes  the composite numbers  are in NP. These facts make it unlikely that the primes or composite numbers are NP-complete. Since there are important cryptographic schemes based on primes, such a proof would have oered strong evidence of their security.

Problemas em
SAT

NP

Caixeiro Viajante ou conjunto das frmulas conjuntivas satisfazveis

Clculo do Equilbrio de Nash

Milhares de problemas que aparentam estar nesta classe

SAT
Frmula booleana conjuntiva

(a11 . . . a1kn ) . . . (an1 . . . ankn )

a so variveis booleanas
Frmula pertence linguagem se existir uma atribuio de valores tal que a frmula verdadeira Certicado uma atribuio de valores s variveis Algoritmo s tem que vericar se a frmula verdadeira Vericao corre em tempo polinomial no tamanho da frmula Quais das frmulas pertencem linguagem?

a b a a (a b ) (a b ) (a b ) (a b )

Clculo do Equilbrio de Nash


Conceito importante da teoria de jogos Jogo descreve as estratgias disponveis e os ganhos que cada jogador obtem Equilbrio de Nash um conjunto de estratgias tal que

Nenhum jogador tem um incentivo para mudar a sua estratgia Se muda, o seu ganho diminui
Ser que as pessoas, agentes econmicos, mercado so ptimos?

Utilizam a melhor estratgia?

Reduo Polinomial
Denition (Reduo Polinomial)
Uma linguagem A reduzvel em tempo polinomial a uma linguagem B se existe uma funo computvel

f :NN

tal que

x A f (x ) B
Condies

N  
A f B
 f  -

f (x ) O (nk ) n nmero de bits de x

Linguagem

NP Completa
A

Denition
Uma linguagem
1 2

A NP

NP-completa se vericar
B NP
reduzvel em tempo polinomial

Qualquer linguagem linguagem

Quem queira resolver a questo

Descobrir uma linguagem Mostrar que X P

X NP-completa

P = NP s tem que

Teorema de Cook
Denition (Linguagem SAT )
Linguagem

SAT

o conjunto das frmulas conjuntivas satisfazveis

(a11 . . . a1kn ) . . . (an1 . . . ankn )

Theorem (Teorema de Cook)


Linguagem SAT pertence a

NP

Esquema de prova utilizando URM

Converter frmula conjuntiva para nmero natural Provar que SAT NP Provar que SAT NP-completa

Converso Nmero Natural  1


Converso para nmero natural da frmula conjuntiva 1 Converter cada disjuno de literais para disjunes
2 3 4

literais D =a R =aaa D =ab R =aba D = a b c d e convertida em

de 3

a b x1 x1 c x2 x2 d e
Converso para nmero natural das conjunes de disjunes de 3 literais

E vi vi abc D1 . . . Dn

N 2i 2i + 1 2f (a) 3f (b) 5f (c ) 2f (D1 ) pn f (Dn )

Converso Nmero Natural  2


Converso semelhante obteno do nmero de Godel de um programa Converso utiliza funes

soma, mult,

exp

Estas funo so polinomiais no tamanho dos argumentos


Multiplicao de nmeros primos

Garante que cada frmula corresponda a um nmero nico


Cada varivel corresponde a um nmero inteiro

SAT pertence a
Funo

NP
polinomial

Existe um vericador de

SAT que corre em tempo VerificadorSAT com dois argumentos


Atribuio de valores s variveis

Primeiro argumento representa frmula conjuntiva Segundo argumento o certicado


Funo verica em tempo polinomial se a frmula verdadeira Polinmio em funo do tamanho da frmula

SAT Completo
Qualquer linguagem a

SAT

A NP

reduzvel em tempo polinomial

Vericador da linguagem

A: VerificadorA Se x A ento existe y N tal que VerificadorA(x , y ) = 1 Funo VerificadorA executa em tempo polinomial A
a

Como reduzir

SAT ? = D1 . . . Dn
que satisfazvel

Qual a frmula conjuntiva se e s se

x A?

v : v () = 1 y : VerificadorA(x , y ) = 1
Frmulas conjuntivas para descrever
1 2 3 4 5

Programa/funo/algoritmo VerificadorA Estado inicial da computao Efeito de cada instruo na transio de um estado para outro Estado intermdio Resultado sim

Programa VerificadorA  1
Dados

Programa BURM P = [I1 , . . . , In ] r maior registo referido nas instrues de

Variveis (para frmula conjuntiva)

Zj ,p Sj , p Tj ,p,q J j , p , q ,k R j ,p ,q ,u W j , p ,q , u ,v Lj ,p,q

ndices j , k {1, . . . , n} representam ndices de instrues ndices p , q , u , {1, . . . , r } representam ndices de registos

j -sima j -sima j -sima j -sima j -sima j -sima j -sima

instruo instruo instruo instruo instruo instruo instruo

Z(p ) S(p ) T(p , q ) J(p , q , k ) R(p , q , u ) W(p , q , u , v ) L(p , q )

Programa VerificadorA  2
Exemplo: frmula para o programa

P = [J(1, 2, 3), W(2, 2, 1, 2)]

J1,1,2,3 W2,2,2,1,2

J1,1,1,1 J1,1,1,2 . . . Ln,r ,r


Primeira conjuno representa as instrues no programa Segunda conjuno contm todas as variveis excepto as que esto na primeira conjuno Nmero polinomial de literais

Estado Inicial  1
Variveis (para frmula conjuntiva)

Qj ,t R p ,a ,t

no passo no passo

ndice j {1, . . . , n} representa ndices de instrues ndice t {1, . . . M } representa passo da computao

t t

a instruo activa a nmero o registo

Rp

tem o valor

Em |x |k passos s possvel usar no mximo |x |k bits Valor mximo um polinmio no tamanho do argumento |x |k

ndice ndice

p {1, . . . r } representa ndices de registos a {1, . . . M } representa valores possveis nos registos

Estado Inicial  2
Estado inicial com argumentos

Q1,1 R1,x ,1 R2,y ,1 R3,0,1 . . . Rr ,0,1


Conjuno Conjuno Conjuno

Q1,1

representa o incio do programa representa o argumento representa o argumento

R1,x ,1 R2,y ,1

x y

Conjunes registos

R3,0,1 . . . Rr ,0,1 R3 . . . terem o valor 0

representam o facto dos

Transio Entre Estados  1


Variveis (para frmula conjuntiva)

Qj ,t R p ,a ,t

no passo no passo

t t

a instruo activa a nmero o registo

Rp

tem o valor

Frmulas para representar o efeito da transio

Exemplo instruo Z(p )

Qj ,t Zj ,p Qj +1,t +1 Rp,0,t +1
signicado variveis Zj ,p j -sima instruo Z(p) Qj ,t no passo t a instruo activa a nmero Rp,a,t no passo t o registo Rp tem o valor a

Transio Entre Estados  2


Como representar a instruo

T(p , q )?

signicado variveis Zj ,p j -sima instruo Z(p) Sj ,p j -sima instruo S(p) Tj ,p,q j -sima instruo T(p, q ) Jj ,p,q,k j -sima instruo J(p, q , k ) Rj ,p,q,u j -sima instruo R(p, q , u ) Wj ,p,q,u,v j -sima instruo W(p, q , u , v ) Lj ,p,q j -sima instruo L(p, q ) Qj , t no passo t a instruo activa a nmero Rp,a,t no passo t o registo Rp tem o valor a

Estado Final
Variveis (para frmula conjuntiva)

Qj ,t R p ,a ,t

no passo no passo

t t

a instruo activa a nmero o registo

Rp

tem o valor

No estado nal registo

Equivalente ao

sim

R1

tem o valor 1

Frmula conjuntiva

Qn+1,t R1,1,t

Reduo Polinomial
A reduo corre em tempo polinomial

n variveis para descrever as instrues r + 1 variveis para descrever o estado inicial rM variveis para descrever a instruo activa rM 2 variveis para descrever os valores nos registos nMr variveis para descrever transio instruo Z(n) nM 2 r variveis para descrever transio instruo S(n) n2 M 2 r 2 variveis para descrever transio instruo J(n, m, q ) nM 3 r 3 variveis para descrever transio instruo R(a, b, c ) nM 5 r 4 variveis para descrever transio instruo W(a, b, c , d ) nM 2 r 2 variveis para descrever transio instruo L(a, b)

Soma dos factores um polinmio

Problema Cobertura dos Vrtices


Denition (COBV )
Problema da Cobertura dos Vrtices, que

COBV ,

a linguagem

(G , k ) L
G k

tal

em que um grafo um nmero natural

tem uma cobertura de tamanho mximo Cobertura de

k UV

G = (V , A)
1

subconjunto dos vrtices

Complexidade de COBV
Problema

COBV

pertence classe

NP

Como provar?

Sabemos que SAT NP Reduzir em tempo polinomial SAT a COBV Composio de redues

Reduo f representada por 3SAT f COBV X SAT Reduo g representada por X g 3SAT Implica que X f g COBV

Reduo 3SAT a COBV


Conjunto de clusulas com 3 literais

m clusulas

C = {C1 , . . . , Cm } Ci = {a, b, c } n variveis


1 2 3

V (C ) = {1 , . . . , n }

Criar 3 grupos de grafos

Grafos das variveis Grafos das clusulas Grafo liga variveis aos literais das clusulas

Reduo 3SAT a COBV  Grafos das Variveis


Por cada varivel

Criar dois vrtices Criar a aresta


Exemplo

v v
i i i

(v , v )

abc
va v a vb v b vc

nega b c

v c

Reduo 3SAT a COBV  Grafos das Clusulas


Por cada clusula

Ci = {a, b, c }

Criar trs vrtices para os trs literais

la lb lc
Criar as arestas

(la , lb )
Exemplo

(lb , lc )

(lc , la )

abc
l a 1 la2

nega b c

l b 1

lb2

lc1

lc2

Reduo 3SAT a COBV  Grafo Ligao


Por cada clusula

Ci = {a, b, c }
(la , va ) (lb , vb ) (lc , vc )

Criar arestas que ligam literais s variveis

Exemplo

abc
va v a vb v b vc

v c

a b c

la2

l a 1

lb2

l b 1

lc2

lc1

Reduo 3SAT a COBV  Soluo 1


abc

a b c

va

v a

vb

v b

vc

v c

la2

l a 1

lb2

l b 1

lc2

lc1

Reduo 3SAT a COBV  Soluo 2


abc

a b c

va

v a

vb

v b

vc

v c

la2

l a 1

lb2

l b 1

lc2

lc1

Referncias
http://www.youtube.com/watch?v=SczraSQE3MY http://qwiki.stanford.edu/index.php/Complexity_Zoo Captulo 5 de Francisco Coelho and Joo Pedro Neto. Teoria da Computao Computabilidade e Complexidade. Escolar
Editora, 2010 Captulo 7 e 8 de Michael Sipser.

of Computation.

Introduction to the Theory

PWS Publishing Company, 1997.

Captulo 10 de John E. Hopcroft, Rajeev Motwani, and

Introduction to Automata Theory, Languages and Computation. Addison-Wesley, second


Jerey D. Ullman. 2001.

edition,

FIM

Anda mungkin juga menyukai