Land disputes and ethnicity in Maridi

In document Exploring Primary Justice in South Sudan: Challenges, concerns, and elements that work (Page 58-61)

2. Eight case studies on primary justice

2.6 Land disputes and ethnicity in Maridi

Osservazione 7.1.18 (Analogia con l’algebra relazionale). Nel Capitolo 2 abbiamo introdotto operazioni su relazioni e le loro leggi algebriche. Nel Capitolo 3 abbiamo esteso queste leggi per la stella di Kleene (chiusura riflessiva e transitiva). Considerando l’insieme P(A × A) di tutte le relazioni su A con le operazioni di ∪, ;, ∅A,A e idA otteniamo il ben noto frammento di Kleene dell’algebra delle relazioni:

(P(A × A) , ∪ , ∅A,A, ; , IdA, (−)?) Per il linguaggi abbiamo delle operazioni analoghe:

(P(A?) , ∪ , ∅ , · , {ε} , (−)?)

Le Tabelle 7.1 e 7.2 ci dicono che queste due strutture soddisfano le stesse proprietà algebriche.

7. Linguaggi Formali

--Figura 7.1: Un automa che riconosce tutte le parole che contengono le cinque vocali in ordine alfabetico. A è l’alfabeto Latino.

7.2 Automi

Svariati strumenti di calcolo sono descritti attraverso macchine a stati, cioè vengono descritti attraverso transizioni di stato, letture di input e produzioni di output. Tipici esempi di macchine a stati che giocano un ruolo chiave in Informatica sono le macchine di Mealy e di Moore (utilizzate nella progettazione dei processori) o le ben note macchine di Turing (che possono esprimere tutti i programmi calcolabili). In questa sezione introdurremo un esempio classico di macchina a stati, gli automi, che permettono di riconoscere le stringhe di un linguaggio. L’idea è che queste macchine prendono come input una stringa e la leggono carattere per carattere: la lettura di un certo carattere fa innescare un passaggio di stato.

Per concretizzare questa idea, consideriamo un problema specifico di riconoscimento di stringhe:

“quali parole inglesi contengono le cinque vocali in ordine alfabetico”? Per rispondere a questa domanda, possiamo utilizzare la lista di parole fornita da molti sistemi operativi. Alcune delle parole di questo file che contengono le cinque vocali in ordine, sono: f acetious, sacrilegious. Si noti come anche la seconda parola va bene secondo la formulazione del problema: basta ignorare la prima occorrenza da sinistra della vocale i in sacrilegious. Esaminiamo come una macchina molto semplice può trovare tutte le parole che contengono le cinque vocali in ordine. La macchina può leggere ciascuna parola ed esaminarne i caratteri. Iniziando l’esame della parola da sinistra verso destra la macchina cerca una a. Diciamo che la macchina si trova nello “stato 0” fintanto che non trova una a, mentre quando la trova passa nello “stato 1”. Nello stato 1, la macchina cerca una e e, quando ne trova una, passa nello “stato 2”. Si procede in questo modo fino a raggiungere lo “stato 4” in cui si cerca una u. Se viene trovata una u, allora la parola contiene le vocali, ordinate alfabeticamente, e la macchina può terminare nello stato di riconoscimento,

“stato 5”, in cui riconosce la parola. Esaminando il resto della parola, la macchina continua a rimanere nello stato 5 in presenza di ogni nuovo carattere letto, dato che sappiamo che la stringa in questione è riconosciuta indipendentemente da ciò che segue u. Possiamo interpretare lo stato i come l’indicazione che la macchina ha già trovato le prime i vocali, in ordine alfabetico, per i = 0, 1, ..., 5. I sei stati riassumono tutto quello che il programma deve ricordare durante l’esame della parola, da sinistra a destra. Per esempio, nello stato 0, quando la macchina cerca una a non ha bisogno di ricordare se ha già incontrato una e. La ragione è che questa e non è preceduta da nessuna a e quindi non può servire come e nella sottosequenza aeiou.

In Figura 7.1 è rappresentata la macchina a stati descritta nei paragrafi precedenti. Gli stati 0, . . . , 5 sono visti come i nodi di un grafo e i passaggi di stato, in gergo tecnico transizioni, come degli archi. Gli archi sono etichettati da quei simboli dell’alfabeto A la cui lettura innesca la transizione. Per esempio dallo stato 0 leggendo la lettera a si passa allo stato 1. Invece leggendo un qualsiasi altro simbolo dell’alfabeto (cioè un qualsiasi elemento di A \ {a}) la macchina rimane nello stesso stato 0. Si noti che sopra lo stato 5 è disegnata una sbarra. Tale simbolo denota che lo stato è di accettazione: se la lettura di una stringa conduce a tale stato, allora la stringa contiene le vocali in ordine alfabetico.

Formalizziamo l’intuzione illustrata fino ad ora con la seguente definzione.

Definizione 7.2.1. Sia A un alfabeto. Un automa sull’alfabeto A è una tripla A = (S, T, F ) dove:

• S è un insieme, detto insieme degli stati;

• T ⊆ (A × S) × S è una relazione detta relazione di transizione, che associa ad ogni lettera dell’alfabeto a ∈ A e ad ogni stato di partenza x ∈ S zero o più stati di arrivo.

• F ⊆ S è l’insieme degli stati finali (anche detti stati di accettazione).

7.2. Automi

Figura 7.2: Tre diverse rappresentazioni grafiche dello stesso automa: nell’automa di sinistra tutti gli archi sono etichettati da esattamente un simbolo. Nell’automa di centro un arco è etichettato con due simboli e nell’automa di destra lo stesso arco è etichettato con un insieme di simboli.

