41
Informática Teórica Engenharia da Computação

Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

Embed Size (px)

Citation preview

Page 1: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

Informática Teórica

Engenharia da Computação

Page 2: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

COMPLEXIDADE DE TEMPO

Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele pode não ser solúvel na prática se a solução requer uma quantidade grande de tempo ou memória.

Page 3: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

COMPLEXIDADE DE TEMPO

Exemplo: Uma MT para aceitar {anbn | n 0}

M1 = “Sobre a cadeia de entrada w: 1. Faça uma varredura na fita e rejeite se um a

for encontrado à direita de um b. 2. Repita se ambos a’s e b’s ainda estão na fita: 3. Faça uma varredura, cortando um único a e

um único b. 4. Se as ainda permanecerem após todos os bs

tiverem sido cortados,ou vice-versa, rejeite. Caso contrário, aceite.”

Page 4: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

COMPLEXIDADE DE TEMPO

Analisamos o algoritmo para M1 decidindo A para determinar quanto tempo ela usa.

O no. de passos que um algoritmo usa sobre uma entrada específica pode depender de vários parâmetros.

Por exemplo, se a entrada for um grafo, o número de passos pode depender do número de nós, do número de arestas, e do grau máximo do grafo, ou dalguma combinação desses e/ou de outros fatores.

Page 5: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

COMPLEXIDADE DE TEMPO

Por simplicidade computamos o tempo de execução de um algoritmo como uma função do comprimento da cadeia de entrada e não consideramos quaisquer outros parâmetros.

Na análise do pior caso, levamos em conta o tempo de execução mais longo de todas as entradas de um comprimento específico.

Na análise do caso médio, consideramos a média dos tempos de execução de entradas de um comprimento específico.

Page 6: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

COMPLEXIDADE DE TEMPO

DEFINIÇÃO Seja M uma MT determinística que pára sobre

todas as entradas. O tempo de execução ou complexidade de tempo de M é a função f : ℕℕ, onde f(n) é o no. máximo de passos que M usa sobre qualquer entrada de comprimento n.

Se f(n) for o tempo de execução de M, dizemos que M roda em tempo f(n) e que M é uma MT de tempo f(n). Usamos n para representar o comprimento da entrada.

Page 7: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

O tempo exato de execução de um algoritmo é uma expressão complexa frequentemente, então usualmente apenas o estimamos.

Numa forma conveniente de estimativa, chamada análise assintótica, buscamos entender o tempo de execução do algoritmo quando executado sobre entradas grandes.

Consideramos apenas o termo de mais alta ordem da expressão do tempo de execução do algoritmo,

desconsiderando tanto o coeficiente daquele termo quanto quaisquer termos de ordem mais baixa,

porque o de mais alta ordem domina os outros termos sobre entradas grandes.

Page 8: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

O tempo exato de execução de um algoritmo é uma expressão complexa frequentemente, então usualmente apenas o estimamos.

Numa forma conveniente de estimativa, chamada análise assintótica, buscamos entender o tempo de execução do algoritmo quando executado sobre entradas grandes.

Consideramos apenas o termo de mais alta ordem da expressão do tempo de execução do algoritmo,

desconsiderando tanto o coeficiente daquele termo quanto quaisquer termos de ordem mais baixa,

porque o de mais alta ordem domina os outros termos sobre entradas grandes.

Page 9: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

Ex: f(n) = 6 + 2 + 20n + 45 tem quatro termos, e o de mais alta ordem é 6. Desconsiderando o coeficiente 6, dizemos que f é assintoticamente no máximo .

A notação assintótica ou notação O-grande é f(n) = O():

Page 10: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

DEFINIÇÃO Sejam f e g funções f, g : ℕ. Vamos dizer que f(n)

= O(g(n)) se inteiros positivos c e n0 existem tais que para todo inteiro n ≥n0,f(n)≤ c g(n):

