Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Alessandro De Pin
Indice
• Indice pag. 2
• Introduzione pag. 3
• Struttura di un sistema di trasmissione numerica pag. 3
• Modello matematico pag. 4
• L’algoritmo di Viterbi pag. 6
• Due esempi di applicazione pag. 7
• Cenni di ulteriori applicazioni pag. 10
• Conclusioni pag. 10
• Appendice: il criterio di massima verosimiglianza pag. 11
• Bibliografia pag. 12
2
Introduzione
in cui
- la codifica di sorgente si occupa di togliere la ridondanza sul messaggio da trasmettere
- la codifica di canale aggiunge codice ridondante per proteggere il messaggio dal rumore sul
canale
(questi due blocchi operano, ovviamente, in termini di sequenze di bit)
- il modulatore associa ad ogni simbolo del messaggio una forma d’onda
- la decisione demodula la forma d’onda “rumorosa” ricevuta e con criteri di verosimiglianza
decide per quella più probabilmente ricevuta/trasmessa
e le successive decodifiche di canale e di sorgente compiono l’operazione inversa dei rispettivi
blocchi di codifica.
3
Modello matematico
L’algoritmo di Viterbi si basa sul concetto di processo di Markov che, come tale, è
caratterizzato dalla proprietà secondo cui la probabilità di essere in uno stato in un determinato
istante dipende solo dallo stato all’istante immediatamente precedente, ovvero
P(x i + 1 x0 ,..., xi ) = P( xi + 1 xi )
X = ( x0 ,..., xi ,...)
che può essere finito o infinito, in cui x i indica lo stato all’istante i , ed un vettore di transizioni
x = (x 0 ,..., x i − 1 ,...)
L’algoritmo di Viterbi viene effettuato, secondo la struttura del sistema di trasmissione precedente,
dal blocco di decisione insieme alla successiva decodifica di canale per assicurare al destinatario la
corretta ricezione del messaggio trasmesso:
Infatti, in modo molto semplificato, il trasmettitore (sorgente) utilizza un alfabeto di simboli, noto
anche al ricevitore (destinatario), per inviare il messaggio che però arriverà al blocco di decisione
non privo di distorsioni dovute all’inevitabile presenza di rumore nel canale; in questo modo il
blocco di decisione in ricezione si trova una sequenza di simboli Y = ( y0 ,..., y i − 1 ,...) “rumorosi” da
cui deve poter risalire, per confronti di verosimiglianza, alla sequenza correttamente trasmessa.
Si assumerà che il canale sia senza memoria, cioè che ciascun yi dipenda solo dalla corrispondente
transizione al medesimo istante in modo che si abbia
N
P(Y X ) = P(Y x ) = ∏ P( y i x i ) (*)
i= 0
4
e l’obiettivo è quindi trovare la sequenza degli stati X per cui vale
Per una più comoda visualizzazione del funzionamento dell’algoritmo si utilizza una
rappresentazione detta a traliccio ovvero del tipo
Stati (simboli):
A …. ….
B …. ….
C …. ….
D …. ….
.
.
Istanti: 0 1 2 …. i ….
in cui ad ogni nodo corrisponde uno stato ad un preciso istante e le transizioni vengono indicate
con dei collegamenti tra i rispettivi nodi a cui si riferiscono, in base al diagramma a stati associato
al processo di Markov in considerazione.
Ora, facendo il logaritmo della (*), la produttoria diventa una sommatoria, ovvero
N
ln P(Y x ) = ∑ ln P( y i xi )
i=0
l (xi ) = ln P( y i xi )
5
N
L= ∑ l(xi ) (***)
i= 0
Generalmente si ipotizza che il canale di trasmissione sia del tipo AWGN (Additive White Gaussian
Noise) . In questo caso la (*) risulta
1 1
N
( yi − xi ) 2
P(Y X ) = N0 ∑
−
e i =0
(pN 0 ) 2
N
da cui, prendendone il logaritmo naturale e facendone il max per la (**), si ottiene semplicemente la
funzione obiettivo seguente
N N
∑ ( y i − xi ) ∑ d (yi , xi )
2
min = min
i= 0 i=0
che è il percorso totale secondo la (***), in cui l (xi ) = ( y i − xi ) è la metrica di un singolo ramo.
2
L’algoritmo di Viterbi
Da questa impostazione del problema nasce l’algoritmo di Viterbi, esso è del tipo ACS (Add
Compare and Select).
Innanzitutto si denota la lunghezza parziale di una traiettoria come
i− 1
Li = ∑ l (x k )
k =0
questa esigenza nasce dal fatto che per ciascun nodo ad un particolare istante i vi giungono, in
generale, diverse traiettorie (percorsi) ciascuna con lunghezza Li ; per ogni nodo si sceglie la
traiettoria che vi giunge con la minore metrica: essa è detta superstite e si denota con X ( xi ) e la sua
lunghezza è detta metrica accumulata ( Γ ( xi ) = min Li ).
Allora se vi sono S stati, per ogni istante i vi sono S superstiti, uno per ogni stato x i . In questo
modo, ad ogni istante i è necessario conoscere soltanto gli S superstiti X ( xi ) e le loro lunghezze
Γ ( xi ) .
All’istante i+1 si prolungano i superstiti di una unità temporale, si calcolano le nuove lunghezze
delle traiettorie aggiungendo a ciascun ramo la rispettiva metrica accumulata (Add) e per ogni nodo
xi +1 si sceglie la nuova traiettoria più corta (Compare and Select) che sarà la nuova superstite.
Procedendo in questo modo, all’istante finale N si sarà in grado di scegliere il superstite finale che
sarà la traiettoria con la minor lunghezza ovvero, in termini pratici, la decisione migliore presa dal
ricevitore per la sequenza trasmessa.
6
Due esempi di applicazione.
ingresso 0
0
ingresso 1
-2 0 1 +2
+2
ingresso 0
1 ingresso 1
0
0
-2
Per risalire alla corretta sequenza trasmessa il ricevitore applica alla sequenza ricevuta
l’algoritmo di Viterbi, replicando per ciascun simbolo il diagramma a traliccio precedente e
valutando le distanze di ciascun valore ricevuto da ciascun valore atteso, ottenendo:
7
3.97 1.97 3.85 0.15 1.9 1.9 5.63 2.13 4.43 0.97 2.77 2.57 3.47 2.27 2.57 2.57
1
0
0.03 0.03 2.15 2.09 4.34 0.4 0.67 0.67 2.37 2.37 4.57 1.17 4.27 3.67 7.37 3.97
0 1 0 0 1 0 1
in cui in blu più sottile sono state evidenziate le traiettorie superstiti e le relative metriche
accumulate, mentre in blu più spesso la traiettoria finale: come si può notare, pian piano si
delinea la traiettoria corretta e le altre muoiono.
• L’algoritmo di Viterbi è nato e si applica soprattutto coi codici convoluzionali, usati dalla
codifica di canale per evitare il più possibile errori di decisione in ricezione.
Senza scendere troppo nel dettaglio, i codici convoluzionali sono rappresentati da un registro
avente in ingresso la parola (in termini di bit) da codificare ed in uscita la parola codificata; ad
esempio si consideri lo schema di seguito
P1
I I n I n− 1 I n− 2
P2
questo è un tipico codice convoluzionale tale per cui ad ogni singolo bit in ingresso ne
corrispondono due in uscita.La corrispondente macchina a stati risulta
8
10 ingresso 0
11 10 ingresso 1
01
00 00
00 01
11
01
11
10
00
00
11
11
10 01
10 00
11
10
01
01
9
d(00,10)=1 d(00,00)=0
1 2 min(2,3)=2 ingresso 0
00 ingresso 1
1 2 min(4,1)=1
10
3 min(3,4)=3
11
1 min(3,4)=3
01
d(11,10)=1
1 0 1
in cui sono indicate in blu sottile le traiettorie superstiti ed in blu spesso la traiettoria
risultante con la metrica minore.
Conclusioni
Come si può notare quindi l’algoritmo è lo stesso di Dijkstra, vastamente applicato nella
ricerca operativa su problemi di percorso minimo, e si differenzia da esso solo dal fatto che il grafo
è un traliccio: questo facilita la visualizzazione e schematizzazione di problemi legati alla
trasmissione numerica.
Si è visto inoltre che l’algoritmo di Viterbi è ottimo nel senso di massima verosimiglianza, però ha
il difetto di introdurre ritardo nella decisione; infatti per una ricezione ottima del messaggio
trasmesso bisogna aspettare che sia giunta l’intera sequenza di bit al ricevitore e non si può decidere
10
bit per bit. Si può scegliere altrimenti una versione troncata dell’algoritmo, fissando un intervallo di
ritardo ammesso che corrisponde al numero di simboli massimo prima di poter prendere la
decisione: questa è una versione sub-ottima poiché allo scadere del ritardo ammesso viene scelta e
consegnata la traiettoria avente metrica minima in quell’istante, che non è detto sia la stessa che si
avrebbe considerando l’intera sequenza. Questo comunque dipende dal tipo di servizio in cui si
impiega l’algoritmo: se è un servizio vocale un errore della “versione troncata” è tollerabile, mentre
per un servizio dati un errore implica la ritrasmissione dell’intero messaggio.
Altra considerazione importante riguarda la complessità; infatti maggiore è il numero di simboli
dell’alfabeto e maggiore sarà il numero degli stati, nonché delle traiettorie da prendere in
considerazione. Questo ha influenza diretta sul tempo di esecuzione che varia a seconda
dell’implementazione nonché del numero di simboli possibili e della lunghezza della sequenza.
Pc (r ) = f (r s k ) p(s k ) ,
cioè la probabilità di aver ricevuto r avendo trasmesso sk moltiplicata alla probabilità di sk stesso.
Parimenti la probabilità di errare è
Pe (r ) = ∑ f (r si )p( si ) .
i≠k
f (r s k ) p( s k ) = max f (r s i ) p(s i )
i
che è un criterio conosciuto come MAP (Maximum A Posterior probability), di cui quello di
massima verosimiglianza ML (Maximum Likelyhood) è un sottocaso usato quando gli sk sono
equiprobabili: in questo modo si ha
1
p (s i ) =
N
ottenendo
f (r s k ) p(s k ) = max f (r s i ) .
i
11
Bibliografia
12