Qual é a iluminação que devo atingir depois de estudar autômatos finitos?


247

Estive revisando a Teoria da Computação por diversão e essa pergunta me incomoda há um tempo (engraçado nunca pensei nisso quando aprendi a Teoria dos Autômatos na minha graduação). Então, "por que" exatamente estudamos autômatos finitos determinísticos e não determinísticos (DFA / NFAs)? Então, aqui estão algumas respostas que eu encontrei após o solilóquio, mas ainda não consegui ver sua contribuição geral ao momento 'aha':

  1. Estudar o que são e o que não são capazes, isto é, limitações
    • Por quê?
  2. Uma vez que eles são os modelos básicos de computação teórica e estabeleceriam as bases de outros modelos de computação mais capazes.
    • O que os torna "básicos"? Será que eles têm apenas um bit de armazenamento e transições de estado?
  3. Ok, e daí? Como tudo isso contribui para responder à questão da computabilidade? Parece que as máquinas de Turing ajudam a entender isso muito bem e existem modelos de computação 'menores', como PDAs, DFA / NFAs / Regexes etc.

Portanto, embora eu "entenda" até certo ponto, sou incapaz de responder a essa pergunta para mim mesmo? Qual a melhor explicação para você 'por que estudar D / N-FAs'? Qual é a pergunta que eles procuram responder? Como isso ajuda e por que é a primeira coisa ensinada na Teoria dos Autômatos?

PS: Estou ciente dos vários aplicativos lexicográficos e correspondentes de padrões que podem ser implementados como tais. No entanto, eu não quero saber para que praticamente ele pode ser usado, mas qual foi o motivo de seu uso / invenção / design durante o culminar do estudo da teoria da computação. Historicamente falando, o que levou alguém a começar com isso e a qual entendimento "aha" ele deveria levar? Se você explicasse a importância deles para os alunos de ciências da computação que estão começando a estudar a teoria dos autômatos, como você fez isso?


10
Então, essa é uma questão de nível de pesquisa no TCS?
Hendrik Jan

13
Não se trata tanto de uma pergunta de pesquisa quanto de uma perspectiva geral sobre um tópico. Temos várias dessas perguntas aqui. Em vez de iniciar um debate nos comentários, incentive você a postar uma pergunta sobre a meta, se desejar discutir mais a adequação dessas perguntas.
Suresh Venkat

6
PhD: Sua pergunta deu algumas respostas muito boas, então agradeço por isso. Você foi honesto em suas declarações e não era minha intenção desqualificar você ou sua pergunta. Na verdade, é o contrário do que meu comentário sugere: Vi outras perguntas que foram descartadas com muita facilidade usando essa citação do FAQ. Você está certo, Suresh: este não é o lugar para iniciar um debate. Desculpa.
Hendrik Jan

1
@HendrikJan - Oh, não se preocupe! O texto oculta o tom. Eu nunca quis dizer dessa maneira. Eu pensei que você estava me perguntando se isso era uma pergunta de pesquisa da minha parte.
PhD

16
Parabéns ao PhD e Hendrik por um nível de civilidade que raramente encontro em fóruns públicos.
Lucas

Respostas:


342

