Skip to content

Progetto, analisi e implementazione in Java di un algoritmo efficiente per decidere l'univoca decifrabilità di linguaggi regolari

I codici (a lunghezza variabile) sono stati considerati da Shannon verso la fine degli anni ’40 e successivi contributi furono dati principalmente da Schützenberger, Kraft, Sardinas, Patterson, McMillan. Un codice è un insieme di parole su un alfabeto finito e che è accettabile nella trasmissione dell’informazione: giustapponendo tali parole si ottengono messaggi che possono essere decifrati univocamente, ossia senza ambiguità. Sardinas e Patterson nel 1950 hanno fornito una condizione necessaria e sufficiente perché un insieme sia un codice, che nel caso di insiemi regolari, e quindi anche finiti, si trasforma in una proprietà decidibile.Il problema di verificare se un linguaggio regolare è un codice, è un caso speciale di una ben nota questione della teoria degli automi, ovvero il problema di testare se una data espressione regolare è non ambigua. Sul concetto di non ambiguità è basato un algoritmo che decide l’univoca decifrabilità dei linguaggi regolari, quando questi sono rappresentati da automi non ambigui. Si tratta di automi in cui non esistono due cammini distinti, che iniziano e finiscono negli stessi stati e che definiscono la stessa parola. Parliamo dell’algoritmo di Berstel e Perrin, che definisce un automa “ universale ”, l’automa flower, dal quale è possibile decidere se il linguaggio definito dall’automa iniziale è un codice. Head e Weber (1993) e McCloskey (1996) mettono in evidenza il fatto che l’algoritmo basato sull’automa flower esclude dagli input gli automi ambigui, i quali definiscono, anch’essi, linguaggi regolari e quindi andrebbero considerati. In particolare, se si volesse trasformare un automa ambiguo in non ambiguo questo comporterebbe un incremento esponenziale nel numero degli stati. Per tale motivo Head e Weber hanno disegnato un algoritmo efficiente che decide l’univoca decifrabilità dei regolari verificando la single-valuedness dei transducers.L’algoritmo di McCloskey, oggetto del nostro lavoro, si concentra sullo stesso obiettivo, ossia di eliminare l’inefficienza dovuta al passaggio da ambiguo a non ambiguo, e si basa sul test di Sardinas e Patterson, ma fornendo una generalizzazione del test ai linguaggi regolari. L’algoritmo riceve in input un automa a stati finiti non deterministico con λ-transizioni (eventualmente ambiguo) e si compone fondamentalmente di quattro passi. Il primo passo consiste nel verificare se la parola vuota (λ), appartiene al linguaggio definito dall’automa in input. Questo viene realizzato attraverso una visita in profondità del grafo che rappresenta l’automa, visitando solo gli archi etichettati con λ. Il secondo passo, consiste nella costruzione di un automa ristretto, ovvero un automa con un solo stato iniziale, un solo stato finale e tale che lo stato finale non ha trasizioni in entrata etichettata con λ, e nessuna transizione in uscita di qualsiasi tipo. L’algoritmo è centrato sul concetto di automa ristretto, ma l’autore non ha fornito un metodo sulla sua costruzione. Per tale motivo, il nostro lavoro è consistito, anche, nel fornire un procedimento per la costruzione dell’automa e nel dimostrare l’equivalenza tra λ-NFA e automa ristretto. Il terzo passo prevede la costruzione di una variante della definizione del prodotto di un automa, sull’automa ristretto costruito al passo precedente. Infine l’ultimo passo consiste nell’individuazione di un cammino, nell’automa costruito al passo precedente, che dallo stato iniziale [q0, q0] porti allo stato finale [f, f] passando per almeno uno stato semi-finale, ovvero uno stato [s, f] o [f, s] con s ≠ f. L’esistenza di questo cammino permette di stabilire che il linguaggio definito dall’automa iniziale non è unicamente decifrabile. L’ultimo passo viene realizzato effettuando due visite in profondità. La prima realizzata sull’automa del passo precedente, consiste nel creare un insieme di stati semi-finali raggiungibili dallo stato iniziale. La seconda effettuata sull’automa con le transizioni invertiti per creare un insieme di stati semi-finali raggiungibili dallo stato finale. Se l’intersezione tra i due insiemi è vuota, il linguaggio è un codice altrimenti non lo è. Si dimostra che l’algoritmo è efficiente e richiede tempo O(n2).
Per verificare, dal punto di vista pratico, la realizzabilità di tale algoritmo nella sua complessità computazionale è stato realizzato un progetto in Java 6 che ha seguito le linee guida di tale algoritmo.A completamento del progetto si è prodotto un’interfaccia grafica che consente all’utente di disegnare un automa o inserire un’espressione regolare attraverso l’ausilio delle interfacce grafiche di JFlap, e di visualizzare l’esito dell’esecuzione dell’algoritmo sull’input definito dall’utente stesso.

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista
Mostra/Nascondi contenuto.
1 INTRODUZIONE I codici (a lunghezza variabile) sono stati considerati da Shannon verso la fine degli anni ’40 e successivi contributi furono dati principalmente da Schützenberger, Kraft, Sardinas, Patterson, McMillan. Un codice è un insieme di parole su un alfabeto finito e che è accettabile nella trasmissione dell’informazione: giustapponendo tali parole si ottengono messaggi che possono essere decifrati univocamente, ossia senza ambiguità. Sardinas e Patterson nel 1950 hanno fornito una condizione necessaria e sufficiente perché un insieme sia un codice, che nel caso di insiemi regolari, e quindi anche finiti, si trasforma in una proprietà decidibile [2]. Sono stati definiti diversi algoritmi efficienti, basati sul test di Sardinas e Patterson per decidere l’univoca decifrabilità di un insieme finito di parole; tra questi l’algoritmo di Capocelli e Hoffman [5] che esegue il test su una pattern matching machine e l’algoritmo di Rodeh [15] basato sui suffix trees. Nel caso dei linguaggi regolari, la verifica dell’univoca decifrabilità assume un’importanza rilevante, consentendo di testare anche insiemi infiniti di parole. Il problema di verificare se un linguaggio regolare è un codice, è un caso speciale di una ben nota questione della teoria degli automi, ovvero il problema di testare se una data espressione regolare

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista
Il miglior software antiplagio

