Programas recursivos de dominio finito

330 visualizações

Publicada em

Após verificar estudos anteriores sobre automatos finitos deterministicos e não deterministicos, surge a necessidade de se efectuar um estudo sobre programas de dominio finito, embora o presente trabalho irá simplesmente especializar-se nos recursivos.
Neste trabalho, iremos estudar sobre os programas recursivos de dominio finito baseando-se em transdutores que permitem fazer um controle recursivo de estados finitos, ou seja, transdutores pushdown.
Após verificar-se resultados e concluir suas vantagens, iremos então simplificar este trabalho ao simplifica-lo num diagrama mais simples.

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
330
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programas recursivos de dominio finito

  1. 1. U N I V E R S I D A D E L U S Í A D A D E L I S B O AFaculdade de Ciências da Economía e da Empresa Mestrado em Ciências da Computação Programas recursivos de domínio finito Hercílio Rui Dinis Duarte Lisboa Maio 2012
  2. 2. U N I V E R S I D A D E L U S Í A D A D E L I S B O AFaculdade de Ciências e da Economía da Empresa Mestrado em Ciências da Computação Programas recursivos de domínio finito Hercílio Rui Dinis Duarte Lisboa Maio 2012
  3. 3. APRESENTAÇÃO Programas recursivos de domínio finito Hercílio Rui Dinis DuarteApós verificar estudos anteriores sobre automatos finitos deterministicos e nãodeterministicos, surge a necessidade de se efectuar um estudo sobre programas dedominio finito, embora o presente trabalho irá simplesmente especializar-se nosrecursivos.Neste trabalho, iremos estudar sobre os programas recursivos de dominio finitobaseando-se em transdutores que permitem fazer um controle recursivo de estadosfinitos, ou seja, transdutores pushdown.Após verificar-se resultados e concluir suas vantagens, iremos então simplificar estetrabalho ao simplifica-lo num diagrama mais simples.Palavras-chave: Transdutores de estados finitos, Recursividade, Pilhas, Transdutorespushdown
  4. 4. PRESENTATION Recursive finite-domain programs Hercílio Rui Dinis DuarteAfter verifying previous studies on deterministic finite automata and non-deterministic,there is a need to conduct a study on finite domain programs, although this work willspecialize in just recursive.In this paper, we study about the domain of recursive programs based on finitetransducers that allow a recursive finite state control, ie, pushdown transducers.After checking up the results and conclude its advantages, then we will simplify the jobsimplifying it to a simple diagram.Keywords: finite-state tranducers, Recursion, Stacks, Pushdown transducers
  5. 5. LISTA DE ILUSTRAÇÕESIlustração 1 – Representação do processamento de uma pilha ........................................... 16Ilustração 2 – Representação das partes de um transdutor pushdown. (GUARARIEiton, 1998) ......................................................................................................................... 18Ilustração 3 – Representação da abordagem sintática da Web 1.0 e 2.0 (GUARARIEiton, 1998) ......................................................................................................................... 21Ilustração 4 – Diagrama de estados do transdutor pushdown (GUARARI Eiton, 1998)........ 22
  6. 6. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOLISTA DE ABREVIATURAS, SIGLAS E ACRÓNIMOS PLN - Processamento de Linguagens Naturais AFD - Autómatos Finitos Deterministicos AFND - Autómatos Finitos Não Deterministicos LIFO - Last in First OutHercílio Rui Dinis Duarte 13
  7. 7. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOSUMÁRIO1. Introdução .................................................................................................... 152. Programas recursivos de domínio finito ....................................................... 16 2.1. Recursividade ........................................................................................ 16 2.1.1. Tipos de recursividade .................................................................... 17 2.1.2. Descrições resumidas sobre recursividade ..................................... 18 2.2. Estrutura de uma pilha ........................................................................... 18 2.3. Trasndutores baseados em pilhas (pushdown) ..................................... 19 2.3.1. Estrutura .......................................................................................... 20 2.3.1.1. Fita de entrada (Input tape) ....................................................... 20 2.3.1.2. Cabeçalho de entrada (Input head)........................................... 20 2.3.1.3. Controlo do estado finito ........................................................... 21 2.3.1.4. Cabeçalho de saída .................................................................. 21 2.3.1.5. Fita de saída ............................................................................. 21 2.3.1.6. Cabeçalho pushdown (escrita e leitura) .................................... 21 2.3.1.7. Fita pushdown ........................................................................... 21 2.3.2. Cálculo de uma relação pelo transdutor pushdown ......................... 21 2.3.3. Diagrama em grafo do transdutor pushdown .................................. 223. Conclusão .................................................................................................... 24Hercílio Rui Dinis Duarte 14
  8. 8. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO1. INTRODUÇÃOA teoria da computação apresenta uma diversa e complexa relação de várias relaçõescapazes de simular qualquer realidade automática. Nesta viajem, entende-se aessência do funcionamento dos sistemas, o que está por trás, quais as principaisbarreiras entre a compreensão homem-máquina assim como a relação decompreensão entre estes.Tal como foi proposto, começou-se por estudar a compreensão e o processamentodas linguagens naturais (PLN). Agora a realidade tornou possivel o estudo deformalismos que representam a comunicação nos dispositivos computacionais. Opresente trabalho vem aboradar aspectos relacionados a programas que dependemde memórias finitas e que de maneira recursiva simplificam os cálculos.Os transdutores são tidos como dispositivos que convertem um tipo de energía paraoutro, é muito usado na electricidade. Mas para a nossa realidade o termo transdutorserá aplicado pelo facto deste ser um dispositivo em que antes de fornecer umdeterminado resultado primeiro trata de aplicar antes suas propriedades previamenteprogramadas. Pois atravês de uma sequência de acções iremos verficar como estáspropriedades se desenvolvem.Hercílio Rui Dinis Duarte 15
  9. 9. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO2. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOMOREIRA (1997) afirma que, os modelos de computação podem ser caracterizadosem termos do tipo de memória que possuem e como se tem acesso a ela.Cada tarefa de computação finita pode ser realizada por um circuito combinacional.Embora este conceito seja muito importante, mas não é tão prático. Não podemossimplesmente projectar um circuito especialmente a cada tarefa computacional. Emvez disso, é aconselhavel executar tarefas computacionais com máquinas quefuncionam com uma memória auxiliar para o controle do fluxo de dados. (SAVAGEJohn, 1997)Apartir do conceito acima, temos então as máquinas de memória finita e as máquinasde memória finita com característica recursiva.Podemos pensar que uma das formas de determinarmos a recursividade de umprograma de domínio finito é através da observação e descrição dos elementosrelacionados a memória. A memória deverá permitir um acesso recursivo de maneirafinita aos seus objectos pré-definidos.Segundo SAVAGE (1997), os programas recursivos de domínio finito, funcionam tendoem sua base a implementação de uma memória auxiliar Pushdown (uma pilha), isto é,o armazenamento sobre esta é efectuado numa ordem LIFO (Last In, First Out). 2.1. RECURSIVIDADESegundo CRESPO (2001), A recursividade1 é a metodología de descrever umaestrutura, em que um dos elementos é a descrição da própria estrutura.A recursividade permite que possamos definir infinitos objectos de uma maneirasimples e objectiva. É uma técnica bastante poderosa para o desenvolvimento dealgoritimos.Podemos verificar um comportamento recursivo na definição de uma função factorial:1 Em outras palavras significa recorrência, enquanto uma data equação não é igualada adefinição de sua base.Hercílio Rui Dinis Duarte 16
  10. 10. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO 1 se n  0 e n!  n.(n  1)! se n  1Segundo KOWALTOWSKI (2010), em algoritimia uma estrutura de dados recursivospode definir-se atravês dos seguintes procedimentos:void Exemplo (T1 x1 , T2 x2 , . . . ) { S1 y1; S2 y2; . . . ; Ci ; /* Comandos i n i c i a i s */ i f (E ( . . . ) ) { C0 ; /* Caso base */} else { /* Chamadas r e c u r s i v a s */C1 ; Exemplo ( e11 , e12 , . . . ) ;C2 ; Exemplo ( e21 , e22 , . . . ) ;C3 ; Exemplo ( e31 , e32 , . . . ) ;...;Cm; Exemplo ( em1 , em2 , . . . ) ;Cf ; }} 2.1.1. TIPOS DE RECURSIVIDADEDe uma forma objectiva e lógica de enquadramento do conceito recursividade emnosso projecto iremos nos basear em dois tipos. Tal como NETO, António (1998)classifica como tipos de recursividade o seguinte:  Recursividade infinitaHercílio Rui Dinis Duarte 17
  11. 11. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOUm procedimento recursivo é infinito quando não existe nenhuma condição que faça oprocedimento ser interrompido.  Recursividade finitaA recursão finita é conhecida quando se encontra uma estrutura de condição deparagem em algum momento da execução de um programa. 2.1.2. DESCRIÇÕES RESUMIDAS SOBRE RECURSIVIDADE  Num programa recursivo deve haver a garantia que o processo seja finito. Caso contrario o programa estará a fazer infinitas chamadas recursivas. Neste caso deve haver um estado de paragem.  O estado de paragem de um programa recursivo é determinado através de um subprograma associado denominado como a base do processo.  A rotina recursiva trabalha sobre uma instância, e para cada chamada recursiva deve haver garantia que a instância que será passada a ele seja sempre mais restrita que a chamada superior.  Através de resumos acima, verificamos que a recursividade finita é aplicada em sistemas da computação, de formas a e evitar que estes sistemas sejam infinitamente recursivos. 2.2. ESTRUTURA DE UMA PILHASegundo LOPES (1999), Uma pilha que também é conhecida como stack, é umsistema usado para o armazenamento de dados. O seu critério de acesso é definidopelo facto do último elemento que entra na estrutura, ser o primeiro a sair.LOPES (1999) também afirma que, as pilhas são utilizadas para guardar dados quedevem ser processados em ordem inversa de chegada e que são muito utilizadas emsistemas operativos, compiladores e nas instruções de programas que realizamchamadas de subprogramas (recursividade).NETO, António (1998) apresenta como afirmação de que, uma pilha é deextrema importância para o entendimento de um processo recursivo.Hercílio Rui Dinis Duarte 18
  12. 12. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOMediante as afirmações apresentadas, podemos supor que uma pilha é um sistemaconceptual que representa uma memória com a seguinte estrutura: Ilustração 1 – Representação do processamento de uma pilhaOperações básicas de uma pilha:  sobreposição de um novo elemento;  retirar o elemento do topo da pilha;  verificar qual é o elemento no topo da pilha;  verificar se a pilha está vazia.Para este trabalho, iremos admitir a apresentação de uma memória recursiva baseadaem pilhas denominada como Transdutor pushdown e que iremos estudar nosubcapítulo seguinte. 2.3. TRASNDUTORES BASEADOS EM PILHAS (PUSHDOWN)Para GURARI (1989), um trasndutor pushdown é uma máquina abstracta de controlode estados finito mas de forma recursiva.Hercílio Rui Dinis Duarte 19
  13. 13. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOO Conceito de transdutores finito vem dar a possibilidade de esquematizar-mos umprograma que funciona mediante uma entrada, um estado e uma saida. O transdutornão deixa de ser um automato, mas com a diferença deste ter em sua estrutura umamemória que diretamente interage com a unidade de controlo.Pelo facto contarem com uma memória antes de fornecer um determinado resultado éque atribui a caracteristica de serem chamados de transdutores finitos que osdistingue dos demais tipos de automatos.O termo recursividade nos transdutores de estados finitos é tido como verdade nomomento em que a pesquisa que a unidade de controle realiza a memória é do tipoLIFO, ou seja, obdecendo uma estrutura de dados em pilha. Neste caso, o transdutordeixa de ser simplesmente transdutor de controle finito e passa a ser transdutor decontrole finito recursivo (pushdown). Ilustração 2 – Representação das partes de um transdutor pushdown. (GUARARI Eiton, 1998) 2.3.1. ESTRUTURA 2.3.1.1. FITA DE ENTRADA (INPUT TAPE)A fita de entrada permite apresentar a sequência determinada do conjunto de simbolosdo alfabeto a ser reconhecido. 2.3.1.2. CABEÇALHO DE ENTRADA (INPUT HEAD)O Cabeçalho trata de efectuar a leitura a apartir da fita dos dados de entrada e deixaros dados disponíveis para serem controlados finitamente.Hercílio Rui Dinis Duarte 20
  14. 14. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO 2.3.1.3. CONTROLO DO ESTADO FINITOTambém tratado como unidade de controlo finito, é a parte principal que permite tercontrole da sequência de cálculos e trata de conectar-se a memória auxiliar demaneira a obter um maior desempenho. Em que no caso, a memória é uma pilha. 2.3.1.4. CABEÇALHO DE SAÍDAO cabeçalho que permite simplesmente escrever o reasultado final, como diz o própriotermo, é apenas de saida, de modos a que a informação após ter passado por umaregra rigorosa é então apresentada. 2.3.1.5. FITA DE SAÍDAEsta fita, é entidade que exibe os dados atravês de uma escrita depois do cabeçalhode saida efectuar o seu trabalho. 2.3.1.6. CABEÇALHO PUSHDOWN (ESCRITA E LEITURA)O Cabeçalho de pushdown responsabiliza-se de efectuar continuamente umapesquisa sobre a mémoria (fita pushdown) em busca dos dados previamenteordenados. 2.3.1.7. FITA PUSHDOWNÉ vista como sendo a memória auxiliar do sistema. tal como foi estudado, esta ordenaos dados obedecendo as regras seguindo o principio de uma pilha. 2.3.2. CÁLCULO DE UMA RELAÇÃO PELO TRANSDUTOR PUSHDOWNA imagem a baixo proposta por GUARARI (1998), representa os diferentes estados deum transdutor no reconhecimento da linguagem { (aibi, ci) | i >1 }, sendo que noprimeiro estado o transdutor assume em sua fita pushdown (a chamada memóriaauxiliar LIFO), o simbolo Z0 que marca o fundo da pilha. O cálculo começa pela leiturada sequência de a´s pela fita de entrada, e enquanto ocorre essa leitura é dadotambém como entrada de forma sequencila desses valores na memória pushdown, ossimbolos são lidas um a um a partir da entrada, ou seja, de forma léxica.Hercílio Rui Dinis Duarte 21
  15. 15. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOAssim que M termina a leitura dos a’s, começa a leitura dos b´s, e na ocorrência dessaleitura é recuperado um a para cada b lido e ao mesmo tempo é escrito um c na fita desaida.A linguagem será aceite caso na leitura do último b, haver a recuperação do último a(permitindo assim uma deslocação para o valor inicial da memória, Z0) e a escrita doúltimo c. Caso contrário, ou seja, se o último b for lido e não haver a recuperação deZ0, a linguagem não será reconhecida. Ilustração 3 – Representação da abordagem sintática da Web 1.0 e 2.0 (GUARARI Eiton, 1998) 2.3.3. DIAGRAMA EM GRAFO DO TRANSDUTOR PUSHDOWNSegundo Guarari (1998), graficamente um transdutor Pushdown é representadoobdecendo o seguinte:M = <Q, Ʃ, Γ, Δ, δ, q0, Z0, F>, sendo que:Q – Conjunto de estadosƩ - AlfabetoΓ – Alfabeto pushdownΔ – Alfabeto de saidaHercílio Rui Dinis Duarte 22
  16. 16. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOδ – Tabela das regras de transiçãoq0 – Estado inicialZ0 - Simbolo do fundo da pilhaF – Estado finalRegras de transiçãoO conjunto das regras de transições (q, α, β, p, ϓ, ρ) são representados com p e qque são o conjunto de estados em Q, α é tanto um simbolo de entrada ou uma stringvazia, β é tanto um simbolo pushdown ou uma string vazia, é uma string dos simbolospushdown, e ρ é tanto um simbolo de saida ou uma string vazia. Ilustração 4 – Diagrama de estados do transdutor pushdown (GUARARI Eiton, 1998)O automato resume-se como inicio a leitura de a´s e b´s no estado inicial, transitando(escrevendo) o valor de c para o estado q1, e no final transita o ultimo valor que porcaracterística é o Z0 acompanhado das strings que o representam.Hercílio Rui Dinis Duarte 23
  17. 17. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO3. CONCLUSÃOA ordem como abordei este tema, permitiu exibir de forma sintética a relação de umprograma, sua memória e propriedades recursivas. E facilmente os conceitos retiradospodem ser integrados em projectos anteriores ou ainda por surgir no ambito dadisciplina da Teoria da computação. Tratou-se de uma abordagem geral quefacilmente poderá insentivar o leitor a continuar suas pesquisas atravês da forma livrecomo poderá interpretar e tirar suas conclusões por tratar-se de um trabalhotipicamente acadêmico.O essencial neste tema foi demonstrar uma daquelas coisas que existem e que sãoeternas no ramo da computação. Por mais que surjam sistemas sofisticados decomputação, estes encaixarão sempre nestes modelos formais.Hercílio Rui Dinis Duarte 24
  18. 18. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOREFERÊNCIASSAVAGE, John (1997) – Models of computation – Exploring the power of computing[Em linha]. [Consult. 06 Mai. 2012]. DisponíveI em WWW:<http://www.cs.brown.edu/people/jes/book>.MOREIRA, Nelma (1996) – Computabilidade – Uma Introdução [Em linha]. [Consult.06.Mai.2012].Disponível: WWW:<http://www.dcc.fc.up.pt/~nam/publica/compdec.pdf>.CRESPO, Rui (2001) – Processadores de linguagens – Da Concepção àimplementação. 2ª ed. Lisboa: IST Press.KOWALTOWSKI, Tomasz (2010) – Estrutura de dados e técnicas de programação[Em linha]. [Consult. 06 Mai. 2012]. Disponível emWWW:<http://colibri.ic.unicamp.br/~tomasz/cursos/mc202/transp_ho_acum.pdf>.LOPES, Arthur (1999) – Estrutura de dados – Para a construção de softwares. 1ª Ed.Canoas: Editora da Ulbra.NETO, António (1998) – Explorando recursão e fractals [Em linha]. [Consult. 06 Mai.2012].Disponível:WWW:<http://lsm.dei.uc.pt/ribie/docfiles/txt200342415342159M.PDF>.GUARI, Eiton (1989) – Introduction to theory of the computation. [Em linha].[Consult.06.Mai.2012].Disponível:WWW:<http://www.cse.ohio-state.edu/~gurari/theory-bk/theory-bk.html>.Hercílio Rui Dinis Duarte 25
  19. 19. ANEXOS
  20. 20. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO LISTA DE ANEXOS Anexo A - Transdutor de controle finito Anexo B - Uma máquina de estados finitoHercílio Rui Dinis Duarte 27
  21. 21. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO ANEXO A Transdutor de controle finitoHercílio Rui Dinis Duarte 28
  22. 22. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOHercílio Rui Dinis Duarte 29
  23. 23. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITO ANEXO B Uma máquina de estados finitosHercílio Rui Dinis Duarte 30
  24. 24. PROGRAMAS RECURSIVOS DE DOMÍNIO FINITOHercílio Rui Dinis Duarte 31

×