complexidade de linguagens influência do modelo de computação profa. sandra de amo teoria da...

23
Complexidade de Linguagens Complexidade de Linguagens Influência do Modelo de Influência do Modelo de Computação Computação Profa. Sandra de Amo Profa. Sandra de Amo Teoria da Computação Teoria da Computação Mestrado em Ciência da Mestrado em Ciência da Computação Computação

Upload: internet

Post on 17-Apr-2015

117 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Complexidade de Complexidade de LinguagensLinguagens Influência do Influência do

Modelo de ComputaçãoModelo de Computação

Profa. Sandra de AmoProfa. Sandra de Amo

Teoria da ComputaçãoTeoria da Computação

Mestrado em Ciência da Mestrado em Ciência da ComputaçãoComputação

Page 2: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Fato importanteFato importante

• DecidibilidadeDecidibilidade não é afetada pelo modelo não é afetada pelo modelo de computação usado: Tese de Churchde computação usado: Tese de Church– Se uma linguagem é decidível por uma Se uma linguagem é decidível por uma

máquina de Turing a duas fitas, ou não-máquina de Turing a duas fitas, ou não-determinista, etc então é decidível por uma determinista, etc então é decidível por uma máquina a uma fita.máquina a uma fita.

• ComplexidadeComplexidade é afetada pelo modelo de é afetada pelo modelo de computação usado.computação usado.– Modelo padrão utilizadoModelo padrão utilizado : Máquina de Turing : Máquina de Turing

Determinista Determinista a uma fitaa uma fita. .

Page 3: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} | n ≥ 0}

• L é decidida por uma máquina a uma fita L é decidida por uma máquina a uma fita O(nO(n22))

• L é decidida por uma máquina a uma fita L é decidida por uma máquina a uma fita O(nlogn)O(nlogn)

• L não pode ser decidida por uma máquina L não pode ser decidida por uma máquina de Turing de Turing a uma fitaa uma fita O(n) O(n) – Teorema:Teorema: Toda linguagem que pode ser decidida Toda linguagem que pode ser decidida

por uma MT a uma fita o(nlogn) é regular !por uma MT a uma fita o(nlogn) é regular !– L = {0L = {0nn 1 1nn | n ≥ 0} não é regular. | n ≥ 0} não é regular.

Page 4: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

B B B B B B B B B B B

qo

qo

Page 5: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 B B B B B B B B B B

qo

qo

Page 6: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 B B B B B B B B B

qo

qo

Page 7: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 0 B B B B B B B B

qo

qo

Page 8: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 0 B B B B B B B B

qo

qo

Page 9: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 0 B B B B B B B B

qo

qo

Page 10: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 0 B B B B B B B B

qo

qo

Page 11: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 0 B B B B B B B B

qo

qo

Page 12: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploL = {0L = {0nn 1 1nn | n ≥ 0} pode ser decidida | n ≥ 0} pode ser decidida

por uma máquina de Turing O(n) por uma máquina de Turing O(n) a a duas fitasduas fitas

0 0 0 1 1 1 B B B B B

0 0 0 B B B B B B B B

qa

qa

Page 13: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ComplexidadeComplexidade

• Scan da fita 1 para testar se tem 0 depois de 1 : O(n)Scan da fita 1 para testar se tem 0 depois de 1 : O(n)• Scan da fita 1 copiando os zeros na fita 2 Scan da fita 1 copiando os zeros na fita 2 • Scan da fita 1 comparando os 1’s com os 0’s da fita 2, Scan da fita 1 comparando os 1’s com os 0’s da fita 2,

marcando os 0’s e 1’s que se correspondem, até que marcando os 0’s e 1’s que se correspondem, até que acabem os 1’s da fita 1, ou acabem os 0’s da fita 2.acabem os 1’s da fita 1, ou acabem os 0’s da fita 2.

• Scan das fitas:Scan das fitas:– Se tem 0’s não marcados na fita 2 rejeita.Se tem 0’s não marcados na fita 2 rejeita.– Se tem 1’s não marcados na fita 1 rejeita.Se tem 1’s não marcados na fita 1 rejeita.– Caso contrário, aceita.Caso contrário, aceita.