Eu pessoalmente gostei de vários Aha! momentos do estudo da teoria básica dos autômatos. NFAs e DFAs formam um microcosmo para a ciência da computação teórica como um todo.

  1. O não determinismo leva à eficiência? Existem exemplos padrão em que o autômato determinístico mínimo para uma linguagem é exponencialmente maior que um autômato não determinístico mínimo. Compreender essa diferença para as máquinas de Turing está no cerne da ciência da computação (teórica). NFAs e DFAs fornecem o exemplo mais simples que conheço, onde você pode ver explicitamente a lacuna estrita entre determinismo e não-determinismo.
  2. Computabilidade! = Complexidade. Os NFAs e os DFAs representam idiomas regulares e são equivalentes no que calculam. Eles diferem na maneira como calculam.
  3. Máquinas refinam idiomas. Essa é uma visão diferente do que computamos e de como computamos. Você pode pensar em linguagens computáveis ​​(e funções) como definindo uma classe de equivalência de autômatos. Essa é uma mudança de perspectiva fundamental no TCS, onde focamos não apenas o quê, mas o como da computação e tentamos escolher o 'como' certo ao projetar um algoritmo ou entender o espaço de diferentes como no estudo de classes de complexidade.
  4. O valor da representação canônica. Os DFAs são o exemplo por excelência de uma estrutura de dados que admite uma representação canônica. Todo idioma comum possui um DFA exclusivo e mínimo. Isso significa que, com um DFA mínimo, operações importantes como inclusão de idioma, complementação e verificação da aceitação de uma palavra se tornam triviais. Conceber e explorar representações canônicas é um truque útil ao desenvolver algoritmos.
  5. Ausência de representações canônicas. Não há representação canônica bem aceita de expressões regulares ou NFA. Portanto, apesar do ponto acima, nem sempre existem representações canônicas. Você verá esse ponto em muitas áreas diferentes da ciência da computação. (por exemplo, fórmulas lógicas proposicionais também não têm representações canônicas, enquanto ROBDDs).
  6. O custo de uma representação canônica. Você pode até entender a diferença entre NFAs e DFAs como um teorema algorítmico sem almoço grátis . Se quisermos verificar a inclusão de idiomas entre ou complementar um NFA, você pode determinar e minimizá-lo e continuar a partir daí. No entanto, essa operação de "redução" tem um custo. Você verá exemplos de canonização a um custo em várias outras áreas da ciência da computação.
  7. Infinito! = Indecidível. Um equívoco comum é que problemas de natureza infinita são inerentemente indecidíveis. Linguagens regulares contêm infinitas seqüências de caracteres e, no entanto, possuem várias propriedades decidíveis. A teoria das linguagens regulares mostra que o infinito por si só não é a fonte da indecidibilidade.
  8. Segure o Infinito na palma do seu autômato. Você pode visualizar um autômato finito puramente como uma estrutura de dados para representar conjuntos infinitos. Um ROBDD é uma estrutura de dados para representar funções booleanas, que você pode entender como representando conjuntos finitos. Um autômato finito é uma extensão natural e infinita de um ROBDD.
  9. O humilde processador. Um processador moderno possui muito, mas você pode entendê-lo como um autômato finito. Apenas essa percepção tornou a arquitetura do computador e o design do processador muito menos intimidadores para mim. Também mostra que, na prática, se você estruturar e manipular seus estados cuidadosamente, poderá ir muito longe com autômatos finitos.
  10. A perspectiva algébrica. Linguagens regulares formam um monóide sintático e podem ser estudadas a partir dessa perspectiva. De maneira mais geral, em estudos posteriores, você também pode perguntar qual é a estrutura algébrica correta que corresponde a algum problema computacional.
  11. A perspectiva combinatória. Um autômato finito é um gráfico rotulado. Verificar se uma palavra é aceita reduz a localização de um caminho em um gráfico rotulado. Os algoritmos de autômatos equivalem a transformações gráficas. Compreender a estrutura dos autômatos para várias subfamílias de idiomas regulares é uma área de pesquisa ativa.
  12. O triângulo amoroso Álgebra-Linguagem-Combinatória. O teorema de Myhill-Nerode permite que você comece com uma linguagem e gere um autômato ou um monóide sintático. Matematicamente, obtemos uma tradução entre tipos muito diferentes de objetos matemáticos. É útil manter essas traduções em mente e procurá-las em outras áreas da ciência da computação e alternar entre elas, dependendo da sua aplicação.
  13. A matemática é a linguagem das grandes imagens. Linguagens regulares podem ser caracterizadas por NFAs (gráficos), expressões regulares (gramática formal), máquinas de Turing somente leitura (máquina), monóides sintáticos (álgebra), álgebras Kleene (álgebra), lógica monádica de segunda ordem, etc. O fenômeno é que conceitos importantes e duradouros têm muitas caracterizações matemáticas diferentes, cada uma das quais traz sabores diferentes ao nosso entendimento da idéia.
  14. Lemas para o matemático que trabalha. O Lemma de bombeamento é um ótimo exemplo de uma ferramenta teórica que você pode aproveitar para resolver problemas diferentes. Trabalhar com lemas é uma boa prática para tentar aproveitar os resultados existentes.
  15. Necessário! = Suficiente. O teorema de Myhill-Nerode fornece condições necessárias e suficientes para que um idioma seja regular. O lema de bombeamento nos fornece as condições necessárias. Comparar os dois e usá-los em diferentes situações me ajudou a entender a diferença entre condições necessárias e suficientes na prática matemática. Aprendi também que uma condição necessária e suficiente reutilizável é um luxo.
  16. A perspectiva da linguagem de programação. Expressões regulares são um exemplo simples e bonito de uma linguagem de programação. Na concatenação, você tem um análogo da composição seqüencial e, na estrela Kleene, você tem o análogo da iteração. Ao definir a sintaxe e a semântica das expressões regulares, você dá um pequeno passo na direção da teoria da linguagem de programação vendo definições indutivas e semântica composicional.
  17. A perspectiva do compilador. A tradução de uma expressão regular para um autômato finito também é um compilador teórico simples. Você pode ver a diferença entre a análise, a geração de código intermediário e as otimizações do compilador, devido à diferença na leitura de uma expressão regular, na geração de um autômato e na minimização / determinação do autômato.
  18. O poder da iteração. Ao ver o que você pode fazer em um autômato finito com um loop e um sem, você pode apreciar o poder da iteração. Isso pode ajudar a entender as diferenças entre circuitos e máquinas, ou entre lógicas clássicas e lógicas de ponto fixo.
  19. Álgebra e Coalgebra. Linguagens regulares formam um monóide sintático, que é uma estrutura algébrica. Autômatos finitos formam o que na linguagem da teoria das categorias é chamado de coalgebra. No caso de um autômato determinístico, podemos mover-se facilmente entre uma representação algébrica e uma coalgebraica, mas, no caso de AFNs, isso não é tão fácil.
  20. A perspectiva aritmética. Existe uma conexão profunda entre computação e teoria dos números. Você pode optar por entender isso como uma afirmação sobre o poder da teoria dos números e / ou a universalidade da computação. Você geralmente sabe que autômatos finitos podem reconhecer um número par de símbolos e que eles não podem contar o suficiente para coincidir com parênteses. Mas quanta aritmética eles são capazes? Autômatos finitos podem decidir fórmulas aritméticas de Presburger. O procedimento de decisão mais simples que conheço para a aritmética de Presburger reduz uma fórmula a um autômato. Este é um vislumbre do qual você pode avançar para o décimo problema de Hilbert e sua resolução que levou à descoberta de uma conexão entre as equações diofantinas e as máquinas de Turing.
  21. A perspectiva lógica. A computação pode ser entendida de uma perspectiva puramente lógica. Autômatos finitos podem ser caracterizados por lógica monádica de segunda ordem fraca sobre palavras finitas. Este é o meu exemplo não trivial favorito de uma caracterização lógica de um dispositivo computacional. A teoria descritiva da complexidade mostra que muitas classes de complexidade também têm caracterizações puramente lógicas.
  22. Autômatos finitos estão escondidos em lugares que você nunca imaginou. (Dica para o comentário de Martin Berger sobre a conexão com a teoria da codificação) O Prêmio Nobel de Química de 2011 foi concedido à descoberta de quase-cristais. A matemática por trás dos quase-cristais está ligada a inclinações aperiódicas. Um mosaico aperiódico específico do avião é chamado de Cartwheel Tiling, que consiste em uma forma de pipa e uma forma de gravata borboleta. Você pode codificar essas formas em termos de 0s e 1s e depois estudar as propriedades dessas seqüências, que codificam sequências de padrões. De fato, se você mapear 0 a 01 e 1 a 0 e aplicar repetidamente esse mapa ao dígito 0, obterá 0, 01, 010, 01001 etc. Observe que os comprimentos dessas cadeias seguem a sequência de Fibonacci. Palavras geradas dessa maneira são chamadas de palavras de Fibonacci. Certas sequências de formas observadas nas inclinações de Penrose podem ser codificadas como palavras de Fibonacci. Tais palavras foram estudadas de uma perspectiva teórica automatizada e, adivinhe, algumas famílias de palavras são aceitas por autômatos finitos e até fornecem exemplos de comportamento de pior caso para algoritmos padrão, como o algoritmo de minimização de Hopcroft. Por favor me diga que você está tonto.

