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.