Algoritmos Genéticos

Documentos relacionados
Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

3 Algoritmos Genéticos

3. Resolução de problemas por meio de busca

ALGORITMOS GENÉTICOS. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Introdução aos Algoritmos Genéticos

Inteligência Artificial. Algoritmos Genéticos. Aula I Introdução

Técnicas de Inteligência Artificial

Algoritmos Genéticos. Pontos fracos dos métodos tradicionais. Características de alguns problemas. Tamanho do espaço de busca- Ex. caixeiro viajante:

ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA

1. Computação Evolutiva

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Max Pereira. Inteligência Artificial

Técnicas de Inteligência Artificial

Algoritmos Genéticos e Evolucionários

Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP

Computação Evolutiva. Computação Evolutiva. Principais Tópicos. Evolução natural. Introdução. Evolução natural

CONSTRUÇÃO AUTOMÁTICA DE OPERADORES MORFOLÓGICOS UTILIZANDO PROGRAMAÇÃO GENÉTICA.

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS. Metaheurísticas de Buscas

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

Linguagens Regulares. Prof. Daniel Oliveira

Inteligência Artificial

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008

Modelos Evolucionários e Tratamento de Incertezas

APLICAÇÃO DE ALGORITMOS BIO-INSPIRADOS EM CONTROLE ÓTIMO

Algoritmos Genéticos

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

APLICATIVO PARA ENSINO DE ENGENHARIA QUÍMICA BÁSICA

ESTUDO DO EFEITO DOS PARÂMETROS GENÉTICOS DE UM ALGORITMO GENÉTICO NA SOLUÇÃO OTIMIZADA E NO TEMPO DE CONVERGÊNCIA EM UMA FUNÇÃO DE DUAS VARIÁVEIS

INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL. Aula 06 Prof. Vitor Hugo Ferreira

Algoritmos genéticos Abordagem unificada de algoritmos evolutivos simples

1. Computação Evolutiva

3 Computação Evolucionária

IN-1131 Computação Evolucionária. Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática

GT-JeDi - Curso de Desenv. de Jogos IA para Jogos. Gustavo Pessin 2007

INTRODUÇÃO À. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

4 Implementação Computacional

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Introdução a Algoritmos Genéticos

UFCG IQuanta DSC. Cheyenne R. G. Isidro Bernardo Lula Júnior

Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO

ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP

Turing to Norma, uma ferramenta para auxiliar o estudo da equivalência entre Máquina de Turing e Máquina Norma

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial

Exemplo de Aplicação de Algoritmos Genéticos. Prof. Juan Moisés Mauricio Villanueva cear.ufpb.br/juan

Tópicos Especiais em Informática Fatec Indaiatuba

Otimização. Unidade 6: Algoritmo Genético. Jaime Arturo Ramírez. 7. Teoria do processo evolutivo num GA. 8. Aspectos avançados

11/1/2012. Agenda. Classe de problemas de interesse. Busca Local. Busca Local. Exemplo de Espaço de Estados

Breve Avaliação de Parâmetros básicos de Algoritmos Genéticos

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Métodos de Busca. Inteligência Artificial. Algoritmos Genéticos. Algoritmos Evolucionários. Prof. Ms. Luiz Alberto Contato:

Um Algoritmo Genético com Aprendizado por Reforço Simples aplicado ao problema do Mundo de Grid

CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa. Prof. Paulo André Castro

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Inteligência Artificial

RECONHECIMENTO AUTOMÁTICO DE PADRÕES MUSICAIS UTILIZANDO OPERADORES MORFOLÓGICOS E PROGRAMAÇÃO GENÉTICA.

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

Algoritmos Genéticos

Inteligência Artificial

a n Sistemas de Estados Finitos AF Determinísticos

1. Computação Evolutiva

3 Métodos de Otimização

Metahuerísticas: Algoritmos Genéticos. Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng.

SCC Introdução à Teoria da Computação

1. Computação Evolutiva

Introdução ao Algoritmo Genético

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Créditos. Introdução a Sistemas Inteligentes. Agenda Introdução Breve Histórico. Introdução. Introdução aos Algoritmos Evolutivos

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

3 Otimização Evolucionária de Problemas com Restrição

Estratégias Evolutivas EEs. Prof. Juan Moisés Mauricio Villanueva

6 Estudos de Casos Porta Lógica OU de 4 Entradas

Sistemas Inteligentes if684. Germano Vasconcelos Página da Disciplina:

Algoritmos Genéticos

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