Eu poderia continuar (e continuar). * Acho útil ter autômatos na parte de trás da cabeça e lembrá-los de vez em quando para entender um novo conceito ou obter intuição sobre idéias matemáticas de alto nível. Duvido que tudo o que mencionei acima possa ser comunicado nas primeiras palestras de um curso, ou mesmo em um primeiro curso. Essas são recompensas de longo prazo, baseadas em um investimento inicial feito nas aulas iniciais de um curso de teoria de autômatos.

Para abordar seu título: nem sempre busco a iluminação, mas quando o faço, prefiro autômatos finitos. Fique com sede, meu amigo.


27
Linda lista. Gostaria de acrescentar que os autômatos fornecem uma perspectiva interessante sobre a teoria da codificação, pioneira em Schuetzenberger. Além disso, a teoria moderna da concorrência e da teoria de processos é uma generalização da teoria dos autômatos, na qual os autômatos podem ser compostos em paralelo e sincronizados com suas ações.
22812 Martin Berger

6
Uau. (+ 0,5 na última frase. :-)
LarsH 23/12

6
Acabou de ingressar no TCS.SE apenas para marcar com +1.
Tynam 26/12/12

5
Apesar de saber praticamente tudo nesta lista, ainda me sinto iluminado por ter lido. (Além disso, (e assim por diante.) * Me fez rir.) #
315 CA McCann

