Sei sulla pagina 1di 20

Corso di

Teoria dei codici


Lezione #1

18 marzo 2020

Angelo Sonnino
web.unibas.it/sonnino
Rappresentazione dell’informazione

Nord
Sud
Est
Ovest
Rappresentazione dell’informazione

N ⇒ 00
S ⇒ 01
E ⇒ 10
O ⇒ 11

!S ➽ 01 ➽ ⚡ ➽ 11 ➽ O #
Rappresentazione dell’informazione

N ⇒ 00 ⇒ 00000
S ⇒ 01 ⇒ 01011
E ⇒ 10 ⇒ 10110
O ⇒ 11 ⇒ 11101

!S ➽ 01011 ➽ ⚡ ➽ 11011 ➽ ? $
Distanza di Hamming
(fra due sequenze ordinate)

Date due sequenze ordinate di simboli di ugual lunghezza:

x = x1x2⋯xn−1xn, y = y1y2⋯yn−1yn,

la loro distanza di Hamming è la seguente quantità:

d(x, y) = | { i ∣ 1 ≤ i ≤ n, xi ≠ yi } | .
Distanza di Hamming
(fra due sequenze ordinate)

La distanza di Hamming così definita è una vera e propria


metrica:

1. d(x, y) ≥ 0 e si ha d(x, y) = 0 se e solo se x = y;


2. d(x, y) = d(y, x);
3. d(x, y) + d(y, z) ≥ d(x, z).
Distanza di Hamming
(fra due sequenze ordinate)

x = 12357097753

y = 12557007753

%
d(x, y) = 2
Rilevamento & correzione
N ⇒ 00 ⇒ 00000
S ⇒ 01 ⇒ 01011
E ⇒ 10 ⇒ 10110
O ⇒ 11 ⇒ 11101

Ricevuto 11011 calcoliamo:


d(11011,00000) = 4
d(11011,01011) = 1
d(11011,10110) = 3
d(11011,11101) = 2
Rilevamento & correzione

d(11011,00000) = 4
d(11011,01011) = 1 &
d(11011,10110) = 3
d(11011,11101) = 2

C’è una sola parola di codice più “vicina” delle


altre alla parola ricevuta!
Rilevamento & correzione

N ⇒ 00 ⇒ 00000
S ⇒ 01 ⇒ 01011
E ⇒ 10 ⇒ 10110
O ⇒ 11 ⇒ 11101

!S ➽ 01011 ➽ ⚡ ➽ 11011 ➽ 01011 ➽ S ✅


Un po’ di storia
Nel 1972 la sonda Mariner volò in prossimità del
pianeta Marte e per la prima volta trasmise delle
immagini ravvicinate (in bianco & nero) del pianeta
e dei suoi satelliti Phobos e Deimos.
• L’alfabeto consisteva in 64 sfumature di grigio.
• Poiché 64=26, ciascuna sfumatura di grigio era
rappresentata da una sequenza binaria di
lunghezza 6.
• Ciascuna sequenza era poi “immersa” in una
parola di lunghezza 32.
• Un siffatto codice era in grado di correggere
automaticamente 7 errori per ogni sequenza.
Un po’ di storia
Nel 1979 la sonda Voyager per la prima volta trasmi-
se immagini ravvicinate del pianeta Giove. In questo
caso lo spazio delle informazioni era più grande
perché le immagini erano a colori.
• L’alfabeto consisteva in 4.096 tonalità di colore.
• Poiché 4.096=212, ciascuna sfumatura di colore
era rappresentata da una sequenza binaria di
lunghezza 12.
• Ciascuna sequenza era poi “immersa” in una
parola di lunghezza 24.
• Un siffatto codice era in grado di correggere fino
a 3 errori per ogni sequenza.
Codice a blocchi

Alfabeto: 𝒜 = {a1, a2, …, aq−1, aq}

Esempi: {a, b, c, …, x, y, z}, {0,1}, {(, ☠, *, +, ,}

Un [n, M]-codice a blocchi di lunghezza n con M pa-


n
role è un sottoinsieme di 𝒜 contenente M sequenze
ordinate di lunghezza n, composte di elementi di 𝒜,
n
opportunamente scelte fra tutte le possibili q sequenze.
Il codice ISBN
(International Standard Book Number)
S. A. Vanstone, P. C. van Oorschot, "An Introduction to Error
Correcting Codes with Applications", Kluwer Academic
Publishers, 1989, ISBN 0-7923-9017-2.
Rileva una cifra errata oppure un duplice errore dovuto allo
scambio di due cifre.
Esso è composto da nove cifre x1, x2, x3, x4, x5, x6, x7, x8, x9
più una decima—di controllo—ricavata da
x10 ≡ x1 + 2x2 + 3x3 + 4x4 + 5x5 + 6x6 + 7x7 + 8x8 + 9x9 (mod 11)
cosicché una sequenza corretta deve soddisfare
10


ixi ≡ 0 (mod 11) . (1)
i=1
Il codice ISBN
(International Standard Book Number)

Il risultato della sommatoria (1) potrebbe essere 10. In tal


caso nell’ultima posizione della sequenza occorre un altro
simbolo X per indicare che x10 ≡ 10 (mod 11), ad
esempio: 0-201-42777-X.

𝒜 = {0,1,2,3,4,5,6,7,8,9,X} .
Il codice ISBN
(International Standard Book Number)

Riceviamo y = y1y2y3y4y5y6y7y8y9y10

10


Y= iyi ≡ 0 (mod 11) ➽ ✅
i=1

Y ≢ 0 (mod 11) ➽ ❌
Il codice ISBN
(International Standard Book Number)

Se y = y1y2y3y4y5y6y7y8y9y10 differisce da
x = x1x2 x3x4 x5x6x7x8x9x10 per un errore nella j-esima
posizione allora yj = xj + ϵ per 1 ≤ j ≤ 10 ed ϵ ≠ 0,
ossia
1+ 10

∑ ∑
Y= iyi = ixi + jϵ ≢ 0 (mod 11) .
i=1 i=1
Il codice ISBN
(International Standard Book Number)

Se l’errore è dovuto allo scambio di due cifre distinte, ad


esempio xj e xk con j ≠ k, allora

10 10

∑ ∑
Y= iyi = ixi + (k − j)xj + ( j − k)xk ≡
i=0 i=0

(k − j)(xj − xk) ≢ 0 (mod 11) .

Dunque, in ambedue i casi sappiamo che un errore deve


essersi verificato.
Il codice ISBN
(International Standard Book Number)
Ricostruzione di una sequenza mancante di una cifra, ad
esempio 0-12-853?04-9, dove ? = x7.
1 ⋅ 0 + 2 ⋅ 1 + 3 ⋅ 9 + 4 ⋅ 8 + 5 ⋅ 5+
6 ⋅ 3 + 7 ⋅ x7 + 8 ⋅ 0 + 9 ⋅ 4 + 10 ⋅ 9 ≡ 0 (mod 11)
7 ⋅ x7 + 10 ≡ 0 (mod 11)
7 ⋅ x7 ≡ − 10 (mod 11)
7 ⋅ x7 ≡ 1 (mod 11)
0 ≤ x7 ≤ 10 moltiplicato per 7 deve dare resto 1 nella
divisione per 11 ! x7 = 8.
Distanza minima di un codice

C = {c1, c2, …, cM}

d = d(C) = min{ d(ci, cj) ∣ ci, cj ∈ C, i ≠ j }

La distanza minima o distanza di Hamming di un


codice è la minima distanza fra due parole di
codice distinte.

Potrebbero piacerti anche