Figura 3.1: Fluxograma do algoritmo da Programação Genética.

Método de Hardy-Cross Capitulo 13- Algoritmo genético engenheiro Plínio Tomaz 24 dezembro de Algoritmo genético 13-1

SCC-5832 Teoria da Computação

Capítulo 1 Conceitos Básicos

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Teoria da Computação (BBC244)

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

Algoritmos Evolutivos Canônicos

Algoritmos Genéticos. 1 Semestre de Cleber Zanchettin UFPE - Universidade Federal de Pernambuco CIn - Centro de Informática

Otimização. Algoritmos Genéticos. Teoria da Evolução. Otimização

2. Objetivos do Sistema

Computação Evolutiva. Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho)

UMA INTRODUÇÃO AOS ALGORITMOS GENETICOS

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Linguaguens recursivamente enumeráveis e recursivas

3 Otimização Aplicada a Reconstituição de Acidentes

Problema de Satisfação de Restrições

Problema de Satisfação de Restrições. Problema de Satisfação de Restrições. Grafo de restrições. Exemplo: 4 Rainhas como um PSR

Modelos Evolucionários e Tratamento de Incertezas

Computação Evolucionária

Transcrição:

Módulo Resolvedor de Autômatos Finitos Para um Ambiente de Apoio ao Ensino de Teoria da Computação Utilizando Algoritmos Genéticos Rafael Welter 1, Adriana Postal 2, Josué Pereira de Castro 2 1 UNIPAN - União Pan-Americana de Ensino Centro de Processamento de Dados Av. Brasil, 7210. Centro. CEP 85802-970. Cascavel, PR. rafaelwelter@hotmail.com 2 UNIOESTE - Universidade Estadual do Oeste do Paraná Laboratório de Computação Teórica e Laboratório de Inteligência Artificial Rua Universitária, 2069. Jardim Universitário. Caixa Postal 711 - CEP 85819-110 Cascavel, PR apostal@unioeste.br, jpcastro@das.ufsc.br Abstract. This article describes a simulator/solver module for Finite Automatas (FAs) using Genetic Algorithms (GAs) that will be part of the Support Environment to Education Theory of the Computation - LabTeC, that has as objective to help the students in the comprehension of the automatas, making them elaborate and test them with the aid of the described tool. Resumo. Este artigo descreve um módulo simulador/resolvedor para Autˆomatos Finitos (AFs) utilizando Algoritmos Genéticos (AGs) que fará parte do Ambiente de Apoio ao Ensino de Teoria da Computação - LabTeC, que tem como objetivo auxiliar os alunos na compreensão dos autˆomatos fazendo com que eles possam elaborá-los e testá-los com a ajuda da ferramenta descrita neste artigo. 1. Introdução Um Autômato Finito (AF) é um dispositivo reconhecedor de linguagens. Ele é um modelo computacional restrito com memória limitada e que recebe, como entrada, uma cadeia de caracteres e indica se a cadeia de entrada é aceita ou não. Entretanto, AFs são modelos matemáticos por natureza. Esta característica, aliada à falta de maturidade matemática dos estudantes, faz com que os autômatos sejam de difícil compreensão e elaboração por parte dos alunos de Teoria da Computação. O presente trabalho [Welter, 2004] descreve um módulo simulador/resolvedor de AFs, que fará parte do Ambiente de Apoio ao Ensino de Teoria da Computação (LabTeC) que tem como objetivo auxiliar os alunos na compreensão dos autômatos fazendo com que eles possam elaborá-los e testá-los com a ajuda da ferramenta descrita neste artigo. Esta ferramenta irá propor problemas para o aluno que, por sua vez, poderá resolver os problemas e testá-los; ou então, solicitar uma ou mais soluções elaboradas pela própria ferramenta, solução que será encontrada utilizando a técnica de Algoritmos Genéticos (AGs). Os Algoritmos Genéticos vêm, cada vez mais, sendo utilizados em diversas áreas da ciência e engenharia. Foram introduzidos por John Holland ([Holland, 1975] apud

[Koza, 1992]) em 1975 com inspiração na teoria da evolução das espécies de Charles Darwin (1859). De acordo com a teoria, os indivíduos mais adaptados ao ambiente em que vivem possuem mais chances de sobreviver e propagar-se por outras gerações. AGs têm como principal característica apresentar, não apenas uma solução para o problema, mas um conjunto de soluções, além de não necessitarem de informações adicionais e sim, apenas informações de custo embutidas no próprio algoritmo. Um trabalho semelhante ao aqui realizado foi proposto por Anja Belz [Belz, 2000] [Belz, 1998a] [Belz, 1998b], que utilizou um modelo de AG para geração de máquinas de estado finito aplicados a modelos fonológicos das línguas russa, alemã, inglesa e holandesa; bem como em modelos grafológicos alemães, ingleses e holandeses para uso na identificação de linguagens escritas automaticamente. Outros trabalhos utilizam técnicas semelhantes: Fogel [Fogel, 2000] utiliza computação evolucionária aplicada a autômatos com saída, Lankhorst [Lankhorst, 1995] usa um AG para indução de autômatos de pilha não-determinísticos, Koza [Koza, 1992] utiliza programação genética e autômatos para o problema da formiga artificial (Artifical Ant) e Horihan e Lu [Horihan and Lu, 2004] aplicam a inferência genética na redução do número de gerações necessárias para uma máquina de estado finito. O presente artigo está estruturado da seguinte maneira: na seção 2, descreveremos brevemente o módulo simulador; na seção 3 descreveremos o módulo genético, a representação cromossômica utilizada, a função de avaliação, os operadores de seleção, cruzamento e mutação implementados e os parâmetros genéticos utilizados. Na seção 4, descreveremos de forma breve a interface do simulador/resolvedor; na seção 5, nossas conclusões e os trabalhos futuros e, por fim, as referências bibliográfias utilizadas. 2. Módulo Simulador O simulador de AF, adaptado de De Castro [de Castro, 2000], foi desenvolvido em linguagem de programação lógica (Prolog) e resolve AFDs e apenas AFNs tradicionais (com transições, a partir de um mesmo símbolo de entrada, para mais de um estado de destino). Portanto, não resolve os AFNs com transições vazias (transições λ) e os AFNs com transições sobre strings (transições do tipo (q 0, abc, q 1 )). Seu funcionamento é bastante simples. Através de uma interface construída em Object Pascal, o problema, o alfabeto e as strings para testes são carregados à partir de um arquivo texto. O aluno, então, constrói sua solução e, ao fazer a simulação, todas as informações relevantes são processadas e transformadas em cláusulas 1 e, o motor de inferência do Prolog realiza a simulação e os resultados são repassados para o aluno. 3. Módulo Genético O módulo que resolverá os AFs utilizando AG foi implementado em Object Pascal e faz o interfaceamento com a linguagem Prolog utilizando o simulador para obter a avaliação de cada indivíduo gerado. Nos próximos tópicos detalharemos melhor cada parte do AG e descreveremos os testes realizados. 3.1. Representação Cromossômica Cada indivíduo da população (autômato) é representado cromossomicamente por um vetor unidimensional, onde cada posição do vetor pode assumir valor 0 ou 1 (codificação binária). 1 Cláusulas são os elementos funcionais básicos de um programa em Prolog.