2
Honestamente, nunca havia pensado na maioria dessas coisas (e em alguns dos teoremas de que nunca ouvi falar) e fiz um curso de teoria da computação. É preciso ter um professor ou currículo particularmente bom para apontar essas revelações?
Ken Bloom

33

Existem muitas boas razões teóricas para estudar N / DFAs. Dois que vêm imediatamente à mente são:

  1. Máquinas de Turing (pensamos) capturam tudo o que é computável. No entanto, podemos perguntar: quais partes de uma máquina de Turing são "essenciais"? O que acontece quando você limita uma máquina de Turing de várias maneiras? Os DFAs são uma limitação muito grave e natural (tirar a memória). PDAs são uma limitação menos severa etc. É teoricamente interessante ver o que a memória fornece e o que acontece quando você fica sem ela. Parece uma pergunta muito natural e básica para mim.

  2. Máquinas de Turing precisam de uma fita infinita. Nosso universo é finito; portanto, em certo sentido, todo dispositivo de computação é um DFA. Parece um tópico importante e, novamente natural, a ser estudado.

Perguntar por que alguém deveria estudar os AFDs é semelhante a perguntar por que aprender o teorema da completude de Godel, quando o mais interessante é o teorema da incompletude .

A razão pela qual eles são o primeiro tópico na teoria dos autômatos é porque é natural criar modos mais complicados a partir dos menos complicados.


2
O número 1 faz sentido e acho que vejo o motivo. Mas como você explicaria o motivo de 'avançar' das FAs? Aqueles que sabem algo sobre a ToC podem voltar atrás em retrospecto e ponderar sobre ela. Qual a melhor maneira de explicar o 'porquê' aos alunos que começam a aprender a teoria dos autômatos e conhecem apenas as FAs? Acabamos de declarar que estamos começando com máquinas de um bit, uma vez que são básicas - por quê? Qual a melhor forma de responder 'isso' por quê? Gostaria de receber alguma luz ao responder a esta pergunta para o total de noobs para ToC :)
PhD

2
O argumento "forward" vem do fato (como Sariel mencionou) de que as máquinas de estado são talvez o mais básico dos dispositivos de computação. Você está em um estado: algo acontece e você passa para um novo estado. Observe que as cadeias de markov (que são muito importantes no aprendizado de máquina) são apenas FSMs probabilísticos.
Suresh Venkat

31

Para adicionar mais uma perspectiva ao restante das respostas: porque você pode realmente fazer coisas com autômatos finitos, em contraste com as máquinas de Turing.

Praticamente qualquer propriedade interessante das máquinas de Turing é indecidível. Pelo contrário, com autômatos finitos, quase tudo é decidível. Igualdade linguística, inclusão, vazio e universalidade são todos decidíveis. Combinadas com esses autômatos finitos, são fechadas em praticamente todas as operações que você pode imaginar e que essas operações são computáveis, você pode fazer praticamente qualquer coisa que queira fazer com autômatos finitos.

Isso significa que, se você pode capturar algo usando autômatos finitos, ganha automaticamente muitas ferramentas para analisá-lo. Por exemplo, nos testes de software, os sistemas e suas especificações podem ser modelados como autômatos finitos. Em seguida, você pode testar automaticamente se o seu sistema implementa corretamente a especificação.

Máquinas de Turing e autômatos finitos, portanto, ensinam às pessoas um contraste interessante e onipresente: mais poder descritivo anda de mãos dadas com menos capacidade de rastreamento. Autômatos finitos não podem descrever muito, mas podemos pelo menos fazer coisas com eles.


2
"... você pode realmente fazer coisas com autômatos finitos, em contraste com as máquinas de Turing." entender o pt, no entanto uma frase que soa irônico ou não o faz muito sentido tomado fora do contexto ...
vzn

27