L'unico servizio antiplagio competitivo nel prezzo che garantisce l'aiuto della nostra redazione nel controllo dei risultati.
Analisi sicura e anonima al 100%!
Ottieni un Certificato Antiplagio dopo la valutazione.

Informazioni tesi

  Autore: Luca D'auria
  Tipo: Laurea II ciclo (magistrale o specialistica)
  Anno: 2009-10
  Università: Università degli Studi di Salerno
  Facoltà: Scienze Matematiche, Fisiche e Naturali
  Corso: Informatica
  Relatore: Rosalba Zizza
  Lingua: Italiano
  Num. pagine: 166

FAQ

Per consultare la tesi è necessario essere registrati e acquistare la consultazione integrale del file, al costo di 29,89€.
Il pagamento può essere effettuato tramite carta di credito/carta prepagata, PayPal, bonifico bancario.
Confermato il pagamento si potrà consultare i file esclusivamente in formato .PDF accedendo alla propria Home Personale. Si potrà quindi procedere a salvare o stampare il file.
Maggiori informazioni
Ingiustamente snobbata durante le ricerche bibliografiche, una tesi di laurea si rivela decisamente utile:
  • perché affronta un singolo argomento in modo sintetico e specifico come altri testi non fanno;
  • perché è un lavoro originale che si basa su una ricerca bibliografica accurata;
  • perché, a differenza di altri materiali che puoi reperire online, una tesi di laurea è stata verificata da un docente universitario e dalla commissione in sede d'esame. La nostra redazione inoltre controlla prima della pubblicazione la completezza dei materiali e, dal 2009, anche l'originalità della tesi attraverso il software antiplagio Compilatio.net.
  • L'utilizzo della consultazione integrale della tesi da parte dell'Utente che ne acquista il diritto è da considerarsi esclusivamente privato.
  • Nel caso in cui l’utente che consulta la tesi volesse citarne alcune parti, dovrà inserire correttamente la fonte, come si cita un qualsiasi altro testo di riferimento bibliografico.
  • L'Utente è l'unico ed esclusivo responsabile del materiale di cui acquista il diritto alla consultazione. Si impegna a non divulgare a mezzo stampa, editoria in genere, televisione, radio, Internet e/o qualsiasi altro mezzo divulgativo esistente o che venisse inventato, il contenuto della tesi che consulta o stralci della medesima. Verrà perseguito legalmente nel caso di riproduzione totale e/o parziale su qualsiasi mezzo e/o su qualsiasi supporto, nel caso di divulgazione nonché nel caso di ricavo economico derivante dallo sfruttamento del diritto acquisito.
L'obiettivo di Tesionline è quello di rendere accessibile a una platea il più possibile vasta il patrimonio di cultura e conoscenza contenuto nelle tesi.
Per raggiungerlo, è fondamentale superare la barriera rappresentata dalla lingua. Ecco perché cerchiamo persone disponibili ad effettuare la traduzione delle tesi pubblicate nel nostro sito.
Per tradurre questa tesi clicca qui »
Scopri come funziona »

DUBBI? Contattaci

Contatta la redazione a
[email protected]

Ci trovi su Skype (redazione_tesi)
dalle 9:00 alle 13:00

Oppure vieni a trovarci su

Parole chiave

automa
automa prodotto
automa ristretto
berstil
capocelli
codice
d'auria
dfs
espressioni regolari
grafo
head
hoffmann
java
jflap
linguaggi regolari
mccloskey
perrin
rodeh
suffix trees
teoria dei codici
teoria dell'informazione
teoria della computazione
webber

Tesi correlate


Non hai trovato quello che cercavi?


Abbiamo più di 45.000 Tesi di Laurea: cerca nel nostro database

Oppure consulta la sezione dedicata ad appunti universitari selezionati e pubblicati dalla nostra redazione

Ottimizza la tua ricerca:

  • individua con precisione le parole chiave specifiche della tua ricerca
  • elimina i termini non significativi (aggettivi, articoli, avverbi...)
  • se non hai risultati amplia la ricerca con termini via via più generici (ad esempio da "anziano oncologico" a "paziente oncologico")
  • utilizza la ricerca avanzata
  • utilizza gli operatori booleani (and, or, "")

Idee per la tesi?

Scopri le migliori tesi scelte da noi sugli argomenti recenti


Come si scrive una tesi di laurea?


A quale cattedra chiedere la tesi? Quale sarà il docente più disponibile? Quale l'argomento più interessante per me? ...e quale quello più interessante per il mondo del lavoro?

Scarica gratuitamente la nostra guida "Come si scrive una tesi di laurea" e iscriviti alla newsletter per ricevere consigli e materiale utile.


La tesi l'ho già scritta,
ora cosa ne faccio?


La tua tesi ti ha aiutato ad ottenere quel sudato titolo di studio, ma può darti molto di più: ti differenzia dai tuoi colleghi universitari, mostra i tuoi interessi ed è un lavoro di ricerca unico, che può essere utile anche ad altri.

Il nostro consiglio è di non sprecare tutto questo lavoro:

È ora di pubblicare la tesi