Automi a stati finiti

di il
6 risposte

Automi a stati finiti

Salve ragazzi,
sono alle prime armi con il C e dovrei creare un progetto che acquisisca da file.txt un alfabeto e un automa inerente ad esso
qualcuno potrebbe abbozzarmi qualche riga di codice??

6 Risposte

  • Re: Automi a stati finiti

    In realtà qui funziona diversamente: tu proponi la tua soluzione e ci spieghi i problemi che riscontri.
    Magari comincia con la scrittura di una routine che legge da file e stampa con printf() quanto letto.
  • Re: Automi a stati finiti

    Ma poi sei alle prime armi con il c e cominci con gli automi a stati finiti? Boh
  • Re: Automi a stati finiti

  • Re: Automi a stati finiti

    oregon ha scritto:


    Ma poi sei alle prime armi con il c e cominci con gli automi a stati finiti? Boh
    Ci potrebbe anche stare. Magari finora ha studiato solo linguaggi ad alto livello tipo java (tra l'altro, esistono tool automatici che dato un insieme di regular expression ti restituiscono un programma java che implementa un DFA, e insieme alle regex puoi inserire del codice java per effettuare operazioni complesse).

    a.loiudice ha scritto:


    salve ragazzi,
    sono alle prime armi con il C e dovrei creare un progetto che acquisisca da file.txt un alfabeto e un automa inerente ad esso
    qualcuno potrebbe abbozzarmi qualche riga di codice??
    Supponendo che tu sappia le operazioni necessarie per trasformare una regex, qual è in particolare il problema? La struttura dati?
  • Re: Automi a stati finiti

    Esatto!! praticamente io so che per rappresentare un automa ho bisogno della quintupla degli elementi e ho capito che dovrei utilizzare un grafo per definirlo in C. la mia domanda è: cosa devo scrivere nel file .txt per rappresentare l'automa?
    EX: se lavoro su un alfabeto abcd l'automa devo scriverlo (ab) *c (abc||dd) [non saprei come acquisirlo anche se e la giusta dicitura di automa]

    oppure [con una dicitura di un grafo direttamente]
    <Numero totale dei vertici>
    <Numero di vertici a cui il vertice 1 e’ direttamente collegato>
    <vertice_1> <vertice_2> <peso>
    <vertice_1> <vertice_4> <peso>
    ...
    <vertice_1> <vertice_12> <peso>
    <Numero di vertici a cui il vertice 2 e’ direttamente collegato>
    <vertice_2> <vertice_3> <peso>
    ....
  • Re: Automi a stati finiti

    Se lo scrivi nel primo modo devi poi passare dalla regex all'automa, il che richiede sostanzialmente di applicare 3/4 regolette di scomposizione (sostituisci | con due archi in parallelo, * con un cappio e la congiunzione con due archi in serie (con in mezzo un vertice)). Il problema è che tali regole sono più facili da applicare ad occhio che non con del codice, e comunque non è detto che ti venga un automa in forma minima.

    La seconda rappresentazione invece rende banale la creazione dell'automa, perché di fatto la fai tu scrivendo il file. Per rappresentare il grafo sul file ci sono vari modi. Ad esempio, potresti indicare prima tutti i vertici, in modo da allocarti un vettore di dimensione opportuna, e poi tutti gli archi. Nell'elenco dei vertici potresti già inficare con dei flag quelli che sono gli stati iniziali e finali.
Devi accedere o registrarti per scrivere nel forum
6 risposte