Estado. você precisa aprender que é possível modelar o mundo (para certos problemas) como um espaço de estados finito e se pode pensar em computação nessas configurações. Este é um insight simples, mas extremamente útil se você fizer qualquer programação - você encontraria o estado de novo e de novo e de novo, e o FA lhe dará uma maneira de pensar sobre eles. Considero que isso é uma desculpa suficiente para dar uma aula completa. Obviamente, o estado pode ser determinístico ou não determinístico. Assim, DFA e NFA, mas você pode converter entre eles, etc.

A segunda coisa a aprender é o teorema de Halting. O que está relacionado ao teorema da incompletude de Godel. (Você não pode construir uma máquina capaz de calcular tudo, e há afirmações matemáticas que você não pode provar nem refutar, e, como tal, precisam ser tomadas como axiomas. Ou seja, vivemos em um mundo sem descrição finita ou real oráculos - sim para nós!)

Agora, fiz minha graduação em matemática e você se acostuma à idéia de aprender coisas que não faz ideia do porquê está aprendendo (teoria dos grupos, teoria das medidas, teoria dos conjuntos, espaços de Hilbert, etc, etc, etc [tudo de bom , BTW]). Há algo a ser dito sobre aprender a aprender - da próxima vez que você tiver que aprender matemática bizarro (porque você precisa usá-la para fazer algo no mundo real) que parece muito estranho, você dá passos largos. Especificamente, a terceira coisa a aprender é a matemática matemática - ser capaz de discutir cuidadosamente as coisas, saber quando as provas estão corretas ou não, anotar provas etc. Se você já o possui, este curso é fácil e você não se importaria muito. muito por que você está aprendendo isso.

Exceto por isso, o curso é uma completa perda de tempo, como tudo o mais. Especificamente, você pode viver uma vida feliz sem conhecer essas coisas. Mas isso é literalmente verdadeiro para todo conhecimento. Mais ou menos. Para mim, um curso na universidade vale a pena, se você olhar o mundo de maneira diferente depois de aprendê-lo. Esse é definitivamente um dos cursos que mudou a maneira de pensar sobre o mundo. O que mais você pode pedir?


21

Embora não seja realmente a razão pela qual eles foram originalmente estudados, os autômatos finitos e as linguagens regulares que eles reconhecem são tratáveis ​​o suficiente para que tenham sido usados ​​como blocos de construção de teorias matemáticas mais complicadas. Nesse contexto, veja grupos particularmente automáticos (grupos nos quais os elementos podem ser representados por seqüências de caracteres em uma linguagem regular e nos quais os produtos dos elementos por geradores de grupos podem ser computados por transdutores de estado finito) e sub-turnos sofic (sub-turnos de um espaço de turno cuja palavras proibidas formam um idioma comum). Portanto, existem razões para estudá-las, mesmo se você estiver interessado em matemática pura, e não em ciência da computação.

Autômatos finitos também foram utilizados no design de algoritmos para outros tipos de objetos. Por exemplo, um algoritmo de Culik para testar se um autômato celular unidimensional é reversível envolve construir, modificar e testar as propriedades de certos NFAs. E um artigo do FOCS de 1986 de Natarajan mostrou como resolver um determinado problema no projeto de linhas de montagem mecânicas, reduzindo-o a um cálculo sobre autômatos finitos.


18

Você está fazendo (pelo menos) duas perguntas diferentes: (a) Que partes da teoria se baseiam em autômatos finitos hoje em dia? (b) Por que os autômatos finitos foram desenvolvidos em primeiro lugar? Eu acho que a melhor maneira de abordar o último é olhar para os documentos antigos, como:

Aqui estão os dois primeiros parágrafos:

As máquinas de Turing são amplamente consideradas o protótipo abstrato dos computadores digitais; Os trabalhadores no campo, no entanto, sentem cada vez mais que a noção de uma máquina de Turing é muito geral para servir como um modelo preciso de computadores reais. É sabido que, mesmo para cálculos simples, é impossível atribuir um limite superior a priori à quantidade de fita que uma máquina de Turing precisará para qualquer cálculo. É precisamente esse recurso que torna o conceito de Turing irrealista.

Nos últimos anos, a idéia de um autômato finito apareceu na literatura. São máquinas com apenas um número finito de estados internos que podem ser usados ​​para memória e computação. A restrição de finitude parece dar uma melhor aproximação à idéia de uma máquina física. Obviamente, essas máquinas não podem fazer tanto quanto as máquinas de Turing, mas a vantagem de poder calcular uma função recursiva geral arbitrária é questionável, uma vez que poucas dessas funções aparecem em aplicações práticas.

