Skip to content

Implementazione in Java di un algoritmo di Capocelli e Hoffmann per decidere l’univoca decifrabilità e altre proprietà di un insieme finito di parole

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à.
Le proprietà di decifrabilità unica e di ritardo di decifrazione sono centrali della Teoria dei Codici. Esse formalizzano se un messaggio codificato può essere decodificato in maniera non ambigua e se tale decodifica è possibile senza prima ricevere l’intero messaggio. 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.
Capocelli e Hoffmann hanno disegnato un algoritmo per testare l’univoca decifrabilità di un insieme finito di parole X basato sul test di Sardinas e Patterson. Consiste nel costruire un grafo R(X) in base all’insieme delle parole X specificato e nell’esplorare questo grafo attraverso una ricerca in ampiezza (BFS) per determinare l’esistenza di un particolare percorso da un insieme distinto di vertici ad un vertice che rappresenta una parola di codice. Il grafo consente di catturare anche altre proprietà dell’insieme di parole come il ritardo di decifrazione finito e la sincronizzazione.Il primo passo dell’algoritmo prevede la costruzione di una Pattern
Matching Machine utilizzata in generale per individuare in una stringa testuale le occorrenze dei patterns (parole chiave) forniti in input.
L’implementazione della Patten Matching Machine presentata in questo lavoro di tesi è stata effettuata seguendo l’algoritmo di Aho-Corasick; essa consiste di tre funzioni:
 La funzione goto è rappresentata da un grafo definito in base alle parole chiave fornite in input: i vertici rappresentano i prefissi di tali parole, mentre gli archi collegano i vertici in modo tale da formare un percorso che identifichi la singola parola chiave;
 La funzione failure è computata per tutti i vertici del grafo (funzione goto) e tale valore viene preso in considerazione quando si verifica un fallimento nell’utilizzo della funzione goto;
 La funzione output costruita in due parti, la prima dalla goto e la seconda dalla failure, definita per quei vertici che identificano una parola chiave.
La Pattern Matching Machine è fondamentale per la creazione del grafo R(X) effettuata nei due passi centrali dell’algoritmo: l’insieme dei vertici è lo stesso definito per la funzione goto mentre si sfruttano le funzioni failure e output per determinare l’insieme degli archi, che possono essere di due tipologie:
 Archi EReach: sono identificati attraverso la funzione output;
 Archi EDivisor: sono individuati dalla funzione failure.
L’ultimo passo consiste nell’effettuare una ricerca in ampiezza (BFS) sul grafo R(X) per trovare almeno un cammino non banale dai vertici di un insieme S(X), contenente i vertici che rappresentano parole che siano prefissi di altre parole dell’insieme X, a vertici che rappresentano parole dell’insieme X.
Dopo aver verificato che l’insieme delle parole X sia un codice, si passa alla verifica del ritardo di decifrazione finito e della sincronizzazione.
La prima consente di non dover aspettare l’intera ricezione del messaggio per effettuare la decodifica. La seconda permette di avere un fattore speciale w all’interno di un messaggio di cui non si conosce l’inizio e la fine, e w consente di decodificare il messaggio dall’inizio fino a w’ e da w’’ fino alla fine, dove w’w’’ = w.
Capocelli e Hoffmann hanno dimostrato che un codice ha ritardo di decifrazione finito se e solo se sul grafo non esistono cicli dai vertici di S(X) a vertici in X; mentre la proprietà di sincronizzazione è provata se il grafo R(X) risulta essere aciclico.
La verifica di entrambe le proprietà è stata effettuata sfruttando un ben noto teorema nella teoria dei grafi che afferma che un grafo orientato è aciclico se e solo se una visita in profondità (DFS) sul grafo non produce archi all’indietro, ossia che connettono un vertice ad un suo antenato.
Il progetto realizzato in Java 1.4 ha seguito le linee guide di tale algoritmo.

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à [3]. Le proprietà di decifrabilità unica e di ritardo di decifrazione sono centrali della Teoria dei Codici. Esse formalizzano se un messaggio codificato può essere decodificato in maniera non ambigua e se tale decodifica è possibile senza prima ricevere l’intero messaggio. 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. Capocelli e Hoffmann [5] hanno disegnato un algoritmo per testare l’univoca decifrabilità di un insieme finito di parole X basato sul test di Sardinas e Patterson. Consiste nel costruire un grafo R(X) in base all’insieme delle parole X specificato e nell’esplorare questo grafo attraverso una ricerca in ampiezza (BFS) per determinare l’esistenza di un particolare percorso da un insieme distinto di vertici ad un vertice che rappresenta una parola di codice.

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 I ciclo (triennale)
  Anno: 2005-06
  Università: Università degli Studi di Salerno
  Facoltà: Scienze Matematiche, Fisiche e Naturali
  Corso: Informatica
  Relatore: Rosalba Zizza
  Lingua: Italiano
  Num. pagine: 127

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

aho
archi edivisor
archi ereach
bfs
capocelli
codici
corasick
d'auria luca
decorator
dfs
grafi orientati
hoffmann
java
linguaggio
mappe
mcmillan
pattern matching machine
patterson
prefisso
ritardo di decifrazione
sardinas
sincronizzazione
strutture dati
suffisso

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