Quando f(n) = O(g(n)) dizemos que g(n) é um limitante superior para f(n), ou limitante superior assintótico para f(n), para enfatizar que estamos suprimindo fatores constantes.

Page 11: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

Intuitivamente, f(n) = O(g(n)) significa que f é menor ou igual a g se desconsiderarmos diferenças até um fator constante.

Vc pode pensar em O como representando uma constante suprimida.

Na prática, a maioria das funções f tem um termo óbvio de mais alta ordem h. Nesse caso, f(n) = O(g(n)), onde g é h sem seu coeficiente.

Page 12: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

Ex: f1(n) = 5 + 2 + 22n + 6. Então, f1(n) = O(). Esse resultado satisfaz a definição: tornando c=6 e

n0=10. Então, 5 + 2 + 22n + 6 ≤ 6 para n ≥10. Adicionalmente, f1(n) = O() porque então é ainda um

limitante assintótico superior sobre f1. Entretanto, f1(n) não é O() pois para quaisquer valores

de c e n0, a definição não é satisfeita.

Page 13: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

Ex: O O-grande interage com logaritmos de uma maneira particular.

x = . Mudando o valor da base b muda o valor de por um

fator constante, pois / Então, quando escrevemos f(n) = O(log n), especificar

a base não é mais necessário. porque estamos de qualquer forma suprimindo fatores constantes.

Seja f2(n) a função 3n + 5n + 2. Nesse caso temos f2(n) = O(n log n) porque log n naturalmente domina log log n.

Page 14: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

A expressão f(n) = O( )+ O(n) equivale a f(n) = O(). pois este termo domina O(n).

Quando o símbolo O ocorre num expoente, como em f(n) = , a mesma idéia se aplica.

Essa expressão representa um limitante superior de para alguma constante c.

Para f(n) = , já que e portanto que , vemos que é um limitante superior de para alguma c.

A expressão representa o mesmo limitante de outra maneira, porque O(1) é um valor que nunca é mais que uma constante fixa.

Page 15: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

Frequentemente derivamos limitantes da forma para c maior que 0, ditos limitantes polinomiais.

Limitantes da forma ão ditos limitantes exponenciais quando δ é um no. real maior que 0.

O-grande diz que uma função é assintoticamente não mais que uma outra.

Para dizer que uma função é assintoticamente menor que uma outra usamos a notação o-pequeno.

A diferença é análoga à diferença entre ≤ e <.

Page 16: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

NOTACÃO O-GRANDE E O-PEQUENO

DEFINIÇÃO Sejam f e g funções f, g : ℕ. Vamos dizer que f(n)

= o(g(n)) se Em outras palavras, f(n) = o(g(n)) significa que,

para qualquer real c > 0, existe um n0, onde se verifica que f(n) < c g(n) para todo n ≥ n0.

1. = o(n). 2. n = o(n log log n). 3. n log log n = o(n log n). 4. n log n = o(). 5. = o(). Entretanto, f(n) nunca é o(f(n)).

Page 17: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Exemplo: Uma MT para aceitar {0n1n | n 0}

M1 = “Sobre a cadeia de entrada w: 1. Faça uma varredura na fita e rejeite se um 0

for encontrado à direita de um 1. 2. Repita se ambos 0s e 1s ainda estão na fita: 3. Faça uma varredura, cortando um único 0 e

um único 1. 4. Se 0s ainda permanecerem após todos os 1s

tiverem sido cortados,ou vice-versa, rejeite. Caso contrário, aceite.”

Page 18: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS Para analisar M1 vemos seus 4 estágios: No estágio 1, M1 varre a fita para verificar que a entrada é

da forma 01. Realizar isso usa n passos. Usamos n para representar o comprimento da entrada. Colocar a cabeça no começo da fita usa outros n passos. Assim, o total usado nesse estágio é 2n passos. Esse

estágio usa O(n) passos. Note que não mencionamos o reposicionamento da

cabeça na descrição de M1. Usando uma notação assintótica nos permite omitir

