• Nenhum resultado encontrado

Vamos analisar o algoritmo que demos para a linguagem

0 1

3 )

. Repetimo-lo aqui por conveniˆencia.

“Sobre a cadeia de entrada :

1. Faa¸ uma varredura na fita e rejeite se um0for encontrado `a direita de um1.

2. Repita o seguinte passo se ambos0s e1’s permanecem na fita.

3. Fac¸a uma varredura na fita, riscando um ´unico0e um ´unico1.

4. Se0’s ainda permanecem ap´os todos os1’s tenham sido riscados, ou se1’s ainda permanecem ap´os todos os0’s tenham sido riscados, rejeite. Caso contr´ario, se nem0’s nem1’s permanecem na fita, aceite.”

Para analisar consideramos cada um dos seus trˆes est´agios separadamente. No est´agio 1, a m´aquina faz uma varredura na fita para verificar se a entrada ´e da forma 0 1 . Realizar essa varredura usa passos. Reposicionar a cabec¸a na extremidade esquerda da fita usa outros passos. Portanto o total usado nesse est´agio ´e

passos.

Em notac¸˜ao -grande dizemos que esse est´agio usa

passos. Note que n˜ao men-cionamos o reposicionamento da cabec¸a da fita na descric¸˜ao da m´aquina. Usar notac¸˜ao assint´otica nos permite omitir detalhes da descric¸˜ao da m´aquina que afetam o tempo de execuc¸˜ao por no m´aximo um fator constante.

Nos est´agios 2 e 3, a m´aquina repetidamente faz uma varredura na fita e risca um 0e um1em cada varredura. Cada varredura usa

passos. Como cada varredura risca dois s´ımbolos, no m´aximo

varreduras pode ocorrer. Portanto o tempo total tomado pelos est´agios 2 e 3 ´e

passos.

No est´agio 4 a m´aquina faz uma ´unica varredura para decidir se aceita ou rejeita. O tempo tomado nesse est´agio ´e no m´aximo

.

Por conseguinte o tempo total de sobre qualquer entrada de comprimento ´e

, ou

. Em outras palavras, seu tempo de execuc¸˜ao ´e

, o que completa a an´alise de tempo dessa m´aquina.

Vamos estabelecer alguma notac¸˜ao para classificar linguagens conforme seus re-quisitos de tempo.

Definic¸˜ao 7.7 . . . . Seja

!

&

! uma func¸˜ao. Defina a classe de complexidade de tempo

, como sendo

´e uma linguagem decidida por umaMTde tempo

Lembremo-nos que a linguagem

0 1

3 )

. A an´alise precedente mos-tra que

porque decide em tempo

e

,

cont´em todas as linguagens que podem ser decididas em tempo

.

Existe uma m´aquina que decide assintoticamente mais rapidamente? Em outras palavras, pertence a

para

,

? Podemos melhorar o tempo de execuc¸˜ao riscando dois0’s e dois1’s em cada varredura ao inv´es de somente um pois fazer isso corta o n´umero de varreduras pela metade. Mas isso melhora o tempo de execuc¸˜ao somente por um fator de

e n˜ao afeta o tempo de execuc¸˜ao assint´otico. A m´aquina a seguir, , usa um m´etodo diferente para decidir assintoticamente mais r´apido. Ela mostra que

.

“Sobre a cadeia de entrada :

1. Fac¸a uma varredura na fita e rejeite se um0for encontrado `a direita de um1.

2. Repita os seguintes passos enquanto alguns0’s e alguns1’s permanec¸am na fita.

3. Fac¸a uma varredura na fita, verificando se o n´umero total de0’s e1’s remanescentes ´e par ou ´ımpar. Se for ´ımpar, rejeite.

4. Fac¸a novamente uma varredura na fita, riscando um0sim e outro n˜ao comec¸ando com o primeiro0, e ent˜ao riscando um1sim e outro n˜ao comec¸ando com o primeiro1.

5. Se nenhum0e nenhum1permanece na fita, aceite. Caso contr´ario, rejeite.”

Antes de analisar , vamos verificar que ela realmente decide . Em cada varre-dura realizada no est´agio 4, o n´umero total de0’s remanescentes ´e cortado pela metade e qualquer resto ´e descartado. Por conseguinte, se comec¸´assemos com 130’s, ap´os o est´agio 4 ser executado uma ´unica vez somente

0’s permanecem. Ap´os execuc¸˜oes subseq¨uentes desse est´agio,

"

, ent˜ao

, e ent˜ao

)

permanecem. Esse est´agio tem o mesmo efeito sobre o n´umero de1’s.

Agora examinamos a paridade par/´ımpar do n´umero de0’s e o n´umero de1’s em cada execuc¸˜ao do est´agio 3. Considere novamente comec¸ar com 130’s e 131’s. A primeira execuc¸˜ao do est´agio 3 encontra um n´umero ´ımpar de0’s (porque 13 ´e um n´umero ´ımpar) e um n´umero ´ımpar de1’s. Em execuc¸˜oes subseq¨uentes um n´umero par (6) ocorre, ent˜ao um n´umero ´ımpar (3), e um n´umero ´ımpar (1). N˜ao executamos esse est´agio sobre

)

