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.
Post on 17-Apr-2015
113 Views
Preview:
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