Vous êtes sur la page 1sur 216

eona da Computacao

! •

Maquinas Universais e Computabilidade

Serie Livros Didaticos

_., _.

JiJ t

"

-.
.~ ~...

~ -..
.t"_.io

.._

GS

Teoria da Computa~ao
Maqulnas Universais e Computabilidade

SERIE lIVROS DIDATICOS Instituto de Informatica Universidade Federal do Rio Grande do Sui
Diretor

Prof. Philippe Olivier Alexandre Navaux


Vice-Diretor

Prof. Otacilio Jose Carollo de Souza


Comissao Editorial

Prof. Tiaraju Asmuz Diverio Prof. Clesio Saraiva dos Santos Prof. Ricardo Augusto da Luz Reis Prof', Carla Maria Dal Sasso Freitas Endereco UFRGS - Instituto de Informatica Av. Bento Goncalves, 9500 - Bloco IV - Bairro Agronomia Caixa Postal 15064 - 91501-970 - Porto Alegre, RS Telefone: 00 55 (051) 316 6165 Telefax: 00 55 (051) 319 1576 e-mail: informat@inf.ufrgs.br http://www.inf.ufrgs.br

Visite a paglna da Editora Sagra Luzzatto na internet

http://www.sagra-Iuzzatto.com.br atend imento@sagra-Iuzzatto.com.br

Tiaraju Asmuz Diverio


Doutorado em Ciencia da Cornputacao e Mestre em Ciencia da Cornputacao junto ao Programa de Pos-Craduacao em Cornputacao da UFRGS. Licenciado em Maternatica pela UFRGS. Professor Adjunto e Pesquisador do Departamento de Informatica Te6rica e Professor Orientador Habilitado de Mestrado e Doutorado do PPGC da UFRGS

Paulo Blauth Menezes


Doutor em Matematica pelo IST/Universidade Tecnica de Lisboa, Portugal. Mestre em Ciencia da Cornputacao e Licenciado em Matematica pela UFRGS. Professor Adjunto, Pesquisador e Chefe do Departamento de Informatica Te6rica do Instituto de Informatica da UFRGS.

Teoria da Computacao
Serle Livros Didaticos Instituto de Informatica da UFRGS Nurnero 5

Maquinas Universais e Computabilidade

"LuzzattO

~ditorqSagra

© de TiarajLi Asrnuz Diverio e Paulo Hlauth Menezes 1" edicao. 1'J'J'l Todos os direitos dcsta edi<;:50reservados ~:

Editora Sagra Luzzatto


Rua )050 Alfredo, 4413- Cidacle Haixa 'J0050-230 - Porto Alegre, RS- Brasil Fone (051) 227-5222 - Fax (051) 227-4438 www.sagra-Iuzzatto.com.br atenclimento@sagra-Iuzzatto.com.br Darcy Caetano Luzzatto editorial: Elisa Schein Wenzel l.uzz atto Capa: Carlos Alberto Gravina tlustrocoes: Maria l.ucia Rcccna Menezes
Editor: Supervisao

Dados Internacionais de Cetalogacao na r'ubltcacao (CIP) (Biblioteca do Instituto de Informatica da UFRCS, Porto Alegre, Divcrio. Tiaraju ASl11l1z Teoria da c.omputnc.io: ITljquin,ls univervais e cornpurabilfdade I Ti,lr<ljll Asmuz Diverio. Paulo Blauth Menezes. -- Porto Alegre: lnstituto de Inform:.tica da UFRGS: Edirom Scgm Luzzatto,llJ9(). ISBN B.I-241-0S9.l-.l 205 p.: il. (Serle Livros Didaticos, 1. Teorto cia co~puta(50. 1. MalelllJtic<1 cia computacao. 11.Titulo. 111.Serie.

RS)

n. 5)

2. Informatica I. Menezes, Paulo

teonca.
Blauth.

E proibida a reproducao total OU mesmo parcial desta obra sem 0 consentimento previo da Editora

Pr-efacio de Serfe

A serie Livros Didaticos do Instituto de Informatica da Universidade Federal do Rio Grande do Sui, e inspirada na ideia de desenvolver material didatico para disciplinas ministradas no Bacharelado em Ciencia da Computacao e Bacharelado em Engenharia da Computacao dessa universidade. Este material e resultante da experiencia dos seus professores no ensino e na pesquisa. Em seus primeiros volumes, a serie era voltada para Maternatica da Cornputacao e Processamento Paralelo. Foram publicados tres titulos: Fundamentos da Matematica Intervalar, Programando em Pascal XSC (estes dois primeiros titulos, foram resultado de pesquisas desenvolvidas dentro do Projeto ArInPar - Aritrnetica Intervalar Paralela, financiado pelo ProTeM-CC CNPq Fase Ill. 0 terceiro, Linguagens Formais e Automates foi 0 primeiro da serie que voltado para 0 objetivo de suprir livros-texto para as disciplinas basicas dos cursos de Bacharelado em Ciencia da Cornputacao (ou Informatica). 0 conteudo desses livros e baseado no program a das discipiinas do Bacharelado em Ciencia da Cornputacao da UFRGS, sendo adotado, tambern, por diversas Universidades de todo 0 Brasil.

o sucesso da experiencia com esses livros, bern como a responsabilidade que cabe ao Instituto de Informatica na formacao de professores e pesquisadores em Cornputacao, conduziu a ampliacao da abrangencia e a institucionalizacao da serie, que passa a ser de Livros Didaticos do Instituto de Informatica.
Neste novo enfoque, foi publicada a segunda edicao dos livros Linguagens Formais e Automates e Projeto de Banco de Dados de autoria, respectivamente, de Paulo Blauth Menezes e Carlos Alberto Heuser. Dando continuidade a serie, estiio sendo apresentados novos titulos: Teoria da Computacao: Maquinas Universais e Computabilidade, de Tiaraju Asmuz Diverio e Paulo Blauth Menezes (quinto numero) e Fundamentos de Arquiteturas de Computadores, de Raul Fernando Weber, todos professores do Instituto de Informatica da UFRGS.

Outros t.itulos ja se en con Lram em preparacao, em outras qualidade disciplinas livros tern em cornurn a preocupacao do ensino e da pesquisa em manter

abordando

assuntos

tratados Todos os

tipicas de Cicncia da Cornputacao desenvolvidos

ou Informatica,

nivel compativel

com a elevada

no ambito da UFRGS.

Comissao

Editorial Instituto

da Serie Livros Didaticos de Informatica da UFRGS

Maio de 1999.

Este livro

e dedicado:

it memoria de Wanner Diuerio, meu pai, Tiaraju.

a Maria

Fernanda, Maria Lucia e Maria Luiza Menezes, Paulo.

Pr efacio dos Autores


"Teoria da Computaciio: servir como um livro-texto

Maquinas

Uniuersais

e Computabilidade"

pretende em Ciencia

da Computacao ou em Informatica. 0 enfoque adotado neste livro nao e hist6rico (cronol6gicol mas didatico, visando a construcao dos conceitos de Teoria da

para disciplinas

dos cursos de Bacharelado

Cornputacao.
Sao abordados os prtncipais aspectos relativos

Teoria da Cornputacao

de

forma sistematizada e acessivel, fornecendo meios para um correto entendimento e aplicacao dos conceitos de procedimento efetivo, computabilidade e solucionabilidade de problemas. Trata-se semestres de um trabalho baseado na expenencia docente em diversos

no Curso de Bacharelado

em Ciencia da Cornputacao

da Universidade

Federal do Rio Grande do SuI. E destinado, principalmente, para um primeiro curso de Teoria da Computacao, sendo auto-contido e podendo ser adotado como bibliografia basica, Possui um texto simples, exemplos detalhados e exercicios em niveis crescentes de raCIOClI11O. Recomenda-se, como conhecimentos basicos de logica, teoria dos conjuntos e algoritmos. A carga horaria total recomendada pre-requisitos. livro fornece,

de 60 horas/aula.

Este

tarnbem , a base para u m a disciplina forrnalismo adotado sao consistentes

de Linguagens Formais. A notacao e 0 com 0 do livro "Linguagcns Formais e publicado na serie de Livros

Automatos" de Paulo Blauth Menezes, t.arnbern Didaticos do Instituto de Informatica da UFRGS.

o prirneiro capitulo inicia com uma breve revisao hist6rica do surgimento e desenvolvimento dos conceitos basicos que serao utilizados nos demais capitulos.
Logo a seguir, no capitulo dois, e construido 0 conceito de equivalencia de programas. Para tanto, e necessario que se formalize os conceitos de programas e de rnaquina, para que, entao, funcoes cornputaveis. No terceiro fundamentar Registradores capitulo estudo sejam expostos os conceitos de computacao e

e introduzido 0 conceito de Maquina Universal, para de modelos como: Maquina de Turing, Maquina de Maquina de Post e Maquinas com Pilhas. Nesse contexte

Norma,

sao introduzidos formalismos equivalentes e modificacoes sobre as maquinas universais, como 0 nao-doterrninismo, mas que nao alter am a classe de funcoes computadas. linguagens. Aborda-se, ainda, processamento de funcoes e reconhecimento de Por fim, apresenta-se capitulo de Kleene, apresenta a Hip6tese de Church. as funcoes recursivas. de trcs se constitui Aborda-se numa as funcoes simples e descrever

o
natural

quarto

recursivas juntamente

onde a cornposicao e rninimizacao

funcocs

naturais para

com a recursao

forma compacta

para definir muitas

funcoes e suficientemente

poderosa

qualquer funcao cornputavel. Descreve-se, tam bern, a classe das funcoes numericas cornputaveis definidas recursivamente e a questao das formas de avaliacao da de Juncoes por valor ou por vari avel. trata da computabilidade de problemas, onde propriedades. e
0

o quinto
como
0

capitulo solucionabilidade Problema

e seus Iimites at.raves do estudo sao definidas as classes de alguns de Post. problemas tipicos,

solucionabilidade

e suas

Sao descritos

da Parada

da Correspondencia

Foram maquinas

desenvolvidos simuladores, programas que emu lam algumas das abstratas descritas neste Iivro, Eles sao ute is para: ensmo, do funcionamento das maquinas, elaboracao de exercicios e

demonstracoes

correcao dos mesmos. Esses simuladores, juntamente com material de apoio ao professor e ao aluno, encontram-se disponiveis na pagina do Grupo de Matematica da Cornputacao http://www.inf.ufrgs.brl-hgmc/ Os autores • agradecem: da UFRGS, no seguinte endereco da (ou por e-mail [diverio, blauth}@inf.ufrgs.brl. WEB:

aos colegas do Departamento de Informatica 'I'eorica do Instituto de Informatica da Universidade Federal do Rio Grande do SuI, onde este livro foi elaborado, pelas sugestoes dadas, especialmente aos professores Vieira Toscani, Leila Ribeiro Korff e Vanderlei Moraes Rodrigues; Laira


aos bolsistas Caroline Carbonel Cintra, Thiago Moesch, Ingrid de Vargas Mito e Aline Vieira Malanovicz pelo trabalho de edicao e correcao do texto; Lucia Recena Menezes pelas figuras e ilustracoes; aos alunos das turmas de Teoria da Comput.acao do Curso de Bacharelado em Ciencia da Comput.acao que colaboraram na revisao do livro e pel as sugestoes dadas, especialmente os da turma 1998, pelo trabalho de correcao dos exercicios; do primeiro semestre de

a Maria

• a FAPERGS

e ao CNPq, que tern financiado, atraves de boIs as de pesquisa (Iriiciacuo Cient.itir a l, os alunos que colaboram no Grupo de Matematica da Cornputacao (GMC) da UFRGS; ao CNPq, a CAPES e a FAPERGS pelos auxilios financeiros aos projetos de pesquisa que viabilizaram a realizacao deste e outros trabalhos;

Viviane e a Maria Fernanda nossos amigos e colegas.

juntamente

com nossos

familiares.

Aos

Um agradecimento especial ao Instituto de Informatica da UFRGS que tem apoiado esta serie de Lioros Didaticoe, e a Pro-Reitoria de Pesquisa da UFRGS, que sempre tem apoiado nossos projetos e, em especial, apoiou financeiramente publicacao deste livro. Tiaraju Asmuz Diverio Paulo Blauth Menezes Maio de 1999 a

Sumar io
1 Introducao
1.1 Notas

e Conceitos Basicos
Histoncas Basicos . .

..........

1.2 Abonlagcm 1.3 COnCeltDS 1.4 Excrcicios ..

. .. -\ 4 7

2 Programas,
2.1 Prograrnas
1

Maquirias
.

e Computacoas
..

..

..

9
. ... 10 .12 . ............. 15 18 20

1.1 Progruma

Monolitico

2.. 2 Programn Itcrativo .. ~.I 3 Program a Rccursivo .


2.2 Maquinas 2.3 Cornpuracocs 2.3.1 2.3.2 2.4.1 Computacao Funcao e Funcocs .. .. e Maquinas .. . . Computada Fortr Cornputadas .

... 23
..23 . . . 29 ,I 32 .40

2.4 Equivalencias Equivalcncia

de Programas

de Programas .

2.4.2 Equivalcncia
2.4.3 Fquivalcncia

de Prngrarnas.
de Maquinas

.
.

40
.41

2.) Verificacao
2.5.1 2.).2 2.5.3

da Lquivalencia Rotuladas

Forte de Programas
Composras Monolftieos

Maquina de Tracos
Instru<;oes Equivalencia . Forte de Programas .. .

41
A5 ... 'i0 57 ...... 5S

2.6 Conclusao 2.7 L:xt'rc\cios.

3 Maqui nas Universais


3.1 Codificacao 3.3 Maquina 3.3.2 3.3.3

...
Estruturados .. . .. .

.65 .68
70 72

de Conjuntos como

3.2 Maqurna de Rcgistradores - Norma.


Norma Maquina Universal 3.3.1 Opera",,", Valorcs Dados e Te>1CS Nurncricos Estruturados lndircio . e Recursao . de Caractercs lntuitiva.. como Maquina .. como como Reconheccdores Processadores de Turing de Linguagcns de Funcoes e Norma. .. Foimal.. de Turing de Turing

...... 73
.. 76

..77
81 ... S1

3.3.4 Enderecamento 3.3.5 Cadeias 3.4 Maquina 3.4.1 3.4.' .,.4.) 3.4.2 No,ao Modclo Maquinas Nocao de Turing.

83 ...8.'
... 84 .... 87 .91 . ... 97

3.4.4 Maqumas

3.4.6 Equivalencia

entre as Maquinas

:U Outros

Modelos

de Maquinas de Post. com Pilhas .

Universals .

.... 101 .. .. 102 . .... 110 .. .. 117 . .. e 11Direita , .. . .... . .. .. 121 122 124 124 125 126 128 129 135

3.5.1 Maquina 3.5.2 Maquina 3.5.3 Automate 3.6 Modificacoes 3.6.2 Maquina 3.6.4 Outras 3.7 Hierarquia 38 Hip6tesc 3.9 Exercfcios.

com Duas Pilhas . sobre as Maquinas

Univcrsais .

3.6.1 Nao-Determinisrno de Tunng modificacoes de Classes de Church ... 3.6.3 Maquina de Tunng

.
com Fita Infinira com Multiplas sobre a Maquina

a Esquerda
Fitas ..
de Turing.

de Maquinas ...

4 Funcoes Recursivas
4.1 Linguagem 4.1.1 Funcoes

..
.' , ... Lambda .. Lambda

Lambda .. e Funcionais e Introducao de urn Terrno .. . e Linguagern

. .... 137
..... 137

4.1.2 Motivacao 4.1.3 Tenno 4.1.4 Sernantica 4.2.1 4.2.2 4.2.3 Composicao Recursao

.
.. . ...

139
140 142 143

4.2 Funcoes Recursivas

de Klecne .

. .... 143 ..... 144 . Parcial de Bird .. e Total. . 145 147 151 ..... 154 . .. . 158 161 162

Minimizacao

..

4.2.4 Funcao Recursive 4.3 Dcfinicocs Recursivas

.. .. 1'\0

4.3.1 Classe das Funcoes Dcfinidas 4.3.2 Semannca 4.3.3 Traducao 4.4 Irnportancia 4.5 Exercfcios .. de Programas

Recursivamente

." ..
..

..............

de urna Funcao Definida Recursrvarncnte em Definicocs Recursivas

das Funcoes Recursivas ..

5 Computabilidade
5.2 Problemas 5.4 Problema 5.5 Principio 5.6 Problema 5.8 Problema 5.10 Exercfcios

..
de Problemas

165 .'
..... 167 . .... 169 .170 .. . .... 172 ..... 174 .176 .. de Post. .. ..... 178 .. . .. .. ... Conceitos. .. .. 182 187 188 191 .

5. I Classes de Solucionabilidade
de Decisao 5.3 Codificacao de Programas. da Auto Aplicacao da Reducao da Parada. de Decisao da Correspondencia ..

5.7 OUtlOS Problemas 5.9 Propriedades ..

da Solucionabilidade

6 Cone! us6es ....


6.1 Resumo dos Principais 6.2 Contribuicoes da Teoria da Computacao

..... 192 . .... 194 197

7 Bibliografia ... Indice Remissivo . ..

201

o=
*

"Hti um teorema conhecido que diz que qualquer computador emular qualquer outro computador"
explicar para impedir
0

e capaz

de

Astronauta Frank Poole ao principio usado por Halman (computador HAUastronauta Bowman I 0 Mon6lito de executar qualquer ordem que arue acasse a humanidade da Seri e iniciada por 2001 _ Uma Odisseia no Espaco Arthur C. Clarke

Do livro 3001 - A Odisseia Final

1
Este

Irrtrodueao e Conceitos Basicos


capitulo imcia com uma breve hist6ria do surgimento e do dos conceitos, resultados e formalismos alguns nos quais a Teoria da geral adotada basicos que sao

desenvolvimento Cornputacao

e baseada.

A seguir, e apresentada

a abordagem conceitos

nesta publicacao, Por fim, sao introduzidos us ados ao longo de todo 0 texto.

....................................

Tcori« dil COllljilllil\,cllI:

M,i'l"illi/s

Univcrs.ii;

c COIIIIIIII"hilid",/c

- T Divcrio
.

& P. BIi/1I1" Mmc:l'.\

1.1 Notas Hist6ricas


cornputacao. Sua origem e remota, tendo exemplos na antiga Grecia (seculo III A.C., no desenho de algoritmos por Euclides) e Babilonia (com estudos sobre complexidade de sistemas e reducibilidade computacionais de problemas). Ciencia da Cornputacao

conhecimento

sistematizado

relativo

0 interesse
aplicando

atual

possui

duas

enfases: ideias fundamentais

e modelos computacionais (enfase pratica),

(enfase teorica) e projeto a teoria a prat.ica.

A enfaae teorica da Ciencia da Cornputacao diversidade de campos como, por exemplo, na

teve 0 seu inicio em uma grande biologia (modelos para redes de na m atematica (logical, na e em outros. A partir destes

neuronios), na eletr6nica (teoria do chaveamcnto), lingiiistica (gramaticas para linguagens nat.urais) cstudos, de surgiram

os modelos que sao hoje a base da Teoria da Cornputacao.

No imcio do seculo XX, diversas pesquisas foram desenvolvidas com 0 objetivo definir um modelo computacional suficientemente generico, capaz de qualquer Funciio Comput6.uel. Um marco inicial da Teoria da Cornputacao

implementar

trabalho

de David Hilbert.

denominado de Entscheidungsproblem ([HIL1900]), 0 qual consistia em encontrar um procedimento para demonstrar se uma dada formula no calculo de predicados de primeira ordem ronde a quantificacao e restrita as variaveis que denotarn elementos de conjuntos) era valida ou nao. A procura de Hilbert por tal procedimento se justifica pelo fato de que se acreditava que todo problema bem definido poderia ser resolvido, possivelmente pel a dernonstracao de falsidade. Admitindo-se que essa tese fosse verdadeira, 0 fracasso na resolucao de um problema err6neo. Entretanto, Incompleteness em 1931, Kurt GOOel publicou 0 trabalho denominado de Theorem (Teorerna da Nao-Completude), onde demonstrou que tal seria devido a escolha insuficiente de hipotcses ou a um raciocinio

problema (mecanizacao do processo de prova de teoremas) nao tinha solucao (lGOD65]). Provou que um determinado sistema formal bem definido e consistente (isto e, onde nao existe a possibilidade de "se A, entao nao A"), 0 qual define a multiplicacao suficiente e adicao no conjunto dos numeros para provar se toda a sentenca importante nesse sistema de

Uma caracteristica

do trabalho

e ou GOOel e 0

naturais,

nao era

nao um teorema. uso feito por ele de

numeros naturais para codificar simbolos, formulas e sequencias de formulas. Na prova do Incompleteness Theorem, afirmacoes sobre formulas podiam ser representadas como determinadas classes de funcoes. Dessa correspondencia entre a computabilidade efetiva de funcoes procedimentos efetivos para a solucao de problemas. primitivas recursivas Embora nao tenha por GOOel foi a das funcoes definidas forma, notou-se a e a oxistcncia de anteriormente por

A classe de funcoes usada sido proposital, Godel foi

Dedekind em 1888 ([DED1888]).

................................................................................................................................................................................

Capitulo / - Introductio

e Conceitos

Basicos

(aparentemente) Procedimento

primeiro

a identificar

urn formalismo

para definir a nocao de que problema

Efetiuo. usou dois formalismos para mostrar


0

Em 1936, Alonzo Church de Hilbert nao tern solucao: • •

Calculo Lambda (Church, 1936) ([CHU36]); Funcoes Recursivas (Kleene, 1936) ([KLE56]). de ambos os formalismos a sugerir com
0

De fato, a equivalencia Este fato levou Church

que

e conhecida

foi verificada

por Kleene (1936). compuuiuel

como a Hip6tese de Church: usual" (Church).

"Sao caracterizacoes quanto consistentes

tao gerais da nociio do efetiuamente


0

entendimento

intuitiuo

A Hip6tese de Church e assumida como verdadeira em todos os estudos relacionados com a Teoria da Cornputacao. Note-se que nao e demons travel pois e fundamentada em uma nocao intuitiva (nao-forrnal) do que e efetivamente cornputavel Separadamente formalismo para de Church, a representacao Alan Turing propos, em
0

1936

([TUR36J), 0 trabalho

urn de

de procedimentos por ter sido computacional",

efetivos.

Turing e particularmente significativo programas escritos para uma "maquina

primeiro a identificar como nocoes intuitivas

de efetivamente computavel. A intencao do modelo de Turing, denominado Maquina de Turing, foi simular, tanto quanta possivel, as atitudes humanas relacionadas

a cornputacao.

Desde entao, muitos outros formalismos foram propostos, provados possuirem (no maximo) 0 mesmo poder computacional Recursivas (ou 0 Calculo Lambda) como, par exemplo: • • • • • • Maquina de Turing (936);

os quais, sao das Funcoes

Maquina Norma (1976) Sistema Canonico de Post (1943); Algoritmo de Markov e a Linguagem

Snobol (1954); - 1964). efetivo e, portanto, como os todos os descrcver

Maquina de Registradores (1963); RASP (Random Access Stored Programs

Assim, define-so programa que pode ser descrito citados acima. procedimentos possiveis usando

como sendo um procedimento qualquer destes dos formalismos formalismos permite

equivalentes

Ou seja, qualquer

que podem ser executados

em um computador.

Tcori., do C(lIII/}{{IO(Jio ................................................

Miiquin.:«

Univcrs.ns

Cnnunnabilidad«

- T. Divcrir: & P. Blanth Mrnrr«

1.2 Abordagem
A abordagem Cornputacao sistemas associacao desta publicacao modernos. desenvolve os principais aspectos de Teoria da proximas da Ciencia dos e da combinando dos problemas abordagens abstratos hist6ricas com abordagens tipicos

computadores

0 objetivo e permitir
com os problemas

um facil entendimento

Computacao atua!. Assim, por exemplo, questoes como program as e maquinas ficam claramente caracterizadas e diferenciadas e sao adequadamente tratadas no contexto de Maquinas Universais, juntamente com modelos tradicionais como a Maquina de Turing. Parte desta abordagem voltada para os sistemas computadores atuais e inspirada, entre outros, no trabalho de Richard Bird em Programs and Machines - An Introduction to the Theory of Computation ([BIR7611.

1.3 Conceitos Basicos


Linguagem e um conceito fundamental no estudo da Teoria da Cornputacao, pois trat.a-se de uma forma precisa de expressar problemas, permitindo um desenvolvimento formal adequado ao estudo da computabilidade. Mais precisamente, em capitulos subseqi.ientes, sera estudada a solucionabilidade de um problema, analisando-a como a investigacao da cxistencia de um algoritmo que determine problema. se uma palavra pertence ou nao

linguagem

que traduz

esse

o dicionario
"0

Aurelio ([FER84j) define linguagem articulada


(JU

como:

uso da palacra

escrit a como meio de expressao e entre pessoas".

comu.nicacao

Entretanto, esta definicao nao e suficientemenie precisa para perrnitir 0 desenvolvimento maternat.ico de uma teoria baseada em linguagens. Assim, serao feitas, a seguir, algumas definicoes formais, necessarias aos estudos posteriores. As definicoes que seguem sao construidas usando como base a nocao de Simbolo ou Caractere. Portanto, e uma entidade abstrata basica, nao sendo definida formalmente. usados. Letras e digitos sao exemplos de simbolos freqi.ientemente

Definicao 1.1 Alfabeto.


UmAlfabeto Portanto: •

e um conjunto finito de simbolos

ou caracteres.

um conjunto infinito iuio e um alfabeto:


0

conjunto vazio

e um

alfabeto.

..................................

Capitulo

J - lntroductio
_-

e CUI!Ceit()8 Basicos

EXEMPLO 1.1 Alfabeto.


a) Os seguintes {a, b, c} conjuntos sao exemplos de alfabetos: vazio) conjuntos ruio sao exemplos de alfabetos: naturais)
::J

o (conjunto
b) Os seguintes

N (conjunto dos numeros

{a, b, aa, ab, ba, bb, aaa, ... } Def'iriicao 1.2 Cadeia de Simbolos, Palavra.

a) Uma Cadeia de Simbolos sobre um conjunto simbolos (do conjunto) justapostos; b)

e uma

sequencia

de zero ou mais

Uma Palaura e uma cadeia de simbolos finita. Portanto, E uma cadeia sem simbolos

e uma

palavra valida e

simbolo:

denota a cadeia oazia ou palaura um alfabeto, en tao:


0

cazia.

Se I representa I* I+ denota

conjunto de todas as palavras

possiveis sobre I

denotaI*-{E} ou Tamanho de uma Palavra. w, representado por

Definicao 1.3 Comprimento

Comprimento ou Tamanho de uma palavra numero de simbolos que cornpoem a palavra. Definicao 1.4 Prefixo, Sufixo, Subpalavra.

I w],

Urn Prefixo (respectivarnente, Sufixo) de uma palavra e qualquer sequencia inicial (respectivamente, final) de sirnbolos da palavra. Uma Subpclaura de uma palavra

e qualquer e uma

sequencia de simbolos contigua da palavra.

::J

EXEMPLO 1.2 Palaura, Prefixo, Sufixo, Tamanho.


a) abcb palavra sobre
0

alfabeto {a, b, c}

b) SeI={a,b},entao: I+ = {a, b, aa, ab, ba, bb, aaa, ... }

1:* = {E, a,
c)

b, aa, ab, ba, bb, aaa, ... }

I abcb I

=4 e

d) Relativamente

