Qual è l'illuminazione che dovrei conseguire dopo aver studiato gli automi finiti?


247

Ho rivisto la teoria del calcolo per divertimento e questa domanda mi ha assillato per un po '(divertente non ci ho mai pensato quando ho imparato la teoria degli automi nei miei studi). Quindi "perché" studiamo esattamente gli automi finiti deterministici e non deterministici (DFA / NFA)? Quindi, ecco alcune risposte che mi sono venute in mente dopo il soliloquing, ma non riesco ancora a vedere il loro contributo complessivo al momento "aha":

  1. Per studiare ciò che sono e non sono in grado di cioè limitazioni
    • Perché?
  2. Dal momento che sono i modelli di base del calcolo teorico e getterebbero le basi di altri modelli di calcolo più capaci.
    • Cosa li rende "di base"? Hanno solo un po 'di memoria e transizioni di stato?
  3. Va bene, e allora? In che modo tutto ciò contribuisce a rispondere alla domanda di calcolabilità? Sembra che le macchine di Turing aiutino a capirlo davvero bene e ci sono modelli "minori" di calcoli come PDA, DFA / NFA / Regex ecc. Ma se uno non conosceva gli AF, che cosa si stanno perdendo?

Quindi, anche se "capisco" in una certa misura, non sono in grado di rispondere a questa domanda? Come spiegheresti meglio "perché studiare D / N-FA"? Qual è la domanda a cui cercano di rispondere? In che modo aiuta e perché è la prima cosa insegnata nella teoria degli automi?

PS: sono a conoscenza delle varie applicazioni lessicografiche e dei pattern matcher che possono essere implementati come tali. Tuttavia, non desidero sapere a cosa possa essere utilizzato praticamente, ma quale fosse la loro ragione di utilizzo / invenzione / progettazione durante il culmine dello studio della teoria del calcolo. Storicamente parlando che cosa ha portato a iniziare con questo e a quale "aha" comprensione dovrebbe portare? Se dovessi spiegare la loro importanza per gli studenti CS appena iniziando a studiare la teoria degli automi, come hai fatto?


10
Quindi, questa è una domanda a livello di ricerca in TCS?
Hendrik Jan,

13
Non si tratta tanto di una domanda di ricerca quanto di una prospettiva generale su un argomento. Abbiamo una serie di tali domande qui. Piuttosto che iniziare un dibattito nei commenti, ti incoraggio a pubblicare una domanda su meta se desideri discutere ulteriormente l'adeguatezza di tali domande.
Suresh Venkat,

6
PhD: La tua domanda ha dato delle risposte molto buone, quindi ti ringrazio per questo. Sei stato onesto nelle tue dichiarazioni e non era mia intenzione squalificare te o la tua domanda. In realtà è il contrario di ciò che suggerisce il mio commento: ho visto alcune altre domande che sono state scartate troppo facilmente usando questa citazione dal faq. Hai ragione Suresh: questo non è il posto giusto per iniziare un dibattito. Scusate.
Hendrik Jan,

1
@HendrikJan - Oh non preoccuparti! Il testo nasconde il tono. Non intendevo mai così. Pensavo mi avresti chiesto se questa era una domanda di ricerca da parte mia.
Dottorato di ricerca

16
Complimenti a PhD e Hendrik per un livello di civiltà che incontro raramente nei forum pubblici.
Lucas,

Risposte:


342