0’s ou

)

1’s por causa da condic¸˜ao no lac¸o de repetic¸˜ao especificado no est´agio 2. Para a seq¨uˆencia de paridades encontradas (´ımpar, par, ´ımpar, ´ımpar) se substituirmos as pares por0’s e as ´ımpares por1’s e ent˜ao reverter a seq¨uˆencia, obtemos1101, a representac¸˜ao bin´aria de

"

, ou o n´umero de0’s e1’s no in´ıcio. A seq¨uˆencia de paridades sempre d´a o reverso da representac¸˜ao bin´aria.

Quando o est´agio 3 verifica para determinar que o n´umero total de0’s e1’s re-manescente ´e par, ele na verdade est´a verificando a concordˆancia da paridade de0’s com a paridade de1’s. Se todas as paridades concordam, a representac¸˜ao bin´aria dos n´umeros de0’s e1’s concordam, e portanto os dois n´umeros s˜ao iguais.

Para analisar o tempo de execuc¸˜ao de , primeiro observamos que todo est´agio toma o tempo

. Ent˜ao determinamos o n´umero de vezes que cada um ´e executado.

Est´agios 1 e 5 s˜ao executados uma vez, levando um total de

. O est´agio 4 risca pelo menos metade dos0’s e1’s a cada vez que ele ´e executado, portanto no m´aximo

iterac¸˜oes ocorrem antes que todos estejam riscados. Por conseguinte o tempo total dos est´agios 2, 3, e 4

, ou

. O tempo de execuc¸˜ao de

´e

. Antes mostramos que

, mas agora temos um limitante melhor, a saber,

. Esse resultado n˜ao pode ser melhorado ainda mais em m´aquinas de Turing de uma ´unica fita. Na verdade, qualquer linguagem que pode ser decidida em tempo

numa m´aquina de Turing de uma ´unica fita ´e regular, embora n˜ao provaremos esse resultado.

Podemos decidir a linguagem em tempo

(tamb´em chamado tempo linear) se a m´aquina de Turing tem uma segunda fita. AMT a seguir decide em tempo linear.

“Sobre a cadeia de entrada :

1. Fac¸a uma varredura na fita e rejeite se um0for encontrado `a direita de um1.

2. Fac¸a uma varredura nos0’s na Fita 1 at´e o primeiro1. Ao mesmo tempo copie os0’s para a Fita 2.

3. Fac¸a uma varredura nos1’s na Fita 1 at´e o final da entrada. Para cada1lido na Fita 1, risque um0na Fita 2. se todos os0’s est˜ao riscados antes que todos os 1’s sejam lidos, rejeite.

4. Se todos os0’s foram agora riscados, aceite. Se quaisquer 0’s permanecem, rejeite.”

A m´aquina opera diferentemente das m´aquinas anteriores para . Ela simples-mente copia os0’s para sua segunda fita e ent˜ao os emparelha com os1’s.

Essa m´aquina ´e simples de analisar. Cada um dos quatro est´agios obviamente usa

passos, portanto o tempo total de execuc¸˜ao ´e

e por conseguinte linear. Note que esse tempo de execuc¸˜ao ´e o melhor poss´ıvel porque passos s˜ao necess´arios s´o para ler a entrada.

Vamos resumir o que mostramos sobre a complexidade de tempo de . Produzimos umaMTde uma ´unica fita que decide em tempo

e umaMTde uma ´unica fita que decide em tempo

. Afirmamos (sem prova) que nenhumaMT de uma ´unica fita pode fazˆe-lo mais rapidamente. Ent˜ao exibimos umaMTde duas-fitas que decide em tempo

. Logo a complexidade de tempo de sobre umaMTde uma ´unica fita ´e

e sobre umaMTde duas-fitas ´e

. Note que a complexidade de depende do modelo de computac¸˜ao escolhido.

Esta discuss˜ao levanta uma importante diferenc¸a entre a teoria da complexidade e a teoria da computabilidade. Na teoria da computabilidade, a tese de Church–Turing implica que todos os modelos razo´aveis de computac¸˜ao s˜ao equivalentes, ou seja, eles todos decidem a mesma classe de linguagens. Na teoria da complexidade, a escolha do modelo afeta a complexidade de tempo de linguagens. Linguagens que s˜ao de-cid´ıveis em, digamos, tempo linear em um modelo n˜ao s˜ao necessariamente dede-cid´ıveis em tempo linear em um outro.

Na teoria da complexidade, desejamos classificar problemas computacionais con-forme a quantidade de tempo requerido para a soluc¸˜ao. Mas com qual modelo medimos

o tempo? A mesma linguagem pode ter diferentes requisitos de tempo em diferentes modelos.

Felizmente, requisitos de tempo n˜ao diferem largamente para modelos determin´ısticos t´ıpicos. Portanto, se nosso sistema de classificac¸˜ao n˜ao ´e muito sens´ıvel a diferenc¸as relativamente pequenas em complexidade, o modelo determin´ıstico escolhido n˜ao ´e crucial. Discutimos essa id´eia em mais detalhes nas p´oximas sec¸˜oes.