I EI = 0 a palavra

abcb, tem-se que: sufixos;

E, a, ab, abc, abcb sao os prefixos; E, b, cb, bcb, abcb sao os respectivos e) Qualquer prefixo ou sufixo de uma palavra

e uma

subpalavra.

Teotu,

da

C()IIII}/{IL1~'ii(}:

!v1tI{jllll/(/S

Univcrsais

t'

Coniputntnlidad«

- 1'. Divcrio

& P. BIolith

Menezes

Defiriicfio 1.5 Linguagem Formal.


Uma Linguagem Formal ou simples mente Linguagem e urn conjunto de palavras sobre urn alfabeto.
Q

EXEMPLO 1.3 Linguagem Formal.


Suponha
0

alfabeto

= {a, b}. Entao:


0

a) 0 conjunto sobre

vazio e

conjunto 0
oF

formado

pela palavra

vazra

sao linguagens

I. Obviamente,

{E };

b) 0 conjunto de palindromos (palavras para a direita e vice-versa) sobre Assim: E,a, b,aa,bb,aaa,aba, sao palavras desta linguagem.

que tern a mesma leitura da esquerda e urn exemplo de linguagem infinita.

bab, bbb,aaaa, ...

Defirricao 1.6 Concatenacao de Palavras.


A Concatenacao de Palauras ou simples mente binaria, definida sobre uma linguagem, formada pel a justaposicao uma palavra as palavras propriedades
a)

Concatenacao e uma operacao


a cada par de palavras am com a segunda. satisfaz as seguintes

a qual associa da primeira

Uma concatenacao

e denotada

pela justaposicao

dos simbolos que represent

componentes. A operacao (suponha v, w, t palavras):

de concatenacao

Associatiuidade.
v(wt)

= (vw)t
a. Esquerda
e

b)

Elemento Neutro
EW

a Direita.

= W = WE

Como a concatenacao de palavras e uma operacao associativa, e usual omitir os parenteses. Assim, v(wt) ou (vw)t pode ser denotado simplesmente por vwt. Uma operacao de concatenacao definida sobre uma linguagem L nao e, necessariamente, nao fechada sobre L, ou seja, a concatenacao uma palavra de L. de duas palavras de L

e,

necessariamente,

EXEMPLO 1.4 Concatenacao de Palauras.


a) Suponha
0

alfabeto

= {a, b}. Ent.ao, para as palavras

v = baaaa e

= bb,

tem-se que: vw = baaaabb VE= v = baaaa b) Suponha palavras Portanto, a linguagem L de palindromos sobre I = {a, b}. A concatenacao das aba e bbb resulta na palavra ababbb a qual nao e palindromo. a operacao de concatenacao nao

e fechada

sobre L.

............ --_

Capitulo 1 - Lntrod ucao e Concertos

Basicos

Definicao 1.7 Concatenacao Sucessiva de uma Palavra.


A Concatenacao Sucessii.a de u.ma Palaura (com ela mesma) ou sirnplesrnente Concatenacao Sucessiua, representada na forma de urn expoente (suponha w uma palavra): wn on de

e 0 numero

de concatenacoes

sucessivas binaria, como

e definida indutivamente segue:


wO

a partir

da opcracao

de concatenacao

wn = wwn-1, para n > 0


EXE1vfPLO

:.J

1.5 Concatenacao

Sucessiua.

Sejam w uma palavra

e a um sfmbolo. Entao:

w3 = www
w1 =w a5 an

= aaaaa = aaa ...a

(0

sfmbolo a repetido n vczes)

1.4 Exercicios
Exercicio 1.1 Elabore uma linha de tempo sobre
0

desenvolvimento

do

conceito de funcao cornputavel. Exerclcio Exerclcio 1.2 1.3 Qual Em


0

marco inicial da Teoria da Computacao? que se consistia


0

Entscheidungeproblem Exerclcio 1.4

e pOI'que ele

e sem

problema

de

Hilbert

solucao? de Church e por que ela nao e

Qual a import.ancia

da Hip6tese

dernonstravel? Exercicio a) b) c) d) e) 1.5 Marque os conjuntos naturais primos que sao alfabetos:

Conjunto dos numerus Conjunto dos numeros

Conjunto das letras do alfabeto brasileiro Conjunto Conjunto dos algarismos dos algarismos ar abicos romanos

[ [ [ [

1 1 1 1

[1 [1 II II [1

D
g) h) i)

Conjunto {a, b, c, d} Conjunto das partes de {a, b, c} Conjunto das vogais Conjunto das letras gregas

.....•.•.•...•..•.••......................••.........................•.•....••.•••............................•............................••..........................•........

Teoria da Computacii,»:

Maquinas

Universais

(!

Computabilidad«

- T. Divcrio

& P. Blauth Menezes

Exerclcio palavras: a) teoria

1.6

De os possiveis prefixos e sufixos de cada uma das seguintes

b) universidade c) d) e)

aaa abccba abcabc


negando as de palavras: seguintes

Exercicio 1.7 Exemplifique, comprovando ou propriedades algebricas da operacao de concatenacao a) Fechamento b) Comutatividade c) Elemento neutro

d) Associa tividade e) Elemento Exerclcio inverso Quando se pode' dizer que a estrutura algebrica da operacao da operacao de

1.8

concatenacao nos naturais?

sobre uma linguagem

e analoga a estrutura

de adicao

Programas, Maquirras e Computacoes


Neste capitulo

maquina, de cornputacao e do que e cornputavel em uma rnaquina entre formalismos como, equivalencia e simulacao.

introduzida

a forrnalizacao

das nocoes

de programa,

de

e de relacoes

Considerando que diferentes computadores podem ter diferentes arquiteturas e que os diversos tipos de linguagens de prograrnacao aparecem em abundancia, a forrnalizacao sao descritas Inicialmente, dos conceitos em modelos de programa maternaticos e de maquina simples, nao sao base ad as em essenciais urn rapido permitindo qualquer linguagem ou computador entendimento real. Assim, suas caracteristicas

de suas semantic as e facilitando

a dernonstracao
0

de resultados. de

e introduzido

conceito de programa compostos

qual pode ser vis to como uma classificacao

urn conjunto de operacoes controle. 0 tipo de estrutura de programas • como segue:

e testes

de acordo com uma estrutura determina

de controle associada

monolitico:

baseada em desvios condicionais e incondicionais;

• •

iterativo: possui estruturas de iteracao de trechos de programas; recursivo: baseado em sub-retinas recursivas.

Tcnria c/a C()IIIIJII/U\'(/o: ......................................................

10

,Mt/tlilil/o.\'

Univcrsui: (' C'oIlI/JlI{u!J;lidllt!e


. .

1'. Diven» &

P. BIolith

MCJ/c:.es

A seguir, e introduzido 0 conceito de nuiquina a qual interpret a as programas de acordo com os dados fornecidos. Uma maquina e capaz de interpretar urn programa constitui Para programa) desde que possua uma interpretacao
0

para cada opcr acao au teste que (capaz da maquina de interpretar para
0

programa.

urn dado programa

e possivel

e uma

dada

maquina

este

definir cornputacao

e funcao computada.

Uma computaciio programa,

considerando urn valor inicial. Uma [uncao computada e uma funcao (parcial) induzida a partir da maquina e do programa dados, a qual e definida sempre que, para urn dado valor de entrada, existe urna cornputacao finita (a maquina importantes para).

e, resumidamente,

urn hist6rico

do funcionamento

Funcoes computadas permitem introduzir algumas equivalencias de programas e maquinas como segue: • • • programas computadas equivalentes fortemente: coincidem para qualquer se as maquina;

nocoes de

correspondentes funcoes

funcoes computadas

programas equiualentes: se as correspondentes coincidem para uma dada maquina; maqui.nas Relativamente equiualentes: aos se as maquinas

podem simular fortemente,

umas as outras. verifica-se que

programas

equivalentes

program as recursivos sao mais gerais que os monoliticos os quais, por sua vez, sao mais gerais que os itcrativos, induzindo uma hierarquia de t.ipos de programas. Adicionalmente, tern-se que: • • existe urn algoritmo para determinar se dois programas mor:.oliticos (respectivamente, iter ativos) sao ou nao equivalentes fortemente; ate 0 momento, nao e conhecido se existe ou nao um mostrar oquivalencia forte de dois program as recursivos. algoritmo para

2.1 Programas
Urn programa que capacitam pode ser descrito como um conjunto sucessivamente com
0

estruturado certas

de instrucoes basicas estes

uma maquina

a aplicar

operacoes

e testes sobre os dados iniciais fornecidos, dados numa forma desejavel.

objetivo

de transformar

Portanto, um programa deve explicit.ar como as operacoes ou testes devem ser compostos, ou soja, um program a deve possuir uma estrutura de controle de oper acoes e testes. N as linguagens do controle, de progr.imacao com destaque para atuais, existem varias as quais forrnas de estruturacao sao formalizadas a) Estruturacao nao possuindo adiante, Monolitica. mecanismos as seguintes,

na forma de tipos de programas:

E baseada

em desvios condicionais subdivisao

e incondicionais, ou recursao,

explicitos de iteracao,

...........................................................................................................................................................................

Capitulo 2 - Progrtunas,

Moquinas

e Com.p u tacoes

11

b) Estruturaciio Iterativa. Possui mecanismos de controle de iteracoos de trechos de programas. Nao permite desvios incondicionais. c) Estruturaciio recursivas. Recursao e uma forma indutiva nao permite desvios incondicionais. Independentemente da cstruturacao como segue:

Recursiva. Possui mecanismos

de estruturacao

em sub-rotinas 'I'arnbern

de definir programas.

do controle, duas ou mais operacoes

ou

testes podem ser compostos

a) Composicao Seqiienciol. A cxecucao da operacao ou teste subsequente somente pode ser realizada ap6s 0 encerramento da execucao da operacao ou teste anterior. b) Composiciio Niio-Determinista. escolhido para ser executada. denominada de escolha, Uma das operacoes ou testes A cornposicao nao-determinista compostos tarnbem

e e

c) Composiciio Concorrente. As operacoes ou testes compostos podem ser executados em qualquer ordem, inclusive simultaneamente. Ou seja, a ordem de execucao

e irrelevante.

A interpretacao considerada para a cornposicao nao-determinista que objetiva explorar os limites da capacidade de solucionar problemas

e aquela como em

[HOP79] e [MEN98]. Ou seja, se existe uma escolha que resolve 0 problema (rnesmo que as demais nao tenham esta capacidade), entao se afirma que 0 programa resultante da cornposicao e capaz de resolver 0 problema. Neste texto nao sao consideradas as composicoes concorrentes ou, mais precisamente, composicoes concorrentes composicao nao-determinista, e possivel

verdadeiras.
simular

verdadeira, denominada de intercalaciio. Na intercalacao, uma concorrencia e representada como cornposicoes nao-deterrniriistas de todas as cornbinacoes possiveis de cornposicao seqi.ienciais, garantindo, portanto, que a ordem de execucao referentes Para das
0

Entretanto, usando a uma nocao de concorrencia

e a

irrelevante. concorrencia

Uma

boa referencia

sobre

estes

e outros

aspectos

[WIN95]. nao e neccssario os quais suponha saber qual a natureza as instrucoes, por: que existam precis a Eles sao de

estudo de programas, e dos testes

operacoes

constituem

identificados

pelos seus nomes. Portanto

dois conjuntos

identificadores:
a)

de operacoes e de testes. Eles sao descritos F,G, H,.

Identificadores de Operccoes. Identificadores de Testes.


Note-se que urn teste

b)

uma

operacao valores

de urn tipo especial ou seja

a qual produz

somente

urn dos dois possiveis

verdade,

verdadeiro ou {also,

Troria do COIlI/)I{la{iio: Maquinas Universais e Comnutabilidad« - T Diverio & P. Blauth Meneses •..••.••.•.••••....•................••.••.....•......••..••..••.•.•••...•...•.•...............•............•.....•..•.....................•.•.......•.........•.................

12

usualmente denotados por V e f, respectivamente. operacao que nao faz coisa alguma, denominada: operacao oazia , denotada No que segue,

Existe,

ainda

urn tipo de

pelo simbolo

e suposto

conhecimentos

basicos de algoritmos.

2.1.1

Programa Monolitico

Urn programa monolitico incondicionais, nao fazendo

e
uso

estruturado explicito

usando desvios de mecamsmos

condicionais e auxiliares de

programacao que permitam uma melhor estruturacao subdivisao ou recursao. Portanto, a l6gica e distribuida que constitui Uma monoliticos
0

do controle como iteracao, por to do 0 bloco (monolito) de especificar programas

programa. comuns e tradicionais atraves de [luxogramas, Informalmente, urn fluxograma

das form as mais

urn

diagrama geometrico construido element ares denominados partida, pode ser omitido, resultando

a partir de componentes parada, operacao e teste,

(fluxogramas) introduzidos na

Figura 2.1. No caso da operacao vazia

v,

retangulo

correspondente

operacao

simplesmente

em uma seta.

Figura

2.1 Componentes

elementares

de urn fluxograma

•..............................•.......................................................•.•.•.••...........................•......•.•.•••.••••••••••••••••.•.••.................•

Capitulo 2 - Progromas,

Mtiquiruis

e Computacoes

13

Figura

2.2 Fluxograma

EXEMPL02.1

Fluxograma.
na Figura 2.2. Voce

Urn exemplo de fluxograma e apresentado interpretar 0 fluxo de controle reprosentado?

capaz

de

Alern da represent.acao diagrarnatica introduzida, urn fluxograma pode ser denotado na forma de texto, usando insirucoes rotuladas. Como 0 pr6prio nome indica, cada instrucao rotulada rotulada pode ser como segue:

identificada

por urn r6tulo. Uma seguida de

instrucao urn desvio de

a) Operacao, Indica a operacao a ser executada incondicional para a instrucao subsequente. b) Teste. Determina urn teste. No caso rotuladas, de urn fluxograma

urn desvio condicional, ou seja, que depende da avaliacao

uma parada

denotado usando

como

urn conjunto

de instrucoes para urn

especificada

urn desvio incondicional

r6tulo sem instrucao

correspondente.

EXEMPLO 2.2

Fluxograma como um Conjunto de Lnstrucoes Rotuladas.


da Figura 2.2 pode ser traduzido 2.3, supondo
1. Note-se

fluxograma

pelo conjunto que a parada

de instrucoes inicia pela


0

rotuladas instrucao

represent ado na Figura correspondente


0

que a cornputacao

ao r6tulo r6tulo 5.

e especificada

usando urn desvio para

................................................................................................................................................................................

14

Teoria da Computaciio: Miiquinas Universais e Computabilidade ~ T. Diverio & P. Blauth Menezes

1: 2: 3: 4:

fa<;a F va_para 2 se T1 entao va_para G fa.;:a va_para 4 se T2 entao va_para

1 senao va_para 5 senao va_para


rotuladas

Figura 2.3 Instrucoes

A definicao formal de program a monolitico melhor descrita usando a notacao de instrucoes rotuladas do que diagramas geometricos, Inicialmente sao introduzidas as definicoes de rotulo e instrucao rotulada.

Definicao 2.1

R6tulo, Instz-ueao Rotulada.


cadeia de caracteres de caracteres finita (palavra) de de

a) Urn Rotulo ou Etiqueta e uma constituida de letras ou digitos. b) Uma Instruciio Rotulada i

uma cadeia

finita (palavra)

uma das duas formas a seguir operacao e teste, respectivamente b.l)

(suponha que F e T sao identificadores e que z j , r2 e q sao rotulos): ou rj


:

Operaciio.
rj
:

f aca F va_para

r2

f aca V va_para

b.2) Teste. rl: se

entao va_para

r2 senao va_para

r3

EXEMPLO 2.3

Instruciio Rotulada.
identificadas pelos r6tulos 1, 2, 3 e 4 sao instrucoes
0

Na Figura 2.3, as clausulas rotuladas.

Definicao 2.2

Programa Monolitico.

Urn Programa Monolitico P

e urn

par orden ado P={I.r)

onde:
I r

Conjunto de Instrucoes Rotuladas Rotulo Inicial


0

qual e fmito; rotulada inicial em I.

qual distingue

a instrucao

Adicionalmente, • •

relativamente

ao conjunto diferentes

I tem-se que:

nao existem duas instrucoes urn r6tulo qualquer referenciado instrucao rotulada

com urn mesmo rotulo; instrucao


0

por alguma

e dito

qual niio

associado

a
0

urn R6tulo Final. a existencia

Portanto, a definicao de programa monolitico requer menos uma instrucao, identificada pelo r6tulo inicial.

de pelo

EXEA-fPLO 2.4

Programa Monolitico.
monoliticos:

Sao exemplos de programas

...........................

Capitulo 2 - Progrcrnas,
-

Mtiquinas

e Computacoes

15

a) P1:::: (11,1) onde 11 e o conjunto constitufdo pelas instrucoes e 4 na Figura 2.3. Neste caso, 5 e urn r6tulo final; b) P2 ::::({ r
j:

rotuladas

1,2,3

f aca

va__para

q}, r1) onde r2

urn r6tulo

final (qual 0
:J

correspondente

fluxograrna").

Observacao 2.3

Programa Monolitico x Fluxograma.


ambos

Como urn programa monolitico e definido usando a nocao de fluxograma, os termos sao identificados e usados indistintamente.

o mecanismo de cornposicao sequencial dado pelas instrucocs rotuladas e 0 tipo mais fundamental de controle de estrutura. It a estrutura basica utilizada
pela maioria das linguagens de maquinas, como linguagem de montagem (assembly) outras linguagens de alto nivel. bern como linguagens de baixo nivel e e incorporada de certa maneira a

2.1.2

Programa Iterativo

na

A nocao de programa com estruturas de controle iterativas tern sua origem tentativa de solucionar os problemas decorrentes da dificuldade de e manutencao definir desvios "quebras por estruturas de program as monoliticos incondicionais de controle de logica", A ideia basica onde existe uma grande
0

entendimento liberdade conhecido para

ocasionando

como

que vulgar mente substituir resultando uma

e em

desvios

incondicionais

de ciclos ou repeticoes

uma melhor estruturacao

dos desvios. Estas

nocoes deram origem ao que hoje e nova

chamado de Programaciio Estruturada ([KNU69]) e inspiraram geracao de linguagens de programacao como Pascal ([JEN74]).

................................................................................................

16

Teoria do C()mfJllta~'a():,WdlluillOS

Universais

(' Crnnputubilidade
-

- T Diverio
_._ _._

& P. Blauth Meneses


__

Programas

iteratiuos

sao

base ados

em

tres

mecanismos

de cornposicao

(sequenciais) de programas, os quais podem ser encontrados em um grande numero de linguagens de alto nivel, como, por exemplo, Algol 68 ([MAL69]), Pascal ([JEN74]), cornposicao sao: result an do em um terceiro, cujo do segundo programa em um terceiro, Ada ([UNI80j) e Fortran 90 ([ELL94]). Esses mecanismos de

sequencial: cornposicao de dois programas,


efeito e a cxecucao componente; condicional: do primeiro

e, ap6s, a execucao

cornposicao

de dois programas,

resultando

cujo efeito e a execucao de somente um dos dois program as componentes dependendo do resultado de um teste; • enquanto: efeito e a execucao, repetidamente, do programa resultado de um teste for uerdadeiro. composicao de um programa, resultando em um segundo, cujo componente terrnino enquanto da iteracao
0

Relativamente

composicao

enquanto,

uma vez que


0

causado somente pelo retorno do valor falso para ser conveniente uma outra cornposicao da forma:

teste,

eventual mente

pode

ate: analoga
programa

a cornposicao enquanto, componente ocorre enquanto

excetuando-se que a execucao do result ado de um teste for (also.

Definicao 2.4
Um Programa

Programa Iterativo.
Iteratiuo

e indutivamente

definido como segue: iterativo; iterativo; iterativos, entao a

a) A operacao vazia V constitui b) Cada identificador c) Composiciio composicao resulta

um programa

de operacao constitui denotada por: V;W

um programa programas

Seqiiencial. sequencial

Se V e W sao

em um programa Condicional.

iterativo

cujo efeito e a execucao iterativos denotada

de V e, ap6s, a e se T por:

execucao de W; d) Composiciio identificador Se V e W sao programas (se T entao V senao ~ resulta em um programa ou W se T Enquanto. verdadeiro e) Composicao

