Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    ASFND Problema AIUTO!!!

    Ciao, ragazzi,
    devo scrivere un programma in Java di ASFND e non ho nessuna idea come si fa. Qualcuno mi puo' aiutare?

    Devo scrivere una classe ASFNDSolver che estende un altra classe astratta ASFND(in giu') e deve implementare i seguenti metodi:
    -public void aggiungiStatoFinale( int stato ) - Permette di aggiungere lo stato specificato tra gli stati finali dell' automa
    -public void aggiungiTransizioneND (int statoSorgente, char simbolo, int statoDestinatazione) - Aggiunge un arco di transizione dello stato sorgente a quello di destinazione per il particolare simbolo di input
    - public boolean accettaSequenza (char[] sequenzaInput) - Ritorna true se la sequenza di input e' riconosciuta dall'automa, false altrimenti
    - public ASFND costruisciAutomaConcatenazione (ASFND a) - Restituisce un nuovo automa ottenuto concatenazione dell'automa corrente "this" e dell'automa "a". In particolare il nouva ASFND dovra' riconoscere il linguaggio L(this) o L(a).
    - public ASFND costruisciAutomaUnione (ASFND a) - Restituisce un nuovo automa ottenuto unione dell'automa corrente "this" e dell'automa "a". In particolare il nouva ASFND dovra' riconoscere il linguaggio L(this) U L(a).
    - public ASFND costruisciAutomaInterazione() - Restituisce un nuovo automa in grado di riconoscere il linguaggio L(this)*




    public abstract class ASFND {
    protected final char[] alfabeto;
    protected final int numeroStati;

    /**
    * costruisce un automa con uno specifico numero di stati e uno specifico alfabeto
    *
    * @param numeroStati
    * @param alfabeto
    */
    protected ASFND(int numeroStati, char[] alfabeto) {
    this.numeroStati = numeroStati;
    this.alfabeto = alfabeto;

    if (getClass().getDeclaredConstructors().length != 1) {
    throw new RuntimeException("ATTENZIONE!!! La sottoclasse deve avere un solo costruttore che prende int numeroStati e char[] alfabeto");
    }

    try {
    getClass().getConstructor(int.class, char[].class);
    } catch (NoSuchMethodException e) {
    throw new RuntimeException("ATTENZIONE!!! La sottoclasse deve avere un solo costruttore che prende int numeroStati e char[] alfabeto");
    }

    if (!getClass().getSimpleName().equals("ASFNDSolver") ) {
    throw new RuntimeException("ATTENZIONE!!! La sottoclasse deve avere nome ASFNDSolver");
    }
    }

    /**
    * ritorna l'alfabero associato all'automa
    *
    * @return
    */
    public final char[] getAlfabeto() {
    return alfabeto;
    }

    /**
    * ritorna il numero di stati
    *
    * @return
    */
    public final int getNumeroStati() {
    return numeroStati;
    }

    /**
    * il metodo deve ritornare true se la sequenza di input e' accettata dall'automa
    *
    * @param sequenzaInput
    * @return
    */
    public abstract boolean accettaSequenza(char[] sequenzaInput);

    /**
    * definisce lo stato specificato come finale
    *
    * @param stato
    */
    public abstract void aggiungiStatoFinale(int stato);

    /**
    * aggiunge un arco di transizione dallo stato sorgente a quello di destinazione
    *
    * @param statoSorgente
    * @param simbolo
    * @param statoFinale
    */
    public abstract void aggiungiTransizioneND(int statoSorgente, char simbolo, int statoDestinatazione);

    /**
    * costruisce un nuovo automa ottenuto come concatenazione dell'automa corrente (this) e dell'automa passato come parametro
    *
    * @param automa
    * @return
    */
    public abstract ASFND costruisciAutomaConcatenazione(ASFND automa);

    /**
    * costruisce un automa che riconosce
    *
    * @param automa
    * @return
    */
    public abstract ASFND costruisciAutomaIterazione();


    /**
    * costruisce un nuovo automa ottenuto come unione dell'automa corrente (this) e dell'automa passato come parametro
    * Siano dati due ASFND (this ed A2). Ritornare un ASFND che riconosce L(A1) ? L(A2).
    *
    * @param automa
    * @return
    */
    public abstract ASFND costruisciAutomaUnione(ASFND automa);

    /**
    * ritorna lo stato iniziale: per convenzione lo stato iniziale è lo stato 0
    *
    * @return
    */
    public final int getStatoIniziale() {
    return 0;
    }

    /**
    * indica se lo stato specificato e' uno stato finale
    *
    * @return
    */
    public abstract boolean isFinale(int stato);
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Cominciamo col dire che qui non si fanno i compiti per casa.
    Se c'è un problema specifico, dì esattamente qual è il problema, ma non ti aspettare che la gente scriva tutto il codice per te.

    In secondo luogo, c'è un regolamento che indicachiaramente quali siano le regole da rispettare nella stesura dei titoli delle discussioni.

    In terzo luogo, lo stesso regolamento indica che il codice va postato indentato usando gli appositi tag CODE.

    Link al regolamento interno (fra i thread in rilievo): http://forum.html.it/forum/showthrea...hreadid=973889

    Questa la chiudo.

    Eventualmente, riaprine una nuova seguendo quanto indicato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.