detalhes da descrição da MT que afetam o tempo de execução por no máximo um fator constante.

Page 19: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS Nos estágios 2 e 3, a MT repetidamente varre a fita e

corta um 0 e um 1 em cada varredura. Cada varredura usa O(n) passos.

Já que cada varredura corta dois símbolos, no máximo n/2 varreduras podem ocorrer.

Portanto, o tempo total tomado pelos estágios 2 e 3 é (n/2)O(n) = O() passos.

No estágio 4 M1faz uma única varredura para decidir se aceita ou rejeita. O tempo tomado para isto é no máximo O(n).

Portanto o tempo total de M1 sobre uma entrada de comprimento n é O(n)+ O()+O(n), ou O().

Page 20: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

DEFINIÇÃO Seja f : ℕuma função. Defina a classe de

complexidade de tempo, TIME(t(n)), como sendo a coleção de todas as linguagens decidíveis por uma MT de tempo O(t(n)).

A análise precedente mostra que A ∈ TIME() pois M1 decide A em tempo O() e TIME() contem todas as linguagens que podem ser decididas em tempo O().

Existe uma MT que decide A assintoticamente mais rapidamente? Em outras palavras, A está em TIME(t(n)) para t(n) = o()?

Page 21: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Podemos melhorar o tempo de execução cortando dois 0s e dois 1s em cada varredura?

Fazendo isso, corta-se o número de varreduras pela metade. Mas isso melhora o tempo de execução apenas por um fator de 2 e não afeta o tempo de execução assintótico portanto.

Page 22: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

M2 = “Sobre a cadeia de entrada w: 1. Varra a fita e rejeite se um 0 for encontrado à

direita de um 1. 2. Repita enquanto houver alguns 0s e 1s na fita:

– 3. Varra a fita, vendo se o no. de 0s e 1s restantes é par ou ímpar. Se for ímpar, rejeite.

– 4. Varra novamente a fita, cortando alternadamente um 0 não e outro sim começando com o primeiro 0, e então cortando alternadamente um 1 não e outro sim começando com o primeiro 1.

5. Se nenhum 0 e 1 estão na fita, aceite. Caso contrário, rejeite.

Page 23: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

M2 realmente decide A, veja-se:

Em toda varredura do estágio 4, o no. de 0s restantes é cortado pela metade e qualquer resto é descartado.

Portanto, se começarmos com 13 0s, após o estágio 4 ser executado uma só vez apenas 6 0s permanecem.

Depois 3 0s, então 1, e depois nenhum permanece. Esse estágio tem o mesmo efeito sobre o no. de 1s.

Page 24: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Supomos começar com 13 as e 13 bs. A 1ª execução do estágio 3 acha um no. ímpar de 0s e

de 1s (13). Em execuções subsequentes um no. par (6) ocorre, depois um ímpar (3), e outro ímpar (1).

Não executamos esse estágio sobre 0 0s ou 0 1s por causa da condição de repetição do estágio 2.

Para a sequência de paridades encontradas (ímpar, par, ímpar, ímpar) se substituirmos as pares por 0s e as ímpares por 1s e revertermos a sequência, obtemos 1101, a representação binária de 13, ou o no. de 0s e 1s no início. A sequência de paridades sempre dá o reverso da representação binária.

Page 25: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Quando o estágio 3 verifica para determinar que o no. de 0s e 1s restantes é par, ele na verdade checa a concordância entre a paridade dos 0s com os 1s.

Se estão de acordo, as representações binárias dos nos. de 0s e de 1s concordam, e portanto os dois nos. são iguais.

Page 26: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Analisando o tempo de execução de M2, 1º. vemos que todo estágio leva um tempo O(n).

Então determinamos o no. de vezes que cada um é executado. Os estágios 1 e 5 são executados uma vez, levando um total de tempo de O(n).

O estágio 4 corta pelo menos metade dos 0s e 1s cada vez, portanto no máximo 1 + iterações do laço de repetição ocorrem antes que todos sejam cortados. Portanto, o tempo total dos estágios 2, 3 e 4 é (1 + )O(n), ou O(n log n).