Em suma, eles foram desenvolvidos como um modelo de computadores reais, que possuem recursos finitos.


16

Outra razão é que eles são modelos teóricos relativamente práticos . Uma máquina de Turing, além da impossibilidade da fita infinita, é uma espécie de ajuste estranho para como é programar um computador (note que essa não é uma boa analogia para começar!). PDAs e DFAs, no entanto, são bastante passíveis de serem modelos de programas reais, no sentido de que um design de PDA / DFA muitas vezes pode ser facilmente transformado em um programa real. O design do compilador, por exemplo, os usa extensivamente. Portanto, nesses tipos de pontos de conexão entre teoria e prática, identificamos como tudo se liga e o que podemos e o que não podemos fazer.


10

Confira o jogo "Living Binary Adder" aqui: http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html Eu costumava apresentar esse jogo aos meus alunos nos primeiros capítulos sobre o DFA / NFA. Ilustra duas coisas importantes na Teoria dos Automata:

  1. Como transformar um processo mental em um processo mecânico simples
  2. O que abstração realmente significa. Dois estados, como C e Z acima, podem ser qualquer coisa: transistores em um computador, um mecanismo hidráulico ou dois jogadores humanos!

Isso, às vezes, traz o momento "Aha" para meus alunos.


9

O conceito de DFAs é muito útil para projetar soluções eficientes para muitos tipos de problemas. Um exemplo é o trabalho em rede. Todo protocolo pode ser implementado como uma máquina de estado. A implementação da solução dessa maneira torna o código mais simples e mais simples significa uma menor taxa de defeitos. Isso também significa que as alterações no código são mais fáceis e têm um impacto menor, novamente com uma taxa de defeitos mais baixa.

Algumas pessoas acham difícil ver um protocolo de rede como uma máquina de estado, mas aqueles que podem dar o salto acham muito gratificante em termos de retorno do esforço.


Parece muito ingerido, mas você pode explicar um pouco mais? que é difícil imaginar um protocolo de rede como uma máquina de estado. obrigado.
precisa saber é o seguinte

3

Na verdade, meus alunos às vezes perguntam exatamente isso - depois de passar grande parte do semestre em autômatos finitos e finalmente chegar às máquinas de Turing. Por que gastar tanto tempo com um formalismo mais fraco quando um mais forte está disponível? Então, explico a troca inerente entre poder expressivo e complexidade analítica. Os modelos mais ricos são tipicamente mais difíceis de analisar. A dicotomia DFA vs. TM é extrema, pois o problema da associação é trivial para um e incontestável para o outro. Um exemplo menos extremo seria DFA vs. PDA. O problema de associação para o último acaba sendo eficientemente solucionável, mas a solução não é nada trivial. Vemos essa ocorrência em muitos ramos da matemática e da ciência: estude um modelo simples para obter uma compreensão o mais completa possível, o que geralmente leva a insights sobre modelos mais complexos.


-4

Vejo várias respostas chamando a FM de "menor" do que as máquinas de Turing.

O foco principal da turma de pós-graduação que eu dediquei foi a equivalência, não distinções. Para cada modelo de FSM que estudamos, tivemos que provar sua equivalência às Máquinas de Turing. Isso é feito implementando uma máquina de Turing no FSM. No IIRC, também estudamos outros modelos de computação que não implementam uma MT, mas esqueço o que eram. O ponto é que, se você pode implementar uma TM, pode executar qualquer programa de TM no modelo, considerando uma fita analógica suficientemente grande para o problema que está sendo executado.

O ponto principal da resposta à pergunta foi: TM é o modelo básico de computabilidade, mas não é muito prático quando se trata de construir máquinas úteis. Daí modelos FSM.

Isso me foi trazido visceralmente quando, por volta da mesma época (1984), descobri a linguagem FORTH. Seu mecanismo de execução é construído com base na realização pura de um PDA de pilha dupla. Aprofundando, gosto deste mesmo mecanismo sob compiladores de expressão

Embora, para mim, o impacto real do FSM tenha sido a descoberta do livro "Theory of Finite Automata", de Trakhtenbrot e Korzynski (?) Aos 18 anos, uma descoberta que me deu essencialmente a minha carreira.


1
Suponho, no entanto, que você não provou uma equivalência entre autômatos finitos não determinísticos e máquinas de Turing. É sobre esse objeto específico que o OP perguntou e que o resto de nós está chamando de "menor".
precisa

2
E um FA não é o mesmo que um FSM.
Suresh Venkat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.