No modelo elaborado para este trabalho, o cromossomo armazena as transições dos autômatos de forma sequencial. Cada transição é representada da seguinte maneira: estado de saída, símbolo lido e estado de chegada. Os estados utilizam cinco bits do cromossomo, sendo que o bit mais à esquerda indica se o estado é final e os outros quatro bits indicam o número do estado. Oito bits são reservados para indicar um índice para uma tabela onde os símbolos do alfabeto estão contidos, e assim podendo ter, no máximo, 2 8 = 256 símbolos diferentes. Portanto, cada transição ocupa dezoito bits no cromossomo. O primeiro estado de saída contido no cromossomo representará o estado inicial do autômato. A Figura 1 mostra como uma transição (Figura 1(a)) é representada no cromossomo (Figura 1(b)). O símbolo a da transição está armazenado na posição zero da tabela de símbolos. Note que o estado de chegada está com o bit que indica que ele é um estado final, com valor 1. (a) Transição (b) Cromossomo Figura 1: Exemplo da representação cromossômica de uma transição O número máximo de transições que cada autômato gerado poderá ter depende do número de símbolos no alfabeto multiplicado pelo número máximo de estados que ele terá (neste caso, 2 4 = 16 estados). 3.1.1. Testes e Resultados Para a representação cromossômica tínhamos, inicialmente, reservado um bit a mais para representar os estados, assim, os autômatos podiam ter no máximo 2 5 = 32 estados e a transição ocupava vinte bits no cromossomo. Entretanto, com este número de estados, as possibilidades de termos autômatos diferentes eram muito grandes e os resultados obtidos não foram satisfatórios. 3.2. Função de Avaliação A função de avaliação utilizada consiste em duas partes: a primeira, calculará a porcentagem de acertos do autômato, cálculo conforme a fórmula abaixo: P A = ((6 NSA) + (4 NSNA)) ((6 SA) + (4 SNA)) (1) onde:

PA é a porcentagem de acertos do autômato NSA é o número de strings que deveriam ser aceitas e foram reconhecidas; NSNA é o número de strings que não deveriam ser aceitas e não foram reconhecidas; SA é o número de strings que deveriam ser aceitas passadas no problema; SNA é o número de strings que não deveriam ser aceitas passadas no problema; A segunda parte da função de avaliação é a função Fitness propriamente dita, a qual é descrita a seguir: onde: F itness = (P A 9) + 1 nest nest é o número de estados do autômato gerado Para melhor entendendimento com relação às variáveis utilizadas na Equação 1 a Figura 2 apresenta duas listas: uma com strings que devem ser aceitas pela linguagem L = (00) com o alfabeto Σ = {0, 1}, e a outra com as strings que não devem ser aceitas por esta linguagem. As marcações ao lado de cada string indicam: o V em verde indica que o resultado foi o esperado e o X em vermelho representa um erro, o resultado não foi o esperado. Então, os parâmetros da Equação 1 ficarão desta forma: NSA = 4 NSNA = 6 SA = 8 SNA = 8 (2) Figura 2: Teste da função fitness 3.2.1. Testes e Resultados Muitas modificações foram feitas nas duas fórmulas mostradas acima para chegarmos ao modelo que produzisse o melhor resultado. A função de avaliação que primeiro foi utilizada foi: 1 F itness = (P A 8) + ( 2) (3) nest

com P A = (NSA + NSNA) (SA + SNA) (4) Com a realização dos testes, vimos que a probabilidade de acerto do autômato tinha um peso maior sobre o resultado final e optamos então por aumentar o coeficiente que multiplica o PA e diminuir o outro coeficiente na Equação 3. Outra conclusão a que chegamos após realizar diversos testes foi a de que, as strings passadas no problema e que deveriam ser aceitas pelo autômato também tinham importância maior no resultado do que as strings que não deveriam ser aceitas. Várias modificações foram feitas na Equação 4 inserindo valores diferentes nos coeficientes para que essas strings tivessem peso maior até chegarmos nos coeficientes seis e quatro como mostrado na Equação 1. 3.3. Operador de Seleção Para selecionar quais indivíduos serão utilizados no cruzamento optou-se por utilizar o Método da Roleta (Roulette Wheel). Cada indivíduo possui, além do fitness absoluto (seu valor de aptidão), um fitness relativo o qual representa sua aptidão em relação aos outros indivíduos da população. Com base no fitness relativo é calculada a fatia que este ocupará na roleta. Um número aleatório, então, é sorteado e a população é percorrida até encontrar o indivíduo que possui a fatia da roleta a qual o número sorteado pertence, este indivíduo então é selecionado. O processo é repetido para selecionar o outro indivíduo que participará do cruzamento. Outro método de seleção utilizado foi o elitismo 2. Antes da população sofrer algum processo de transformação em cada geração, o melhor indivíduo da população é preservado e, ao final das transformações, este indivíduo substituirá o pior indivíduo da nova população gerada. 3.3.1. Testes e Resultados Desde o início optamos por utilizar o Método da Roleta pois, de acordo com a literatura pesquisada, este método é o mais utilizado e por não dispormos de mais tempo para testarmos os demais métodos. Entretanto, no início não aplicávamos o elitismo, pois já era utilizada uma técnica semelhante que será descrita na seção 3.4. Posteriormente optamos pela utilização deste método pois percebemos que no decorrer das gerações, alguns bons indivíduos não eram selecionados e então, se perdiam. Com a implantação do elitismo, pelo menos um, o melhor, dos indivíduos é preservado para a próxima população, trazendo melhorias para o resultado final. 3.4. Operador de Cruzamento Após terem sido selecionados dois indivíduos, caso haja cruzamento, com base na taxa de cruzamento, seus segmentos (material genético) são trocados através do cruzamento multiponto, onde os pontos de cruzamento ficam na divisão entre uma transição e outra. Portanto, o número de pontos é determinado pelo número de transições do autômato gerado. 2 Método no qual um número determinado de indivíduos, de acordo com seu fitness, é passado diretamente para a próxima geração, garantindo sempre, que o(s) melhor(es) indivíduo(s) não seja(m) perdido(s) de uma geração para outra.