O tempo de execução de M2 é O(n) + O(n log n), ou seja O(n log n).

Page 27: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Podemos decidir a linguagem A em tempo O(n) (tempo linear) se a MT tiver 2 fitas:

M3 = “Sobre a cadeia de entrada w: 1. Varra a fita e rejeite se um 0 for encontrado à direita

de um 1. 2. Varra os 0s sobre a fita 1 até o 1º 1. Ao mesmo

tempo, copie os 0s para a fita 2. 3. Varra os 1s sobre a fita 1 até o final da entrada. Para cada 1 lido sobre a fita 1, corte um 0 sobre a fita

2. Se todos os 0s estiverem cortados antes que todos os 1s sejam lidos, rejeite.

4. Se todos os 0s tiverem agora sido cortados, aceite. Se algum 0 permanecer, rejeite.”

Page 28: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Essa MT é simples de analisar. Cada um dos 4 estágios usa O(n) passos, que é o tempo total de execução.

Esse tempo de execução é o melhor possível porque n passos são necessários somente para ler a entrada.

Produzimos uma MT de uma só fita M1 que decide A em tempo quadrático e outra mais rápida M2 que decide A em tempo O(n log n).

Exibimos uma MT de 2 fitas M3 que decide A em tempo O(n). Logo, a complexidade de tempo de A numa MT de uma só fita é O(n log n) e numa de 2 fitas é O(n).

Portanto a complexidade de A depende do modelo de computação escolhido.

Page 29: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Isso destaca uma importante diferença entre as teorias da complexidade e da computabilidade.

Na da computabilidade, a tese de Church-Turing implica que todos os modelos razoáveis de computação são equivalentes, i.e., decidem a mesma classe de linguagens.

Na da complexidade, a escolha do modelo afeta a complexidade de tempo de linguagens.

Linguagens que são decidíveis em, digamos, tempo linear em um modelo não são necessariamente decidíveis em tempo linear em um outro.

Page 30: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

ANALISANDO ALGORITMOS

Na teoria da complexidade, classificamos problemas computacionais conforme sua complexidade de tempo.

Mas com qual modelo medimos tempo? A mesma linguagem pode ter requisitos de tempo

diferentes em modelos diferentes. Felizmente, requisitos de tempo não diferem

enormemente para modelos determinísticos típicos. Assim, se nosso sistema de classificação não for muito

sensível a diferenças pequenas em complexidade, a escolha do modelo determinístico não é crucial.

Page 31: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

Aqui examinamos como a escolha do modelo computacional pode afetar a complexidade de tempo de linguagens. Consideramos 3 modelos: – a MT de uma só fita; – a MT multifita; e – a MT não-determinística.

Page 32: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Seja t(n) uma função, onde t(n) ≤ n. Então toda MT

multifita de tempo t(n) tem uma MT de uma fita equivalente de tempo O((n)).

IDEIA DA PROVA: Podemos converter qualquer MT multifita numa MT monofita que a simula.

Analisamos a simulação para determinar quanto tempo adicional ela requer.

Mostramos que simular cada passo da MT multfiita usa no máximo O(t(n)) passos na MT monofita.

Logo, o tempo total usado é O((n)) passos.

Page 33: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Seja t(n) uma função, onde t(n) ≤ n. Então toda MT

multifita de tempo t(n) tem uma MT de uma fita equivalente de tempo O((n)).

PROVA: Seja M uma MT de k-fitas que roda em tempo t(n). Construímos uma MT monofita S que roda em tempo O((n)).S simula M.

Revisando a simulação, lembre-se que S usa sua fita para representar o conteúdo sobre todas as k fitas de M.

As fitas são armazenadas consecutivamente, com as posições das cabeças de M marcadas sobre as células apropriadas.

Page 34: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Inicialmente, S coloca sua fita no formato que