Personalmente ho apprezzato diversi Aha! momenti dallo studio della teoria degli automi di base. NFA e DFA formano un microcosmo per l'informatica teorica nel suo insieme.

  1. Il non determinismo conduce all'efficienza? Esistono esempi standard in cui l'automa deterministico minimo per una lingua è esponenzialmente più grande di un automa non deterministico minimo. Comprendere questa differenza per le macchine di Turing è al centro dell'informatica (teorica). NFA e DFA forniscono l'esempio più semplice che conosco in cui è possibile vedere esplicitamente il divario stretto tra determinismo e non determinismo.
  2. Computabilità! = Complessità. NFA e DFA rappresentano entrambi lingue regolari e sono equivalenti in ciò che calcolano. Differiscono nel modo in cui calcolano.
  3. Le macchine perfezionano le lingue. Questa è una visione diversa di ciò che calcoliamo e di come calcoliamo. Puoi pensare a linguaggi (e funzioni) calcolabili come a definire una classe di equivalenza di automi. Questo è un cambiamento di prospettiva fondamentale in TCS, in cui ci concentriamo non solo sul cosa, ma sul come del calcolo e proviamo a scegliere il "come" giusto quando progettiamo un algoritmo o comprendiamo lo spazio dei diversi metodi nello studio delle classi di complessità.
  4. Il valore della rappresentazione canonica. I DFA sono l'esempio per eccellenza di una struttura di dati che ammette una rappresentazione canonica. Ogni lingua normale ha un DFA unico e minimo. Ciò significa che, dato un DFA minimo, operazioni importanti come l'inclusione del linguaggio, la complementazione e il controllo dell'accettazione di una parola diventano banali. Elaborare e sfruttare rappresentazioni canoniche è un trucco utile nello sviluppo di algoritmi.
  5. L'assenza di rappresentazioni canoniche. Non esiste una rappresentazione canonica ben accettata di espressioni regolari o NFA. Quindi, nonostante il punto sopra, le rappresentazioni canoniche non sempre esistono. Vedrai questo punto in molte aree diverse dell'informatica. (ad esempio, anche le formule logiche proposizionali non hanno rappresentazioni canoniche, mentre i ROBDD lo fanno).
  6. Il costo di una rappresentazione canonica. Puoi persino comprendere la differenza tra NFA e DFA come un teorema algoritmico senza pranzo libero . Se vogliamo verificare l'inclusione linguistica tra o integrare un NFA, è possibile determinarlo e minimizzarlo e continuare da lì. Tuttavia, questa operazione di "riduzione" ha un costo. Vedrai esempi di canonizzazione a un costo in diverse altre aree dell'informatica.
  7. Infinito! = Indecidibile. Un malinteso comune è che i problemi di natura infinita sono intrinsecamente indecidibili. Le lingue normali contengono infinitamente molte stringhe e tuttavia hanno diverse proprietà decidibili. La teoria dei linguaggi regolari mostra che l'infinito da solo non è la fonte dell'indecidibilità.
  8. Tieni Infinity nel palmo della tua automa. È possibile visualizzare un automa finito puramente come una struttura di dati per rappresentare insiemi infiniti. Un ROBDD è una struttura di dati per rappresentare le funzioni booleane, che puoi capire come rappresentare insiemi finiti. Un automa finito è un'estensione naturale e infinita di un ROBDD.
  9. L'umile processore. Un processore moderno ha molto in esso, ma puoi capirlo come un automa finito. Proprio questa realizzazione ha reso l'architettura del computer e il design del processore molto meno intimidatori per me. Mostra anche che, in pratica, se strutturi e manipoli attentamente i tuoi stati, puoi andare molto lontano con automi finiti.
  10. La prospettiva algebrica. Le lingue regolari formano un monoide sintattico e possono essere studiate da quella prospettiva. Più in generale, in studi successivi si può anche chiedere, qual è la giusta struttura algebrica corrispondente ad alcuni problemi computazionali.
  11. La prospettiva combinatoria. Un automa finito è un grafico etichettato. Controllare se una parola è accettata si riduce a trovare un percorso in un grafico etichettato. Gli algoritmi degli automi equivalgono a trasformazioni grafiche. Comprendere la struttura degli automi per varie sottofamiglie di lingue regolari è un'area di ricerca attiva.
  12. Il triangolo amoroso Algebra-Language-Combinatorics. Il teorema di Myhill-Nerode ti consente di iniziare con una lingua e generare un automa o un monoide sintattico. Matematicamente, otteniamo una traduzione tra tipi molto diversi di oggetti matematici. È utile tenere a mente tali traduzioni e cercarle in altre aree dell'informatica, e spostarsi tra loro a seconda dell'applicazione.
  13. La matematica è il linguaggio delle immagini grandi. I linguaggi regolari possono essere caratterizzati da NFA (grafici), espressioni regolari (grammatica formale), macchine di Turing di sola lettura (macchina), monoidi sintattici (algebra), algebre di Kleene (algebra), logica monadica di secondo ordine, ecc. Più generale Il fenomeno è che concetti importanti e duraturi hanno molte differenti caratterizzazioni matematiche, ognuna delle quali porta sapori diversi alla nostra comprensione dell'idea.
  14. Lemmi per il matematico che lavora. Pumping Lemma è un ottimo esempio di strumento teorico che puoi sfruttare per risolvere diversi problemi. Lavorare con i Lemmi è una buona pratica per cercare di basarsi sui risultati esistenti.
  15. Necessario! = Sufficiente. Il teorema di Myhill-Nerode ti dà le condizioni necessarie e sufficienti affinché una lingua sia regolare. Il Lemma Pompante ci offre le condizioni necessarie. Il confronto tra i due e il loro utilizzo in diverse situazioni mi ha aiutato a capire la differenza tra condizioni necessarie e sufficienti nella pratica matematica. Ho anche imparato che una condizione riutilizzabile necessaria e sufficiente è un lusso.
  16. La prospettiva del linguaggio di programmazione. Le espressioni regolari sono un semplice e bellissimo esempio di un linguaggio di programmazione. In concatenazione, hai un analogo della composizione sequenziale e in Kleene star hai l'analogo dell'iterazione. Nel definire la sintassi e la semantica delle espressioni regolari, fai un piccolo passo nella direzione della teoria del linguaggio di programmazione vedendo definizioni induttive e semantica compositiva.
  17. La prospettiva del compilatore. La traduzione da un'espressione regolare in un automa finito è anche un semplice compilatore teorico. È possibile vedere la differenza tra analisi, generazione di codice intermedio e ottimizzazioni del compilatore, a causa della differenza nella lettura di un'espressione regolare, nella generazione di un automa e quindi nella riduzione / determinazione dell'automa.
  18. Il potere dell'iterazione. Nel vedere cosa puoi fare in un automa finito con un loop e uno senza, puoi apprezzare il potere dell'iterazione. Ciò può aiutare a comprendere le differenze tra circuiti e macchine o tra logiche classiche e logiche a virgola fissa.
  19. Algebra e Coalgebra. Le lingue regolari formano un monoide sintattico, che è una struttura algebrica. Gli automi finiti formano ciò che nel linguaggio della teoria delle categorie è chiamato coalgebra. Nel caso di un automa deterministico, possiamo facilmente spostarci tra una rappresentazione algebrica e una coalgebraica, ma nel caso degli NFA non è così facile.
  20. La prospettiva aritmetica. Esiste una profonda connessione tra calcolo e teoria dei numeri. Puoi scegliere di capirlo come un'affermazione sul potere della teoria dei numeri e / o l'universalità del calcolo. Di solito sai che gli automi finiti sono in grado di riconoscere un numero pari di simboli e che non possono contare abbastanza per corrispondere alla parentesi. Ma di quanto aritmetica sono capaci? Gli automi finiti possono decidere le formule aritmetiche di Presburger. La procedura di decisione più semplice che conosco per l'aritmetica di Presburger riduce una formula a un automa. Questo è uno scorcio da cui è possibile passare al decimo problema di Hilbert ed è la sua risoluzione che ha portato alla scoperta di una connessione tra equazioni diofantine e macchine di Turing.
  21. La prospettiva logica. Il calcolo può essere compreso da una prospettiva puramente logica. Gli automi finiti possono essere caratterizzati da una logica debole e monadica del secondo ordine su parole finite. Questo è il mio esempio preferito, non banale, di una caratterizzazione logica di un dispositivo computazionale. La teoria della complessità descrittiva mostra che anche molte classi di complessità hanno caratterizzazioni puramente logiche.
  22. Gli automi finiti si nascondono in luoghi che non hai mai immaginato. (Suggerimento del commento di Martin Berger sulla connessione alla teoria dei codici) Il premio Nobel per la chimica del 2011 è stato assegnato alla scoperta di quasi-cristalli. La matematica dietro i quasi-cristalli è connessa ai soffitti aperiodici. Una piastrellatura aperiodica specifica dell'aereo è chiamata Cartwheel Tiling, che consiste in una forma di aquilone e una forma di papillon. È possibile codificare queste forme in termini di 0 e 1 e quindi studiare le proprietà di queste sequenze, che codificano sequenze di schemi. Infatti, se si mappa da 0 a 01 e da 1 a 0 e si applica ripetutamente questa mappa alla cifra 0, si otterrà, 0, 01, 010, 01001, ecc. Osservare che le lunghezze di queste stringhe seguono la sequenza di Fibonacci. Le parole generate in questo modo sono chiamate parole di Fibonacci. Alcune sequenze di forme osservate nei soffitti di Penrose possono essere codificate come parole di Fibonacci. Tali parole sono state studiate da una prospettiva automatica-teorica e indovinate un po ', alcune famiglie di parole sono accettate da automi finiti e forniscono persino esempi del comportamento peggiore per algoritmi standard come l'algoritmo di minimizzazione di Hopcroft. Per favore, dimmi che hai le vertigini.

