Pedro Mariano
Apresentao
Corpo Docente
Pedro Mariano
Atendimento
Pr-requisitos
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
John E. Hopcroft, Rajeev Motwani, and Jerey D. Ullman. Addison-Wesley, second edition, 2001. Michael Sipser. PWS Publishing Company, 1997.
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
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
assembler
R1 , R2 , R3 , . . . R1 R2 R3 . . . r1 r2 r3 . . .
Z(n)
Rn
Rn 0
Sucessor
S(n)
incrementa o registo
Rn
Rn Rn + 1
Transfere
T(n, m)
registo
para o
Rn Rm
se os valores dos registos
Salto
J(n, m, q )
Rn q
Rm
(4, 8, 3, 1, 0, . . .)
a , b , c N \ { 0}
Denition (Programa)
Lista nita de instrues
P = [I1 , . . . , Im ]
S = (q , r1 , . . . , rk )
com
q1
k (P )
x1 , . . . , xn
P = [I1 , . . . , Im ]
com argumentos
P (x1 , . . . , xn ) = (S0 , S1 , . . . , Si , Si +1 , . . .)
Sequncia pode ser innita
Denition (Resultado)
Resultado de uma computao valor do registo estado instantneo
R1
no ltimo
Computabilidade 1
Denition (Convergncia)
Um programa
com argumento
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
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
par?
Mdulo URM
Programa URM pode ser utilizado noutro programa
Denition (Normalizao)
Um programa
J()
J(a, b, c ) : q |P | + 1
Salto no mximo para o tamanho do programa mais 1
tem
que tem
P P
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
tem
que tem
R1 a Rm
m
T(Ra1 , R1 ), . . . , T(Ra , Rm )
2
Z(Rm+1 ), . . . , Z(Rr )
3 4
Colocar instrues do programa M Colocar resultado T(R1 , Rk ) Acertar todas as instrues J()
Somar
r |M |
1
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
f : A B?
:AN :NB
f A F N N B
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 )
N2 : N2 N (m, n) 2n (2m + 1) 1
Inversas de
1 : N
N (x + 1)1
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
Z(n)
Z (n) = n 1
Funo de codicao
Representao funo
S(n)
S (n) = n 1
T(n, m)
T (n, m) = (n 1, m 1)
Representao funo
J(n, m, q )
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
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
Representao funo
I I I I
Codicao de um Programa
Programa URM Funo de
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
dec : N P
Descodicao de um Programa 2
Example (Descodicao do nmero 99)
99
= 100 1 = 11001002 1 = 22 + 25 + 26 1
(I1 ) = 2
1 2
+ (I1 ) + (I2 ) = 5
resolvendo ca
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
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.
Teoria
Escolar
Captulos 1 e 4 de Nigel J. Cutland. Computability: An Introduction to Recursive Function Theory. Cambridge University Press, 1980
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
Axiomas
Constantes naturais 0, 1, 2, . . . Funo zero
Funo sucessor
Funes projeco
projm : i
Nm N (n1 , . . . , nm ) ni
zero, succ
projm i
so primitivas recursivas
...
h?
Ilustrao da Composio
A g1 B1 A gk Bk
B1 ... Bk
A = B1 = . . . = Bk = C = N B = Nk
Considerar mdulos
. . . 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 )
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 )
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
= 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 )
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
f : D1 D2 . . . . . . Dn E h
E f (xj1 , . . . , xjn )
g1 : Di1 Di2 . . . Dik (xi1 , . . . , xik ) gn : Di1 Di2 . . . Dik (xi1 , . . . , xik )
Axiomas projeco Concluso
D1 xj1
. . .
Dn xjn
Pk1 , j
...,
Pkn j
h?
iteraes
Pseudo-cdigo
a f (x ) i 0 while y = i do a g (x , i , a ) i i +1
A=B=N
Considerar mdulos
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
f : Nn N g : Nn +2 N
Denio da recurso
se se
y =0 y >0
Soma Limitada 1
Denition (Soma Limitada)
Seja
h :ANB
a funo
denida por
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 )
<y
h x y
( , )
Se
A = Nn ?
Utilizando funes
rm resto da diviso sg sinal inverso
(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
h :ANB
a funo
denida por
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 )
<y
h x y
( , )
Se
A = Nn ?
Minimizao Limitada 1
Procura o menor valor que anula uma funo Procura tem um limite
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
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
<y
[h(x , z )] =
v
sg(h(x , u ))
<y u <y +1
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 )
x -simo
primo
p(0) = p(x + 1) =
<p(x )!+1
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
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)
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 ]
f (k , 0) 1 f (k , 1)
f (x , i ) = 0
i 0
while f (x , i ) = 0 do
i i +1
com 2 argumentos
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
soma
x x x, y, z x, y, z x, y
prod
x x, y, z x, y, z x, y x, y, z x, y
soma
Z S Pn i
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]
s = config(c , i , m) = ((c , i ), m)
= instr(s )
Funo que dado uma congurao da URM devolve prximo cdigo memria
= mem(s )
config(c , 1, m)
Conguraes seguintes
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
Funo Universal
Denition (Funo Universal)
Funo universal dois argumentos
u:
(1)
Referncias
Captulo 3 de Francisco Coelho and Joo Pedro Neto.
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
No-Determinstica
Introduo
Alternativa ao estudo da computao Composta por
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
F Q
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}
unidade controlo
trabalho
AT
funo
0 1 0 1
fita de trabalho
:Q T Q T {esq, dir}
de transio
q0
q0 Q B T
(Q , A, T , , q0 , B , F )
B F
branco F Q
conjunto de estados de
aceitao
representa-se por
Denition (Linguagem)
Dado um alfabeto
A,
tal que
L A
Mquina de Turing faz computaes com palavras do alfabeto
A
Alfabeto pode ser diferente,
A
fazem a mesma computao
A = {x , y }
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
... ...
Computao noutro domnio, por exemplo Z Obter correspondncia entre uma URM e uma Mquina de Turing
f : A B?
:AN :NB
f A F N N B
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 )
0 1 0 1
fita de trabalho
(Q , A, T , , q0 , B , F )
uma funo pode no estar denido
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
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
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
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
fila de DIs
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
edition,
Computation.
Tese Church-Turing
34 Diferentes Modelos de Computao 36 Tese de Church-Turing 35 Denio de Algoritmo 37 Referncias
Denio de Algoritmo
No h descrio formal de algoritmo Noo intuitiva de sequncia de instrues
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
Referncias
Seco 2.6 de Francisco Coelho and Joo Pedro Neto.
Teoria
Escolar
Computation.
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
cL (n ) =
nL nL /
Linguagem Semi-Decidvel
Denition (Linguagem Turing-Reconhecvel)
Uma linguagem linguagem Se
Mquina de Turing
uLM /
rejeita ou no termina
cL (n) =
nL nL /
N\L
decidvel
u?
M = (A, Q , q0 , , F )
ser que
LA AFD = { M , u |M
u}
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
...
M = (A, Q , q0 , , F )
ser que
gera a linguagem
LV AFD = { M |L(M ) = }
Descrio geral algoritmo
M1
M2
Utilizar o algoritmo do problema vazio no autmato C Se o algoritmo diz que a palavra pertence, ento L(A) = L(B )
u?
G = (N , T , S , P )
ser que
gera
LA GIC = { G , u |G
u} GC
A BC Aa
Qualquer palavra u gerada por GC tem 2n 1 passos n comprimento palavra u Um passo corresponde substituio de uma varivel
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
G = (N , T , S , P )
ser que
gera a linguagem
LV GIC = { G |L(G ) = }
Descrio geral do algoritmo
Marcar toda o smbolo no-terminal A tal que exista produo A U1 U2 . . . Uk todos os smbolos Ui estejam marcados
G = (N , T , S , P )
cG (u ) =
1 0
se se
u L(G ) u L(G ) /
Conjunto Seja
enumervel
Theorem (No-Enumerabilidade de
C)
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}
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
... ...
Problema da Aceitao 3
Resultado computao
Pi (nj )
Valores escolhidos aleatoriamente
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,
LH = { M , u |M termina
comu }
Theorem
Linguagem LH indecidvel
Alan Turing mostrou que o
Halting Problem
indecidvel
LA MT
Problema Vazio
Example (Problema Vazio)
Dado uma especicao de um programa produzida por
a linguagem vazia?
LV = { P |L(P ) = }
Theorem
Linguagem LV indecidvel
Prova por reduo utilizando linguagem Supor que existe mdulo
LA
Vazio
Aceita
Problema da Equivalncia
Example
Dados as especicaes de duas mquinas
M1
M2
ser que a
LE = { M1 , M2 |L(M1 ) = L(M2 )}
Theorem
Linguagem LE indecidvel
Prova por reduo utilizando a linguagem
LV
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
abc ab
ca a
acc ba
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
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 )
Problema / Linguagem
LA
e uma entrada u ,
LA = { M , u |M
aceita u }
#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
# #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
# #
2
# B# q a q
Para cada
qF
aq q
Para cada
qF
q ## #
terminar a equivalncia
Referncias
Captulo 5 de Michael Sipser.
Computation.
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
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))
f (n ) O (f (n))
denido por
f(n) = O(g(n))
f (n ) O (f (n))
denido por
f(n) = (g(n))
m?
representado por
n+1
contas
Instrues
Estado da memria
R1
45
= 1011012
R2 16 = 10002
R3 3 = 112
R4 R5 4 = 1002 0 ...
Resultados de instrues
R4 R4 R2 R2 R5 R2
1 1 0 48 = 110002 6 0
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 | . . .
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
tempo
e argumento
com
bits
P (x )? P (x )?
P (x )
9 operaes
Programa EncriptarV1 demora nn passos 101 Programa EncriptarV2 demora 101101 passos 10 passos Programa EncriptarV3 demora 10
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
Divisvel por 4
LD 4 = {x |Rm(x , 4) = 0}
Cenrio 1 Decidir
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
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
D (x)
x = x1, . . . , x
escreve-se
tempo cod
Classe
P 1
P
composta pelas linguagens
Denition (Classe P)
Classe o decisor
cA
tais que
verica
O (cA (x )) = nk x
com
Classe
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
com
termina
Programa
um decisor
cA
da linguagem
A P D ,k (x A D (x ) 1) (dtD O (nk ))
Classe
P 3
Linguagem
decidvel
Classe
polinomial
Classe NP
Denition (Classe NP)
Classe
NP
o vericador
vA
tais que
verica
O (vA (x , y )) = nk
com
Classe P
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
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 )?
Propriedades
vA (x , y )?
passos
nk
bits do
nk
bits?
Theorem
Propriedades
Se
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
P1
que no pertence a
P2
Problemas em
P
Minimum-Weight Spanning
Tree
de um grafo
Programao Linear
Maximizar uma funo custo dado um conjunto de restries max c1 x1
+ . . . + cn xn
. . .
n nmero de variveis L nmero de bits usados para representar valores das variveis
Descoberto por Karmarkar em 1984
que contenha todos os ns a soma dos pesos dos arcos seja mnima
Algoritmo de Kruskal resolve em tempo
O (e (e + m))
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
SAT
Frmula booleana conjuntiva
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 )
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?
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 -
Linguagem
NP Completa
A
Denition
Uma linguagem
1 2
A NP
NP-completa se vericar
B NP
reduzvel em tempo polinomial
X NP-completa
P = NP s tem que
Teorema de Cook
Denition (Linguagem SAT )
Linguagem
SAT
NP
Converter frmula conjuntiva para nmero natural Provar que SAT NP Provar que SAT NP-completa
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
soma, mult,
exp
SAT pertence a
Funo
NP
polinomial
Existe um vericador de
SAT Completo
Qualquer linguagem a
SAT
A NP
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
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
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
Programa VerificadorA 2
Exemplo: frmula para o programa
J1,1,2,3 W2,2,2,1,2
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
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
x y
Conjunes registos
Qj ,t R p ,a ,t
no passo no passo
t t
Rp
tem o valor
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
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
Rp
tem o valor
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)
COBV ,
a linguagem
(G , k ) L
G k
tal
k UV
G = (V , A)
1
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
m clusulas
V (C ) = {1 , . . . , n }
Grafos das variveis Grafos das clusulas Grafo liga variveis aos literais das clusulas
v v
i i i
(v , v )
abc
va v a vb v b vc
nega b c
v c
Ci = {a, b, c }
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
Ci = {a, b, c }
(la , va ) (lb , vb ) (lc , vc )
Exemplo
abc
va v a vb v b vc
v c
a b c
la2
l a 1
lb2
l b 1
lc2
lc1
a b c
va
v a
vb
v b
vc
v c
la2
l a 1
lb2
l b 1
lc2
lc1
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.
edition,
FIM