representa todas as fitas de M e então simula os passos de M.

Para simular um passo, S varre toda a fita para determinar os símbolos sob as cabeças das fitas de M.

Então S faz uma outra passagem sobre a fita para atualizar seu conteúdo e o das posições das cabeças.

Se uma das cabeças de M move para a direita sobre a porção não lida, S tem que aumentar a quantidade de espaço alocado para sua fita, deslocando uma porção de sua própria fita uma célula para a direita.

Page 35: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Para cada passo de M, S faz 2 passagens sobre a

porção ativa de sua fita. A 1ª obtem a informação necessária para determinar o próximo movimento e a 2ª o realiza.

O comprimento da porção ativa da fita de S determina quanto tempo S leva para varrê-la, então vamos determinar um limitante superior para esse comprimento.

Tomemos a soma dos comprimentos das porções ativas das k fitas de M.

Page 36: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Cada uma dessas porções ativas tem comprimento no

máximo t(n) porque M usa t(n) células em t(n) passos se a cabeça move para a direita em todo passo e muito menos se uma cabeça move para a esquerda.

Portanto, uma varredura da porção ativa da fita de S usa O(t(n)) passos.

Para simular cada um dos passos de M, S realiza 2 varreduras e possivelmente até k deslocamentos para a direita.

Cada uma usa um tempo O(t(n)), portanto o tempo total para S simular um dos passos de M é O(t(n)).

Page 37: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Agora limitamos o tempo total usado pela simulação. O estágio inicial, onde S coloca sua fita no formato

apropriado, usa O(n) passos. Então, S simula cada um dos t(n) passos de M, usando

O(t(n)) passos, portanto essa parte da simulação usa t(n)O(t(n)) = O((n)) passos.

Então, a simulação de M usa O(n) + O((n)) passos. Assumindo t(n) ≥ n (pois M não poderia nem mesmo

ler a entrada toda em menos tempo), o tempo de execução de S é O((n)) e a prova está completa.

Page 38: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

DEFINIÇÃO Seja N uma MT não-determinística que é um decisor. O tempo de execução de N é a função f : ℕℕ onde

f(n) é o no. máximo de passos que N usa sobre qualquer ramo de sua computação sobre qualquer entrada de comprimento n.

Page 39: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA Seja t(n) uma função, onde t(n) ≥ n. Então toda MT

não-determinística monofita de tempo t(n) tem uma MT determinística monofita de tempo .

PROVA :Seja N não-determinística rodando em tempo t(n). Construímos uma MT determinística D que simula N como visto, fazendo uma busca na árvore de computação não-determinísica de N.

Analisando a simulação:sobre uma entrada de tamanho n, todo ramo da árvore de computação não-determinística de N tem tamanho no máximo t(n).

Todo nó na árvore pode ter no máximo b filhos, b sendo o no. máximo de escolhas de δ de N.

Page 40: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA PROVA :Portanto, o no. de folhas na árvore é no

máximo . A simulação procede explorando sua árvore na

disciplina de busca por largura. Em outras palavras, ela visita todos os nós de

profundidade d antes de continuar para nós na profundidade d + 1.

O algoritmo dado na prova do Teorema 3.16 ineficientemente começa na raiz e desce para um nó sempre que ele visita esse nó, mas eliminando essa ineficiência não altera o teorema corrente.

Page 41: Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele

RELACIONAMENTOS DE COMPLEXIDADE ENTREMODELOS

TEOREMA PROVA :O no. de nós na árvore é menor que 2 x no.

máximo de folhas, portanto limitamo-lo por O(). O tempo para iniciar da raiz e descer a um nó é O(t(n)). Portanto, o tempo de execução de D é O(t(n) ) = . Conforme descrito no Teorema 3.16, a MT D tem 3

fitas. Converter para uma MT monofita no máximo eleva ao quadrado o tempo de execução, pelo Teorema 7.8.

Portanto, o tempo de execução do simulador mono-fita é ´e = . = .