Potrei continuare. (E avanti.) * Trovo utile avere degli automi nella parte posteriore della mia testa e ricordarli ogni tanto per capire un nuovo concetto o per ottenere intuizione su idee matematiche di alto livello. Dubito che tutto ciò che menziono sopra possa essere comunicato nelle prime lezioni di un corso o anche in un primo. Si tratta di premi a lungo termine basati su un investimento iniziale fatto nelle lezioni iniziali di un corso di teoria degli automi.

Per affrontare il tuo titolo: non cerco sempre l'illuminazione, ma quando lo faccio preferisco gli automi finiti. Sete, amico mio.


27
Bella lista. Vorrei aggiungere che gli automi forniscono una prospettiva interessante sulla teoria dei codici, introdotta da Schuetzenberger. Inoltre, la moderna teoria della concorrenza e la teoria dei processi sono una generalizzazione della teoria degli automi in cui gli automi possono essere composti in parallelo e sincronizzati sulle loro azioni.
Martin Berger,

6
Wow. (+ 0,5 per l'ultima frase. :-)
LarsH il

6
Ti sei appena iscritto a TCS.SE esclusivamente per fare +1 su questo.
Tynam,

5
Pur sapendo praticamente tutto in questo elenco, mi sento in qualche modo illuminato per averlo letto. (Inoltre, (e così via) * mi ha fatto ridere.
CA McCann il

2
Onestamente, non avevo mai pensato alla maggior parte di queste cose (e ad alcuni dei teoremi di cui non ho mai sentito parlare), e ho seguito un corso di teoria del calcolo. Bisogna avere un insegnante o un curriculum particolarmente bravo per sottolineare queste rivelazioni?
Ken Bloom

33

Ci sono molte buone ragioni teoriche per studiare gli N / DFA. Due che vengono subito in mente sono:

  1. Le macchine di Turing (pensiamo) catturano tutto ciò che è calcolabile. Tuttavia, possiamo chiederci: quali parti di una macchina Turing sono "essenziali"? Cosa succede quando si limita una macchina di Turing in vari modi? I DFA sono una limitazione molto grave e naturale (togliendo memoria). I PDA sono un limite meno grave, ecc. È teoricamente interessante vedere quale memoria ti dà e cosa succede quando ne vai senza. Mi sembra una domanda molto naturale e basilare.

  2. Le macchine di Turing hanno bisogno di un nastro infinito. Il nostro universo è finito, quindi in un certo senso ogni dispositivo di elaborazione è un DFA. Sembra un argomento importante, e ancora naturale, da studiare.

Chiedere perché si dovrebbe studiare DFA è come chiedere perché si dovrebbe imparare il teorema della completezza di Godel quando la cosa veramente interessante è il suo teorema di incompletezza .

Il motivo per cui sono il primo argomento nella teoria degli automi è perché è naturale costruire modalità più complicate da quelle meno complicate.


2
# 1 ha un buon senso e penso di vedere il motivo. Ma come spiegheresti il ​​motivo per cui "andare avanti" dagli AF? Coloro che sanno qualcosa su ToC possono tornare indietro e riflettere. Il modo migliore per spiegare il "perché" agli studenti che iniziano a studiare la teoria degli automi e conoscono solo le AF? Dichiariamo solo che stiamo iniziando con macchine a un bit poiché sono di base - perché? Il modo migliore per rispondere "questo" perché? Gradirei un po 'di luce quando rispondi a questa domanda per tutti i rumori di ToC :)
PhD

2
L'argomento "diretto" deriva dal fatto (come menzionato da Sariel) che le macchine a stati sono forse i dispositivi informatici più elementari. Sei in uno stato: succede qualcosa e poi ti sposti in un nuovo stato. Notare che le catene markov (che sono molto importanti nell'apprendimento automatico) sono solo FSM probabilistici.
Suresh Venkat,

31

Per aggiungere un'altra prospettiva al resto delle risposte: perché puoi effettivamente fare cose con automi finiti, in contrasto con le macchine di Turing.

Quasi tutte le proprietà interessanti delle macchine di Turing sono indecidibili. Al contrario, con automi finiti, praticamente tutto è decidibile. Uguaglianza linguistica, inclusione, vuoto e universalità sono tutti decidibili. In combinazione con quegli automi finiti sono chiusi praticamente per ogni operazione che ti viene in mente e che queste operazioni sono calcolabili, puoi fare praticamente qualsiasi cosa tu abbia mai desiderato fare con automi finiti.

Ciò significa che se riesci a catturare qualcosa usando automi finiti, ottieni automaticamente molti strumenti per analizzarlo. Ad esempio, nei test del software, i sistemi e le loro specifiche possono essere modellati come automi finiti. È quindi possibile verificare automaticamente se il sistema implementa correttamente le specifiche.

Le macchine da turismo e gli automi finiti insegnano quindi alle persone un contrasto interessante e onnipresente: un potere più descrittivo va di pari passo con una minore rintracciabilità. Gli automi finiti non possono descrivere molto, ma possiamo almeno fare cose con loro.


2
"... puoi effettivamente fare cose con automi finiti, in contrasto con le macchine di Turing." capire il pt, tuttavia una citazione che suona ironica o non ha molto senso estratta dal contesto ...
vzn

27

Stato. devi imparare che si può modellare il mondo (per alcuni problemi) come uno spazio a stati finiti, e si può pensare al calcolo in queste impostazioni. Questa è un'intuizione semplice ma estremamente utile se si esegue una programmazione: incontreresti lo stato ancora e ancora e ancora e FA ti darebbe un modo di pensarci. Considero questa una scusa sufficiente per insegnare una lezione completa. Naturalmente, lo stato può essere deterministico o non deterministico. Quindi DFA e NFA, ma puoi convertirli tra loro, ecc.

La seconda cosa da imparare è il teorema di Halting. Che è legato al teorema di incompletezza di Godel. (Non puoi costruire una macchina in grado di calcolare tutto, e ci sono affermazioni matematiche che non puoi né provare né confutare, e come tali devono essere prese come assiomi. Cioè, viviamo in un mondo che non ha una descrizione finita o reale oracoli - yey per noi!)

Ora, ho fatto il mio corso di laurea in matematica e ti abitui all'idea che impari cose che non hai idea del perché stai imparando (teoria dei gruppi, teoria delle misure, teoria degli insiemi, spazi di Hilbert, ecc, ecc, ecc. [Tutte cose buone , BTW]). C'è qualcosa da dire sull'apprendimento come apprendere - la prossima volta devi imparare un po 'di bizarro matematica (perché devi usarlo per fare qualcosa là fuori nel mondo reale) che sembra molto strano che tu faccia progressi. In particolare, la terza cosa da imparare è la maturità matematica: essere in grado di discutere attentamente delle cose, sapere quando le prove sono corrette o meno, scrivere prove, ecc. Se ce l'hai già, questo corso è facile e non ti importerebbe troppo molto perché lo stai imparando.

Tranne che per questi, il corso è una completa perdita di tempo, come tutto il resto. In particolare, puoi vivere una vita felice senza conoscere queste cose. Ma questo è letteralmente vero per tutte le conoscenze. Più o meno. Per me vale la pena un corso all'università, se guardi il mondo in modo diverso dopo averlo appreso. Questo è sicuramente uno dei corsi che ha cambiato il modo in cui penso al mondo. Cosa si può chiedere di più?


21

Sebbene non sia proprio la ragione per cui sono stati studiati in origine, gli automi finiti e le lingue regolari che riconoscono sono abbastanza trattabili da essere stati usati come elementi costitutivi per teorie matematiche più complicate. In questo contesto si vedono gruppi particolarmente automatici (gruppi in cui gli elementi possono essere rappresentati da stringhe in un linguaggio regolare e in cui i prodotti degli elementi da parte di generatori di gruppi possono essere calcolati da trasduttori a stati finiti) e sottoschermi sofici (sottoschermi di uno spazio di spostamento il cui le parole proibite formano un linguaggio regolare). Quindi ci sono ragioni per studiarli anche se sei interessato alla matematica pura piuttosto che all'informatica.

Gli automi finiti sono stati utilizzati anche nella progettazione di algoritmi per altri tipi di oggetti. Ad esempio, un algoritmo di Culik per verificare se un automa cellulare unidimensionale è reversibile comporta la costruzione, la modifica e il test delle proprietà di alcuni NFA. E un articolo del FOCS del 1986 di Natarajan ha mostrato come risolvere un certo problema nella progettazione di linee di assemblaggio meccaniche riducendolo a un calcolo sugli automi finiti.


18

Stai ponendo (almeno) due domande diverse: (a) Quali parti della teoria si basano sugli automi finiti al giorno d'oggi? (b) Perché gli automi finiti sono stati sviluppati in primo luogo? Penso che il modo migliore per affrontare quest'ultimo sia quello di guardare i vecchi documenti, come:

Ecco i primi due paragrafi:

Le macchine di Turing sono ampiamente considerate il prototipo astratto dei computer digitali; i lavoratori del settore, tuttavia, hanno sempre più sentito che l'idea di una macchina di Turing è troppo generale per servire da modello accurato di computer reali. È noto che anche per semplici calcoli è impossibile assegnare a priori un limite superiore alla quantità di nastro di cui una macchina Turing avrà bisogno per ogni dato calcolo. È proprio questa caratteristica che rende irrealistico il concetto di Turing.

Negli ultimi anni l'idea di un automa finito è apparsa in letteratura. Queste sono macchine che hanno solo un numero finito di stati interni che possono essere utilizzate per la memoria e il calcolo. La restrizione sulla finezza sembra dare una migliore approssimazione all'idea di una macchina fisica. Naturalmente, tali macchine non possono fare quanto le macchine di Turing, ma il vantaggio di poter calcolare una funzione ricorsiva generale arbitraria è discutibile, poiché pochissime di queste funzioni emergono in applicazioni pratiche.

In breve, sono stati sviluppati come un modello di computer reali, che dispongono di risorse limitate.


16

Un altro motivo è che sono modelli teorici relativamente pratici . Una macchina di Turing, a parte l'impossibilità del nastro infinito, è una specie di imbarazzante adattamento per com'è programmare un computer (si noti che non è una buona analogia per cominciare!). I PDA e i DFA sono tuttavia abbastanza suscettibili di essere modelli di programmi reali, nel senso che un design PDA / DFA può spesso essere facilmente trasformato in un vero programma. La progettazione del compilatore, ad esempio, li utilizza ampiamente. Quindi, in questo tipo di punti di connessione tra teoria e pratica, riusciamo a capire come tutto si lega e cosa possiamo e non possiamo fare.


10

Dai un'occhiata al gioco "Living Binary Adder" qui: http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html Ho usato per presentare questo gioco ai miei studenti nei primi capitoli su DFA / NFA. Illustra due cose importanti nella teoria degli automi:

  1. Come trasformare un processo mentale in un semplice processo meccanico
  2. Cosa significa davvero astrazione. Due stati, come indicato sopra in C e Z, possono essere qualsiasi cosa: transistor in un computer, un meccanismo idraulico o due giocatori umani!

Questo, a volte porta il momento "Aha" ai miei studenti.


9

Il concetto di DFA è molto utile per progettare soluzioni efficienti a molti tipi di problemi. Un esempio è il networking. Ogni protocollo può essere implementato come una macchina a stati. L'implementazione della soluzione in questo modo rende il codice sempre più semplice significa un tasso di difetto inferiore. Significa anche che le modifiche al codice sono più semplici e hanno un impatto inferiore, con un tasso di difetti inferiore.

Alcune persone trovano difficile visualizzare un protocollo di rete come una macchina a stati, ma coloro che riescono a fare il salto lo trovano molto gratificante in termini di ritorno sullo sforzo.


Sembra molto ingerente ma puoi spiegarci un po 'di più? che è difficile immaginare un protocollo di rete come una macchina a stati. grazie.
hkoosha,

3

In realtà, i miei studenti a volte chiedono proprio questo: dopo aver trascorso gran parte del semestre in automi finiti e infine arrivare alle macchine di Turing. Perché passare così tanto tempo su un formalismo più debole quando è disponibile uno più forte? Quindi spiego il compromesso intrinseco tra potenza espressiva e complessità analitica. I modelli più ricchi sono in genere più difficili da analizzare. La dicotomia DFA vs. TM è estrema, in quanto il problema dell'appartenenza è banale per l'uno e incomparabile per l'altro. Un esempio meno estremo sarebbe DFA vs. PDA. Il problema dell'appartenenza a quest'ultimo si rivela efficacemente risolvibile, ma la soluzione non è affatto banale. Vediamo questo accadere in molti rami della matematica e della scienza: studiare un modello semplice per ottenere una comprensione il più completa possibile, che di solito porta a intuizioni anche in modelli più complessi.


-4

Vedo diverse risposte che chiamano FM "meno" delle macchine di Turing.

Un focus primario nella classe post-laurea che ho preso risiedeva nella loro equivalenza, non nelle distinzioni. Per ogni modello di FSM che abbiamo studiato, abbiamo dovuto dimostrare la loro equivalenza con le macchine di Turing. Questo viene fatto implementando una Turing Machine nell'FSM. IIRC, abbiamo anche studiato alcuni altri modelli di calcolo che a freddo non implementano una TM, ma dimentico quali fossero. Il punto è che, se è possibile implementare una TM, è possibile eseguire qualsiasi programma TM sul modello, dato un analogo di nastro sufficientemente grande per il problema in esecuzione.

La spinta della risposta alla domanda era: TM è il modello base di calcolabilità, ma non molto pratico quando si tratta di costruire macchine utili. Quindi modelli FSM.

Questo mi è stato portato a casa visceralmente quando, all'incirca nello stesso periodo (1984), ho scoperto la lingua FORTH. Il suo motore di esecuzione si basa sulla pura realizzazione di un Dual Stack PDA. Andando più in profondità ho adorato questo stesso motore con compilatori di espressioni

Anche se, per me, il vero impatto di FSM è stato scoprire il libro "Theory of Finite Automata" di Trakhtenbrot e Korzynski (?) Quando avevo 18 anni, una scoperta che mi ha essenzialmente dato la mia carriera.


1
Presumo però che tu non abbia dimostrato un'equivalenza tra Automi finiti non deterministici e Macchine di Turing. È questo specifico oggetto che l'OP ha chiesto e che il resto di noi chiama "minore".
Vijay D,

2
E un FA non è lo stesso di un FSM.
Suresh Venkat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.