Sei sulla pagina 1di 15

Corso di

Teoria dei codici


Lezione #2

20 marzo 2020
Angelo Sonnino
web.unibas.it/sonnino
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.
Rilevamento & correzione

Teorema 1. Sia C un [n, M]-codice con distanza minima

d(C) = d. Se usato per la correzione automatica, C può

⌊ 2 ⌋
d−1
correggere fino a errori. Se invece C è usato solo

per il rilevamento, esso ne può rilevare fino a d − 1.


Rilevamento & correzione
Dimostrazione. Supponiamo dapprima d = 2e + 1,
e ∈ ℕ. Scriviamo C = { ci ∣ 1 ≤ i ≤ M } e per ogni
indice i consideriamo
n
Sci = { x ∈ 𝒜 ∣ d(ci, x) ≤ e } . (2)
Osserviamo che per i ≠ j si ha Sci ∩ Scj = ∅ perché se
vi fosse x ∈ Sci ∩ Scj = ∅ si avrebbe d(ci, x) ≤ e e
contemporaneamente d(cj, x) ≤ e e per la disuguaglian-z
triangolare si avrebbe
d(ci, x) + d(cj, x) ≥ d(ci, cj),
ossia d(ci, cj) ≤ 2e = d − 1. Questo è assurdo perché
abbiamo supposto d = 2e + 1. !
Rilevamento & correzione
"
Se d = 2e, con e ∈ ℕ, definiamo le sfere come in (2). In
⌊ 2 ⌋
d−1
questo caso abbiamo = e − 1, pertanto anche se le
sfere non sono necessariamente due a due disgiunte, una
n
sequenza r ∈ 𝒜 ottenuta da una parola ci ∈ C a causa
di un numero t ≤ e − 1 di errori non può che cadere
nell’unica sfera Sc .
i

Se invece C è utilizzato solo per il rilevamento, almeno d


errori devono intervenire per trasformare una parola in
un’altra. □
Esempi
Il codice dell’esempio iniziale è C = {c1, c2, c3, c4}
c1 = 00000
c2 = 10110
c3 = 01011
c4 = 11101

C è un [5,4]-codice sopra ℤ2 con distanza minima d = 3,


ossia un [5,4,3]-codice, quindi è in grado di correggere
automaticamente un errore per ogni sequenza ricevuta,
oppure semplicemente rilevarne fino a due.
Esempi

𝒜 = ℤ5 = {0,1,2,3,4}

Sia C il [5,5]-codice definito sopra ℤ5 come

C = {01234, 02143, 40132, 12430, 03412}

x, y ∈ C, x ≠ y ⇒ d(x, y) = 4

C è un [5,5,4]-codice.
Correzione, rilevamento o ambedue?
Teorema 2. Sia C un [n, M, d]-codice con d = 2e. Allora
C corregge automaticamente un massimo di e − 1 errori e
simultaneamente ne rileva un massimo di e per ciascun
blocco.

Dimostrazione. Per il teorema 1, C corregge un massimo

⌊ 2 ⌋
d−1
di = e − 1 errori. Poiché d = 2e, le sfere intorno
alle parole di raggio e − 1 sono due a due disgiunte.
n
Pertanto ogni sequenza r ∈ 𝒜 ottenuta da una certa
parola ci ∈ C cade nell’unica sfera di raggio e − 1 intorno
ad essa.
!
Correzione, rilevamento o ambedue?
"
D’altra parte, se r ∉ C è ottenuta da ci ∈ C a causa di e
errori, essa non potrà mai invadere una sfera intorno ad
un’altra parola cj ∈ C perché

d(r, ci) + d(r, cj) ≥ d(ci, cj) ≥ d,


ossia
d(r, cj) ≥ d − d(r, ci) = d − e = e > e − 1.

È quindi possibile rilevare fino ad e errori senza rischiare


una correzione automatica inappropriata. □
Correzione, rilevamento o ambedue?

n
Supponiamo che sia d = 2e + 1 ed r ∈ 𝒜 una sequen-
za. Supponiamo che r provenga da una parola ci ∈ C
essendosi verificati e + 1 errori.

In questo caso non potremmo correggere automatica-


mente e contemporaneamente rilevare,errori senza rischi
perché potrebbe esistere una parola cj ∈ C tale che
d(ci, cj) = d e quindi d(r, cj) ≤ e farebbe scattare una
erronea correzione r ↦ cj.
Correzione, rilevamento o ambedue?
Correzione, rilevamento o ambedue?
Sia C = {c1, c2, c3, c4} il [5,4,3]-codice visto all’inizio con
c1 = 00000, c2 = 01011, c3 = 10110, c4 = 11101.
Sc1 = {00000, 10000, 01000, 00100, 00010, 00001}
Sc2 = {01011, 01010, 01001, 00011, 11011, 01111}
Sc3 = {10110, 00110, 11110, 10010, 10100, 10111}
Sc4 = {11101, 01101, 10101, 11001, 11100, 11111}
4
5

ℤ2∖ Sci = {11010, 10011, 00111, 01110,
i=1 00101, 10001, 01100, 11000}
Correzione, rilevamento o ambedue?
c1 = 00000, c2 = 01011, c3 = 10110, c4 = 11101.

r = 00011
d(r, c1) = 2, d(r, c2) = 1, d(r, c3) = 3, d(r, c4) = 4

r = 11000
d(r, c1) = 2, d(r, c2) = 3, d(r, c3) = 3, d(r, c4) = 2

Inviata c1 e arrivata r = 10100 a causa di due errori


d(r, c1) = 2, d(r, c2) = 5, d(r, c3) = 1, d(r, c4) = 2
Correzione, rilevamento o ambedue?
Distanza minima…
…non è facile calcolarla!

Ad esempio, determinare la distanza minima di un


10
[110,3 ]-codice sopra ℤ3 richiedererebbe di confrontare
due a due

310
( 2 )
= 1.743.362.676

coppie di parole distinte, ciascuna di lunghezza 110…

Potrebbero piacerti anche