Professional Documents
Culture Documents
Programas
Tudo que um computador faz instrudo a partir de programas.
Um programa (em ingls, software) uma sequncia de instrues especficas que descrevem uma tarefa a ser realizada por um computador, na manipulao, redirecionamento ou modificao de dados, de maneira lgica. O programa de computador surgiu antes do desenvolvimento do computador eletrnico. Um trabalho publicado em 1843 por Ada Lovelace, sugerindo uma forma para calcular os nmeros de Bernoulli atravs da mquina analtica de Charles Babbage, tido como o primeiro programa de computador. A primeira aplicao prtica da programao surgiu com os dispositivos baseados em cartes perfurados, que eram utilizados desde o sculo XVIII na indstria da confeco. O empresrio estadunidense Hermann Hollerith utilizou o conceito no processamento dos dados do censo dos Estados Unidos da Amrica em 1890. Os primeiros computadores eletrnicos eram programados somente atravs de linguagens de baixo nvel. Essas linguagens no disponibilizavam um nvel de abstrao sobre o hardware e os comandos eram interpretados diretamente pelos circuitos eletrnicos. No ENIAC, um dos equipamentos mais emblemticos na histria da computao, a programao era realizada atravs de ligaes manuais, que uniam as unidades de processamento do computador, formando uma sequncia de execuo. As linguagens de alto nvel surgiram por volta da dcada de 1940, como a Plankalkl e a Short Code, e tiveram grande impulso com o desenvolvimento dos compiladores, que tornaram a programao uma atividade possvel para um grande nmero de pessoas. Na dcada de 1950 surgiu a primeira linguagem de grande aceitao, o Fortran. Resumindo: um conjunto estruturado de instrues que capacitam uma mquina a aplicar sucessivamente certas operaes bsicas e testes sobre os dados iniciais fornecidos com o objetivo de transformar esses dados numa forma desejvel. Operaes e Testes: o Operaes: F, G, H... o Testes: T1, T2, T3... o Operao Vazia:
Terminologia
Um programa de computador a formalizao de um algoritmo em qualquer linguagem capaz de ser transformada em instrues que sero executadas por um computador gerando os resultados esperados. O termo "software" pode ser utilizado quando se quer designar um conjunto de programas ou, mais freqentemente, quando feita uma referncia parte no fsica do sistema computacional, em contraposio ao termo "hardware", que designa o conjunto de componentes eletrnicos que constituem um computador. Os programas de computador utilizados diretamente por pessoas comuns, como os editores de texto, so chamados de software aplicativo, ou de aplicao. Os programas voltados para dar suporte funcional aos computadores, como os sistemas operacionais, so chamados de software de sistema. Esses softwares, assim como aqueles embutidos em outros sistemas (firmware), podem ser genericamente chamados de "programas".
Execuo
Um programa de computador primeiramente carregado na memria do computador (usualmente pelo sistema operacional). O sistema operacional organiza trs blocos de memria, tambm chamados segmentos. O primeiro o segmento de cdigo, que esttico em tamanho e em contedo. Ele recebe todo o cdigo de mquina que define as sub-rotinas do programa, e o endereo de cada sub-rotina definido como o menor dos endereos das clulas de memria que a definem. O segundo bloco de memria o segmento de dados, e recebe as variveis globais. Assim como no segmento de cdigo, o endereo de cada varivel definido como o menor dos endereos das clulas de memria que o definem. Ele esttico em tamanho mas dinmico em contedo, o que significa que este segmento no pode criar variveis em tempo de execuo, mas o contedo varivel, pode ser modificado. O terceiro bloco de memria o segmento de pilha, uma rea de memria na qual se armazena informao em forma de uma pilha. Ele serve para armazenar informaes como variveis locais, parmetros de subrotinas e endereos de retorno (para onde o fluxo do programa deve ir aps a execuo de uma funo, isto , o ponto logo aps ela foi invocada.) Antes da execuo do programa propriamente dita, a pilha esvaziada. A partir de ento o programa executado, instruo por instruo, at o seu trmino. A execuo de um programa de computador pode ser abreviada em caso de erro de software ou de hardware.
Programao
H diversas linguagens que permitem criar essa sequncia de instrues, sendo que algumas so compiladas e outras so interpretadas. As primeiras, aps ser compilado o cdigo fonte, transformam-se em software, isto , programas executveis. Portanto, programas so arquivos que contm comandos para a mquina, tendo, em geral, formato exe, com ou bat no sistema operacional Windows. Evidentemente, os programas no so infalveis e, mesmo depois de repetidamente testados, podem apresentar erros que, comumente, chamados de bugs. Esses erros devero ser eliminados por meio de pequenos programas complementares ou em novas verses, em que tero novos recursos, e/ou sero mais adequadas ao hardware, podendo explorar melhor as possibilidades do sistema operacional. Atualmente a maioria dos programas possui uma interface grfica amigvel, ou seja, uma tela com cones clicveis que do acesso s funes do sistema. Portanto, o usurio no precisa conhecer a linguagem do computador para executar os comandos, basta clicar sobre o comando escolhido, na forma de uma palavra ou de uma figura, ou digitar uma combinao especfica de teclas, para que o programa envie uma mensagem para o processador causando a execuo de uma certa tarefa.
Programa Monoltico
estruturado com somente desvios condicionais e incondicionais. No emprega mecanismos auxiliares como iterao, subdiviso ou recurso, de modo que toda a lgica do programa esta contida em um nico bloco: um monlito. Fluxograma:
partida
parada
operao
test e
Instrues Rotuladas: Alm da forma de um fluxograma, o programa pode ser representado como uma seqncia de instrues rotuladas. Definio: Rtulo, instruo rotulada. Um rtulo ou etiqueta uma cadeia finita de caracteres constituda de letras ou dgitos. Uma Instruo rotulada assume as formas: o Operao: r1: faa F v_para r2 ou r1: faa v para r2. o Teste: r1: se T ento v_para r2 seno v_para r3. Exemplo de Programa Monoltico: 1: 2: 3: 4: faa F v_para 2 se T1 ento v_para 1 seno v_para 3 faa G v_para 4 se T2 ento v_para 5 seno v_para 1
Definio: Programa Monoltico. Um Programa Monoltico um par P(I, r) I: Conjunto Finito de Instrues Rotuladas r: Rtulo inicial que distingue a instruo inicial em I No existem duas instrues diferentes com o mesmo rtulo. Um rtulo no associado a nenhuma instruo um rtulo final.
A estrutura oferecida pelos programas monolticos tpica das linguagens de mquinas e de programas montadores (assembly), entretanto isto se reflete de diversas maneiras em linguagens de alto nvel.
Substituem desvios incondicionais por estruturas cclicas, permitindo um melhor controle e manuteno de programas. A noo de programa iterativo deu origem s tcnicas de programao estruturada, inspirando toda uma gerao de linguagens como Pascal. So baseados em trs mecanismos de composio de instrues, encontrados em diversas linguagens: Algol 68, Pascal, Ada, Fortran 90, etc
o Seqencial
o o Condicional Enquanto (At)
Exemplo: Um programa iterativo (se T1 ento enquanto T2 faa (at T3 faa (V; W)) seno ) Observaes: trivial traduzir um programa iterativo para um fluxograma, mas a recproca no verdadeira. O uso de identao interessante para facilitar o entendimento.
Programa Recursivo
Nas linguagens de programao em geral o conceito de programa recursivo aparece associado ao de sub-rotinas recursivas. Recurso uma forma indutiva de definir programas. Sub-rotinas permitem a estruturao hierrquica dos programas, possibilitando nveis diferenciados de abstrao.
Definio: Expresso de Sub-Rotinas Uma Expresso de Sub-Rotinas, ou simplesmente Expresso indutivamente definida como se segue:
E0 : Expresso Inicial, que uma expresso de sub-rotinas. Ek : Expresso que define Rk, isto , a expresso que define a sub-rotina identificada por Rk
Adicionalmente, para cada identificador de sub-rotina referenciado em alguma expresso, existe uma expresso que o define. A operao vazia tambm uma expresso de sub-rotinas Raciocnio Recursivo: Lgica Recursiva. Pilha de Dados e Operaes
Exemplo de Programa Recursivo: P R ; S, onde: R def F; (se T ento R seno G; S) S def (se T ento seno F; R) Exemplos Concretos: Fatorial Fibonacci Lista Recursiva
1.2 Mquinas
As mquinas interpretam os programas suprindo todos os recursos necessrios para realizar a computao que eles representam. Cada identificador de operao ou teste interpretado pela mquina deve ser associado a uma transformao na estrutura da memria e a uma funo verdade respectivamente. Nem todo identificador de operao ou teste definido em uma mquina. Para cada identificador de operao ou teste definido em uma mquina existe somente uma funo associada. Adicionalmente a mquina deve descrever o armazenamento ou recuperao da informao na estrutura da memria.
Definio: Mquina. Uma mquina uma hptupla: M = ( V, X, Y, X, Y, F, V Conjunto de Valores de Memria X Conjunto de Valores de Entrada Y Conjunto de Valores de Sada
X Y T
), onde:
F Conjunto de Interpretaes de Operaes. Para cada F existe uma nica F: V V T Conjunto de Interpretaes de Testes. Para cada T existe uma nica T: V {verdadeiro, falso}
Os conjuntos de interpretaes podem ser vistos como conjuntos de funes, indexadas pelo subconjunto de identificadores de operaes e testes para os quais a mquina est definida. Exemplo: Mquina de Dois Registradores: Seja uma mquina com dois registradores, a e b, que assumem valores em N, com duas operaes e um teste: Subtrair 1 de a, se a > 0. Adicionar 1 em b. Teste se a zero.
Adicionalmente Valores de Entrada so armazenados em a (zerando b) e a Sada retorna o valor de b. Implementao: dois_reg = ( N2, N, N, armazena_a, retorna_b, {subtrai_a, adiciona_b}, {a_zero} ), onde:
Y = N = Conjunto dos Valores de Sada armazena_a: N N2, tal que, para todo n N, armazena_a(n) = (n, 0) retorna_b: N2 N tal que, para todo n N, retorna_b(n, m) = m subtrai_a: N2 N2 tal que, para todo (n, m) N2,
adiciona_b: N2 N2 tal que, para todo (n, m) N2, adiciona_b(n, m) = (n, m+1) a_zero: N2 {verdadeiro, falso}, tal que, para todo (n, m) N2, o a_zero(n, m) = verdadeiro, se n = 0,
o a_zero(n, m) = falso, se n 0,
Definio: Programa para uma Mquina. Diz-se que P um programa para a mquina M se cada operao e teste em P corresponder a uma interpretao em M. Formalmente: Seja M = ( V, X, Y, X, Y, F, T ), uma mquina e P um programa onde PF e PT so conjuntos de operaes e testes de P. P um programa para a mquina M se e somente se:
Para toda F em PF, existe uma nica funo F: V V em F. Para todo T em PT, existe uma nica funo T: V V em T. A operao vazia, , interpretada em qualquer mquina.
Cada par reflete um estado de mquina para o programa, ou seja, a funo a ser executada e o valor corrente de memria. A cadeia reflete uma seqncia de estados possveis a partir do estado inicial. (instruo inicial e valor de memria considerado).
Definio: Computao de um Programa Monoltico em uma Mquina. Seja M = ( V, X, Y, X, Y, F, T ), uma mquina e P = (I, r) um programa monoltico para M, onde L o seu correspondente conjunto de rtulos. Uma computao do programa monoltico P para a mquina M uma cadeia (finita ou infinita) de pares de LxV (s0,v0)(s1,v1)(s2,v2)... onde os sk so os rtulos de instrues e os vk os correspondentes estados da memria. Seja F um identificador de operao, T um identificador de teste e r e r rtulos de L.
Operao:
Teste:
Se sk o rtulo de um teste da forma sk: Se T ento v_para r seno v_para r, ento (sk+1, vk+1 ) par subseqente de (sk, vk) na cadeia , sendo que vk+1 = vk e:
Exemplo: Computao Finita de Programa Monoltico na Mquina de Dois Registradores 1: Se a_zero ento v_para 9 seno v_para 2. 2: faa subtrai_a v_para 3. 3: faa adiciona_b v_para 1. (sk, vk) (1,(3,0)) (2,(3,0)) (3,(2,0)) (1,(2,1)) (2,(2,1)) (3,(1,1)) (1,(1,2)) (2,(1,2)) (3,(0.2)) (1,(0,3)) (9,(0,3)) Ao Instruo inicial e valor de entrada armazenado. Em 1, como a 0, desviou para 2. Em 2, subtraiu 1 do registrador a e desviou para 3. Em 3, adicionou 1 ao valor de b e desviou para 1, Em 1, como a 0, desviou para 2. Em 2, subtraiu 1 do registrador a e desviou para 3. Em 3, adicionou 1 ao valor de b e desviou para 1, Em 1, como a 0, desviou para 2. Em 2, subtraiu 1 do registrador a e desviou para 3. Em 3, adicionou 1 ao valor de b e desviou para 1, Em 1, como a=0, desviou para 9.
Definio: Computao de um Programa Recursivo em uma Mquina Seja M = ( V, X, Y, X, Y, F, T ), uma mquina e P um programa recursivo para M, tal que:
P E0 onde R1 def E1, R2 def E2, ..., Rn def Em. Uma computao do programa recursivo P na mquina M uma cadeia (finita ou infinita) de pares da forma: (D0, v0)(D1, v1)(D2, v2)... onde (D0, v0) tal que D0 = E0; e v0 o valor inicial da mquina. Para cada par (Dk, vk), supondo que F um identificador de operao, T um identificador de teste e C, C1 e C2 so expresses de sub-rotinas:
(Dk+1, vk+1) = (C, vk) par subseqente de (Dk, vk) na (Dk+1, vk+1) = (C, F(vk)) par subseqente de (Dk, (Dk+1, vk+1) = (Ei;C, vk) par subseqente de (Dk, vk)
Caso 4: Dk = (C1; C2); C (Dk+1, vk+1) = (C1;(C2;C), vk) par subseqente de (Dk, vk) na cadeia. Caso 5: Dk = Ek = (Se T ento C1 seno C2); C subseqente de (Dk, vk) na cadeia, sendo que: (Dk+1, vk+1) par
A computao pode ser finita ou infinita conforme a cadeia for finita ou infinita. A computao determinstica (por qu?) Teste ou referncia a uma sub-rotina no alteram o valor da memria. Em uma computao finita, a expresso vazia ocorre no ltimo par da cadeia e no ocorre em nenhum outro par. Em uma computao infinita, a expresso vazia no ocorre em nenhum par.
Funo Computada
Noo Intuitiva (programa monoltico): A computao inicia na instruo identificada pelo rtulo inicial com a memria contendo o valor inicial resultante da aplicao da funo de entrada sobre o dado fornecido. Executa, passo a passo, testes e operaes na ordem determinada pelo programa, at atingir um rtulo final, quando pra. O valor da funo computada pelo programa o valor resultante da aplicao da funo de sada ao valor da memria quando da parada.
Definio: Funo Computada por um Programa Monoltico em uma Mquina Seja M = ( V, X, Y, X, Y, F, T ), uma mquina e P = (I, r) um programa monoltico para M. A funo computada pelo programa monoltico P na mquina M, denotada por <P,M>: X Y uma funo parcial definida para xX se a cadeia (s0,v0)(s1,v1)...(sn,vn) uma computao finita de P em M, onde o valor inicial da memria dado pela funo de entrada, ou seja, v0 = X(X). Neste caso a imagem de x dada pela funo de sada aplicada ao ltimo valor da memria na computao, ou seja: <P,M>(x) = Y(vn). Note-se que a funo computada pode ser parcial, isto , no est definida para todos os valores do domnio.
Exemplo: Funo Computada por um Programa Monoltico na Mquina de Dois Registradores. Considere o programa monoltico mon_ba para a mquina dois_reg: 1: Se a_zero ento v_para 9 seno v_para 2. 2: faa subtrai_a v_para 3. 3: faa adiciona_b v_para 1. dois_reg = ( N2, N, N, armazena_a, retorna_b, {subtrai_a, adiciona_b}, {a_zero} ), A correspondente funo computada a funo identidade, ou seja: <mon_ba, dois_reg>: N N tal que, para qualquer nN, tem-se que <mon_ba, dois_reg>(n) = n Noo Intuitiva (programa recursivo) A computao inicia na instruo identificada pelo rtulo inicial com a memria contendo o valor inicial resultante da aplicao da funo de entrada sobre o dado fornecido. Executa, passo a passo, testes e operaes na ordem determinada pelo programa, at que a expresso de sub-rotina resultante seja a expresso vazia, quando pra. O valor da funo computada pelo programa o valor resultante da aplicao da funo de sada ao valor da memria quando da parada.
Definio: Funo Computada por um Programa Recursivo em uma Mquina Seja M = ( V, X, Y, X, Y, F, T ), uma mquina e P um programa recursivo para M. A funo computada pelo programa recursivo P na mquina M, denotada por <P,M>: X Y uma funo parcial definida para xX se a cadeia (D0,v0)(D1,v1)... (Dn,vn) uma computao finita de P em M, onde
Neste caso a imagem de x dada pela funo de sada aplicada ao ltimo valor da memria na computao, ou seja: <P,M>(x) = Y(vn). Exerccio: Definir funo computada por um programa iterativo P em uma mquina M.
Relao de Equivalncia Forte de Programas: Um par de programas pertence relao se as correspondentes funes computadas coincidem para qualquer mquina. Relao Equivalncia de Programas em uma Mquina: Um par de programas pertence relao se as correspondentes funes computadas coincidem para uma dada mquina. Relao Equivalncia de Mquinas: Um par de mquinas pertence relao se as mquinas podem se simular mutuamente.
Permite agrupar diferentes programas em classes de equivalncia de programas cujas funes coincidem. Fornece subsdios para analisar propriedades de programas como a complexidade estrutural.
Definio: Igualdade de Funes Parciais. Duas funes parciais, f, g:XY so ditas iguais, ou seja, f = g, se e somente se, para cada xX (1) ou f e g so indefinidas, ou ambas so definidas com f(x)=g(x). Definio: Composio Sucessiva de Funes. Para uma dada funo f:SS, a composio sucessiva de f com ela prpria denotada usando expoente, ou seja, fn = f f ... f (n vezes).
P3: enquanto T faa (F) P4 R onde R def (se T ento F;R seno ) Razes para Considerar a Equivalncia Forte de Programas:
Permite identificar diferentes programas em uma mesma classe de equivalncia, ou seja identificar diferentes programas cujas funes computadas coincidem para qualquer mquina. As funes computadas por programas equivalentes tem a propriedade de que as mesmas operaes so efetuadas na mesma ordem, independentemente do significado dos mesmos (por qu?) Fornece subsdios para analisar a complexidade estrutural de programas.
Verifica-se que: Para todo iterativo, existe um monoltico equivalente fortemente. Para todo monoltico, h um recursivo equivalente fortemente. Iterativos Monolticos Recursivos. (Teoremas 2.14 a 2.18)
Equivalncia de Mquinas
Afirma-se que duas mquinas so equivalentes, se uma pode simular a outra e viceversa. Definio: Simulao Forte de Mquina. Sejam M = ( VM, X, Y, XM, YM, FM, TM ), e N = ( VN, X, Y, XN, YN, FN, TN ), duas mquinas arbitrrias. N simula fortemente M se e somente se para qualquer programa P para M existe um programa Q para N tais que as correspondentes funes parciais computadas coincidem, ou seja, <P,M>=<Q,N> Definio: Simulao de Mquina. Sejam M = ( VM, X, Y, XM, YM, FM, TM ), e N = ( VN, X, Y, XN, YN, FN, TN ), duas mquinas arbitrrias. N simula M se e somente se para qualquer programa P para M existe um programa Q para N e existem
c:XMXN d:YNYM
tais que <P,M>= d <Q,N> c Definio: Relao Equivalncia de Mquinas. Sejam M e N duas mquinas arbitrrias, ento o par (N, M) est na Relao Equivalncia de Mquina se e somente se M simula N e N simula M.
2. Mquinas Universais
Se for possvel representar qualquer algoritmo como um programa em tal mquina, ento esta denominada de mquina universal. As evidncias de que uma mquina universal: Evidncia Interna. Consiste na demonstrao de que qualquer extenso das capacidades da mquina universal proposta computa, no mximo, a mesma classe de funes, ou seja, no aumenta o seu poder computacional; Evidncia Externa. Consiste no exame de outros modelos que definem a noo de algoritmo, juntamente com a prova de que so, no mximo, computacionalmente equivalentes.
Ainda, nas mquinas de registradores a noo de programa e mquina apresenta-se de forma dissociada. Mais precisamente, a funo programa denida para realizar uma computao forma um conjunto de instrues rotuladas, que operam sobre a estrutura de registradores. A estrutura de controle executa instrues nos registradores que podem armazenar um nmero inteiro arbitrariamente grande. Alm dos registradores, o modelo composto por quatro operaes bsicas: incremento, decremento, salto condicional e parada. Essas operaes podem ser utilizadas de modo a compor as demais operaes necessrias para computaes mais complexas. A mquina de registradores abordada neste trabalho a NORMA, cujo nome signica Number theOretic Register MAchine.
essa representao, que deve ser feita por um agente externo antes e depois da computao do problema. Uma possvel soluo para realizar esta representao seria utilizar uma representao binria para o alfabeto utilizado na descrio do problema, de modo que uma posio vazia signica zero, uma posio preenchida signica um, e cada oito posies correspondem a um smbolo. Por praticidade, o alfabeto utilizado ser mais vasto uma vez que podemos considerar o conjunto de oito posies da la preenchidas por zeros e uns como se fosse uma nica posio representando um smbolo. A unidade de controle ou trabalho, como denida por Post, deve ser capaz de marcar uma posio da la (assumindo que esteja previamente vazia); desmarcar uma posio da la (assumindo que esteja preenchida); (iii) mover-se para uma posio direita ou esquerda; e (iv) determinar se a posio da la indicada pela posio da unidade de controle est marcada ou no.
As variveis
Yi, em nmero varivel mas finito, tambm no possuem tamanho nem limite fixos, e os smbolos pertencem ao alfabeto de entrada. Inicialmente, o valor de cada pilha Yi a palavra vazia, e seu comprimento igual ao comprimento da palavra corrente armazenada.
Desvio (ou Teste) e Desempilha. Determinam o fluxo do programa de acordo com o smbolo mais esquerda da palavra armazenada na varivel X (desvio) ou no topo da pilha Yi (desempilha). So desvios condicionais. Se o cardinal de n, ento existem n+1 arestas de desvios condicionais, pois se deve incluir a possibilidade da palavra vazia . X ler(X) denota uma leitura destrutiva, que l o smbolo mais esquerda de X ou do topo de Yi, retirando o smbolo lido.
Empilha. Empilha um smbolo s no topo da pilha indicada, ou seja, concatena o smbolo na extremidade da palavra armazenada na varivel Yi.
em um diagrama de fluxos, existe somente uma instruo de partida, mas podem existir diversas (zero ou mais) instrues de parada, tanto de aceitao como de rejeio; uma palavra de entrada aceita ou rejeitada, se a computao, iniciada com a varivel X contendo a entrada, atingir uma instruo aceita ou rejeita, respectivamente; em um desvio (respectivamente, desempilha), se X (respectivamente, Yi) contm a palavra vazia , ento segue o fluxo correspondente; caso contrrio, l o smbolo mais esquerda de X (respectivamente, no topo de Yi) e o remove aps a deciso de qual aresta do fluxo indica a prxima instruo. As seguintes concluses podem ser estabelecidas sobre o nmero de pilhas e o poder computacional das mquinas com pilhas:
Mquina Finita. Uma Mquina Finita, que corresponde a uma Mquina Sem Pilhas, possui um poder computacional relativamente restrito, pois no tem memria auxiliar para armazenar informaes de trabalho. Por exemplo, no existe Mquina Sem Pilha capaz de reconhecer um duplo balanceamento como em { anbn n 0 }. Mquina com Uma Pilha. A Classe das Mquinas com Uma Pilha, embora mais poderosa que a Classe das Mquinas Finitas, ainda possui uma capacidade computacional restrita. Por exemplo, no existe Mquina com
Mquina com Duas Pilhas. Conforme ser verificado adiante, a Classe das Mquinas com Duas Pilhas possui o mesmo poder computacional que a Classe das Mquinas de Turing ou de Post; Mquina com Mais de Duas Pilhas. A Classe das Mquinas com Mais de Duas Pilhas possui o mesmo poder computacional que a Classe das Mquinas com Duas Pilhas. Ou seja, para qualquer mquina com mais de duas pilhas, possvel construir uma equivalente com, no mximo, duas pilhas que realiza o mesmo processamento.
No-Determinismo
No-determinismo uma importante generalizao dos modelos de mquinas. No caso da Mquina de Turing, para o mesmo estado corrente e smbolo lido, diversas alternativas so possveis. Cada alternativa percorrida de forma totalmente independente. Isso significa que as alteraes de contedo na fita realizadas em um caminho no modificam o contedo da mesma nos demais caminhos alternativos.
A mesma idia vlida para a varivel X da Mquina de Post ou para as pilhas do Autmato com Pilhas.
Genericamente, no-determinismo interpretado como: a mquina, ao processar uma entrada, tem como resultado um conjunto de novos estados. ela assume um conjunto de estados alternativos, como se houvesse uma multiplicao da unidade de controle, uma para cada alternativa, processando independentemente, sem compartilhar recursos com as demais. processamento de um caminho no influi no estado geral, nem no smbolo lido dos demais caminhos alternativos. Para uma mquina M no-determinstica, uma palavra w pertence a: ACEITA(M) se existe pelo menos um caminho alternativo que aceita a palavra. REJEITA(M) se todas as alternativas rejeitam a entrada. LOOP(M) se nenhum caminho aceita a palavra e pelo menos um fica em loop.
Mquina de Turing Multidimensional. Neste modelo, a fita tradicional substituda por uma estrutura do tipo arranjo k dimensional, infinita em todas as 2k direes; Mquina de Turing com Mltiplas Cabeas. A Mquina de Turing com esta modificao possui k cabeas de leitura e gravao sobre uma nica fita. Cada cabea possui movimento independente. Assim, o processamento depende do estado corrente e do smbolo lido em cada uma das cabeas. Combinaes. Combinaes de algumas ou de todas as modificaes apresentadas. A combinao de algumas ou de todas as modificaes apresentadas no aumenta o poder computacional da Mquina de Turing. Por exemplo, uma Mquina de Turing No-Determinstica com Mltiplas Fitas e Mltiplas Cabeas podem ser simuladas por uma Mquina de Turing tradicional.
Hierarquia de Classes de Linguagens: Linguagens Regulares. Correspondem Classe das Mquinas sem Pilha.
So exemplos de linguagens dessa classe: alguns editores de texto, protocolos de comunicao. So linguagens muito simples, como as quais, por exemplo, no possvel fazer qualquer tipo de balanceamento de tamanho nopredefinido. A principal caracterstica dessa classe que o tempo de reconhecimento de uma palavra diretamente proporcional ao comprimento da entrada. Qualquer algoritmo especificado usando esse formalismo igualmente eficiente, em termos de tempo de processamento; Linguagens Livres do Contexto Determinsticas. Correspondem Classe dos Autmatos Determinsticos com Uma Pilha.
So linguagens mais complexas que as Regulares, mas ainda muito simples, com as quais, por exemplo, no possvel reconhecer a linguagem. Palavra_Reversa = { wwr w pertence a { a, b }* } Tempo de reconhecimento de uma entrada diretamente proporcional ao dobro do tamanho da entrada;
Linguagens Livres do Contexto. Correspondem Classe dos Autmatos NoDeterminsticos com Uma Pilha: Constituem uma classe de fundamental importncia, pois incluem linguagens de programao como Algol e Pascal. Algumas linguagens muito simples no pertencem a essa classe de linguagens como: Triplo_Bal = { anbncn n 0 } Palavra_Palavra = { ww w palavra sobre os smbolos a e b } Os melhores algoritmos de reconhecimento conhecidos possuem tempo de processamento proporcional ao tamanho da entrada elevado ao cubo; Linguagens Recursivas. Correspondem classe de todas as linguagens que podem ser reconhecidas mecanicamente e para as quais existe um algoritmo de reconhecimento que sempre pra para qualquer entrada. Inclui a grande maioria das linguagens aplicadas. Os reconhecedores de linguagens recursivas podem ser muito ineficientes, tanto em termos de tempo de processamento como de recursos de memria.
Supondo verdadeira a Hiptese de Church, pode-se afirmar que para: Funo Computvel: possvel construir uma Mquina de Turing (ou formalismo equivalente) que compute a funo; Funo No-Computvel: No existe Mquina de Turing (ou formalismo equivalente) que compute a funo.
Bibliografia
DIVERIO, Tiaraj Asmuz;
MENEZES, Paulo Blauth. Teoria da computao: mquinas universais e computabilidade. 2. ed. Porto Alegre: Sagra Luzzatto, 2004. MENEZES, Paulo Blauth.
ALVES, DBORA PANDOLFI Equivalncia de Mquinas Universais:Demonstrao, Anlise e Simulao So Leopoldo, julho de 2007 UCPEL/ESIN/BCC 053218 Teoria da Computao