L’automa A si dice a stati finiti se l’insieme degli stati S è finito.

Intuitivamente, gli elementi di S sono tutti gli stati, e quelli di F sono gli stati di accettazione.

Un elemento ((a, x), y) ∈ (A × S) × S rappresenta una transizione che porta l’automa dallo stato di partenza x allo stato di arrivo y leggendo il simbolo a ∈ A.

Esempio 7.2.2. La macchina a stati che riconoscce le stringhe che contengono le vocali in ordine alfabetico (rappresentata in Figura 7.1) è un automa: l’insieme degli stati è S = {0, . . . , 5}, la relazione di transizione è

mentre l’insieme degli stati finali è F = {5}.

Questo esempio mostra quanto la rappresentazione di automi attraverso relazioni possa essere poco intuitiva se paragonata alla rappresentazione grafica (illustrata in Figura 7.1). Per questa ragione, è conveniente spendere qualche parola sulla notazione grafica che è proprio quella che utilizzeremo d’ora in avanti.

Un automa A = (S, T, F ) viene rappresentato in maniera diagrammatica da un grafo orientato con etichette. Gli stati x ∈ S sono rappresentati come i nodi del grafo. Gli stati finali y ∈ F sono nodi con una sbarra orizontale, tipo y. Ogni transizione ((a, x), y) ∈ T è rappresentata da un arco orientato da x a y con etichetta a (l’etichetta può trovarsi, sopra, sotto o al centro dell’arco).

Esempio 7.2.3. Sia A l’alfabeto {a, b} e A = (S, T, F ) definito come S = {x, y, z}, F = {x, z} e T = { ((a, x), y), ((b, x), y),

((a, y), x), ((b, y), z), ((a, z), z), ((b, z), x)}.

Tale automa è rappresentato dal grafo a sinistra della Figura 7.2.

Talvolta, quando ci sono due (o più) transizioni con gli stessi nodi di partenza e di arrivo e con simboli diversi, si possono accorpare i due (o più) archi scrivendone uno solo, come illustrato per esempio dalla transizione

x a,b // y

nell’automa al centro della Figura 7.2. Infine, quando i simboli sono molti, può essere conveniente etichettare l’arco con l’insieme dei simboli, come illustrato, per esempio, dalla transizione

x {a,b}// y

nell’automa alla destra della Figura 7.2. Si noti, come nell’automa in Figura 7.1, l’arco 0 A\{a}// 0

7. Linguaggi Formali

potrebbe essere rappresentato come segue.

0

b



c

!!

z

==..

. 0

Definizione 7.2.4. Sia A = (S, T, F ) un automa sull’alfabeto A. Per ogni a ∈ A, si definisce la relazione Ta ⊆ S × S come

Ta= {(x, y) | ((a, x), y) ∈ T }

Per ogni stringa w ∈ A?, si definisce la relazione Tw⊆ S × S per induzione come segue 1. [Clausola base] Tε= idS.

2. [Clausola induttiva] Taw= Ta; Tw.

Se (x, y) ∈ Tw si dice che lo stato y è raggiungibile da x con la stringa w o che x può raggiungere y con la stringa w.

Esempio 7.2.5. Si consideri l’automa dell’Esempio 7.2.3 rappresentato in Figura 7.2 sull’alfabeto A = {a, b}. Si ha che Ta e Tb sono le seguenti relazioni.

Ta= {(x, y), (y, x), (z, z)} Tb= {(x, y), (y, z), (z, x)}

Intuitivamente Ta contiene tutte le transizioni con simbolo a e Tb contiene tutte le transizioni con simbolo b. Pensando alla rappresentazione grafica (illustrata in Figura 7.2), Ta è l’insieme di archi con etichetta a e Tb l’insieme degli archi con etichetta b. A partire da queste due relazioni possiamo costruire la relazione Tw per ogni w ∈ A?. Per esempio per w = abb si ha che

Tabb = Ta; Tbb (Clausola induttiva)

= Ta; (Tb; Tb) (Clausola induttiva)

= Ta; (Tb; (Tb; Tε)) (Clausola induttiva)

= Ta; (Tb; (Tb; idS)) (Clausola base)

= Ta; Tb; Tb (associatività, unità)

È facile convincersi che per ogni stringa w = a0. . . an, la relazione Tw è esattamente Ta0...an = Ta0; . . . ; Tan

Tenendo in mente l’uguaglianza riportata sopra è immediato calcolare Tw. Riportiamo di seguito tutti gli esempi con stringhe di lunghezza 2.

Taa = {(x, x), (y, y), (z, z)}

Tab = {(x, z), (y, y), (z, x)}

Tba = {(x, x), (y, z), (z, y)}

Tbb = {(x, z), (y, x), (z, y)}

Mostriamo anche un esempio con una stringa di lunghezza 3.

Taaa = {(x, y), (y, x), (z, z)}

L’esempio appena illustrato, da un’intuizione chiara del significato di Ta e Tw. La relazione Ta contiente tutte e solo le coppie (x, y) tali che c’è una transizione da x a y con simbolo a, cioè ((a, x), y) ∈ T . Nella relazione Tw ci sono tutte e sole le coppie (x, y) tali che c’è un walk (un cammino) da x a y etichettato con w. Per essere più precisi, se w = a0. . . an, la relazione Tw è esattamente

Ta0...an = {(x, y) | ∃z1, . . . zn∈ S tali che ((a0, x), z1) ∈ T, . . . , ((an, zn), y) ∈ T }.

7.2. Automi

In document Exploring Primary Justice in South Sudan: Challenges, concerns, and elements that work (Page 58-61)