Francesco Guastella

aka romeoxbm

Indicizzazione con automi a stati finiti

Salve,

è un pò che non ci si vede…si avete ragione. Ho trascorso la scorsa estate scrivendo un pò di cose, ho contribuito nel portare Axiom su Windows Phone 7 e molto altro, insomma, come potete immaginare, preferisco usare linguaggi come c/c++, c# e altri…ma non linguaggi parlati 😉

Dopo questa scherzosa introduzione, cominciamo a parlare del sample che ho scritto e che sto condividendo con voi oggi…

Il sample, scritto in C#, mostra come sia possibile usare automi a stati finiti per obiettivi di indicizzazione. Cominciamo costruendo un NFA a partire da una stringa su un alfabeto di 0 e 1 (nel codice del sample è “0100101″). Questo NFA ha una particolare caratteristica: tutti i suoi stati sono sia iniziali che accettati. Pertanto, la rappresentatione dell’automa non deterministico sarà la seguente:

Il prossimo passo sarà creare un DFA a partire dall’NFA creato in precedenza, usando l’algoritmo del subset construction. Questo automa avrà anch’esso tutti gli stati accettati come l’NFA, ma ci sarà un solo stato iniziale (definizione di automa deterministico).

Questo DFA sarà infine utilizzato per la ricerca di sottostringhe nella stringa “0100101″, già indicizzata.

Scarica il codice sorgente Indexing with Automatons sample

Tags: , , , , , , , , ,


Lascia un commento

Switch to our mobile site