Complexidade: O(n) + O(n) + O(n) + O(n) = O(n)Complexidade: O(n) + O(n) + O(n) + O(n) = O(n)

Page 14: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Relação da Complexidade Relação da Complexidade entre Modelos Deterministasentre Modelos Deterministas

Seja t(n) ≥ n. Seja t(n) ≥ n.

Toda máquina de Turing M a Toda máquina de Turing M a múltiplas fitasmúltiplas fitas O(t(n))O(t(n)) é é equivalente a uma máquina de equivalente a uma máquina de Turing S Turing S a uma fitaa uma fita O(tO(t22(n))(n))

Page 15: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Como simular uma Como simular uma configuração de M’ numa configuração de M’ numa máquina com 1 fita:máquina com 1 fita:

1 0 B B B B

0 0 B B B B B B B B B

q2

q2

1 0 B B B B B B B B B

q2

# 1 0 B ##

B B B B B

0 0 1 0#

Page 16: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

S = No input w faça:S = No input w faça:1.1. Escreve na fita de S o input w’ correspondente à Escreve na fita de S o input w’ correspondente à

configuração inicial da máquina M (com w na configuração inicial da máquina M (com w na sua fita 1). sua fita 1).

2.2. Para simular cada movimento de M:Para simular cada movimento de M:1.1. Varre a fita de S, a partir do primeiro # até o (k+1) – Varre a fita de S, a partir do primeiro # até o (k+1) –

ésimo, e “memorize” os k simbolos com pontinhos. ésimo, e “memorize” os k simbolos com pontinhos. Aplique a transição de M’ correspondente.Aplique a transição de M’ correspondente.

2.2. Varre a fita de S novamente a partir do primeiro #, Varre a fita de S novamente a partir do primeiro #, aplicando as modificações ditadas pela transição de M aplicando as modificações ditadas pela transição de M correspondente à sequência de simbolos memorizada.correspondente à sequência de simbolos memorizada.

3.3. Caso um pontinho deva ser colocado em cima de um Caso um pontinho deva ser colocado em cima de um #, escreva B com pontinho neste lugar, e dê um shift #, escreva B com pontinho neste lugar, e dê um shift na fita para a direita a partir desta posição. na fita para a direita a partir desta posição.

Construção da Máquina Construção da Máquina Simples SSimples S

Page 17: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Análise da Máquina SAnálise da Máquina S• Scan para transformar o input w em um input w’ que simula Scan para transformar o input w em um input w’ que simula

a configuração inicial da máquina M a configuração inicial da máquina M = O(n)= O(n)

• Para cada passo da máquina M quantos passos S executa ?Para cada passo da máquina M quantos passos S executa ?– Varre 1 vez a fita para “memorizar” os pontinhos : Varre 1 vez a fita para “memorizar” os pontinhos :

• k. x casas varridas, onde x = tamanho máximo das k. x casas varridas, onde x = tamanho máximo das porções ocupadas pelas fitas de M ≤ t(n) = O(t(n)) porções ocupadas pelas fitas de M ≤ t(n) = O(t(n))

– Varre outra vez a fita para executar um passo de M : Varre outra vez a fita para executar um passo de M : O(t(n))O(t(n))

Complexidade : Complexidade :

O(n) + t(n). O(t(n)) = O(n) + O(tO(n) + t(n). O(t(n)) = O(n) + O(t22(n)) = (n)) = = O(t= O(t22(n)) , pois n ≤ t(n) (n)) , pois n ≤ t(n)

Page 18: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Fato importanteFato importante

• Se complexidade Se complexidade é polinomialé polinomial utilizando um modelo determinista a utilizando um modelo determinista a multiplas fitas então multiplas fitas então também é também é polinomialpolinomial utilizando um modelo utilizando um modelo determinista a fita única.determinista a fita única.

Polinomial a k-fitas <--> Polinomial a 1 Polinomial a k-fitas <--> Polinomial a 1 fitafita

Page 19: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Relação da Complexidade entre Relação da Complexidade entre Modelos Determinista e não-Modelos Determinista e não-

DeterministasDeterministas

Seja t(n) ≥ n. Seja t(n) ≥ n.

Toda máquina de Turing M Toda máquina de Turing M não-não-deterministadeterminista a uma fitaa uma fita O(t(n)) O(t(n)) é é equivalente a uma máquina de Turing equivalente a uma máquina de Turing S S deterministadeterminista a uma fita a uma fita 2 2 O(t(n))O(t(n))

