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

Post on 17-Apr-2015

113 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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. .

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.

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

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

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

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

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

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

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

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

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

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)

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))

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#

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

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)

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

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))

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

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))

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

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

top related