Como os cromossomos dos indivíduos são, geralmente, de tamanhos diferentes, antes de gerar os novos indivíduos a partir dos dois pais selecionados, é necessário determinar o tamanho destes filhos. Esse tamanho é determinado através de um número aleatório gerado entre zero e o tamanho do maior dos pais selecionados. Só então a troca de segmentos é feita, alternando-se entre cada um dos pais gerando dois novos indivíduos. Quando, ao fazer o cruzamento, o cromossomo do menor dos pais chegar ao fim, os dois filhos receberão o restante do material genético do pai maior. O processo de cruzamento, confome descrito acima, gera dois novos indivíduos. Com o intuito de manter na nova população os indivíduos com maior grau de aptidão, antes de passarmos os indivíduos gerados para a próxima geração, o valor do fitness de cada um dos envolvidos no cruzamento (os dois pais e os dois filhos) é comparado e apenas os dois indivíduos com maior aptidão farão parte da próxima geração. A Figura 3 mostra o cruzamento ocorrendo no cromossomo. Aqui não foi utilizada a representação cromossômica real mas sim, uma representação que torne mais fácil o entendimento do leitor. A Figura 4 mostra o cruzamento ocorrendo no autômato. Figura 3: Exemplo de cruzamento no cromossomo (a) Pai 1 (b) Pai 2 (c) Filho 1 (d) Filho 2 Figura 4: Exemplo de cruzamento no autômato 3.5. Operador de Mutação A mutação dos novos indivíduos gerados no cruzamento é feita em cada transição. Inicialmente é verificado se ocorrerá a mutação ou não com base na taxa de mutação. Se for determinado que haverá mutação, uma nova transição é gerada e substituirá a que está no cromossomo. Este processo é repetido para cada segmento do cromossomo correspondente a uma transição do autômato.

No processo de geração da nova transição, quando ocorrer a mutação, qualquer outro estado pode vir a substituir os estados da transição modificada podendo, assim, o processo de mutação acrescentar novos estados ao autômato. As Figuras 5 e 6 exemplificam o processo de mutação no cromossomo e no autômato respectivamente. Figura 5: Exemplo de mutação no cromossomo (a) Antes da mutação (b) Após a mutação Figura 6: Exemplo de mutação no autômato 3.6. Parâmetros Genéticos Após a realização dos testes que serão descritos a seguir, chegamos aos seguintes valores para os parâmetros genéticos: tamanho da população com cem indivíduos utilizando-se trinta gerações; taxa de mutação e cruzamento de 20% e 80% respectivamente e a cada geração, o tamanho da população se mantêm constante. 3.6.1. Testes e Resultados Para chegar aos valores citados acima vários testes foram feitos. Aplicávamos um tipo de configuração aos parâmetros, realizávamos os testes e depois, comparávamos os resultados com os obtidos com outra configuração. Os valores das taxas de cruzamento e mutação, quando alterados, pouco contribuíram para uma melhoria nos resultados e, portanto, optamos por manter estas taxas. O tamanho da população sofreu muitas modificações durante os testes e decidimos pelo valor cem com base nos resultados dos testes efetuados. Este valor apresentou melhores resultados. Outro parâmetro bastante alterado durante os testes foi o número de gerações. Para alguns dos problemas testados, se colocássemos um valor muito alto para este parâmetro, a população final ficava com muitos autômatos iguais, com pouquísismos estados e os resultados não eram satisfatórios. Portanto, trinta gerações foi o valor que, para a maioria dos problemas, apresentou melhores resultados. 4. Interface Para oferecer maior facilidade ao usuário do simulador/resolvedor, desenvolvemos, inicialmente, a interface mostrada na Figura 7. O aluno escolhe um problema através do