Page 20: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

ExemploExemploδδ(q0,0) = {(q0,0,R),(q1,1,R)} (q0,0) = {(q0,0,R),(q1,1,R)} δδ(q0,1) = {(q0,1,R)}(q0,1) = {(q0,1,R)}δδ(q0,B) = {(qa,B,R), (q1,B,R)}(q0,B) = {(qa,B,R), (q1,B,R)}

δδ(q1,0) = {(q1,0,R)}(q1,0) = {(q1,0,R)}δδ(q1,1) = {(q1,1,R)(q1,1) = {(q1,1,R)δδ(q1,B) = {(qr,B,R), (q1,B) = {(qr,B,R), (q1,B,R)}(q1,B,R)}

0 B1 1

q0

0

0

q0

q0 q1

q1q0

0

0

q0

1

1

q0B

qa q1

B

qrB B

q1

0q1

q111

1q1

Bqr

q0 q0 q1q0 q0

B0

q1

looping

Page 21: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Análise da Máquina Análise da Máquina Determinista SDeterminista S

• Para input w de tamanho nPara input w de tamanho n• Tamanho máximo dos caminhos da Tamanho máximo dos caminhos da

máquina M = t(n)máquina M = t(n)• Quantos caminhos no máximo ? bQuantos caminhos no máximo ? bt(n)t(n) b = número máximo de alternativas da b = número máximo de alternativas da

função de transição de Mfunção de transição de M• Total de passos no pior dos casos = Total de passos no pior dos casos = t(n) . bt(n) . bt(n)t(n) Complexidade = 2Complexidade = 2O(t(n))O(t(n))

Page 22: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Exemplo : Linguagem Exemplo : Linguagem ExponencialExponencialE = {<M,w> E = {<M,w> | M aceita w em at| M aceita w em até 2é 2|w||w| passos} passos}

Suponhamos que E Suponhamos que E P P

A linguagem A linguagem E1 = {<M> | M aceita <M> em atE1 = {<M> | M aceita <M> em até 2é 2|<M>||<M>| passos} seria passos} seria

polinomialpolinomial

Logo E1 Logo E1 P. P.

E1(<M>) = qa E1(<M>) = qa M não aceita <M> em at M não aceita <M> em até 2é 2|<M>||<M>| passos passos

E1(<M>) = qr E1(<M>) = qr M aceita <M> em at M aceita <M> em até 2é 2|<M>||<M>| passos passos

Page 23: Complexidade de Linguagens Influência do Modelo de Computação Profa. Sandra de Amo Teoria da Computação Mestrado em Ciência da Computação

Como E1 Como E1 P então P então existe máquina de Turing M* que decide E1 existe máquina de Turing M* que decide E1 em O(p(n)), p = polinômioem O(p(n)), p = polinômio

Sabemos que existe nSabemos que existe n00 tal que para n ≥ n tal que para n ≥ n00, p(n) ≤ 2, p(n) ≤ 2nn

Podemos supor que |<M*>| ≥ nPodemos supor que |<M*>| ≥ n00

Logo p(|<M*>| ) ≤ 2 Logo p(|<M*>| ) ≤ 2 |<M*>||<M*>|

O que acontece se aplicarmos M* a <M*> ?O que acontece se aplicarmos M* a <M*> ?

M* pára em p(|<M*>| ) passos:M* pára em p(|<M*>| ) passos:

1.1. Se pára em qSe pára em qaa: M* aceita <M*> em p(|<M*>| ) < 2 : M* aceita <M*> em p(|<M*>| ) < 2 |<M*>||<M*>| passos. Logo, pela definição de M*, M* não aceita <M*> passos. Logo, pela definição de M*, M* não aceita <M*>

2.2. Se pára em qSe pára em qrr: M* rejeita <M*> em p(|<M*>| ) < 2 : M* rejeita <M*> em p(|<M*>| ) < 2 |<M*>||<M*>| passos. Logo, pela definição de M*, M* aceita <M*>.passos. Logo, pela definição de M*, M* aceita <M*>.

Contradição !! Contradição !! Logo: E Logo: E P P