um

de teste, entao a cornposicao condicional

e falso;

iterativo

cujo efeito e a execucao

de V se T

Se V e um programa enquanto

iterativo por:

e se T

e um

identificador

de teste, entao a cornposicao enquanto

denotada

fa~a

00

resulta em um program a iterativo que testa T e executa V, repetidamente, enquanto 0 resultado do teste for 0 valor verdadeiro. Caso contrario, a iteracao termina;

.....••••.•......................••••••.................••••...•..........•.•••••••...•.................•••................••

Capitulo 2 - Programas,

Maquinas

e Compuiacoes

•••....................••••.......................

17

D Composicao Ate. Se Ve urn programa teste, entao a cornposicao ate denotada ate resulta termina. Assim, relativamente em urn program a iterativo
0

iterativo por: (V)

e se T e urn identificador

de

T f aca

que testa
0

T e executa

V, repetidamente, a iteracao
0

enquanto

resultado

do teste

for

valor falso. Caso

contrario,

a composicao sequencial,

tem-se que:

denota

program a cujo efeito e a execucao na ordem P1, P2, ... , Pn (da esquerda cornposicoes consistentes. para Por

para a direita). Os parenteses foram utilizados nas clausulas das demais possibilitar a interpretacao, de forma univoca, por partes exemplo, a omissao de parenteses no seguinte programa: V;VV enquanto admite duas interprctacoes (enquanto enquanto T f aca distintas, (V; W) T fac;a

como segue:

T f ac a V);VV

Assim, com 0 uso de parenteses, definem-se estruturas de blocos como no comandocomposto begin-end da linguagem Pascal ([JEN74J) ou nas chaves da linguagem C ([PLU83J). pode ser simulada pelo fluxograma na Figura 2.4 fluxograma para a cornposicao ate"). Note-se que, V pode nao ser executado (em que condicoes isto A composicao enquanto (qual seria 0 correspondente na execucao de urn enquanto, ocorre"),

Figura

2.4 Fluxograma

que simula a cornposicao enquanto

EXEMPLO 2.5

Programa Iteratiuo.
urn programa iterativo (por que"),

a) A operacao vazia V constitui b) 0 programa programa. na Figura 2.5

do tipo iterativo.

0 uso, de certa forma, abusivo visual da estrutura do


0

de linhas e identacao

objetiva facilitar

a identificacao

(se ent:ao

T1
enquant:o fa<;:a

T2 Y3

(ate

fa<;:a 01;w)) senao II")


Figura 2.fi Programa iter ativo

Note-se que a traducao de urn program a iterativo para f1uxograma e trivial (por que"). Entretanto, a inversa nao e verdadeira, ou seja, f1uxogramas nem sempre podem ser traduzidos para programas iterativos qualquer maquina. A questao de equivalencias de programas neste capitulo.

e detalhada

equivalentes, para adiante,

~ ( Eu sou voce arnanha, digo, ') ,,_~ uma recursao adiante_______./


/

__

-----

~-----....__

---·--~)F----V--~ /

'"

2.1.3

Programa Recursivo
tipo de estrutura de controle

o terceiro

e encontrado,
de

com divers as variacoes,

na maioria das linguagem de alto nivel que ad mite a definicao de sub-rotinas recursivas. Recursiio e uma forma indutiva de definir program as. Sub-rotinas permitem a estruturacao diferenciados de abstracao. Urn dos grandes entendirnento cornposicoes publicacao hierarquica program as, possibilitando niveis

problemas

da Ciencia

da Computacao

atual

correto

e implementacao de mecanismos concorrentes. Entretanto, como de cornposicoes

de abstracao na presenca de afirmado anteriormente, esta Uma boa referencia sobre e abstracao e [MEN98b].

nao trata

concorrentes. a concorrencia

estes e outros aspectos relacionados

.............•••.••••••••...•...•••••.•.•..•.•..•................................••...••.....•••••••••.••.•....•.•................................••..•••.••••••••••.....•.•••••

Capitulo T - Program.as,

Maquinus

e Compuiacoes

19

Para 0 que segue, suponha quais sao descritos por:

urn conjunto

de Identificadores

de Sub-Rotinas

os

conceito

definicao de programa Defirricao 2.5

de expressao de sub-rotinas recursivo. Expressao de Sub-Rotinas.

introduzido

a seguir

e usado

na

Uma Expresstio de Sub-Rotinas definida como segue: a) A operacao vazia V constitui b) Cada identificador c) Cada identificador

(ou simplesmente uma expressao

Expressiio) E,
de sub-retinas;

indutivamente

de operacao constitui de sub-rotina constitui

uma expressao uma expressao

de sub-rotinas; de sub-rotinas; entao a

d) Composicao Seqiiencial. Se 01 e 02 sao expressoes cornposicao sequencial denotada por:

de sub-rotinas,

resulta em uma expressao ap6s, a execucao de 02;

de sub-rotinas

cujo efeito e a execucao

de 01 e, e T e urn

e) Composiciio Condicional. Se 01 e 02 sao express6es de sub-rotinas identificador de teste, entao a composicao condicional denotada por: (se T en t ao 01 s errao 02)

resulta em uma expressao de sub-rotinas verdadeiro ou 02 se T e falso.

cujo efeito

e a execucao

de 01 se T

Definicao 2.6

Programa

Recursivo. forma:

Urn Programa Recursivo P tern a seguinte P onde (suponha

EO onde

Rl

def

E1,

R2 def

E2,

...

Rn

def

En

k E {1, 2, "', n }):

Eo
Ek

Expressiio Inicial a qual e uma expressao de sub-rotinas; Expressiio que Define Rk, ou seja, a expressao que define a sub-rotina
identificada por Rk. cada identificador que
0

Adicionalmente, expressao,

para

de sub-rotina

referenciado

em alguma

existe uma expressao a operacao

define.

Portanto, constitui qualquer

vazia V (que tambern recursivo.

uma

expressao

de sub-rotina) como nao existe

urn programa sub-rotina V

Neste caso, por simplicidade,

a ser definida,
0

e usual

omitir a palavra

onde, ou seja:

denota

programa

recuraivo que nao faz coisa alguma.

Teoria do COIllI'II/iI('<10: Maquinas Universais e Computabilidade - T. Diverio & P. Blauth Melle:es ................................................................................................................................................................................

20

EXEMPL02.6

Programa

Recursivo.

o programa na Figura 2.6 e do tipo recursivo. E importante observar que para cada identificador de sub-rotina referenciado existe uma expressao que 0 define.
Note-se que a recursao mutuamente e implicita, e, portanto, no sentido em que as sub-rotinas ReS se auto-referenciam ReS se referenciam indiretamente.O

R;S on de
R def S def

F; (se T ent.ao R s eriao G; S), (se T errt ao V s enao F; R)


Figura 2.6 Programa recursivo

A computacao

de urn programa

recursivo

sera detalhada

adiante, quando da

introducao do conceito de computaciio. Intuitivamente, consiste na avaliacao da expressao inicial onde cada identificador de sub-rotina referenciado e substituido pel a correspondente expressao que 0 define, e assim sucessivamente (recursivamente), ate que seja substituido o fim da recursao, Ate agora, foram definidos t.res pela expressao vazia V, determinando cujos modelos sao

tipos

de programas

caracteristicas de linguagens de programacao reais. Entretanto, esses programas sao incapazes de descrever completamente uma computacao, pois nao se tern a natureza das operacoes ou dos testes, mas apenas urn conjunto de identificadores. A natureza das oper acoes e testes e especificada na definicao de maquina,

2.2 o

Maquirias

objetivo de uma maquina e suprir todas as informacoos necessanas para que a cornputacao de urn programa possa ser descrita. Portanto, cabe a maquina suprir
0

significado (dar scmantica l aos identificadores

das operacoes e testes.

Assim, cada identificador de operacao deve ser associ ado a uma transforrnacao funcao verdade, • • nem todo para respectivamente.
0

e de teste interpretado pela maquina na estrutura de memoria e a uma

Note-se que:

identificador

de operacao ou teste e definido em uma maquina; de operacao ou teste definido em uma maquina,

cada identificador

existe somente uma funcao associ ada. Adicionalmente, inforrnacoes a maquina deve descrever
0

armazenamento

ou recuperacao

de

na estrutura

de memoria.

............................................................................................................................................

Capint!» 2 - Programas,

Muquinas

e Com.p utacoes

21.

Definicao 2.7

Maquina.

Uma Maquina e uma 7-upla M onde: V X

= (V, X, Y, rrx,

rry,

n-, [1T)

Y
rrx

Conjunto de Valores de Mem6ria; Conjunto de Valores de Entrada; Conjunto de Valores de Saida; Funcdo de Entrada tal que:
rrx:

X ---> V

rry

Funcao de Saida tal que:


rry: V ---> Y

nF

Conjunto de Lnterprctacoes
de operacao F interpretado

de Operacoes tal que, para cada identificador


por M, existe uma unica funcao:

rrF: V ---> V em nF

Fl r

Conjunto de Interpretacoes
teste T interpretado

de Testes tal que, para cada identificador


falso} em [1T

de

por M, existe uma unica funcao:

rrT: V ---> {verdadeiro,

As funcoes acima sao totais, ou seja, definidas para todos os elementos do dominio. 0 conjunto de in terpret.acoes [1F (respectivamente, [1T) pode ser visto como urn conjunto de funcoes indexado pelo subconjunto de identificadores de operacoes (respectivamente, testes) para as quais a maquina notacoes sao adotadas: de urn conjunto S, ou seja: M e definida.

No texto que segue as seguintes • • N para S2 para


0 0

conjunto dos numeros natura is;


produto cartesiano

s2 =
EXEMPL02.7
Suponha quais assumem uma especificacao

Sx S

Mtiquina de Dois Registradores.


de uma maquiria com dois registradores a e b os valores em N, com duas operacoes e urn teste como segue:


• • retorna

subtracao de 1 em a, se a > 0;
adicao de 1 em b; teste se a

e zero.

Adicionalmente,
0

valores de entrada

sao armazenados

em a (zerando

b) e a saida

valor de b. com valores em N podem Entao a ser definidos na pelo produto e 2.7
...J

Dois registradores cartesiano segunda implementa componente,

N2 onde os registradores
a espccificacao acima.

a e b sao represent

ados pela primeira Figura

respectivamente.

rnaquina

'[coria do COIII/IU/OCDo: Miiquina» Univcrsai: e Compumbilidcdc - T. Divcrio & P. Blauth Menezes ...............................................................................................................................................................................

22

dois_reg onde:

= (N2, N, N, armazena_a,

retorna_b,

{subtrai_a,

adiciona_b},

{a_zero})!

N2 corresponde N corresponde, armazena_a:

ao conjunto

de valores

de memoria de valores
E

simultaneamente, N ---t N2

aos conjuntos

de entrada N:

e safda!

ea

funcao de entrada
armazena_a(n)

tal que, vn :: (n, 0)

retorna_b:

N2 ---t N e a funcao de saida tal que, V(n, m) retorna_b(n, m) :: m


E

N2:

subtrai_a:

N2 ---t N2 e interpretacao m)

tal que, V(n, m)

N2:

subtrai_a(n, adiciona_b:

= (n-1,

rn), se n ct 0; subtrai_a(n,

m)

= (0,
E

m), se n :: 0

N2 ---t N2

e interpretacao
adiciona_b(n, falso}

tal que, V(n, m) m) = (n, m+1)

N2:

a_zero:

N2 ---t {verdadeiro,

e interpretacao

tal que, V(n, m)

F\J:2:

.................... il.~z.~.~?(n.~..~ .. ~~~.d.il.cl.~ir.~.'. .~ ..~.; ..a.~z.~.r?(n.~ .. fil.I~?~ .~n...*...0. ..f!1) ..s.~.n . ..f!1_)..~ ..s ..
Figura 2.7 Maquina com dais registradores

Afirma-se que P e urn programa para a nuiquina M se cada identificador de teste e operacao em P tiver uma correspondente funcao de teste e operacao em M, respectivamente. A definicao sao constituidos por oper acoes entrada e saida). 2.8 Prograrn.a para uma Maquiria. formal e como segue (Iembre-se que programas e testes e, portanto, nao incluem funcoes de

Definicao

Sejam M = (V, X, Y, 1tx, 1ty, nF, Flr) uma maquina e P urn programa onde PF e PT sao os conjuntos de identificadores de operacoes e testes de P, respectivamente. P e urn Programa para a Maquina • • para qualquer para qualquer em maquina. Portanto, para cada identificador de operacao F de PF (respectivamente, F T
E

M se, e somente,

se: falso}

PF, existe uma unica funcao 1tF: V ---t V em Ilr ;

E PT,

existe uma unica funcao 1tT: V ---t {verdadeiro,

n-.
a operacao vazra t/ sempre e interpretada em qualquer
0

Adicionalmente,

teste

T de PT) existe, na maquina M, uma unica iriterpretacao de funcao de operacao indexada por F (respectivamente, funcao de teste indexada por T). Note-se que a maquina pode possuir operacoes ou testes sem correspondencia no programa.

.................................................

Cupitl//o 2 - Programos,

Mtiquin a« e Com pu io coes


_

--_

..-

EXEMPL02.8

Programas para a Miiquina de Dois Registradores.

Os programas iterativo itv_bf-a na Figura 2.8 e recursivo rec_bf-a na Figura 2.9, sao programas para a maquina dois_reg (Figura 2.7) e atribuem 0 valor armazenado em a ao registrador b.

Programa Iterativo itv_bf-a ate fac;:a a zero (subtrai_a; adiciona_b)


para a m aqu in a de dois registradores

Figura 2.8 Program a iterativo

recb--a

Programa Recursivo rec_bf-a


Ronde (se a_zero en t ao V s eriao subtrai a; adiciona b S; R),

R def S def

Figura 2.9 Programa

recursivo para a m aqui na de dois registradores

2.3

Computacoes
e visto

e F'uncoes Computadas
e maquinas caminham Uma comput.ocdo e, resumidamente, urn para 0 program a, considerando urn valor da

Nesta secao

como as dofinicoes de programas

juntas para a definicao de cornputacao. hist6rico do funcionamento da maquina inicial.

Uma vez defmida a nocao de cornputacao, pode-se inferir a natureza funcao computada, por urn dado programa, em uma dada maquina,

2.3.1

Comp ut.acao
e tratada a cornputacao a referente referente aos program as monoliticos e, recursivos. A cornput.acao

Inicialmente, a seguir, referente

apresentada

aos program as iterativos uma computacao

e sugerida
e
0

aos programas

como exercicio. monolitico em uma maquina valor de mem6ria. 0

Basicamente,

de urn programa

e urn hist6rico das instrucoes hist6rico e representado • • cada par reflete

executadas

correspondente para

na forma de uma cadeia de pares onde: urn estado da maquina


0

program a, ou seja, a do estado

instrucao a ser executada e 0 valor corrente da mem6ria; a cadeia reflete uma sequencia de estados possiveis a partir inicial (instrucao inicial e valor de mem6ria considerado).

24

........................................................................................................................................................................

Teoria do

COIIIPU[(i('c/o:

Maquinas

Universais

t'

Camputabitidade

- T Diverio

& P. Blauth Mcne zes

Definicao 2.9

Computacao de Programa

Monolitico

em uma Maquina,

Sejam M = 0/, X, Y, nx, rtv, nF, nT) uma maquina monolitico para M onde Leo seu correspondente

e P = (1, r) urn programa conjunto de r6tulos. U rna

Computactio do Programa Monolitico P na Maquina M e uma cadeia (finita ou infinita) de pares de L x V:


onde (so, va) e tal que So = reo r6tulo inicial do programa P e Va e 0 valor inicial de mem6ria e, para cada par (Sko Vk) da cadeia, onde k E {O, 1,2, ... }, tem-se que (suponha que F e urn identificador de operacao, T e urn identificador de teste e r' , r" sao r6tulos de l.):
a)

Operaciio,
a.L)

Se

Sk

r6tulo de uma operacao da forma:


Sk:

fa~a

F v

va_para

r'
(Sk'

entao a.2) Se
Sk

(Sk+l'

Vk+1)

= (r',
Sk:

nF(v0) e par subsequente de fa~a va_para r' de


(Sko

v0 na cadeia

r6tulo de uma operacao da forma:


Vk+1)

entao b) Teste. Se entao


Sk

(Sk+l'

(r',

v0 e par subsequent«

v0 na cadeia r"
Vk+1

e
Sk:

r6tulo de urn teste da forma: se T erit.ao va_para r' s enao va_para e par suhsequente se TCT(v0 falsa de
(Sko

(Sk+l' Sk+l Sk+l

Vk+1)

v0 na cadeia sendo que

= Vk e:

= roo

= r'

se nT(vk) = verdadeira

Uma Computacao e dita Finita ou Infinita, se a cadeia que a defme e finita ou infinita, respectivamente.
0

Note-se que: • • • para urn dado valor inicial de mem6ria, a correspondente cadeia cornputacao e unica, ou seja, a computacao e deterministica (por que"); urn teste e a operacao vazia nao alteram 0 valor corrente da mem6ria; em uma computacao infinita, r6tulo algum da cadeia e final.
0

de

Nos exemplos que seguem, para facilitar computacao e representada na forma de coluna.

entendimento,

uma

cadeia

de

EXEMPL02.9

Computacao Finita de Programa Monolitico na Maquina de Dois Registradores.


monolitico man_bf--a na Figura
0

programa

2.10 e urn programa

para

a a

maquina

dais_reg

(Figura 2.7). Para

valor inicial de mem6ria

(3, 0), ou seja,

onde os valores

iniciais dos registradores

a e b sao 3 e 0, respectivamente,

correspondente cornputacao finita e representada na Figura 2.11. Note-se que 0 registrador b recebeu 0 valor inicial de a (e a foi zerado). 0

Capitulo 2 - Programas,

Maquinas

e Computacoes

25

1: 2: 3:

Programa Monolitico mon b--a se a zem entao va_para 9 senao va_para


f ac a subtrai_a

va_para va_para

3 1

f ac a adiciona_b

Figura 2.10 Programa

monolitico cuja computacao na maquina de 2 registradores

fin ita

(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»

instrucao

inicial e valor de entrada

armazenado

em 2, subtraiu

em 1, como a io 0, desviou para 2 do registrador a e desviou para 3


7=

em 3, adicionou no registrador em 1, como a em 2, subtraiu do registrador em 3, adicionou no registrador em 1, como a em 2, subtraiu do registrador em 3, adicionou no registrador

b e desviou para 1 0, desviou para 2 a e desviou para 3 b e desviou para 1 0, desviou para 2 b e desviou para 1

io

a e desviou para 3

em 1, como a = 0, desviou para 9


Figura 2.11 Cornputacao finita na maquina de 2 registradores

EXEMPLO 2.10

Computaciio Infinita de Programa Monolitico na Maquina de Dois Registradores.

programa monolitico comp_infinita na Figura 2.12 maquina dois_reg (Figura 2.7). Para 0 valor inicial correspondente 1: computacao infinita

e representada

um program a para a de mem6ria (3, 0), a


0

na Figura 2.13.

f ac a adiciona_b

Programa Monolitico va_para 1

comp_infinita

Figura 2.12 Programa

monolitico cuja computacao na maquina de 2 registradores

infinita

(1, (3, 0)) (1, (3, 1» (1, (3, 2)) (1, (3, 3))

instrucao

inicial e valor de entrada

armazenado em 1 em 1 em 1

adicionou no registrador adicionou no registrador adicionou no registrador repete 1, adicionando no registrador

b e permanece b e permanece b e permanece

b, indefmidamente

Figura 2.13 Cornputacao infinita na rnaquina de 2 registradores

A cornputacao

de um program a recursivo

um monolitico. 0 hist6rico • • cad a par expressao reflete

e representado

em uma

maquina

analoga

a de

na forma de uma cadeia de pares onde: para


0

um estado

da maquina e

programa,

ou seja,

de sub-rotina

a ser executada

valor corrente

da mem6ria;

a cadeia reflete uma sequencia

de estados possiveis a partir do inicial.

Dcf'iriic 2.10 ao

Computacao de Program a Recursivo em uma Maquiria,


maquina e P um programa
E2 .... , Rn def En

Sejam M = 0/, X, Y, J1x, J1y, flF, ll r) uma para M tal que: P e Eo on de RI def
E1.

recursivo

R2 def

Uma Com p u t o cao do Propram a Recursiuo au infinitaJ de pares da forma:

P no Miiquina
V2)

M (: uma cadeia tfinita

(Do, VO)(D1, v1)(D2,

onde (Do, vol (; tal que Do = Eo; v' c Vo e 0 valor inicial de memoria e, para cada par (Dj, v0 da cadeia, onde k E {O, 1, 2, ... }, tem-se que (suporiha que F e um identificador de sub-rot.ina Caso 1. Se Dk de operacao. ): T (: um identificador de teste e C, C1, C2 sao exprcssoes da forma:

e uma

expressao de sub-retina
Dk

v ;C
de (Dk, Vk) na cadeia;

entao (Dk+1, Vk+1) Caso 2. Se Dk

(C, Vk) (: par subsequente

e uma

cxpressao de sub-rotina

o, =

da forma:

F; C

Caso 3. Se Dk e uma expressao de sub-rotina


Dk

da forma: de (Dk, v0 na cadeia;

R~; C

entao (Dk+1, Vk+1)

(E]. C, v0 e par subsequente

Coso 4. Se Dk e urua expressao cntao (Dk+1, Vk+1)

de sub-rotina

o, = (C1

da forma: de (Dj, Vk) na cadeia;

; C2); C

(C1; (C2; C), Vk) e par subsequente

Caso 5. Se Dk e uma expressao

o, =

Ek

de sub-rot.ina
(se T e nt ao

da forma:
C1 s eria o C2); C

ent.ao (Dk+1, Vk+1) o par subsequent«


Vk+1

de (Dj. Vk) na cadeia sendo que:

= Vk Dk+1 = C1;
put
acao

se J1T(Vk) = verdadeiro se J1T(Vk) = falso


Fi nita

Dk+1 = C2; C

Com

e dita

ou

nfinita

se a cadoia

que a define

finita

ou

infinita,

respcct.ivumente.

Port anto: • • • • para um dado valor inicial de memoria, comput.acao e unica, ou seja, a computacao

e deterrninistica

a correspondente

cadeia (por que");

de

teste ou referencia a urn a sub-retina nao alteram 0 valor da memoria; em uma comput acao finita, a expressao V ocorre no ultimo par da cadeia e nao ocone em qualquer em uma cornputacao outro par; expressao alguma da cadeia infinita,

e V.

...............................................................................................................................................................

Capitulo ? - Programas,

Maquinas

e Computacocs

27

EXEMPLO 2.11

Computacao Infinite de Programa Recursivo.


na Figura 2.14 qualquer

programa

recursivo qq jnaquma Adicionalmente, computacao para

e urn

programa de

para qualquer memoria, a

maquina.

correspondente

e sempre

valor

inicial

infinita e e a cadeia:

(R, Va)(R, Va)(R, va) .. · qqjnaquina R def


Figura

Programa Ronde R

Recursivo

qq jnaquina

2.14 Program a recursivo

cuja cornputacao

infinita

em qualquer

m aqu in a

No texto que segue, para

urn dado conjunto

A, a Funcao Identidade em A
0

aquela que associa, a cada elemento do conjunto, idA: A-7A tal que, para qualquer a
E

proprio elemento, ou seja:

A, tem-se que idA(a) = a.

EXEMPLO 2.12
Considere
0

Computacao Finita de Programa Recursivo na Maquina de Um Registrador.


um_reg

program a recursivo duplica na Figura 2.16 para a maquina

na Figura 2.15. Para 0 valor inicial de memoria 3, a correspondente cornputacao fin ita e representada na Figura 2.17. Note-se que 0 valor final na memoria e 0 valor inicial duplicado. Observe-se que, usando a nocao de recursao, nao foi necessar io usar duas celulas de memoria, uma para controlar 0 ciclo e outra para calcular
0

resultado.

De fato, a facilidade de recursao

quantas vezes a operacao importante adiante, quando (fortemente) equivalentes.


:

ad necessita ser executada. Esta observ acao e e verificado que nem todos os tipos de programas sao
0

usada

para

determinar

um_reg = (N, N, N, idN, idN, {ad, sub}, {zero}) :onde: N corresponde, entrada e saida simultaneamente, aos conjuntos de valores de memoria,

e a funcao de entrada e de saida ad: N -7 N e interpretacao tal que, vn E N, ad(n) sub: N -7 N e interpretacao tal que, vn EN:
idN: N -7 N sub(nl = n-1, se n zero: N -7 {verdadeiro, falso}
7c.

= n+1

0;

sub(n)

= 0, se n = 0

e interpretacao

tal que, vn EN:

~.~~.?.(~!..~.ye:.r~.~~.e:.i.~<:>: ~~r.()~~l..~.~~I~.?! .. .?~~r.a.ri() .. .~..n..~.9.; s ..~~.~.~ c


Figura 2.15 Maquina de um registrador

duplica

Programa Ronde (se

Recursivo

duplica .ad)
de urn registrador

R def
Figura 2.16 Programa

zero en t ao V s eria o sub-n-ac

recursivo cuja cornputacao

finita na maquina

(R; V, 3)

«(se

zero en t ao V s eriao

( (sub; R; ad; ad) ; (sub; (R; ad ; ad) ; «(R; ad; ad) ; 2) (R; (ad; ad) ; «(se zero en

v, 3)
v, 3)

(SUb;R;ad;ad))

valor de entrada ;v,3)

v, v, 2)
t ao

como n 0, executa senao caso 4, composicao seqi.iencial subtraiu 1 da mem6ria (SUb;R;ad;ad)); caso 4, cornposicao (ad rad) 2)

armazenado caso 3

V e eria o

«(SUb;R;ad;ad); (ad- ad) ;v, 2) (sub; (R; ad; ad) ; (ad; ad) ; 2) «(R;ad;ad); (ad;ad) 1) (R; (ad; ad) ; (ad; ad) ; 1) «(se zero erit.ao V senao(SUb;R;ad;ad)); «(sub; R; ad; ad) ) ; (ad; ad) ; (ad; ad) ; (sub; (R; ad; ad) ; (ad; ad) ; (ad; ad) ; «(R;ad;ad); (ad i adr . (ad rad) (R; (ad; ad) ; (ad; ad) ; (ad; ad) ;

;v,

seqi.iencial caso 3

;v, v,

v,

como n *0, executa senao caso 4, composicao seqi.iencial subtraiu 1 damem6ria caso 4, cornposicao seqi.iencial (ad radj . (ad i ad) ;v, 1) caso 3 como n 0, executa senao caso 4, cornposicao seqi.iencial subtraiu 1 damem6ria caso 4, cornposicao seqi.iencial

;v, 0) v, 0)

v, 1) v, 1)

«(se zero enr ao V s eriao (Sub;R;ad;ad)); (ad rad i . (ad- adj . (ad-ad) (v; (ad; ad) ; (ad; ad) ; (ad; ad) ; v, 0) como «(ad;ad); (ad;ad); (ad rad) ;V, 0)
,

;v,
n

0) caso 3 = 0, executa entao caso 1

(ad; (ad; (ad; ad) ; (ad; ad) ; V) ( (ad; (ad; ad) ; (ad; ad) ; V) , 1) (ad; ( (ad; ad) ; (ad; ad) ; v) , 1) ( ( (ad; ad) ; (ad; ad) ; V) , 2) (ad; (ad; (ad; ad) ; V) ( (ad; (ad; ad) ; V) , 3)
,

0)

caso 4, cornposicao seqi.iencial adicionou 1 na mem6ria caso 4, cornposicao seqi.iencial adicionou 1 na mem6ria caso 4, composicao seqi.iencial adicionou 1 na mem6ria caso 4, cornposicao sequencial adicionou 1 namem6ria caso 4, composicao sequencia! adicionou 1 na mem6ria caso 4, composicao sequencial adicionou 1 na mem6ria

2)

«(

(ad; ( (ad; ad) ; V) (ad-ad) ;v),4) (ad; ( (ad) ; V) , 4) ( ( (ad) ; v) , 5) (ad;


( (v) (V) , ,

3)

5)

6)

(v, 6)
Figura 2.17 Cornputacao finita na maquina

fim da recursao
de urn registrador

.(:(~ e

{r.u.'.". J.:. _

J>_':?l!.':?1I1.?s: J;! ~.q_IIi'l(~:' ..e.. (_7 ?'JlP'I~.t? f~5~s............

2..9...

2.3.2

Eunoao Computada
de urn program a deve ser associada a uma entrada e espera-se que a resposta (saida) seja gerada em urn

Em geral, a computacao uma saida. Adicionalmente,

tempo finito. Estas nocoes induzem a definicao de [unciio computada. Inicialmente, e tratada a funcao computada referente aos programas monoliticos e, a seguir, e apresentada a referente aos programas recursivos. A funcao computada referente aos program as iterativos e sugerida como exercicio. A funcao corresponde •

a nocao

com put ada por urn programa intuitiva, ou seja:

monolitico

sobre

uma

maquina

a cornputacao inicia na instrucao identificada pelo rotulo inicial com a memoria con tendo 0 valor inicial result ante da aplicacao da funcao de entrada sobre 0 dado fornecido; executa, passo a passo, testes e operacoes, na ordem deter min ada pelo program a, ate atingir urn rotulo final, quando para;
0


valor da funcao computada pelo programa e 0 valor resultante aplicacao da funcao de saida ao valor da memoria quando da parada.

da

Defirricao 2.11 Funcao Computada por urn Programa Monolttico em urna Maquina.
Sejam M = 0/, X, Y, nx, 7ty, nF, Il r) uma maquina e P urn programa monolitico para M. A Funciio Computada pelo Programa Monolitico P na Maquina M denotada por: (P, M) X e uma funcao parcial definida para x e uma cornputacao
E ---?

X se a cadeia:
vn)

(sQ, VO)(Sl, V1)··.(Sn'

finita de P em M, onde

valor inicial da memoria

e dado pel a

funcao de entrada, ou seja, vo = 7tx(x). Neste caso, a imagem de x e dada pela funcao de saida aplicada ao ultimo valor da memoria na computacao, ou seja: (p, M)(x) = 7ty(vn) 0 Note-se que, a funcao computada por urn programa pode ser parcial, ou seja,

nao necessita ser definida para cada valor do dominio.

EXEMPLO 2.13 Funciio Compuiada por Programa Monolitico na Maquino de Dois Registradores.
Considere 0 program a monolitico rnonb--a (Figura 2.10) para a maquina dais_reg (Figura 2.7). A correspondente funcao computada e a funcao identidade, ou seja, (mon_bf--a, tal que, para qualquer n
E

dais_reg):

N _, N

N, tem-se que: (mon_bf--a, dois_reg)(n) =n

Por exemplo, para • • •

valor entrada

3, tem-se que:

rrx(3) = (3, 0) a correspondente (mon_b<--a,

cornputacao

e representada

na Figura 2.11

dois_reg)(3)

= rry(O, 3) = 3 para 3 (a funcao e total").


:.J

Portanto,

(mon b--a, dois_reg) e definida

EXEMPLO 2.14
Considere dois_reg

Funcao Computada por Programa Monolitico na Maquina de

Dois Registradores.
0 programa monolitico comp_infinita (Figura 2.12) para a maquina (Figura 2.7). Relativamente a funcao computada (comp_infinita,

dois_reg): N ~ N, para a entrada • • entrada rrx(3) = (3, 0) a correspondente cornputacao

de valor 3, tem-se que: in fin ita e representada na Figura 2.13


0

Como a cadeia

e infinita,

a funcao computada

nao e definida para

valor

de
0

3 (para quais valores do dominio e definida?). computada por urn programa recursivo sobre uma

A funcao correspondente • •

maquina

e analoga a de um monolitico:

a cornputacao inicia na exprossao inicial com a memoria contendo 0 valor inicial resultante da aplicacao da funcao de entrada sobre 0 dado fornecido; executa, passo a passo, testes e operacoes, programa, ate que a expressao de sub-rotina vazia, quando para;
0

na ordem determinada pelo resultante seja a expressao da

valor da funcao com put ada pelo programa e 0 valor resultante aplicacao da funcao de saida ao valor da memoria quando da parada. Funcao Cornputada por urn Programa Recursivo em
uma Maqurna.

Defiriie ao 2.12

Sejam M = 0/, X, Y, rrx, rry, Ilr , [1T) uma maquina e P um programa recursivo para M. A Funcao Computado pelo Programa Recursivo P no Mtiquina M denotada POI': (P, M): X ~ Y e uma funcao parcial definida para x finita de P em M:
E

X se a seguinte

cadeia e uma computacao

onde:

Do = Eo e expressao inicial de P Vo = rrx(x)


En = V Neste caso, tem-se que: (P, M)(x)

= rry(vn)

....................................................................................................................

Capituto 2 _ Prcnnania s. Mtt q u uu:s e Com putacoe»

31

EXEMPLO 2.15
Considere
0

Funcao Computada por Programo Recursivo.


recursivo qq jnaquina (Figura 2.14) e uma maquina funcao computada
-7

programa

(V, X, Y, TCX, TCy, fIF, Flr) qualquer.

A correspondente

e:

(qq rnaquina, M): X e

e indefinida

para qualquer

entrada

(por que"), ou seja,

e definida

para

conjunto

v azto.

EXEMPLO 2.16
Considere (Figura
0

Funcao Computada pOI'Programa Recursivo na Mcquina de Um Registrador.


duplica (Figura 2.16) para e:
-7

program a recursivo

a maquina

um_reg

2.15), A correspondente

funcao computada

(duplica, um_reg): N e

e tal

que, para qualquer

N: um_reg)(n)

(duplica,

= 2n

2.4

Equivalencias
computadas de programas

de Program as e Maquirias
introduzir algumas import antes relacoes de como segue:

Funcoes equivalencias

permitem

e maquinas

a) Relacao Equioalencia maquina;

relacao se as correspondentes

Forte de Programae. Um par de program as pertence a funcoes computadas coincidem para quolquer

b) Relacao Eouiualencia de Programas em uma Maquina Um par de programas pertence a rel acao se as correspondentes funcoes computadas coincidem para uma dada maquina;

32 Tcoria do COIJ1IJU/(l{'tlo:A1(ll/uill({s Univcrsais e Cmnputabilidnd« - T Divetio & P. Blauth Mellc:es ................................................................................................................................................................................

c) Relacao Equioalencia de Mriquinas. Urn par de maquina pertence a relacao se as maquinas podem se simular mutuamente. A simulacao de uma maquina por outra pode ser feita usando program as diferentes. A Relacao Equivalencia Forte de Programas ao agrupar diferentes programas em classes cujas funcoes coincidem, fornece subsidios programas como complexidade estrutural.

e especialmente
de equivalencias para analisar

importante pois, de programas propriedades de

Urn import ante resultado e que, para a Relacao Equivalencia Forte de Programas, programas recursivos sao mais gerais que os monoliticos os quais, por sua vez, sao mais gerais que os iterativos.
Para
0

que segue,

seguinte deve ser considerado: f, g: X -> Y sao ditas

a) Igualdade de Funcoes Parciais. Duas funcoes parciais iguais, ou seja, f = g, se, e somente se, para cada x E X: • • ou f(x) e g(x) sao indefinidas; ou ambas sao definidas e f(x) = g(x);

b) Composicao Sucessiua de Funcoes. Para uma dada funcao f: S ---7 S, a cornposicao sucessiva de f com ela propria e denotada usando expoente, ou seja: fn = f f... f (n vezes)

2.4.1

Eqtri vaferrci a Forte de Programas

Definicao 2.13 Relacao Equivalericia Forte de Programas, Program as Equivalentes Fortemente.


Sejam P e Q dois programas arbitrarios, nao necessaria mente do mesmo tipo. Entao 0 par (P, Q) esta na Reiacao Equioalencia Forte de Programas, denotado por:

se, e somente se, para qualquer maquina computadas sao iguais, ou seja:

M, as correspondentes

funcoes parciais

(P, M) = (Q, M) Neste caso, P e Q sao ditos Programas Equiualentes

Fortemente.
Forte de Programas induz uma particao

o
definida do

E
acima

facil verificar

que a Relacao

Equivalencia

uma relacao de equivalencia

e que, portanto,

conjunto de todos os program as em classes de equivalencias.

................................................................................................................................................................................

Capitulo 2 - Programas,

Maquinas

e Computacoes

33

EXEMPLO 2.17 Programas Equivalentes Fortemente. Considere os quatro programas na Figura 2.18. Os programas monoliticos P1 e P2 (acima), 0 iterativo P3 (rneio) e 0 recursivo e P4 (abaixo) sao todos equivalentes fortemente.

Programa Monolftico P1 Programa Monolftico P2 Programa Iterativo P3 enquanto


f ac a

T Programa Recursivo P4

(F)

P4

Ronde R def (se T entao F;R senao ~


Figura 2.18 Programas equivalentes fortemente

Como ilustracao, no que segue, e verificado que, de fato, os programas monolitico P1 e 0 recursivo P4 sao equivalentes fortemente. 0 program a P1 reescrito na forma de instrucoes rotuladas e represent ado na Figura 2.19.
1: 2: Programa Monolftico P1 se T entao va_para 2 senao va_para fa<;:a va_para F 1
rotuladas

Figura 2.19 Program a monolitico como urn conjunto de instrucoes

Sejam M = 0/, X, Y, nX, nv, nF, Ilr) uma maquina arbitraria e x E X tal que nx(x) = V. Entao, se (P1, M) e defmida para x, a correspondente computacao e dada pela cadeia:
(1, V)(2, V)(l, nF(V))(2, nF(V))(l, nF2(v))(2, nF2(v)) ... (1, nFn(V))(3 , nFn(V))

supondo que n

e 0 menor natural

tal que nT(nFn(v)) = falso. Neste caso:

(P1, M)(x) = ny(nFn(V))

34 Tonia da Computac/io. Muquina, Universais (! Computabilidadr - T. Diverio & P. BIolith Meneies ............................................................................................................................................................................

Analogamente,

se (P4, M) e definida para x, a correspondente

pel a cadeia representada na Figura 2.20 supondo que n 1tT(1tFn(V)) = falso. Neste caso:

e0

cornputacao menor natural

e dada
tal que

Portanto,

P1

='

P4 pois, para qualquer

maquina

M, tem-se que:

(P1, M) = (P4, M) (R, v) «se T entao F;R (F ;R, v) (R, 1tF(V)) «se T entao (F; R, 1tF(V)) (R, 1tF2(v)) «se T erit ao F;R (F; R, 1tF2(v)) (R, 1tFn(V)) «se T erit ao F; R seriao (v, 1tFn(V)) V),1tFn(V)) senao V),1tF2(V)) F;R senao V), v)

senao V),1tF(v))

Figura 2.20 Cornputacao

E

importante

que se considere

a Relacao

Equivalencia

Forte de Programas

por varias razoes, como, por exemplo: permite identificar diferentes programas em uma mesma classe de equivalencia, ou seja, identificar diferentes programas cujas funcoes computadas • as funcoes propriedade coincidem, para qualquer rnaquina; equivalentes fortemente tern a e as mesmas operacoes sao do significado dos ou, ainda, diferente computadas por programas de que os mesmos testes

efetuados na mesma ordem, mesmos (por que nao diferentes ordern"); • fornece subsidios para analisar Por exemplo, analisando os forte mente P1 estruturalmente

independentemente testes ou operacoes

a complexidade programas

estrutural monoliticos

de programas. equivalentes

e P2 na Figura 2.18, pode-se concluir que P1 "mais otimizado" que P2, pois contern urn teste a menos. alguns resultados sobre tipos de programas

No que segue, sao introduzidos introduzidos onde, verifica-se que: • •

para to do iterativo, existe urn monolitico equivalente para todo monolitico, existe urn recursivo equivalente

fortemente; fortemente.

..............................................................................................................................................................................

Capitulo 2 - Progrcunas.

Mtiqu inas e Computaciies

35

Programas Programas

Recursivos Monolft icos It erativos

(
Figura 2.21 Hierarquia

Programas

J
Forte de Programas

induzida

pela Relacao Equivalericia

Entretanto,

a inversa nao necessariamente

e verdadeira,

ou seja, relativamente

Relacao Equivalencia Forte de Programas, programas recursivos sao mais gerais que os monoliticos os quais, por sua vez, sao mais gerais que os iterativos, induzindo uma hierarquia de classes de programas onde as inclusoes sao pr6prias. como ilustrado na Figura 2.21,

Teorema 2.14 Equivalencia Forte de Programas: Iterativo ~ Monolitico.


Para qualquer
Pi == Pm.

programa

iterative

Pi, existe urn program a monolitico

Pm, tal que

Prova: Seja Pi urn programa iterativo qualquer. indutivamente construido como segue: a) Para a operacao vazia V corresponde
0

Seja seguinte

Pm urn

programa

monolitico

fluxograma

elementar:

QU,

simpiesmente,

b) Para cada identificador elementar:

de operacao F de Pi corresponde

seguinte fluxograma

c) Suponha iterativos c.L)

que T e urn identificador us ados na construcao

de teste

e que V, W sao fluxograma

programas

tipos de cornposicao

e apresentado

de Pi. Entao,
0

para cada urn dos seguintes de Pm:

correspondente

Composicao Seqiiencial. V; W

36

Tcorin do___ C(}fI11J/ft(/~'a(}

k1cI(lllillos

Univcrsais .. _._.

c-

Computabilidadc_ ..- _ T_._ Diverio - & __P. Blauth Mrneu:» __ . _ .. .. ._. _ _

c.2)

Composiciio Condicional.

(se

T en t ao

V s eriao

W)

c.3)

Composicao Enquanto.

enquanto

T f ac a (V)

c.4)

Composiciio Ate. ate T

t aca

(V)

Adicionalmente, para cada uma das composicoes acima, dependendo se tratase do inicio ou fim do programa iterativo, 0 correspondente fluxograma deve ser ante cedi do ou sucedido parada, respectivamente. dos componentes element ares de partida ou

A verificacao que, de fato, Pi =' Pm

e sugerida

como exercicio.

Teorema 2.15 Equivalencia Forte de Programas: Monolitico -;. Recursivo.


Para qualquer Pm=,Pr. Prova: Seja Pm um program a monolitico qualquer onde L = {rl' r2, ... , r n} e 0 correspondente conjunto de r6tulos. Suponha, sem perda de generalidade, que, em Pm, rn program a monolitico Pm, existe um programa recursivo Pr, tal que

e 0 unico
Pr

r6tulo final (por que esta suposicao Rl onde Rl def E1, R2 def E2,

pode ser feita"). Entao ... , Rn def

Pr

urn programa

recursivo construido

a partir de Pm e e tal que:

onde, para k E {1, 2, ... , n-1 }, Ek a) Operacao. Se rk

e como segue:
fac;:a

e da

forma: rk:

va_para

rk'

entao Ek e a seguinte

expressao

de sub-rotinas: F ;Rk'

C"pi/II/II

2 _ Proernmas,
..

Mti q uinas e Com pu iacocs

37

b) Teste. Se r

j,

e da

forma:

P,,:

se

en t.ao va__para rk'

s eriao va__para r

j."

entao Ek

ea

seguinte

expressao
(se

de sub-rotinas:
Rk' s eriao Rk")

entao

A verificacao

que, de fato, Pm'" Pr e sugerida corolario

como exercicio. anteriores.

seguinte

e consequencia
~

direta dos dois teoremas

Corolar

io 2.16

Equi valenoia Iterativo iterativo

Forte de Programas: Recursivo. Pi, existe um programa recursivo Pr, tal que
.:J

Para qualquer Pi == Pr, Teorema Dado um

programa

2.17

Equivalencia Forte de Programas:


Recursivo ~ Monolitico. Pr qualquer,
'"

programa

recursivo

nao

necessariamente

existe

um

program a monolitico P_!:2Y<:t.: Para


(POl'

Pm, tal que Pr

Pm,

Absurdo).

prov ar

suficiente

apresentar recursivo

um programa (Figura

recursivo 2.16)

que, para

uma

deierminada Considere
0

maquina, programa

nao existe programa duplica

monolitico equivalente (duplica, = 2n

fortemente. um_reg N~N

e a maquina um_reg):

(Figura 2.15), A correspondente tal que, para qualquer n E N:

funcao computada um_reg)(n)

(duplica,

Suponha que existe um program a monolitico Pm que computa ou seja, que (Pm, um_reg): N --7 N e: (duplica, Suponha operacao que Pm um_reg)

a mesma

funcao,

(Pm, um_reg) ad, Suponha n ENtal que n 2: k.

e constituido

de k operacoes

Entao, para que (Pm, um_reg)(n)

2n, e necessar io que Pm execute n vezes a ad, Mas, como n 2: k, entao pelo menos uma das ocorrencias de ad sera caso,
0

executada mais de uma vez, ou seja, existe um ciclo em Pm. Neste sera executado indefinidamente. Lembre-se que: • para uma funcao computada os mesmos • ordem; portanto,
0

ciclo

por do is programas operacoes

equivalentes sao efetuados

fortemente, na mesrna testes outra

testes

e as mesmas

program a monolitico correspondente de fim de ciclo na sequencia ad nao sao

nao pode intercalar


pOI'

de controle

de operacoes intercaladas

ad (no programa qualquer

recursivo, as ope racoes oper acao ou teste).

38

Portanto, a cornput.acao resultante e infinita e a correspondente funcao nao e definida para n, 0 que e urn absurdo, pois e suposto que os dois programas sao equivalentes fortemente. Logo, nao existe urn programa recursivo duplica. Para melhor en tender • • urn programa
0

monolitico

equivalente

forte mente

ao program a
U

resultado

acima, considere

seguinte: dinamicamente,

de qualquer

tipo nao pode ser modificado

durante uma computacao; urn programa para ser equivalente fortemente a outro, nao pode conter ou usar facilidades adicionais como memoria auxiliar ou operacoes ou testes extras; para que um programa monolitico possa simular uma recursao sem um numero finito e predefmido de quantas vezes a recursao pode ocorrer, seriam necessar ias infinitas opcoes de ocorrencias das divers as oper acoes ou testes envolvidos na recursao em questao; infinitas opcoes implicam urn programa infinito, 0 que contradiz a definicao de programa monolitico, 0 qual e constituido por um conjunto fin ito de instrucoes rotuladas.

Entretanto, sugere-se como exercicio a analise do teorema acima para urn caso especial e ilustrativo: urn programa recursivo onde a recursao (direta ou indireta) ocorre somente na ultima componente de uma cornposicao seqi.iencial. Note-se que, no contra-exemplo usado na prova, a recursao de R. nao ocorre na ultima componente,
R. def

como pode ser observado


(se

a seguir: sub i a- ad-ad) acima.

zero e n t.a o V s eriao

A prova do teorema Teorema 2.18

que segue ~

e analoga a do teorema
Iterativo. Pm qualquer,

Equivalencia Forte de Programas:


Monolitico monolitico nao necessariamente existe urn

Dado urn programa programa Prova: iterativo (Por Absurdo),

Pi, tal que Pm '" Pi.

Para provar determinada Considere

suficiente apresentar urn programa maquina, nao existe programa iterativo


0

monolitico equivalente

que, para uma fortemente. um_reg N~ N

programa n
E

monolitico N:

par na Figura

2.22 e a rnaquina (par, um_reg):

(Figura 2.15) onde a correspondente tal que, para qualquer (par, um_reg)(n) Ou seja, retorna
0

funcao computada

(par, um_reg)(n) = 1, se n e par;

= 0, se n e impar.

valor 1 sempre que a entrada

e par

e zero, caso contrario.

_.............................................................

Cil/'illl/O

2 - Programas,

Miiquinas

e Com pu tacoes
.

39

partida

Figura

2.22 Program a monolitico

Suponha que existe urn program a iterativo seja, que \Pi, um_reg): N -j N e: (par, um_reg)

Pi que computa um_reg)

a mesma

funcao, ou

= \Pi,

Suponha que Pi e constituido de k oper acoes sub. Suponha n ENtal que n ::> k. Ent.ao, e neces.sario que Pi execute n vezcs a operacao sub. Mas, como n ::> k, entao pelo menos uma das ocor rencias de sub sera executada mais de uma vez , ou seja, existe urn ciclo iterativo (do tipo enquanto ou ate) em Pi. Em qualquer caso, 0 ciclo terrniriara sempre na mesma condicao, independentemente se 0

valor for par ou impar. Portanto, a comput.acao resultante e incapaz de distinguir entre os dois casos, 0 que e um absurdo, pois e suposto que os dois program as sao equivalentes fortemente. Logo, nao existe monolitico par. urn programa iter ativo equivalente fortemente ao programa

Ob ser-vacao
Os teoremas

2.19

Poder Computacional Programas. recursivos iterativos.

dos Diversos Tipos de de que poder computacional

acima podem dar a falsa impressao

da classe dos programas vez, e maior que ados

e maior que ados monoliticos que, pOI' sua E importante destacar que consideram a maquina, as e importante mesmo poder e para funcoes

Relacao Equivalencia Forte de Programas onde, para qualquer correspondentes funcoes computadas devem coincidir. Entretanto, constatar • para que as tres classes de formalismos recursivo um maquina possuem
0

computacional, quol.quer iterativo)

ou seja: programa uma (respectivamente, monolitico tal que as monolitico) maquina, e existe existe programa (respectivamente,

qualquer

correspondentes

computadas Ou seja, para subsequentes),

coincidem.

efeito de analise

de poder computacional
maquinas distintas

(tratada

em capitulos distintos
._j

pode-se considerar

para programas

e nao necessaria mente existe uma relacao entre as oper acoes e testes (e a ordem de execucao) dos programas.

....................................................

40

'[coria till COIII/Wll/ClIO

All/llifil/os Univcrsai: .. . ..

c C(/JI//wla/Jilidodc

- T Dh'e,-io

(\- P Blauth Afcl/c;cs


.

2.4.2

EquivaH'mcia de Program as
pode ser desejado analisar a equivalencia de program as em mais fraca que a

Eventualmente,

uma dada maquina, caracterizando apresentada ate 0 momento. Definicao 2.20

uma nocao de equivalencia

Relacao Equivalencia

de Program as em uma Maqurna.

Sejam P e 0 dois program as arbitrarios, nao necessariamente do mesmo tipo e uma maquina M qualquer. Ent.ao 0 par (P, 0) esta na Relaciu: Equioalencia de Programas na Maquina M, denotado por:

P
se, e somente seja: se, as correspondentcs

=M

0
computadas sao iguais, ou

funcoes parciais (P, M)

= (0,

M) Equioalentes na Maquina M, ou
_j

Neste

caso,

sao

ditos

Programas

simples mente Programas Existem maquinas

M-Equiualentes.

nas quais nao se po de provar a existericia

de um algoritmo

para determinar se, dados dois programas, eles sao ou nao M-equivalentes. De fato, existem maquinas muito simples para as quais prova-se, este problema e nao-solucionavel. Este topico sera detalhado em outro capitulo.

2.4.3

Equiv

alerrcia

de Maqui

nas

Analogamente as equivalcncias de programas, pode-se estabelecer nocoes de equivalencia de maquinas. Afirma-se que duas maquinas sao equivalentes se uma pode simular a outra e vice-versa. Inicialmente e introduzido 0 conceito de simulacao de maquinas.

Defiriicao 2.21

Sirrrulacao Forte de Maquirias.

Sejam M = (VM, X, Y, TCXM'TCYM,nFM' nTM) e N = (VN, X, Y, TCXN' TCYN, nFN' nTN) duas maquinas arbitrarias. N Simula Fortemente M se, e somente se, para qualquer program a P para M, cxiste um programa 0 para funcoes parciais computadas coincidem, ou seja: (p, M) = (0, N) Portanto, programas maquinas. a simulacao diferentes. forte de uma maquina De fato, por outra pode ser feita usando intuitiva de simulacao de N tais que as correspondentes

est a e a nocao

importante

observar

que a igualdade de funcoes exige que os conjuntos sejam iguais. Portanto, de valores e necessaries de entrada

de

dominio maquinas

e contradominio possuam

que as duas e saida (observe

os mesmos conjuntos

..........

Capitulo

? - Prourcunas,

Mriquin
.

as

Com pu to coes

41

em detalhes

na definicao

acima), Eventualmente,

este fato pode ser um inc6modo

quando deseja-se comparar rnaquinas que determinam difcrentes cornput.acoes de entrada e saida, mas que estao relacionadas proximamente. Pode-se contornar esta dificuldade tornando nocao de codificacoes. Defirricao menos restritiva a definicao de sirnulacao atraves da

2.22

Sirrrulacao

de Maquinas,

Sejam M = (VM, XM, YM, rrXM, rrYM' IlFM' IlT~) e N = (VN, XN, YN, rrXN' rrYN, IlFN' IlTN) duas maquinas arbitrarias. N Simula M se, e somente se, para qualquer programa P para M, existe urn prograrna 0 para N e existem: Fu nctio de Codificaciio Funcao tais que: (P, M) Defirricao de Decodificacao

=d

(0, N)

c
par (M, N) esta na Iielacao

2.23 Relacao Equivalericia

de Maquinas.
0

Sejam MeN duas maquinas arbitrarias. Entao Equiualencia de Mciquina; se, e somente se: M simula N e

N simula M

2.5

Ver'ificacao da Equivalencia Programas


secao , sao descritas formas de se determinar

Forte de

Nesta

se dois programas,

sob

determinadas condicoes, sao ou nao equivalentes fortemente. programas iterativos e monoliticos podem ser transform ados

U ma vez que em programas

recursivos equivalentes fortemente, uma resposta satisfatoria a essa questao poderia ser a obtencao de um me to do geral, aplicavel a qualquer par de programas recursivos P e 0,
0

qual decidiria, em um numero

finito de passos,

se
0

P =' O. Porern, como afirmado anteriormente, ate 0 momento, nao e conhecido se problema da equivalencia forte de programas recursivos e solucionavel. N a falta de um algoritmo generico para programas recursivos, metodos para verificar a oquivalencia forte de classes mais program as. De fato, mostra-se que existe um algoritmo para

procura-se simples de decidir a

oquivalencia forte entre program as monoliticos. E, como todo 0 program a iterativo possui um programa monolitico equivalente fortemente, 0 mesmo pode ser afirmado para programas iterativos. monoliticos sao equivalentes forternente

A verificacao usa os seguintes

de que dois programas conceitos:

42

..

Troria da C()IllllUfll<,'1l0.'

,HI/(ll/il/iI.\'

Univcrsais

(' Compurabilidadc

- T Div crio (~ P Fi/uUfh AJ('I/(':n


.

a) Mtiquina de Tracos. Produz um rastro ou hist6rico (denominado traco) da ocorrencia das oper acoes do programa. Neste contexte, dois program as sao equivalentes fortemente se sao equivalentes em qualquer maquina de traces,

b) Progro ma Monolitico com Instrucoes Rotuladas Compostas. Instrucoes rotuladas compostas constituem uma forma alternativa de definir program as monoliticos. seguinte Basicamente, uma instrucao com a instrucao rotulada rotulada composta de teste): fac;a G va__para r3 que, para um dado e um teste da forma (compare

rl: se T entao De fato, usando

faca

F va__para r2 senao de t.racos.

fluxograma e possivel construir um programa equivalente fortemente usando inst.rucoes rotuladas compostas. Instrucoes rotuladas compostas induzem a nocao de r6tulos equivalentes fortemente a qual e usada para determinar se dois program as sao ou nao equivalentes fortemente.

maquinas

e facil verificar

2.5.1

Maquina

de 'I'r acos

Uma maquina de traces nao executa as opcr acoes propriamente ditas, mas apenas produz um hist6rico ou rastro da ocorrencia destas, denominado de traco, Portanto, para cornputacoes finitas, urn trace

uma palavra

sobre urn alfabeto

de identificadores de operacoes. Essas maquinas sao de grande import.ancia para o estudo da equivalcncia de program as pois, como sera verificado adiante, se dois programas equivalentes publicacao. de trace sao equivalentes em qualquer maquina de traces, ent.ao fortemente. A nocao de traco tambern e import ante no estudo e da semantica formal, os quais nao sao objetivos referentes Uma boa referencia [WIN95]. sobre estes e outros aspectos sao dos

modelos de concorrencia

desta nocao

('''I>1"d" J ~ Progranurs,

Maqui nas e Computacoes

..................................................................

43

Definicao 2.24
Uma Miiquina

Maqurna de Tracos.

de Tracos

e uma

maquina:

M = (Op*, Op*, Op*, idop*, idOp*, n., nT) onde: Op* conjunto de palauras de opero.coes onde Op = {F, G, ... } 0 qual corresponde, simultaneamente, aos conjuntos de valores de memoria, entrada e saida; idop* [un ctio identidcde funcoes de entrada
nF

em Op* a qual corresponde, e saida;

simultaneamente,

as

conjunto de interpretacoes de operacoes onde, para cada identificador de operacao F de Op, a interpretacao TCF: Op* ~ Op* e tal que, para qualquer w E op-, TCF(W) resulta na concatenacao do identificador F a direita de w, ou seja:
TCF(W)

= wF cada identificador de Il r de

lIr

conjunto de interpretacoes teste T:

de testes tal que, para falso}

TCT: Op* ~ {verdadeiro,

e funcao

Portanto, 0 efeito de cada operacao interpretada por uma maquina de traces e simples mente 0 de acrescentar 0 identificador da operacao a direita do valor atual da memoria. 0 valor de saida da funcao computada consiste em urn historico das operacoes executadas durante a cornput.acao. Em suma, para definir uma maquina de traces, precisa-se apenas especificar as interpretacoes dos testes, pois as operacoes sao predeterminadas.

Defirrieao 2.25

Funcao Induzida

por urn Traco em urna Maquirra, Op

Sejam M = (V, X, Y, TCX, TCy, Ile, nT) uma maquina,

= {F,

G, H, ... } 0 conjunto

de
E

operacoes interpretadas em nF e w = FG ... H urn trace possivel de M, ou soja, W Op*. A Funcao l ndu.zida pelo Trace W IW Mtiquina M, denotada POI':

[W, M]: X

--7

e a funcao

(total):
[W, M] = TCH

A funcao [w, M] aplicada

a uma entrada [wx, M]

XE

X e denotada
TCG TCF TCX (x)

como segue:

TCH

Portanto, resultante

a funcao da

induzida das

pOI' urn trace inter pret.acoes

nada das

mais

e e

do que a funcao opcracoes que notada em ordem

cornposicao

diversas

constituem 0 trace. Note-se que a cornposicao inversa da concatenacao de simbolos no traco,

de funcoes

44

Tcoriu do C()J/ljJi{{(/\"llo: Af(/{/II;II(/.\

Univcis.n: (' Compuiabilidndc - T. Divcri»

& P. Blauth Mcuc:«:

Teorema

2.26

Equrvalenci a Forte de Programas Equivalericiu de Programas

~ de Tracos. do mesmo
='M

em Maquinas

Sejam P e 0 dois program as arbitrarios, Entao:

nao necessariamente maquina

tipo.

P=,O se, e somente se, para qualquer


Prova:

de tracos M, P

(-)) E imediata,
(f-)

a partir da definicao de equivalencia

(pOI'que"). monolitico.

A prova

que segue

par absurdo

Para os demais casos, a prova

e similar

e e

e para programas do tipo e sugerida como exercicio.

Sejam P e 0 program as monoliticos equivalentes em qualquer maquina de tracos. Suponha que P e 0 n60 sao equivalentes fortemente. Entao existe uma maquina N = (V, x, Y, reXN' reYN' llFN' llTN) onde Op = {F, G, H, ... } e operacoes interpretadas em Flj , tal que (P, N) (0, N). Entao:

conjunto

de

• •

seja x

X uma entrada

tal que (P, N)(x)

* (0,

N)(x); tal

seja M = (Op*, Op'", Op", idOp*, idOp*, llFM' llTM) uma Maquina e Traces que, para cada traco W E Op* e para cada teste TN E llTM: T M(W) = T N([Wx, N])

onde [Wx, N] e a funcao induzida pelo traco W na rnaquina N, aplicada a entrada x. Portanto, 0 teste de um hist6rico (t.raco ) em M, e 0 correspondente teste em N, aplicado sobre 0 resultado da efetiva aplicacao das funcoes que const.itucrn 0 hist6rico. Lembre-se que, para definir uma maquina de traces, precisa-se apenas especificar as interpretacoes dOBtestes, pois as operacoes sao predeterminadas. Portanto, M esta completamente definida. POI' simplicidade, no texto que segue a entrada x

e omitida

em T N([Wx, N]) ou seja: T N([Wx, N])

e abreviado

pOI'

TN([W, N]) entrada x


E

Para qualquer

program a monolitico R, para qualquer

X, tern-se que: de tracos) x

(R, M)(E) [(R, M)(E), N] Neste contexto,

e a funcao

resulta

em urn trace (M e uma maquina

induzida pOI' (R, M)(E) em N para a entrada

prova-se que: (R, N)(x) =


reYN

[(R, M)(E), N] N)(x) , tem-se que:


reYN

Assim, considerando-se (P, N)(x)


~ reYN

* (0,

que (P, N)(x)

* (0,

N)(x) ~

[(P, M)(E), N] reYN [(0, M)(E), N] ~ ~ [(P, M)(E), N] [(0, M)(E), N] ~ ~ (P, M)(E)

* (0,

e funcao

(por que")

M)(E) que os program as monoliticos maquina de traces. Portanto, fortemente. P e 0 sao e absurdo

o que e urn absurdo, pois foi suposto programas equivalentes em qualquer supor que P e 0 nao sao equivalentes Logo, P e 0 sao equivalentes

fortemente.

Cue/rulu::

- Prouramus,

Mo qui ua« e Com.put acoes

45

A prova

qualquer entrada x E X, tem-se que (R, N)(x) = TCYN [(R, M)(£), N] e por inducao numero de pares que constitucm as computacoes. No que segue, (rk, viJ e (Tf1k, w0 represcntam pares respectivamente. das computacoes de (R, N) e
TCYN [(R,

que, de fato, para

qualquer

program a monolitico

R = (1, ra), para

M)(f) ,

NJ,

a) Base de Inducao, Suponha ro


Va

= O. Entao:

= Ino = TCXN(X) =

[r, N]

two, N]

b) Hipotese de l nducoo, Suponha que, para algum n :2: 0 fixo, tem-se que: r" = Inn
Vn = [Wn, N]

c) Passo de Inducao, Existem dois casos possiveis: c.Ll Operaciio . r:


Vk+1

fac;:a F va_para NJ)

r'
N]

= TCFN(v0 = TCFN([Wk,

[wkF,

[Wk+1, N]

c.2) Teste. r:
rk+ 1

se T erir ao va_para

r' NJ)

s eriao va_para

r"

Vk+1

Port.anto,

(R,

= mK~ 1 pois T M(w0 = T N([Wk, = Vk = [Wk, N] = [Wk+1, N] N)(x) = TCYN [(R, M)(E), N]
do seguinte corolario Equivalericia

= T N(Vk)

A justificativa Corolar io 2.27

e sugerida

como exercicio: em Maquirias de T'racos. do mesmo tipo.

Forte de Program as .~

Equi valenci a de Programas Sejam P e 0 dois programas Ent.ao: P == 0 se, e so mente se, para qualquer maquina arbitnirios,

nao necessariamente

de traces M, (P, M)(E)

= (0, M)(E)
:J

2.5.2

In str-ucoes Rotuladas Compostas


da equivaloncia forte de dois programas monoliticos pode ser rcalizada usando uma forma equivalente (fortemente) de de instrucoes rotuladas compostas.

A verificacao mais facilmcnte represent.acao

base ada em conjuntos

Instrucoes rotuladas compostas possucm somente uma unica forma, ao contrario das instrucoes rotuladas as quais podem ser de duas formas: oper acao ou teste. De fate, uma inst.rucao rotulada composta combina ambas em uma unica forma.

Tcoru, do CO}II/1iITIlCllO: Muqtrinu: Universuis f Cnl11/JllluhilidlU/e - T. Divcrio & P. Blautl, AlellC'::.n ....................................................................................................................................................................

46

Definicao 2.28 Iristr-ucao Rotulada Composta.


U rna Instruciio Rotulada Composta e uma sequencia de simbolos da seguinte forma (suponha que F e G sao identificadores de operacao e que T e urn identificador de teste):

Adicionalmente: • • r2 e r3 sao ditos r6tulos sucessores rl e dito rotulo antecessor de rl

de r2 e r3

Definicao 2.29 Program a Monolitico com Instrucoes Rotuladas Compostas.


Urn Programa ordenado Monolitico com

Instrucoes
P=(I,r)

Rotuladas

Compostas

P e urn par

onde:
I

Conjunto

de lnstrucoes
0

Rotuladas

Compostas

0 qual

e finito;

Rotulo Inicial

qual distingue

a instrucao

rotulada inicial em 1.

Adicionalmente, • •

relativamente

ao conjunto diferentes

I tem-se que:

nao existem duas instrucoes

com urn mesmo r6tulo;

um r6tulo referenciado por alguma instrucao 0 qual ruio e associ ado a qualquer instrucao rotulada e dito urn Roiulo Final. CJ

Para simplificar 0 entendimento da deterrninacao da equivalencia forte de program as monoliticos, no que segue, e considerado somente 0 caso particular em que os programas possuem um unico identificador de teste, denotado por T, como o representado na Figura 2.23. 0 caso geral (mais de urn identificador pode ser facilmente estendido. Considerando urn compost a da forma: rl: se T entao pode ser abreviada unico identificador de teste, uma instrucao de teste) rotulada

fa~a F va_para

r2 senao fa~a G va_para

r3

simples mente por:


rj
:

(F, q), (G, q) algoritmo para melhor


0

A seguir, instrucocs intercalar

apresentado compostas.

um

traduzir segue.

fluxogramas

em

rotulas

Para
0

urn

entendimento,

sugere-se

a leitura do algoritmo com

exemplo que

...................

Capintlo 2 - Programas,

Maquinas

e Com pu tacoes

47

Defirricao 2.30

Algoritmo: Fluxograma

Rotuladas

Compostas.

Os componentes elementares de partida, parada e operacao de urn f1uxograma sao genericamente denominados de No. 0 Algoritmo para Traduzir urn. Fluxograma Rotuladas P para Compostas

urn Programa
e como segue:

Monolitico

P' Constituido Suponha,

por

Instrucoes
de

a) Rotulacao

de Nos. Rotula-se

cada n6 do f1uxograma.

sem perda

generalidade, que existe um unico componente elemental' de parada, ao qual e associado 0 identificador f (palavra vazia). 0 r6tulo correspondente ao no partida e
0

R6tulo Inicial do programa

P';

b) Instrucoes Rotuladas Compostas. A construcao de uma instrucao rotulada composta parte do no partida e segue 0 caminho do f1uxograma. Dependendo do pr6ximo componente elemental', tem-se que: h.L) Teste. Para um teste como na Figura 2.23, a correspondente rotulada composta e como segue: rl: instrucao rotulada (F, r2), (G, r3) como na Figura 2.23, a correspondente e como segue: inst.rucao

b.2) Operacao, Para uma operacao composta


rj
:

(F, q), (F, q) forma como na Figura compost a e como segue: 2.23, a

b.3) Parada. Para correspondente

uma parada da instrucao rotulada


r:

(parada, f), (parada, f) como na Figura 2.23, urn no, resultando na seguinte

b.4) Testes Encadeados. segue-se instrucao


0

No casu de testes encadeados composta:


rj
:

f1uxo ate que seja encontrado rotulada

(F, q), (G, q) sucessivos de testes. Note-se que que H e impossivel, pois, como e suposto

Analogamente a ocorrencia

para encadeamentos da operacao

existe somente um identificador de teste, equivale a afirmar que T e uma contradicao, ou seja, e simultaneamente verdadeira e falsa; b.5) Testes Encadeados por testes inst.rucao rotulada em Ciclo Infinito. como na composta r composta
j:

Para urn cicio infinito determinado Figura 2.23, a correspondente

encadeados

e como segue:

(F, q), (ciclo, co) uma instrucao rotulada ao cicio infinito, ou seja: (cicio, co), (cicio, w) dos n6s de um f1uxograma no de partida. usa numeros

Neste caso, deve ser incluida, adicionalmente, correspondente


(0:

No texto naturais,

que segue,
0

a rotulacao 1 para
0

fixando

numero

.........................

48

Tcori., da Conl/J/I!(/~'(7():

1\1(/(/II;I/(/.\"

Universais

e Coniputalnhdnd«

- T Divcri.,

& P. Blnuth

Alellc:!'.\"

r2

cb
Operacao r

rl

Yl

Testes Encadeados

r2

r4

r3

B
Parada Testes Encadeados em Ciclos Infinitos

Figura 2.23 Instrucoes

rotuladas

eompostas

EXEMPLO 2.18
Considere
0

Algoritmo: Fluxograma

Rotuladas Compostas.
na Figura

programa

monolitico especificado na forma de fluxograma

2.24 cujos n6s ja estao rotulados. 0 correspondente programa com instrucocs rotuladas compostas e representado na Figura 2.25, supondo que 1 e 0 r6tulo inicial. Note-se que:

(:" n (1,,1 0.2..:. J>.':o_g_

'(/,,'(/

'.' ..

lvf.({'ll/l.'. '.11:' .. C.. ~: I) ,,!I! ".tII'-()~ s......................

49

r6tulo 2 e sucessor dele mesmo. 0 mesrno ocorre com os r6tulos 4, 7 e oi; existem dois caminhos no fluxograma que atingem n6 parada. Entretanto, somente urn e representado no conjunto de instrucoes rotuladas

compostas. contradicao • na instrucao

0 segundo
de T; rotulada

caminho

impossivel,

pois

trata-se

de uma com
0

por 7, ocorre urn ciclo infinito (compare por testes encadeados como

caso
_J

de ciclo infinito determinado rotulada por co).

na instrucao

Figura

2.24 Fluxograma

com os nos rotulados

1:

(G, (G, (F, (F, (F, (G,

2) 2)
4)
r

r r

(F, (F, (G, (G, (CiCiO, (G,

3) 3)

2:
3:

5) 5) w)
(G, 7)

4: 5: 6: 7: w:

4) , 6)
r

(parada , E) ,
7) ,

7) (ciclo .
w)

(clclo.

w) ,

Figura 2.25 Conjunto de instrucoes

rotuladas

compostas

50 Tcoriu dd ......................

C()Jl1l'lIhl<,,"lf(J:

Maqnina:

Uuivcrscns

e Conunnubilidcnlc

- T Diverio & P. Bl.unh A1el/t:.('s


.

Relativamente aos programas especificados usando compostas, as nocoes de computacao e funcao computada program as monolfticos.

instrucoes rotuladas sao analogas as dos

A seguir, verifica-se que, de fato, um f1uxograma e 0 seu correspondente program a com instrucoes rotuladas compostas sao equivalentes fortemente, excetuando-se Lema 2.31 para cornputacoes Equivalericia finitas, devido ao no de parada. ~ Rotuladas Compostas. e P' = Forte: Fluxograma

Sejam P e um program a monolitico especificado (1, 1)


0

na forma de fluxograma usando


0

seu correspondente

programa

construido

algoritmo de traducao

de fluxograma para instrucoes rotuladas compostas, supondo 0 rotulo 1 associado ao no de partida. Entao, para qualquer maquina de t.racos M, tern-so que: (P, M)(E) = (P', M)(E) Prova: • •

A prova

e trivial

(por que"). Lembre-se que: simplesmente concatena identificadores


0

uma maquina oper acoes;

de traces

de

a palavra vazia E, correspondente da oper acao de concateriacao;

ao rot.ulo de parada, e

elemento

neutro

0 identificador cicio ocorre so mente em cornputacoes correspondentes funcoes computadas sao indefinidas.

infinitas,

quando as

2.5.3

Equivalencia

Forte de Programas Monoliticos

Para introduzir a equivalencia forte de programas monoliticos e necessario, antes, apresentar 0 conceito de uniao disjunta. A unuio disjunta de conjuntos garante que todos os elementos dos conjuntos componentes constituem 0 conjunto resultante, mesmo que possuam a mesma identificacao, Neste caso, considera-se idcntificacao. resultante que os elementos sao distintos, mesrno que possuam a mesma Por exemplo, para os conjuntos A = {a, x} e B = {b, x}, 0 conjunto

da uniao disjunta

e:

No exemplo,

indice

e usado

para assegurar

que as identificacoes

dos elementos

sao distintas. Por simplicidade, quando a idontificacao for unica, 0 mdice pode ser omitido. Assim, conjunto resultante do exemplo acima fica como segue:

{a,XA, b,XB}
A verificacao Equivalencia da equivalencia forte de program as monoliticos
0

seguinte corolario sobre uniao disjunta Forte: Fluxograma


--7

qual

e base ada

no

decorrencia Compnstas.

direta do Lema 2.31 -

Rotuladas

C"piIU/O 2 - Program

as, Maquinas

e Com putacoes

51

Corolar-io 2.32 Equivalencia Forte: Urriao Disjunta.


Sejam Q = (IQ, q) e R = (IR' r ) dois program a monoliticos especificados usando inst rucoes rotuladas compostas e sejam Pq = (I, q) e Pr = (I, r) programas monoliticos onde leo conjunto resultante da uniao disjunta se, Q == R de
1Q

1R.

Entao:
:J

Pq == Pr se, e somente

Assim, 0 algoritmo para verificacao da equivalencia forte de Q e R resume-se a verificacao se Pq e Pr sao equivalentes fortemente. Entretanto, para desenvolver
0

algoritmo,

e nccessario

considerar: de conjuntos ordenada pela rel acao de

• •

cadeia de conjunto: sequencia


inclusao;

programa

monolitico

simplificado:
sao
0

determinam ciclos infinitos rotulada por co,se existir);

inst.rucoes rotuladas compostas que excluidas (excetuando-se a instrucao algoritmo de vorificacao em rotulos consistentes. se P q e Pr sao

r6tulos equiualentes forte mente:


equivalentes

forte mente baseia-se

Definicao

2.33 Cadeia de Conjuntos, Cadeia Finita de Conjuntos, Limite de uma Cadeia Finita de Conjuntos.
de conjuntos AoA1 ... e dita: k ~ 0, onde existe n,

Uma sequencia

a) Uma Cadeia de Conjuntos se, para qualquer

Ak <;;;; Ak+1 b) Uma Cadeia Finita de Conjuntos e uma cadeia de conjuntos para to do k ~ 0, tal que: An Neste caso, define-se
0

= An+k = An
..J

Limite da Cadeia Finita de Conjuntos como segue:


lim A,

A lema a seguir fornece urn algoritmo para determinar infinitos em urn conjunto de instrucoos rotuladas compostas. partir da instrucao parada, rotulada por
E,

se existem ciclos A ideia basic a e antecessores.

determinando

os seus

Por exclusao, uma instrucao que nao e antecessor a da parada determina urn ciclo infinito. As provas dos lc mas e teorema que seguem sao omitidas e podem ser encontradas em [BIR76]. Identificacao

Lema 2.34

de Ciclos Infinitos em Programa Monolitico.


uma

Seja I e urn conjunto de n instrucoes rotuladas compostas. Seja AoA1' sequencia de conjuntos de r6tulos indutivamente definida como segue: Ao = {E} Ak+1 = ~
u {r

Ire

rotulo de instrucao

antecessora

de alguma

instrucao

ratulada

por Ak} finita de conjuntos se, e somente se, e, para qualquer rotulo r de

Ent.ao AoA1 ... e uma cadeia instrucao de I, tem-se que

(I, r) == (I, co)

r E lim Ak

52

Tcori« do C(/II//llI{d\'!I(/:
.......

AI(/(jltill({s

Univcrs.n»

e Computalnlidiul«

- T. Divcn.,
.

&

P Blauth Alcl/c::cs

Olema caracteriza EXEMPLO

acima proporciona ciclos infinitos.

uma maneira

facil de determinar em Programa

se algum r6tulo Monolitico. na

2.19 ldentificacao de Ciclos Infinitos

Considere 0 conjunto 1 de instrucoes rotuladas compostas representado Figura 2.25. A correspondente cadeia finita de conjuntos e como segue: Ao = {s} A1 = {6, A2 = {S, A3 = {3, ~ = {I, As={l, Logo: lim h = (1,7)
'=

£} 6,
4, 2, 2,

E}
5,

6,
4, 4,

£}
5, 5,

3,
3,

6, 6, 5,

£} £} 6,

{ 1,

2,

3,

4,

e}

(1, (I)), pois 7 E lim Ak

Portanto, pode-se sirnplificar um conjunto de instrucoos rotuladas compost as eliminando qualquer instrucao de r6tulo r CD que determine um ciclo infinito.

Defiriieao 2.35 Algoritmo de Sirnplificacao de Ciclos Infinitos.


Seja 1 um conjunto finito de instr ucoes rotulas Simplificaciio de Ciclos lnfinitos e como segue: a) Determina-se lema acima; b) Para qualquer • • • a correspondente compostas. 0 Algoritmo de

cadeia finita de conjuntos

AoA1 ... como no

r6tulo r de instrucao de 1 tal que r E lim Ak, tem-se que:

a instrucao rotulada por r e excluida toda referencia a pares da forma (F, r) em 1 1 = 1 U {(I): (cicio, (I)), (ciclo, CD)}.J 2.20 Simpl ificacao de Ciclos Infinitos

e substituida
em Programa

por (cicio, (I)) Monolitico.

EXEMPLO

Considere conjunto de inst.rucoes rotuladas 2.25 0 qual corresponde ao fluxograma correspondente conjunto de instrucoes representado na Figura 2.26.
1: 2: (G, (G, 2) , 2) ,

cornpostas representado na Figura represent ado na Figura 2.24. 0 compostas simplificadas


..J

rotuladas

(F, 3 ) (F, 3 )
(G, (G,
5)

3:
4: 5: 6:
(I):

(F, 4) , (F, 4) , (F, 6) ,

5)

(ciclo , w) (parada , E), (ciclo , w) (ciclo . CD) , (ciclo , (I))


2.26 Conjunto de instrucoes rotuladas compostas e simplificadas

Figura

................................................................................................................................................................................

Capitulo 2 . Programas,

Maquinas

e Computacoes

53

Lema 2.36
Seja
I

ROtulosConsistentes.
finito de instrucoes por res rotuladas compostas diferentes e simplificadas. de e, Suponha que dois r6tulos de instrucoes de I, ambos rotuladas
rj
}, ),

urn conjunto

Sejam res as instrucoes


r:

sao da seguinte

forma, respectivamente:

(F1, (G1,

s: Entao, res

sj

sao r6tulos consistentes se, e somente se:

o
Olema acima induz a seguinte

definicao.

Definicao 2.37 R6tulos Equivalentes Fortemente.


Seja I urn conjunto finito de instrucoes rotuladas compostas e simplificadas. Sejam res dois r6tulos de instrucoes de I. Entao, res sao R6tulos Equivalentes

Fortemente se, e somente, se:


• • ou r = s = E; ou res sao ambos diferentes de E e consistentes,

Teorema 2.38 Determfriacao de R6tulos Equivalentes Fortemente.


Seja I urn conjunto de n instrucoes compostas e simplificadas, Sejam res dois r6tulos de inst.rucoes de 1. Define-se, indutivamente, a sequencia de conjuntos

BoB1 ... como segue: Bo = {(r, s)} Bk+1 = {(r",


s")lr" e s" sao r6tulos respectivamente, (r', s ") E Bk e (r", s ") sucessores de r' Bj, i E {D, 1,.", k}} e
s'

rf_

Entao BoB1 ... uma sequencia de conjuntos que converge para 0 conjunto vazio e r, s sao r6tulos equivalentes forte mente se, e somente se, qualquer par de Bk e constituido por r6tulos consistentes. o

o seguinte

algoritmo

e induzido pelo teorema

acima bern como pelo Corolario

2.32 - Equivalencia

Forte: Uniao Disjunta.

Definicao 2.39 Algoritmo de Equivalericia Forte de Programas Monoliticos.


Sejam Q instrucoes passos:

(1Q, g) e R

rotuladas

(1R' r ) dois program as monoliticos especificados usando compostas e simplificados. 0 Algoritmo de Equiualencia

Forte de Programas Monoliticos Q eRe Passo 1. Sejam Pq


resultante e somente

como

determinado

pelos seguintes conjunto rotulada co,

= (I, g) e PI = (I, r ) program as monoliticos

onde leo

da uniao disjunta se, Q == R;

de 1Q e 1R, excetuando-se

a instrucao

se existir, a qual ocorre, no maximo, uma vez em 1. Lembre-se

que Pq == Pr se,

Pa sso 2. Se q e r sao rot.ulos equivalontes coutr.uio, Q e R nao sao equicalentes


0

fortcmente,

ent.ao Bo = {(q, r)}. Caso

[ortemente

eo algoritmo term ina;

Passo 3. Para k 2: 0, define-se de r6tulos succssores


• q';tc

conjunto

Bk+1, contendo so mente os pares (q", r ")


E

de cada (q' , r ') de

Bk, tais que:

r'

• •

q' e r'

sao ambos diferentes

os pares sucessores

(q", r ") nao sao elementos

de Bo, Bl, ... , Bk

Passe 4. Dependendo a) b) Bk+1

de Bk+1, tem-se que: [ortemente e


0

0: Q e R sao equiculcntes

algoritmo termina:

Bk+1;1" 0: fortemente, equiualcntcs

se todos os pares de rntulos de Bk+1 sao equivalentes eutao va para 0 Passo 3; caso contrario, Q e R ruio silo [ortcmente eo algoritmo termina. acima, a const.rucao dos conjuntos Fortemente referida no

Note-se Teorcma EXEMPLO Considerc

que, no algoritmo 2.21 Algoritmo

2.38 - Determinacao

de H6tulos Equivalentes

e implicita.

de Equiual encia Forte de Progro mas Monoliiicos. Q e R especificados na forma de fluxograma Relativamente

os programas

monoliticos

representados nas Figura 2.24 e Figura 2.27, respectivamente. aos pre-requisites do algoritmo, tem-se que:
8 partida

13

Figura

2.27 Fluxograma

a) A especificacao simplificado,

e representado

do programa

Q usando

instrucoes

rotuladas

compost.as,

ja

na Figura 2.26.

b) Em relacao ao program a R, tem-se que:

.........

('({pirl/ln

2 - Prouramas,

Mo qu ina» e Coniputocoes
.

_..................

55

b.1J 8:
9:

Conjunto de in sirucoes rotuladas compostas.


(G, (G, (F, (F, (F,
9) 9) ,
r r

(F, (F, (G, (F,


E) ,

10 ) 10 ) 11) 13) (F, 13) 13)

10: 11: 12: 13:

10)

12) , 13) ,

(parada ,

(F,

b.21 ldentificacao AO={E} A1={12, A2 = { 11,


A3 A5 A4={8,

de ciclos infinitos.

E}
12, 11, 9, 9, E} 12, E} 12, 12, 11, 11,

= { 10, = {8,

10, 10,

E} E}
11, 12, r}

Portanto:
limAk={8, 9, 10, (IR' 13) == (I, co),pois 13 E lim Ak

b.3) Simplificaciio 8:
9:

de ciclos infinitos.
10 ) 10) 11)

(G, (G, (F, (F,

9) 9)

, ,
r r

(F, (F, (G,

10: 11: 12:

10) 12)

w:

(Cicio, w) ( parada, E) , (ciclo , w) (ciclo . co ) , (ciclo . w)

Relativamente

a aplicacao
oi, como segue:

do algoritmo,

tern-se que:
IQ p IR, cxcetuando-se

Passo 1. Seja
rotulada 1:
2: 3: 4:

I a uniao disjunta

dos conjuntos

a instrucao

(G, (G, (F, (F, (F,

2) , 2) 4)
6)
r

(F, (F, (G, (G,

3) 3) 5) 5)

4) ,
r

5:
6:

(ciclo , w) (parada , £) r (ciclo , w)


,

8:
9:

(G, (G, (F, (F,

9) 9)

,
r r

(F, (F, (G,

10) 10) 11)

10: 11: 12:


W:

10)

(ciclo , w) (parada , £) , (ciclo , w)


12) ,

(ciclo , w) , (ciclo . w)

56

Tcoiia

...............................................................................................................

do CompllfO(t1n:

AI(I(IUifl(ls

Universais

e Coniputulnlidad«

- T Dive rio & P. Blauth Mel1l!;es - .. -_-

Para verificar

se Q '" R e suficiente

verificar se (1, 1) '" (1, 8). fortemente, entao:

Passo 2. Como 1 e 8 sao r6tulos equivalentes Bo = {(I, 8)} Passos 3 e 4. Para k :::: , construcao 0
B1 B3

de Bk+1 e como segue: pares de r6tulos equivalentes pares de r6tulos equivalentes pares de rotulos equivalentes pares de rotulos equivalentes forte mente fortemente fortemente fortemente

= {(2,

9), (3, 10)}

B2 = {(4, 10), (5, 11)}

= {( 6, 12),
E)}

(co, ro) }

B4 = {(E, B5 = 0

Logo (1,1) = (1,8) e, portanto,

Q '" R

CJ

EXEMPLO 2.22
Foi afirmado representados nos rotulados, requisitos

Algoritmo de Equioalencia

Forte de Programas Monoliticos.

anteriormente que os program as monoliticos (fluxogramas) na Figura 2.18, reproduzidos novamente na Figura 2.28 com os sao equivalentes fortemente. De fato, relativamente aos pretem-se que:

do algoritmo,

Programa Monolftico

P1
Programa Monoiftico

P2

Figura 2.28 Fluxogramas

equivalentes

forte mente

a) A especificacao simplificado)
1: 2:

de

P1

usando

instrucoes

rotuladas

compostas

(e ja

e como segue:
2), 2),

(F,
( F,

(parada.
( parada,

E) E)

b) A especificacao simplificado) 3:
2:

de

P2

usando

instrucoes

rotuladas

compost as

(e ja

e como segue: 4),


4),

( F, (F,

( parada, E) (parada , E)

Capitulo ? - Programas,

Mtiquiruts

e Comput acoes

57

Portanto, os correspondentes iguais, a menos dos r6tulos. Relativamente

conjuntos do algoritmo,

de instrucoes

rotuladas

compostas

sao

aplicacao

e facil de verificar

que (1, 1) '" (1, 3).

Logo, tambern como afirmado anteriormente, a relacao equivalente forte mente fornece subsidios para analisar a complexidade estrutural de programas. No caso, P1 e estruturalmente "mais otimizado" que P2.

2.6

Conclusao
sao introduzidos os conceitos de programa e maquina os quais

Neste capitulo,

sao us ados para construir as definicoes de cornputacao e funcao computada. Em particular, estuda-se tres tipos de programas: monolitico, iterativo e recursivo. Baseadas em funcao com put ada as seguintes nocoes de equivalencia de programas e maquinas sao apresentadas: programas equivalentes fortemente, programas equivalentes (em uma maquina) e maquinas equivalentes. de tipos A relacao program as equivalentes forte mente induz uma hierarquia

de programa: recursivos sao mais gerais que os monoliticos os quais, por sua vez, sao mais gerais que os iterativos. Adicionalmente, mostra-se a existencia de um algoritmo para verificar se programas monoliticos (ou iterativos) sao equivalentes fortemente. Entretanto, ate 0 momento, nao e conhecido se existe um algoritmo analogo para programas recursivos.
0

No pr6ximo capitulo, e visto caracter-izacao do que e comput.avel formalismos de maquinas

conceito de maquina e a correspondencia entre

universal, a os diferentes

e cornputacoes. e como na Figura 2.29.

A relacao entre os conceitos deste e demais capitulos


Maquina

Figura 2.29 Relacao entre os conceitos deste e demais capitulos

2.7 Exercicios

Exercicio 2.1 Idcntifique

e compare construcoes analogas as usadas nas definicoes de programas monolitico, iterativo e recursivo em linguagens de prograrnacao como: Pascal, C ou outra de seu conhecimento. Desenhe seguintes programas a) P2 = ({ r' j
:

Exerclcio 2.2

um

fluxograma q}, r j ) iterative);

que

corresponde

a cada

um

dos

f ac a V va_para

b) Cornposicao c) Programa d) Programa

ate

(programa

sem instrucao sem instrucao

alguma; de parada. a program as iterativos:

Exerclcio 2.3

Relativarncnte

a) Em que situacao

a execucao de: enquanto T f ac a V

V pode nao ser executado? h) Por que a operacao vazia V constitui c) Por que pode-se afirmar a traducao que: iterativo para um monolitico e trivial? um programa iterativo?

de urn. programa Relativamente

Exerclcio 2.4
uma maquina, b) Analogamente c) Analogamente

a cornput.acao: que a cornputacao iterative? recursive? cornputacao e funcao computada. em uma maquina. (W, M) de um de um programa monolitico em

a) Por que e possivel afirmar

para urn dado valor inicial de memoria, e dcterministica? para um programa para um programa Caracterize

Exercicio 2.5 Exerclcio 2.6 Exercicio 2.7


programa

e diferencie

Defina cornputacao De a definicao

de programas da funcao M.

iterativos

formal

computada

iterativo

W em uma maquina

Exerclcio 2.8

Defina cornputacao

finita para programas

itcrativos.

C({I)/lli/() 2 - Proerumas, Mtiquino» e Conipu.tocoes .......................................................................................................................

59

Exercicio infinita. Exercicio rnaquina:

2.9

Escreva

um

programa

iterativo

on de

cornput.acao

soja

2.10 Relativamente programa 2.7l.

funcao computada

por um prograrna 2.10) para computada

em uma

a) Considere dois_reg dois_reg) b) Considere dois_reg c) Considere

monolitico

mon_b<e-a (Figura funcao

a maquina (mon_b<e-a,

e total?
0

(Figura

A correspondente monolitico

programa

comp_infinita

(Figura 2.]21 para a maquina computada M

(Fib'Ura 2.7). Para dois_reg) programa


rry,

(comp_infinita,
0

e dcfinida?

quais valores qqjnaquina

do dominio a funcao (Figura

= (\/,

recursivo

2.]4) e uma maquina entrada'? e teoremas:


H

X, Y, rrx,

llc , I IT) qualquer.

computada Exercicio

(qq rnaquina. M)

e indefinida

POI' que

a correspondente

funcao

para qualquer corolarios

2.11 Helativamente

aos seguintes de

a) Corolario 2.27 - Equivaloncia Forte Program as em Maquinas de Tracos, a.Ll .Iustifique a.2) a afirrnacao

Program as

Equivalencia

de

de que a prov a (~)

e imediata;
2.31 - Equivalcncia ~ Forte:

Esboce a prova (" ..) para programas a afirrnacao ~ Rotuladas de que a prova Compostas

iterat ivo e recuraivos:

b) Justifique Fluxograma

e imediata;

do Lema

c) POI' que 0 Lema 2.31 - Equivalencia Forte: Pluxograma Compostas gar ante que Pq =' Pr se, e so mente se, Q =' R? d) .lustifique Equivalcncia
0

Rotuladas

Corolario de Programas

2.27

Equivalencia

Forte

de

Programas

em Maquinas

de Tracos. pOI'

Exercicio 2.12 Traduza f1uxogramas em programas a) Fluxograma b) Fluxograma c) Fluxograma:3 d) Fluxograma e) Fluxograma

os programas monoliticos representados rocursivos e simplifique se possivcl, na Figura 2.:30; na Figura 2.:31: na Figura 2.:32; na Figura 2.:33; na Figura 2.:34.

1 represent.ado 2 representado rcpresentado 4 represontado 5 reprcsentado

................................................................................................................................................................................

60

Teoria do Computaciio:

Miiquinas

Universais

r Computabilidade

- T. Divcrio

& P. Blauth Mrncrcs

Figura 2.30 Fluxograma

partida

Figura 2.31 Fluxograma

................................................................................................................................................................................

C"p{III/O 2 - Programas,

Mo quinas

e Comput.acoes

61

Figura

2.32 Fluxograma

Figura

2.33 Fluxograma

...............

62

__

T{'(}ria __ .__

.I" C(}III/lIl/(/('{/(},

Af,/I/lIilla,1 .

[JIIII'erlai,1

e' C(}III/llilahilll/ade

Din'ri(}

& P, 1J/"'iI/'

Mmee",

Figura

2,34 Fluxograma

Exerclcio programa

2.13 Traduza

programa

iterativo

represent ado na Figura

2.:35 em

monolitico, nas formas de :

a) Fluxograma; b) Instrucoes rotuladas.

(se T1 en tao enquanto T2 fac;a (ate fac;a


s eriao

(11'))
Figura 2.35 Programa iterativo

Exercicio

2.14 Traduza

programa

recursive

representado

na Figura 2.36 em

program a iterativo. P Eo Rl onde Rl def (se T entao F;R2 senao Rl), R2 def G; (se T enUio F;Rl seria 11') o
Figura 2.36 Programa recursivo

Exercicio relacao

2.15 Suponha

que se escreva M2) se

M1 :s; M2 se a maquina testes e operacoes a M2? M1 :s; M2? Qual

M2 simula

M1,

mas M1 pode ter na sua dofinicao outros entre (P, M1) e (P', da maquina cornputacional

a mais. Qual e a relacao do poder

M1 em rclacao a maquina

ClI/JIll/to

2 - Progrinnos,

.........................................................................................

Moquinas

e Com put acoes

63

Exercicio 2.16 Suponha que na definicao de uma maquina, funcoes parciais na especificacao dos identificadores de operacoes definicao apropriada em tal caso. Exercicio 2.17 Mostre que os seguintes programas da funcao computada

seja admitido e testes. De a

por um program a em uma maquina

P e Q represent

ados na

Figura 2.37 sao equivalentes. Programa Iterativo P


ate f ac a fa<;:a

T
(V);

enquanto

T (F;G;(

se ent.ao

T F·
ate fa<;:a (V) T

senao

V)) Q
1

Programa Monolitico
1: 2: 3: 4: 5: se

T entao

va_para 3 4

2 senao

va_para

fa<;:a F va_para fa<;:a G va_para se

T entao va_para 1 fa<;:a F va_para


Figura

5 senao

va_para

2.37 Progrum as itcrativo

(acima ) e monolitico

(abaixo)

Exercicio 2.18 Verifique se os program as monoliticos Figura 2.38 sao equivalentes fortemente. Programa Monolitico
1: 2: 3: 4: 5: 6: 7: 8: fa<;:a F va_para se se se se 2 3 senao 1 senao 7 senao 6 senao va_para va_para va_para va_para

M1 e M2 representados

na

M1
5 0 2 0

T entao

va_para 4 6 8

fa<;:a G va_para fa<;:a F va_para

T en tao va_para T entao T entao


va_para va_para

fa<;:a G va_para

Programa
1: 2: 3: 4: fa<;:a F va_para se se 2

Monolitico

M2
1 0

T entao T entao

va_para 4 va_para Figura

3 senao 1 senao

va_para va_para

fa<;:a G

va_para

2.38 Program as monoliticos

Troria da C0I11Pll1aS"i"i(): A1ti(/llillus Universais (! Computabilidade - T. Diverio & P. Btauth MI!//(,:'I!s ................................................................................................................................................................................

64

Exercicio 2.19 Qual


Programas?

importancia

da

relacao

Equivalencia

Forte

de

Exercicio 2.20 Verifique se os programas


Figura 2.39 e Figura 2.40, respectivamente, Programa enquanto
f aca

iterativos

W1 e W2 definidos fortemente.

na

sao equivalentes

Iterativo W1

T
Figura 2.39 Program a iterativo

(F; (se T en t ao f aca V seriao f aca G))

Programa Iterativo W2 enquanto f aca

T
T f ac a (F); G)
2.40 Programa iterativo Figura

(F; enquanto

Exercicio 2.21 Traduza os programas

iterativos 2.39 e na Figura 2.40 para program as recursivos.

W1 e W2 definidos na Figura

Exerclcio 2.22 Traduza

0 program a monolitico da Figura 2.41 na forma de instrucoes rotuladas compostas. Como existem dois testes, cada instrucao rotulada com posta ten! quatro possiveis sucessores, urn para cada possivel cornbinacao de valores-verdade dos testes T 1 e T2.

Programa
1: 2: f aca F va_para 2

Monolitico

Dois_ Testes
3

3: 4:

se T1 entao va_para fa<;:a va_para 4 G se T2 entao va_para


Figura

1 senao va_para

0 senao va_para

2.41 Program a Monolitico

Exercicio 2.23 Adapte para


seguintes itens: a) Lema 2.34 - Identificacao

caso do programa

monolitico da Figura Monolitico;

2.41, os

de Ciclos Infinitos em Programa de R6tulos Equivalentes

b) Teorema 2.38 - Deterrninacao

Fortemente; Monoliticos; para


0

c) Definicao 2.39 - Algoritmo de Equivalencia

Forte de Programas rotuladas

Exerclcio 2.24 Generalize


caso de tres testes distintos.

a definicao de instrucoes

compostas

Exercicio 2.25 Traduza


instrucoes rotuladas

os fluxogramas

da Figura

2.30 e da Figura

2.32 em

compostas.

Maquinas Universais

Ate 0 momento, 0 termo algoritmo foi intuitivamente usado como solucao de urn problema, ou seja, como uma forma de descrever se determinada propriedade e verificada ou nao para uma dada classe de entrada. Portanto, a investigacao da solucionabilidade de urn problema e a invostigacao da existencia de urn algoritmo capaz de resolve-lo. Entretanto, se a nocao algoritmo e intuitiva (nao-formal), qualquer afirrnacao sobre a nao-solucionabilidade de determinado problema e questionavel, Relativamente • •

a nocao intuitiva

de algoritmo,

seguinte pode ser afirmado: em urn

sua doscricao deve ser finita e nao-ambigua; deve consistir de passos discretos, executaveis mecanicamente tempo finito.

Limitacoes de tempo ou de espa~o podem, eventualmente, determinar se urn algoritmo pode ou nao ser utilizado na pratica. Entretanto, estas nao sao restricoes te6ricas pois a inexistencia de limitacoes ruio implica recursos ou descricoes infinitas. Assim, recursos de tempo e espa~o sao "tanto quanto necessaries". 0 correto entendimento dessa observacao e de fundamental importancia para todo 0 estudo que segue.

66

..

TC(Jr;lI dll C(}/I//)II{lI('il(}:

A1li(llIill({s Unncrsais c COllI/Jllfdhihdade

- T. Divcrio

(_(P Blw(/I! A/elle::es .

Considerando que um algoritmo deve possuir uma doscricao finita, alguns tipos de dados podem nao satisfazer tal condicao como, por exemplo, os numero irracionais, onde qualquer descricao finita de seus valores constitui apenas uma aproximacao. 0 mimero 11: e um exemplo bem afirrnacao. Assim, no que segue, 0 estudo e restrito seja, definidos sobre
0

conhecido que ilustra esta aos algoritmos naturais, ou

conjunto dos numeros

naturais.

Na realidade, qualquer conjunto ser equivalentemente considerado. possuem descricao

coniauel (existe uma bijecao com N) poderia Mesmo para os tipos de dados cujos valores de tipos deve ser considerada

finita, uma grande variedade

como, pOI' exemplo, inteiros, cadeia de caracteres, valores-verdade, etc., bem como tipos base ados em conjuntos estruturados como vetores. Adiante, e exemplificado como alguns destes tipos de dados podem ser codificados como naturais. conceito de programa, como introduzido anteriormente, satisfaz nocao intuitiva de algoritmo. Entretanto, neste caso, era necessario definir a maquina a ser considerada. • Tal maquina deveria ser suficientemente:

simples, para permitir estudos de propriedades sem a necessidade de considerar caracteristicas nao-relevantes, bem como permitir estabelecer conclusoes gerais sobre a classe de funcoes cornputaveis; poderosa, capaz de simular qualquer caracteristica de maquinas reais ou te6ricas, de tal forma que os resultados provados sejam validos para modelos aparentemente com mais recursos e para que qualquer funcao cornputavel Se for possivel possa ser nela representada. representar qualquer algoritmo como um programa As evidencias como: a mesma em tal de que das de

maquina, entao esta denominada de Maquina Universal. uma maquina e, de fato, universal, podem ser classificadas a) Evidencia

Interna. Consiste

na dernonstracao

de que qualquer

cxtensao classe

capacidades da maquina propost.a computa, no maximo, funcoes, ou seja, nao aumenta 0 seu poder computacional;

b) Evidencia Externa. Consiste no exame de outros modelos que dcfinem a nocao de algoritmo, juntamente com computacionalmente equivalentes. a prova de que sao, no maximo,

Norma,

:ry~ste contexto, e introduzida uma Maquina UniveI::?~.h denominada MaquincI. proposta por Richard Bird, a qual, rosumidamcnte, possui um conjunto naturais e somente
0

de registradores adicaoo subtracao

do valor um e

teste __ sE'._Q_2.!:l:lo~.armazenadoe zero. Trata-se Como ilustracao, divers as usando a Maquina Norma, de uma

tres

instru(;oes

sobre

os registradores:

de urn exemplo de Moquina de Registradores. caracteristicas de maquinas reais sao simuladas reforcando Maquina as evidencias Universal. internas e externas

de que, de fato, trata-se

...........................................................

C"I"III/O

3 . Mtiqu inu.s Un nersais

67

Provavelmente, Maquina

modelo mais utilizado

como forrnalizacao

de algoritmo

ea

Mtiquina de Turing, proposta

em 1936 por Alan Turing. Basicamente, uma de Turing e um mecanismo simples que formaliza a ideia de uma pessoa e um apagador. 0 modelo saida e rascunho), uma muito similar de uma para aos atuais do no 20 anos antes maquina uma

que realiza calculos, usando um insirumento de escrita formal e bascado em uma fita (usada para entrada, unidade primeiro

de controle
embora computador

e um tenha digital. palavra,

programa,'

de

forma

computadores,

sido propos to aproximadamente Na realidade, mas nao se trata programa necessaries", podem sim de um

sentido dado a esta Universal.

Maquina

No que se refere aos recursos "tanto quanta • os registradores da Maquina Norma

tem-se que: "qualquer valor

assumir

natural tao grande quanto necessario", Adicionalmente, existem "tantos registradores quanta necessaries"; a Maquina de Turing possui "t antas celulas de armazenamento de dados quanta nccessario". apresentou a Hip6tese de Church, a qual afirma que

Em 1936, Alonzo Church

qualquer funcao cornputavel pode ser processada pOI' uma Maquina de Turing, ou seja, que existe um algoritmo expresso na forma de Maquina de Turing capaz de processar a funcao. Contudo, como a nocao intuitiva de algoritmo nao e matematicamente prccisa, e impossrvol formalizar uma dernonst.racao de que a Maquina de Turing e, efetivamente, 0 mais gene rico dispositivo de cornput.acao. Eniretanto, todas as evidencias internas e extern as imaginadas foram sempre verificadas , reforcando a Hip6tese de Church, ou seja, que os demais modelos de maquinas propostos, bern como qualquer extensao de suas capacidades, possuem, no maximo, a mesma capacidade cornputacional da Maquina Turing. Em particular, e verificado, neste capitulo, que os seguintes modelos sao equivalentes modclo): a) Maquin« b) Mtiquina

Maquina

de Turing Maquina

(note

tipo de estrutura

de dados

de cada de dado

Norma,

Uma

de Registradores,

sendo que

conjunto

registradores armazenado

e infinito; na estrutura de dados do tipo fila (0 primeiro e primeiro a ser recuperado l; na estrutura
0

de Post, Baseada
0

c) Maquinas com Pilhas. Baseada dado armazcnado fila. Tambern aumentam

e 0 prirneiro
que

de dados do tipo pillia (0 ultimo onde sao necessur ias pelo de uma fita ou de Turing nao

a ser rocuperado),

menos duas pilhas para simular

mesrno poder cornputacional oxtensoes da Maquina

e
0

verificado

algumas

seu poder computacional Permite

como, por exemplo: possa tentar diversos caminhos

a) Nao-Determinismo, alternativos

que a maquina situacao;

para uma mesma

.........................................................................................................................................................................

68

Tcoru, tid Computaciu»:

/l.1(/(/lliIl0"

Univcrsais

(!

Computabilulade

- T Diverio

& P. Blauth Menezes

b) Multiples c) Multiples

Fitas. Mais de uma fita; Unidades de Controle. Mais de uma unidade de controle; nas duas Extremidades.
As fitas nao possuem fim em qualquer

d) Fitas Infinitas

das duas extremidades. Existem tres maneiras de abordar modelos equivalentes, como segue:
0

estudo das Maquinas

de Turing e de seus

a) Processamento de Funcoes. Funcoes cornputaveis b) Reconhecimento de Linguagens. suas propriedades; c) Solucionabilidade solucionaveis, completamente de Linguagens

e suas propriedades; e naoe

que podem ser reconhecidas solucionaveis e

Problemas.

Problemas

problemas parcial mente solucionaveis (cornputaveis) insoluveis (nao-computaveis), bern como suas propriedades.

As tres abordagens sao usadas ao longo deste livro. Entretanto, a terceira (solucionabilidade de problemas) constitui urn dos problemas fundamentais da Ciencia da Computacao e e tratada em capitulo grande nurnero de funcoes para as quais nao possivel desenvolver algoritmos capazes de computa-Ias. Ou seja, existem funcoes que sao nao-cornputaveis , sendo algumas relativamente simples de serem enunciadas como, por exemplo, uma funcao que nomeia todas as funcoes,

especifico. De fato, existe

urn

3.1

Codificacao de Conjuntos Estruturados


e considerado,
de forma breve e atraves de exemplos,
0

Nesta secao,

problema

da codificacao de conjuntos estruturados, onde elementos de tipos de dados estruturados sao represent ados como numcros naturais. Para urn dado conjunto estruturado X, a ideia basica e definir uma funcao injetora:
C:

-7

ou seja, uma funcao tal que, para todo x, Y E X, tem-se que: se c(x) Neste caso,
0

= c(y), en tao x = y
x.

numero natural

c(x) e a codificacao do elemento estruturado

EXEMPL03.1
Suponha numeros que

Codificactio de n-Uplas Naturais.

desejado

codificar,

de forma

univoca,

elementos

de Nn

como

naturais,

ou seja, deseja-se uma funcao injetora:

Uma codificacao simples e a seguinte:

Capitul

o 3 ~ Mtiqu.inn s Unicerso

is

69

• •

suponha os n primeiros nurneros primos denotados por P1 = 2, P2 = 3, P3 = 5 e assim sucessivamente. Entao, a codificacao c: Nn --7 N definida como segue e univoca (suponha (X1, x2, ... , xn) E Nn e que 0 simbolo • denota a operacao de multiplicacao nos naturais):

lembre-se que, pelo Teorema Fundamental da Aritmctica , cada natural e univocamente decomposto em seus fatores primos;

numero

C(X1, X2, ... , xn)

P1x1.P2x2•

···Pnxn

Deve-se reparar que esta codificacao nao constitui uma funcao bijetora, ou seja, nem todo numero natural corresponde a uma n-upla (qual seria um exemplo"). Entretanto, corresponde todo numero a uma n-upla. Codificacao natural. de Programas Monoliticos. (fluxograma) pode ser codificado P = (I, r) com m natural decomponrvel nos n primeiros numeros primos

EXEMPL03.2
De forma analoga, como um numero

um programa Suponha

monolitico

um program a monolitico

instrucoes rotuladas onde { F1, F2, "', Ff} e {T1, T2, "', Tt} sao os correspondentes conjuntos de identificadores de operacoes e de testes, respectivamente. Seja, P' = (I, 1) como P, exceto pelos r6tulos, os quais sao renomeados como numeros naturais, onde 1 e 0 r6tulo inicial e 0 0 unico r6tulo final (se existir), Assim, uma instrucao
a)

rotulada

pode ser de uma das duas seguintes

formas:

Operacao. Teste.

b)

Cada instrucao rotulada pode ser denotada segue, onde a prime ira componente identifica a) Operacao, Instrucao tipo zero: (0,k,q,q) b) Teste. Instrucao tipo um:

por uma quadrupla tipo da instrucao:

ordenada

como

(1,k, q, q) Usando quadruplas • a codificacao ordenadas do Exernplo 3.1,


0

programa

monolitico

P' visto como

pode ser codificado como segue:

cada quadrupla (instrucao rotulada) e codificada como um numero natural. Assim, 0 programa monolitico P' com m instrucoes rotuladas pode ser visto como uma m-upla; por sua vez, a m-upla codificada como um numero correspondente natural. de program as monoliticos ao programa monolitico P'

Analogamente ao Exemplo 3.1, a codificacao apresentada nao e uma funcao bijetora (por que").

70

Tcoru, clu COli/1m/actio:

Mtiquinas

Uuivcrsais

(!

Connnnubilidad«

- T Diven»

&

Blauth i\1enc:.es

A seguir, e ilustrado como decodificar programa monolitico em seu correspondente

urn numero natural programa. Suponha

que denota numero:

urn

Portanto, numeros

0 programa possui duas instrucoes rotuladas correspondentes aos 150 e 105. Relativamente as decornposicoes em seus fatores primos,

tem-se que:

o que corresponde Logo, as instrucoes 1: 2: Sugere-se natural

as quadruplas: (1,1,2,0) rotuladas

(0,1,1,1) sao como segue: 0 para qualquer numero


U

decodificadas

se T1 entao va_para faGa F1 va_para correspondente 1

2 senao va_para do casu ilustrado

como exercicio a generalizacao

a codificacao de urn program a monolitico.

3.2

Maqurna de Registradores - Norma


proposta Maquinas por de

A Maquina Norma (!'!_umber TheQretic Jiegister MAchine), Richard Bird ([BIR76]), e uma Maquina de Registradores. registradores com a Maquina sendo definidas atuais. sao modelos propostos a lembrar mais recentemcnte basica de Turing e com outros formalismos de forma a arquitetura Norma a Maquina universalmente

(comparativamente conhecidos), pois dos com put adores interessante

Em particular,

especialmente

distingue as nccoes de programa e maquina (tal fato ficara evidente quando do estudo dos demais modelos). Assim, por razoes didaticas, a Maquina Norma e 0 primeiro naturais formalismo de Maquina Universal introduzido nesta publicacao, A Maquina Norma possui como memoria urn conjunto infinito de registradores

e tres instrucoes

sobre cada registrador:

....•.....................................................•.••..•

Capitulo 3 - Mtiqu.in.a s Uniuersais

..•.................................•..••.••.........•............................•••

..

71

• • •

adicao do valor urn; subtracao do valor urn; teste se 0 valor armazenado

e zero.

No texto que segue, N= denota 0 conjunto de todas as uplas com infinitos (mas contaveis) componentes sobre 0 conjunto dos nurneros naturais. Por exemplo, as seguintes uplas sao elementos (0, 1, 2, 3, ...) e de N=: (5, 5, 5, 5, ...)

Para evitar subscritos, as componentes das uplas sao denotadas pOI' letras maiusculas como A, B, X, Y, ... as quais denotam os registradores na Maquina Norma. A definicao formal de N= como segue: • • • • suponha a upla (ao, ai, a2, ...) em N=; assim, pode-se afirmar que, para cada n da upla (ao, a-. a2, ...); N, an

omitida, mas pode ser resumidamente

entendida

a n-esirna componente

tal fato pode ser formalmente denotado como uma funcao f: N --> N tal que, para qualquer n E N, f(n) = an; portanto, urn elemento de N= pode ser visto como uma funcao nos naturais, ou seja: N= = {f: N --t N If e funcao} respectivamente: n n
E

No caso especifico das uplas (0, 1, 2, 3, ...) e (5, 5, 5, 5, ...) as correspondentes funcoes sao as seguintes, • •

funcao identidade de N, ou seja, idl~( N --t N tal que, para qualquer tem-se que idN(n) = n; funcao constante 5, ou seja, constg: N --t N tal que, para qualquer tem-se que constxtn) = 5.

N, N,

Defirricao

3.1

Maquiria

Norma.

A Maquina Norma onde: a) Cada elemento

e uma 7-upla (suponha que K E {A, B, X, Y, .. [):

Norma = (N=, N, N, ent, sai, {adK, SUbK}, { zeroK}) do conjunto de valores de memoria N= denota uma

configuracao

de seus infiriitos registradores, os quais sao de not ados por:

A, B,X, Y, ...
b)

AfunI;fio de entrada:
en!: N --t N=

e
c)

tal

que carrega

no

registrador

denotado

pOI' X

valor

de entrada,

inicializando

todos os demais registradores

com zero;

A [unciio de saida:

72

sai: N= ~ N e tal que retorna d)


0

valor corrente do registrador onde, para cada registrador

denotado por Y; indexada K, tern-se que:

a conjunto

de interpretacoes de operacoes e uma familia de operacoes

pelos registradores

adiciona

urn

componente

correspondente e:

ao registrador

K, deixando

as

demais com seus valores inalterados,

subtrai urn da componente corresponderite ao registrador K, se 0 seu valor for maior que zero (caso contr ario, man tern 0 valor zero), deixando as demais com seus valores inalterados; e) conjunto de interpretacoes de testes uma familia de testes registradores onde, para cada registrador K, tern-se que: zeroz: N= ~ {verdadeiro, resulta em verdadeiro, se a componente zero e falso, caso contrario, Por simplicidade, para urn registrador K, as correspondentes operacoes teste adK, SUbK, zeroj, sao denotadas, respectivamente, como segue: K:= K + 1 K:=K-1 K=O falso} ao registrador K for

indexada

pel os

correspondente

o
ou

3.3

Maqufna Norma como Maquirra Universal

A Maquina Norma e uma maquina extrema mente simples, de tal forma que parece dificil acreditar que 0 seu poder computacional e, no minimo, 0 de qualquer computador moderno. Inclusive, e suficiente considerar somente os programas monoliticos. f1uxogramas maquinas evidencias simulacoes

au seja,

mecanismos como os de recursao podem ser simulados em Norma. A seguir, como ilustracao, divers as caracteristicas sao simuladas usando a Maquina Maquina Norma, Universal. reforcando de uma

por de as

reais

de que, de fato, trata-se

As seguintes

por Norma sao exemplificadas: de operacoes e testes primos; de valores nurnericos de e racionais; mars complexos e tratamento como de

a) Operacoes e Testes. Definicao adicao, subtracao, b) Valores Numericos.

multiplicacao

e divisao de dois valores e tratamento

valores diversos como testes sobre numeros Armazenamento diversos tipos como inteiros (negatives

e nao-negativos)

........................................................

Capitulo 3 - Maqu inas

Uni cersais

_-

73

c) Dados

Estruturadoe. Indireto

Acesso,

armazenamento

tratamento

de

dados

estruturados d) Enderecomento

como arranjostvetores e Recursao.

uni e multidimonsionais), Desvio para uma instrucao de mecanismos

pilhas, etc.; determinada de recursao;

pelo conteudo de um registrador e) Cadeia de Caracteres.

e simulacao

Definicao e manipulacao

de cadeias de caracteres.

3.3.1

Operacoes e Testes
operacoes e teste nao-definidos na Maquina Norma sao

As seguintes exemplificadas: • • • • •

atribuicao de valor a um registrador; adicao de dois registradores; multiplicacao de dois registradores; teste se 0 valor de um registrador atribuicao 3.3 Atribuicao

e um

nurnero primo;

do n-esimo numero primo. do Valor Zero a um Registrador. A, denotada POl': A:=O

EXEMPLO A atribuicao

do valor zero para um registrador seguinte

pode ser obtida com ate fac;:a

program a iterativo:

A=0 (A := A - 1)

Dessa forma, pode-se tratar

a operacao

A := 0 como uma macro, macros para

ou seja, um de

trecho de program a que e substituido

pela sua definicao sempre que referenciado. definir operacoes

Usando a macro A := 0 facil construir atribuicao de um valor qualquer. EXEMPLO 3.4 Atribuicao

de urn Valor Natural de um valor A:=

a um Registrador. natural n a um registrador A,

A seguinte macro denotada pOI':

de atribuicao

n
para n = 3:

pode ser definida pelo seguinte program a iterativo, exemplificado A :=0; A:= A+1; A:=A+1; A:= A+1

EXElvIPLO 3.5

Adicao de Dois Registradores.

Uma macro correspondente denotada por: pode ser obtida com ate f aca 8

a operacao

de adicao do valor do registrador

8 em A,

A:=A+8
0

seguinte

programa

iterativo:

=0
o

(A := A + 1; 8:= 8 - 1)

Note-se que, no exemplo acima, ao somar 0 valor de 8 em A, 0 registrador 8 zerado. Para preservar 0 valor original de 8, e neceasario utilizar urn registrador de trabalho.

EXE!vfPLO 3.6

Adictio de Dois Registradores, Preservando

Conteudo.
8 em A, C, como no

U rna macro correspondente

a operacao

de adicao do valor do registrador usar urn registrador auxiliar

preservando 0 valor em 8, necessita seguinte programa iterativo: C:= 0; ate f ac a ate


f aca

8=0 (A := A + 1; C:= C + 1; C=0 (8:= 8 + 1; C:= C - 1)

8:= 8 - 1);

Entretanto, de trabalho

seguinte notacao e adotada preservando 0 conteudo:

como este programa C, faz-se necessario

nao preserva 0 contoudo original do registrador explicitar 0 uso deste registrador. Portanto, a a macro de adicao de dois registradores,

para

A := A + 8 usando C

o
um programa

E importante

destacar

que, ao simular,

na Maquina Norma,

de outra maquina que contenha

uma operacao

da forma A := A + 8,

necessario

escolher um registrador de trabalho C que nao seja referenciado em P. Desta forma, quando da execucao da macro A := A + B usando C a alteracao do valor armazenado em C nao tera efeito em qualquer outra parte do programa P.

EXEMPLO 3.7

Atribuicao

do Conteudo de urn Registrador.


construir a seguinte

Usando a macro A := A + B usando C, pode-se facilmente macro de atribuicao entre registradores: A := 8 usando C a qual pode ser definida pelo seguinte programa iterativo: A :=0; A := A + B usando C

Capitulo 3 - Maquina»
,

Unn.ersais

_-.-

75

A definicao de uma macro de multiplicacao requer dois registradores trabalho. EXEMPLO 3.8 Multiplicacao de Dois Registradores.

de

Uma macro correspondente a operacao de rnultiplicacao do valor do registrador 8 em A, us an do dois registradores de trabalho CeO, denotada por: A := A x 8 usando C, 0 pode ser definida pelo seguinte program a iterativo: C:= 0; ate f aca ate f aca EXEMPLO 3.9

A =0

(C:= C + 1; A:= A - 1);


C=0

(A:= A + 8 usando 0; C:= C - 1) Teste


se
0

Valor de urn.Registrador e urn.Numero Primo.

Uma macro de teste que verifica se 0 valor de urn registrador A e urn nurnero primo, usando urn registrador de trabalho C, denotada por: teste_primo(A) usando C pode ser obtido pelo seguinte programa verdadeiro, se primo, e falso, caso contrario: (se senao A= 0 C:= A;
C := C - 1;

iterativo,

qual retorna

valor

ent.ao falso

(se entao senao

=0

verdadeiro ate teste_mod(A, C) f aca (C:=C-1)


C := C - 1;

(se C=0 en t ao verdadeiro s errao falso))) onde teste_mod(A, C) e urn teste (sugerido como exercicio) que retorna verdadeiro, se 0 resto da divisao inteira do conteudo de A por C e zero, e falso, caso contrario. EXEMPLO 3.10 Airibuicao do n-esimo Numero Primo a urn.Registrador.
0

valor valor

A atribuicao do n-esirno numero primo a urn registrador A, usando urn registrador de trabalho 0, denotada por (suponha que 0 conteudo de 8 en):

A=

primo(B) usando

0 teste_primo

pode ser obtida pelo seguinte programa iterativo, 0 qual usa a macro construida acima (suponha que 1 e 0 O-esimo nurnero prime): A:= 1; 0:= B; ate f aca 0=0 (0:= 0 - 1; A:= A + 1; ate
f aca

teste_primo(A)
(A := A + 1) )

E sugerido como exercicio seguintes cperacoes e testes:


• • • • fatorial; potenciacao; teste "men or"; teste "menor ou igual".

desenvolver

os programas

iterativos

para

as

3.3.2

Valores Numer icos


tipos de dados numericos (negativos e nao-negat.ivos); nao-definidos na Maquina Norma sao

Os seguintes exemplificados: • • inteiros

racionais,

EXEMPLO 3.11
Um valor inteiro

lnteiros.
m pode ser representado como um par ordenado:

(s, 1 m I) onde:
• 1

denota a magnitude

dada pelo valor absoluto de rn;

s denota

[) sinal de m, como segue: se m < 0, entao s = 1; senao s = 0

Duas form as simples de representar ser: • •

tal par orden ado na Maquina

Norma

podem

usando a codificacao de n-uplas naturais Codificacao de Conjuntos Estruturados; usando dois registradores: magnitude (valor absolute).
0

como

introduzido e
0

em

3.1

it

primeiro

referente

ao sinal,

segundo,

...........................................................

Capitulo 3 - Miiquinas

Universais

_-

77

No segundo caso (dois registradores),

a simulacao A:= A + 1

da operacao inteira:

supondo que A denota realizada pelo seguinte

par de registradores program a iterativo:

A1 (sinal) e A2 (magnitude),

pode ser

(se
erit.ao

s eriao

A1 = 0 A2:= A2 + 1 A2:= A2 - 1 ; (se


e n t.a o

A2 = 0 A1 := A1 - 1

s enao

VI)
sobre inteiros podem ser tratadas de
0

Note-se

que outras

oper acoes e testes

forma similar. Sugere-se teste se e zero (A = 0).

como exercicio a operacao

de subtracao

(A := A - 1) e

EXEMPL03.12

Racionais.

Um valor racional r pode ser denotado como um par ordenado: (a, b) tal que b > 0 e r = alb. A representacao nao e unica pois, por exemplo, 0 valor racional 0.75 pode ser representado pelos pares (3, 4) e (6, 8), entre outros (ria realidade, os pares (3, 4) e (6, 8) pertencem a classe de equivalencia que denota 0 nurnero racional 0.75 - por simplicidade, tal questao nao sera discutida). Neste contexto, as oper acoes de adicao, subtracao, multiplicacao e divisao, bem como 0 teste de igualdade, podem ser definidos como segue:

(a, b) + (e, d) = (a-d + b-e, b-d) (a, b) - (c, d) = (a.d - b-e, b-d) (a, b) x (c, d) = (a-c, b-d) (a, b)
-!-

(c, d) = (a-d, b-e)

com e

cF

0 a-d = b-e na Maquina Norma e sugerida


::J

(a, b) = (c, d)

se, e so mente se,

A construcao dos correspondentes como exercicio.

programas

78

Tcoiia do

..................................................................................................................................................

C(}IJIIJl/f{/~>a():

Miiquinas Univcrsais e COlJ1puta/Jilidude - 1'. Divcrio & P. Blauth Mcneres

3.3.3

Dados Estruturados

A seguir, e exemplificado como uma estrutura do tipo arranjo unidimensional pode ser definida na Maquina Norma. Sugere-se como exercicio a generalizacao para arranjos multidimensionais. Adicionalmente,

esbocada

uma solucao para

pilhas, usando arranjos.

EXEMPLO 3.13 Arranjo Unidimensional.


Uma estrutura do tipo arranjo unidimensional da forma A(1), A(2), ... , pode ser definida por um unico registrador A, usando a codificacao de n-uplas naturais como introduzido em 3.1 - Codificacao de Conjuntos Estruturados. N ote-se que 0 arranjo nao necessita ter tamanho maximo (numero de posicoes indoxaveis) predefinido. Lembre-se que a funcao de entrada e tal que carrega 0 valor da entrada no registrador X, zerando todos os demais, incluindo, portanto, 0 arranjo. Em uma estrutura forma direta (numero do tipo arranjo, e desejavel indexar as suas posicoes de natural) ou indireta (conteudo de um registrador). Para

ambos os casos e para manter a coerencia com a definicao da Maquina Norma, e import ante defmir as oper acoes de adicao e suhtracao do valor 1, bem como do teste se o valor e zero, como segue, supondo que:
• 0

arranjo

e implementado
0

usando

registrador

A;


Pn denota 0 seguinte verdadeiro, registrador

n-esirno numero primo; teste (sugerido como exercicio) e tal que retorna 0 valor se 0 conteudo do registrador C e um divisor do conteudo do A e falso, caso contrario: teste_div(A, C)

a seguinte macro (a definicao e sugerida de dois registradores:

como exercicio) denota

a divisao

teste_div(A, C) • por simplicidade, na referencia a uma macro defmida anteriormente, omitida a refcrcncia aos registradores usados. Por exemplo: A := A x B usando C, 0 a) Indexaciio Direta. As macros: adA(n) usando SUbA(n) usando zeroA(n) usando seguintes C C C posicao do arranjo respectivamente: A, podem ser definidas pelos iterativos, e abreviada simples mente por A:= A x B

onde A(n) de nota a n-esima programas

.~:~~!~~.,,' Cl.~ [lli.i.~'.~:~~!.S :!!I::.:.J.. :.. '1:.~.q_ u I


Programa C:= Pn; A :=AxC Programa C:= Pn; (se teste_div(A, en t ao A:= A / C
s eriao

.
Iterativo adA(n) usando C

79

Iterativo SUbA(n) usando C

C)

V) Programa Iterativo zeroA(n) usando C

C:= Pn; (se teste_div(A, erit.ao falso s errao verdadeiro)


b)

C)

lndexacao Indireta. As macros:


adA(B) usando C SUbA(B) usando C zeroA(B) usando C onde A(8) denota a b-esima posicao do arranjo A, onde b e 0 conteudo do registrador 8, podem ser definidas pelos seguintes programas iterativos, respectivamente: Programa C := primo(8) A :=AxC Programa C) Iterativo SUbA(B) usando C Iterativo adA(B) usando C

C (se

= primo(8)
11')

teste_div(A,

en tao A:= A I C
s eriao

Programa C := primo(8) (se erit.ao teste_div(A, falso 8)

Iterativo zeroA(B) usando C

s eria o verdadeiro)

80

Teoria do C()lJ1jJ/lt(/~iio: Jt1t1(jllilldS Univcrsois (' Computabilidadc - T Diveno & P. BIolith Menci ............................................................................................................................................................

Observacao

3.2

Arranjo Unidimensional 2 Registradores.

x Norma com

Urn resultado interessante de arranjo unidimensional

(e que sera usado adiante) e que, usando a estrutura com indexacao direta, como ilustrado no Exemplo 3.13,

pode-se mostrar que os registradores X e Y sao suficientes para realizar qualquer processamento (ou seja, os registradores A, B, ... nao sao necessarios r. De fato, e suficiente usar X para armazenar urn arranjo unidimensional onde cada posicao corresponde a urn registrador (por exemplo: X, Y, A, B,... correspondem as posicoes do arranjo indexadas por 0, 1, 2, 3, .. ). Assim, para urn determinado registrador
adK SUbK

K, as operacocs e testes de Norma:

zeroj, podem ser simulados 3.13:


adX(k) usando SUbX(k) usando ZeroX(k) usando Y Y Y

pelas operacoes e testes index ados introduzidos

no Exemplo

onde X(k) denota a k-esima posicao do arranjo em X.

EXEMPL03.14

Pilha.

Estruturalmente, a principal caracteristica de uma pilha e que 0 ultimo valor gravado e 0 primeiro a ser lido, como ilustrado na Figura 3.1. A base de uma pilha

e fixa e define 0 seu inicio. 0 tapa e variavel e define a posicao do ultimo simbolo gravado. Uma pilha pode facilmente ser simulada usando um arranjo (como definido acima) e urn registrador de indice (indexacao indireta do arranjo) que

Capitulo 3 . Maquinas

Unicersais

81

aponta para 0 topo da pilha. Sugere-se como exercicio 0 detalhamento desta solucao, bern como, a definicao das operacoes empilha (adiciona 0 conteudo de urn registrador ao topo da pilha) e desempilha (ret.ira 0 valor do topo e armazenao em urn registrador). empilha desempilha

topo senti do de crescimento base


Figura 3.1 Estrutura do tipo pilha

3.3.4

Enderec;amento

Indireto e Recur sao

A seguir, e exemplificado, em programas do tipo monolitico, como definir desvios, usando enderecamento indireto (deter min ado pelo conteudo de urn registrador).

EXEMPLO 3.15
Uma operacao registrador: r:

Enderecamento lndireto em um Programa Monolitico.


com enderecarnento indireto da seguinte forma, onde A

urn

faGa F va_para

A
monolitico:

pode ser definida pelo seguinte programa r: faGa F va_para End_A

onde a macro End_A, representada na forma de fluxograma o enderecamento indireto de A (e onde cada circunferencia

na Figura 3.2, trata rotulada representa

urn desvio incondicional para a correspondente instrucao), De forma analoga (sugere-se como exercicio), e possivel definir urn teste com endorecamento indireto como segue, onde A e B sao registradores: r: se T entao va_para A senao va_para B

.................................

82

Tcoria da C()II1I'I//lll'tI():
"

.. ..
,

,"",

.. ,',

Miiquina: Universaise Computabilidade - T. Diverio & P. Blauth Menezes


"_",,,

............................•..•.•.••....•.•....................

_._

....••.••

Programa Monolitico End_A

Figura 3.2 Fluxograma

para tratar

enderecarnento

indireto

Observacao 3.3

Program a Monolitico

Program a Recursivo.

Em Norma, sub-retinas e mecanismos de recursao como os definidos nos programas recursivos podem ser simulados por programas monoliticos, usando enderecamento indireto. Esta dernonstracao pode ser encontrada em ([BIR76]).o

3.3.5

Cadeias de Caracteres

Cadeia de caracteres e urn tipo de dado nao-predefinido na Maquina Norma. 0 tratamento da definicao e da manipulacao de cadeias de caracteres sera realizado atraves de uma outra Maquina Universal, denominada Maquina de Turing, a qual, prova-se, e equivalente a Norma.

Capitulo 3 - Mo qu.in as Unicersais

83

3.4

Maquina de Turing
de Turing, conhecida proposta e aceita por Alan Turing em 1936 ([TUR36]) Trata-se e de como forrnalizacao de algoritmo. a ideia de uma pessoa que realiza calculus, atuais, embora tenha sido proposta anos

A Maquina universalmente

urn mecanismo simples que formaliza Lembra, em muito, os computadores

antes do primeiro computador digital. Apesar de sua simplicidade, 0 modelo Maquina de Turing possui, no minimo, 0 mesmo poder computacional de qualquer computador de prop6sito geral. No que segue, e importante observar que uma Maquina de Turing nao constitui uma maquina, como definida mas sim urn programa para uma Maquina Universal. anteriormente,

3.4.1

Nocao Intuitiva
na qual uma pessoa, realiza calculos numa

o ponto de partida de Turing foi analisar a sit.uacao equipada com urn instrumento de escrita e urn apagador,
folha de papel, organizada em quadrados.

Inicialmente, suponha que a folha de papel con tern somente os dados iniciais do problema. 0 trabalho da pessoa pode ser resumido em sequencias de operacoes • • • simples como segue:

ler urn simbolo de urn quadrado; alterar urn simbolo em urn quadrado; mover os olhos para outro quadrado. e encontrada hip6teses alguma representacao satisfat6ria para a resposta as a pes so a termina seus calculos, Para viabilizar esse procedimento,

Quando desejada, seguintes •

sao acei taveis:

a natureza bidimensional do papel nao e urn requerimento essencial para os calculos, Pode ser assumido que 0 papel consiste de uma fita infinita organizada

em quadrados;

0 conjunto de simbolos pode ser finito, pois se pode utilizar sfmbolos; 0

sequencias

de

conjunto de estados da mente da pessoa durante 0 processo de calculo e finito. Mais ainda, entre esses estados, existem dois em particular: "estado final", correspondendo ao inicio e ao fim dos calculos, respectivamente;

inicial" e "estado
• 0

comportamento da pes so a a cada momento e determinado somente pelo seu estado presente e pelo simbolo para 0 qual sua atencao esta voltada; a pessoa e capaz de observar e alterar 0 sfmbolo de apenas de cada vez, bern como de transferir sua atencao somente quadrados adjacentes. urn quadrado para urn dos

3.4.2
Esta

Nocao como Maquiria


nocao de uma pessoa de tres partes, simultaneamente calculando pode ser vista como uma maquina, e de como segue: como dispositivo de entrada, de saida

constituida

a) Fita. Usada

mem6ria de trabalho; b) Unidade de Controle. Ref1ete 0 est ado corrente da maquina. Possui uma unidade de leitura e gravacao (cabeca da fita), a qual acessa uma celula da fita de cad a vez e movimenta-se comanda A fita as leituras, para a esquerda e ou para a direita;
0

c) Programo. ou Funcao de Transicao, as gravacoes

Funcao que define


0

est ado da maquina da cabeca. necessario)

senti do de movimento

e fin ita

it esquerda

e infinita (tao grande quanto

direita,

sendo dividida em celulas, onde cada uma armazena urn simbolo. Os simbolos podem pertencer ao alfabeto de entrada, ao alfabeto auxiliar ou ainda ser "branco" ou "marcador de inicio de fita". Inicialmente, a palavra a ser processada (ou seja, a inforrnacao de entrada para a maquina) ocupa as celulas mais it esquerda ap6s 0 marcador de inicio de fita, ficando as demais com "branco", como ilustrado na Figura 3.3, onde f3, e Co representam fita", respectivamente.
marcador de inicio de fita

"branco" e "marcador

de inicio de

entrada

branco

fita cabe<;:a da fita

c
unidade de controie

Figura 3.3 Fita e unidade de corrtrole de uma Maquina

de Turing

.........................................................................................................

Capitulo 3 - Maquiruis

Unicersais

__

85

A unidade de controle possui urn numero finito e predefinido de estados. A cabeca da {ita Ie 0 simbolo de uma celula de cada vez e grava urn novo simbolo. Apos a leitura/gravacao (a gravacao e realizada na mesma celula de leitura), 0 simbolo gravado e da maquina a
0

cabeca move uma celula para a direita ou para a esquerda. sentido do movimento sao definidos pelo programa.

programa
0

e uma

funcao que, dependendo


0

do estado corrente
0

e da

do simbolo lido, determina cabeca e novo estado.

simbolo a ser gravado,

sentido do movimento

3.4.3

Modelo Formal
Maquina de Turing.
de Turing

Definieao 3.4
Uma Maquina onde:

e uma

8-upla:

M = (L, Q,

n. qQ,

F, V, !?" 0)

L
Q

alfabeto de simbolos de entrada; conjunto de estados possiveis da maquina, programa ou [uncao de transictio: n: Q x (L
U

qual

e finito;

{!?', o})

--1

Q x (L

{!?" o}) x {E, D}

qQ F V
!?,

a qual e uma funcao parcial; estado inicial da maquina tal que qQ e elemento de Q; conjunto de estados {inais tal que Festa conti do em Q; alfabeto auxiliar; simbolo especial branco; simbolo especial marcador de inicio ou simbolo de inicio da fita.

o
mais

simbolo de imcio de fita ocorre exatamente uma vez e sempre esquerda da fita, auxiliando na identificacao de que a cabeca na celula mais

encontra considera • •

a esquerda

na celula da fita se

da fita. A funcao programa: para determinar • • • novo estado simbolo a ser gravado sentido de movimento da cabeca, onde esquerda e direita sao representados por E e D, respectivamente

estado corrente simbolo lido da fita

Assim, tem-se que: Iltestado corrente, simbolo lido) = au, (novo estado, simbolo gravado, sentido do movimento) ou seja (suponha que p, q
E Q,

a,

(L

V U {!?',

0))

em

E{

E, D [):

Iltp, au) = (q, av, m)

Trona da CIIIIl[1IIra('i/II: Maquinas Universals e Computobilidadr - T. Diverio & P. Blauth ...............•••••••....................••••••...••••••.•...................•.••••.•........................•••••••••••••.........................•.•..................

86

Meneres

A funcao program a pode ser interpretada como urn grafo finito direto, como ilustrado na Figura 3.4. Neste caso, os estados iniciais e finais sao representados como ilustrado na Figura 3.5.

novo estado sentido do movimento sirnbolo gravado


Figura 3.4 Representacao da funcao programa como um grafo

Figura 3.5 Representacao

de um estado inicial (esq.) e final (dir.) como nodos de grafos

Adicionalmente, a funcao programa pode ser representada na forma de tabela como na Figura 3.6 (ilustrada para 0 caso n(p, au) = (q, av, m).

n
P
q

...

au (q, av, m)

...

av

...

IS

...
Figura 3,6 Representacao da funcao program a como uma tabela

o processamento de uma Maquina de Turing M = (I, Q, n. qQ, F, v, IS,0) para uma palavra de entrada w consiste na sucessiva aplicacao da funcao programa a partir do estado inicial qQe da cabeca posicipnada na celula mais a esquerda da fita, ate oearrer uma condicao de parada. 0 processamento de M para a entrada w pode parar ou ficar em loop infinito. A parada pode ser de duas maneiras: aceitando ou rejeitando a entrada w. As condicoes de parada sao as seguintes:

...............................................................................................................................

Capitulo 3 - Maquino.s

Unioersais

87

a) Estado palavra b) Funcao

Final. A maquina
de entrada

e aceita;

assume

urn estado

final: a maquina para

para

ea

Indefinida.

A funcao

programa a maquina corrente

e indefinida para

argumento

(simbolo lido e est ado corrente): rejeitada; c) Movimento

e a palavra

de entrada

e a

movimento a esquerda e a cabeca da fita ja se encontra na celula mais esquerda: a maquina para e a palavra de entrada e rejeitada. 3.5

Inualido,

0 argumento

da funcao

programa

defme urn

Observacao

Maquma de Turing x (Program a e Maquiria),

importante reparar que a definicao da Maquina de Turing nao distingue os conceitos de programa e maquina. Na realidade, trata-se de urn programa para uma Maquina Universal. _]

Observacao 3.6

Variacoes sobre a Definicao de Maquina de Turing.

Diversas variacoes sobre a definicao de Maquina de Turing sao adotadas. Note-se que essas vari acoes nao alteram 0 poder computacional do formalismo. As variacoes mais significativas estao nas caracteristicas da fita e no movimento nao se incluir urn da cabeca como, por exemplo: a) Lnexistencia do Marcador de Inicio de Fita. marcador de inicio de fita. Assim, a celula mais a esquerda da fita contem 0 primeiro simbolo da entrada (ou branco, se a entrada for vaz ia ). Neste caso, ao definir controlar uma funcao program a, deve-se
0

freqi.iente

tomar

cuidado

especial

para

quando a cabeca da fita atinge

fim da mesma;

b) Cabeca de Fita niio se Move em uma Leitura / Grauacao, N a funcao programa,

e possivel

especificar, adicionalmente ao movimento para esquerda ou direita, que a cabeca permaneca parada (na celula de leitura/gravacao). 0 principal objetivo desta variacao e facilitar a especificacao como reduzir 0 numero de transicoes nccessarias: da funcao programa, bern

c) Estado Final de Rejeicao . Pode ser definido urn estado

explicitar a condicao de parada com rejeicao da entrada. Tal modificacao e especial mente interessante pois facilita a cornpreensao da l6gica da funcao programa.
:::J

final de rejeicao, para

3.4.4

Maquirias de Turing como Reconhecedores Linguagens

de

Uma das abordagens do estudo das Maquinas de Turing ou maquinas universais em geral e como reconhecedores de linguagens, ou seja, dispositivos capazes de determinar se uma dada palavra sobre
0

alfabeto de entrada

pertence

ou nao a uma certa linguagem.

.........................................................................................................................................................................

88

Teoria da Cornputaciio:

Miiquinus

Universals

e Computabilidade

- T. Diverio

& P. Blanth Meneres

Definicao 3.7

Linguagem Aceita por uma Maquina de Turing. de Turing. Entao:


0

Seja M = (I, Q, n, qQ, F, V, r." 0) uma Maquina

a) A Linguagem Aceita por M, denotada por ACEITA(M)ou L(M), e todas as palavras pertencentes a I* aceitas por M, ou seja: ACEITA(M) = {w

conjunto de
E

I M ao processar I M ao processar

WE

I* para em urn estado


0

qf

F}

b) A Linguagem Rejeitada por M, denotada por REJEITA(M) e as palavras de I* rejeitadas por M, ou seja: REJEITA(M) = {w wEI

conjunto de todas
<l

* para

em urn est ado q

F}

c) A linguagem para qual M fica em loop infinito, denotada por LOOP(M), e 0 conjunto de todas as palavras de I* para as quais M fica processando indefinidamente. 0 As seguintes afirrnacoes sao verdadeiras: ACEITA(M) u REJEITA(M) u LOOP(M) = I* ACEITA(M) n REJEITA(M) = 0 ACEITA(M) n LOOP(M) = 0 REJEITA(M) n LOOP(M) = 0 e, portanto: ACEITA(M) n REJEITA(M) n LOOP(M) = 0 Conseqiientemente,
0

complemento de:

ACEITA(M)e REJEITA(M) u LOOP(M) REJEITA(M) e ACEITA(M)u LOOP(M)


LDUP(M) e AL'En A(M) u1\EJEITA(M)

Ou seja, uma Maquina de Turing como reconhecedor particiona 0 conjunto de palavras sobre 0 alfabeto I em classes de equivalencia, como ilustrado na Figura
3.7.

Figura

3.7 Particionamento

do conjunto de palavras por uma Maquina

em classes de equivalencia

induzido

de Turing