menu Arquivo. No quadro Problema aparecerá a descrição do problema escolhido juntamente com o alfabeto que deverá ser utilizado. O quadro Solução é utilizado para desenvolvermos a descrição do autômato, que solucionará o problema, colocando o conjunto de estados, o estado inicial, o conjunto de estados finais e as transições do autômato. Então, através do botão Testar Solução o aluno pode verificar a corretude de seu autômato. Caso deseje ver a(s) solução(ões) gerada(s) pelo AG, basta acionar o botão Executar AG. Figura 7: Interface do simulador/resolvedor Na Figura 8 podemos ver a interface com um problema resolvido no simulador/resolvedor. 5. Conclusões e Trabalhos Futuros O simulador/resolvedor para AFs desenvolvido neste trabalho fará parte do Ambiente de Apoio ao Ensino de TC - LabTeC - que está sendo desenvolvido pelos autores em seus laboratórios de pesquisa. O resultado deste trabalho é uma ferramenta que, além de fornecer ao aluno problemas que devem ser resolvidos nela própria, possibilitará ao aluno, testar suas respostas e fornecer, se solicitado, respostas para os problemas, respostas estas geradas através de AGs. Neste trabalho, o simulador de AF utilizado, é capaz de testar as soluções dos problemas propostos para os modelos de AFs descritos na seção 2 de forma satisfatória. Para os demais tipos de AFNs (com transições sobre o vazio e sobre cadeias de caracteres) são necessários alguns ajustes no simulador, ajustes que estão em estudo no momento. Para o módulo genético, é necessário fazer alguns comentários: 1. devido à própria natureza dos AGs, o tempo necessário para obter uma solução para o problema proposto é elevado, o que, para uma aplicação que precisa de respostas em tempo real, não é muito satisfatório.

Figura 8: Interface com problema resolvido 2. esperava-se que, mesmo com um tempo de execução maior que o desejado, as soluções encontradas pelo AG para os problemas propostos fossem capazes de um acerto de 100%. Após a realização de diversos testes, observamos que poucas vezes o AG conseguiu encontrar uma solução que resolvesse 100% um problema. Os melhores resultados obtidos ficaram entre 60% e 90% de acerto. 3. mesmo após diversas modificações realizadas no AG, não conseguimos chegar a resultados melhores do que os já citados. Com os resultados obtidos neste trabalho, o módulo simulador/resolvedor de AFs da ferramenta LabTeC, proporcionará ao aluno não a resposta correta para um determinado problema e sim, mostrará um possível caminho a ser seguido pelo aluno, para que este, com base nesta sugestão da ferramenta, seja capaz de encontrar a solução correta. Como trabalhos futuros, relacionamos as seguintes sugestões: poderia-se tentar resolver o problema da eficiência das soluções encontradas através de algumas modificações no algoritmo, entre elas, testar outras representações para o cruzamento, outros métodos de seleção, cruzamento e mutação, alteração da função fitness, alteração dos parâmetros genéticos, para então comparar os resultados obtidos com todas as modificações e verificar se há uma melhora nos resultados; ampliar o simulador do AF para reconhecimento de todos os tipos de AFNs; ampliar o simulador para incluir os demais modelos computacionais da Teoria da Computação (Autômato de Pilha, Máquina de Turing, etc.); Implementar um operador de simplificação de autômatos que poderia ser aplicado em cada geração, auxiliando na melhora dos resultados. Apesar dos problemas encontrados e da não obtenção de um modelo genético com 100% de eficiência, os objetivos definidos no início deste trabalho foram alcançados com sucesso.

Referências Belz, A. (1998a). Discovering phonotactic finite-state automata by genetic search. In COLING-ACL 98, pages 1472 1474. Morgan Kaufman. Belz, A. (1998b). A genetic algorithm for finite state automata induction with an application to phonotactis. In Keller, B., editor, ESSLLI-98 Workshop on Automated Acquisition of Syntax and Parsing, pages 9 17, Germany. Belz, A. (2000). Computational Learning of Finite-State Models for Natural Language Processing. Ph. d. thesis, School of Cognitive and Computing Sciences, University of Sussex, United Kingdown. de Castro, J. P. (2000). Notas de aula de inteligência artificial. 2000. Universidade Estadual do Oeste do Paraná, curso de Bacharelado em Informática. Fogel, D. B. (2000). Evolutionary Computation: Basic Algorithms and Operators, volume 1, chapter Finite-state representations, pages 151 154. Institute of Phisics Publishing, Philadelphia, PA, EUA. Holland, J. H. (1975). Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence. University of Michigan. Horihan, J. W. and Lu, Y.-H. (2004). Improving fsm evolution with progressive fitness functions. In 14th ACM Great Lakes symposium on VLSI, pages 123 126, Boston, MA, USA. ACM Press. Koza, J. R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. Bradford Book, Cambridge, Massachusetts. Lankhorst, M. M. (1995). A genetic algorithm for the induction of nondeterministic pushdown automata. Computing Science Report 9502, Dept. of Computing Science, University of Groningen, The Netherlands. Welter, R. (2004). Módulo resolvedor de autômatos finitos para um ambiente de apoio ao ensino de teoria da computação utilizando algoritmos genéticos. Monografia (bacharelado em informática), Universidade Estadual do Oeste do Paraná, Cascavel, PR.