1) Kod Hamming

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 20

Kod Hamming

• 1950: Richard Hamming menemui kod


linear yang dapat membetulkan kesilapan
tunggal.

• Sebelum membincangkan kod Hamming,


lihat semula matriks dan perhubungan ini:

S T = H RT= H E T
Jika berlaku kesilapan, E dan sindrom S
• Sindrom ialah jumlah lajur bagi matriks
yang mana saluran kesilapan berlaku.
• Implikasinya:
–Jika lajur H ialah 0, kedudukan silap
tidak dapat dikenal pasti,
–Jika 2 lajur bagi H adalah sama,
kesalahan tunggal tidak dapat dikenal
pasti.
Rumusan Kod Linear

Dapat membetulkan semua corak kesilapan


tunggal jika lajur matriks H:

• Berbeza antara satu sama lain,


• Bukan sifar
Dengan kata lain, jika semua lajur matriks H
berbeza dan bukan sifar, kesilapan tunggal
pada kedudukan berbeza mempunyai sindrom
berbeza
Theorem

Satu kod linear dapat membetulkan


semua corak yang tidak lebih daripada
satu kesilapan saluran jhj semua lajur
bagi matriks semakan-parity H adalah
berbeza dan bukan sifar.
Decoding Kod Terima
Langkah decode mesej diterima, R:
1. Kirakan sindrom, s
2. Semak syarat s:
i. Jika s tidak sifar, tetapi s sama dengan salah satu
lajur H (berlaku kesilapan dalam kedudukan)
ii. Jika s tidak sifar dan berbeza dengan semua lajur H
(decoding gagal)
3. Bilang kedudukan lajur dalam H yang sama
dengan s. Katakan ke-3, E = [0010..00] iaitu 1
pada kedudukan ke-3.
4. Kira C = R – E.
Contoh
Mesej yang diterima R = 101000101 dengan matriks
pembetulan berikut:

Langkah:

1) Kirakan S = HRT
2. Banding s dengan H, didapati lajur ke-4.
H adalah sama dengan s. Anggapkan
E=[000100000]
3. Kira C = R ─ E,
= [101001101] – [000100000]
= [101101101]
Kes Tiada Penyelesaian
Jika R = [101001101], “decode”kan mesej itu sekiranya sindrom, s bagi
matriks yang sama digunakan.

= [0100]

Oleh kerana sT tidak sama dengan lajur bagi H, maka proses decode
dikatakan gagal.
Uji Diri Anda
0 0 0 1 1 1 1 1 0
Bagi matriks 𝐻 = 0 0 1 1 1 0 1 0 1 , decode kan
0 1 1 1 0 0 1 1 0
1 1 1 0 0 0 1 0 1

setiap mesej yang diterima?

1. R = [111 000 101]


2. R = [101 000 111]
Kod Hamming

• Kod Hamming ialah kod pembetulan-kesalahan-tunggal


• Isu Perlu difikir:
Bagi matriks H dengan bilangan baris r, berapakah
bilangan maksimum lajur bukan sifar berbeza yang
diperoleh?

Bilangan block length(𝑏𝑖𝑙 𝑙𝑎𝑗𝑢𝑟) = 2𝑟 − 1


Contoh Kod Hamming
1) Andaikan r = 3, bilangan lajur 23 − 1 = 7
0 1 1 1 1 0 0
eg: 1 0 1 1 0 1 0
1 1 0 1 0 0 1

2) Andaikan r = 2, bilangan lajur 22 − 1 = 3

1 1 0
eg:
1 0 1
Kod Hamming

• Kod Hamming ialah kod pembetulan-kesalahan-tunggal


• Isu Perlu difikir:
i. Berapakah bilangan lajur (n) bagi matriks dengan
bilangan baris (r)?
ii. Berapakah bilangan mesej (k) bagi matriks dengan
bilangan baris (r)?
Kod Hamming
Bilangan block length bil lajur , 𝑛 = 2𝑟 − 1

Theorem
Jika A ialah matriks m × n dengan pangkat r, maka
dimensi bagi ruang nol matriks A ialah n ─ r.

Bilangan mesej, k = 𝑛 − 𝑟 = (2𝑟 −1) − 𝑟


Kadar Informasi, R = k/n
2𝑟 −1−𝑟 𝑟
Kadar informasi, 𝑅 = =1−
2𝑟 −1 2𝑟 −1

• Jika r ∞, R 1
• Ini bermaksud, Kod Hamming yang mempunyai
“block length” besar akan menghasilkan kadar
informasi yang tinggi.
Rumusan Kod Hamming
• Kod ini dapat membetulkan kesalahan tunggal
dalam sebarang digit
• Jika setiap lajur bukan sifar, decode dapat
dilakukan. Sebaliknya jika terdapat lajur sifar,
decode gagal sebab tidak dapat mengesan
kedudukan silap
• Namun, jika dikesan terdapat ≥2 kesalahan,
parity-check gagal dilaksanakan.

Buat TUTORIAL 5
Dalam Keadaan Semakan Bit

Bit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
position
Encoded
p1 p2 d1 p4 d2 d3 d4 p8 d5 d6 d7 d8 d9 d10 d11 p16 d12 d13 d14 d15
data bits
p1 X X X X X X X X X X .
Par p2 X X X X X X X X X X .
ity .
bit p4 X X X X X X X X X
cov p8 X X X X X X X X
era
ge p16
Penjelasan Lanjut
• Mark all bit positions that are powers of two as parity bits. (positions 1, 2, 4, 8, 16, 32,
64, etc.)
• All other bit positions are for the data to be encoded. (positions 3, 5, 6, 7, 9, 10, 11, 12,
13, 14, 15, 17, etc.)
• Each parity bit calculates the parity for some of the bits in the code word. The position
of the parity bit determines the sequence of bits that it alternately checks and skips.
– Position 1: check 1 bit, skip 1 bit, check 1 bit, skip 1 bit, etc. (1,3,5,7,9,11,13,15,...)
– Position 2: check 2 bits, skip 2 bits, check 2 bits, skip 2 bits, etc.
(2,3,6,7,10,11,14,15,...)
– Position 4: check 4 bits, skip 4 bits, check 4 bits, skip 4 bits, etc.
(4,5,6,7,12,13,14,15,20,21,22,23,...)
– Position 8: check 8 bits, skip 8 bits, check 8 bits, skip 8 bits, etc. (8-15,24-31,40-
47,...)
– Position 16: check 16 bits, skip 16 bits, check 16 bits, skip 16 bits, etc. (16-31,48-
63,80-95,...)
– Position 32: check 32 bits, skip 32 bits, check 32 bits, skip 32 bits, etc. (32-63,96-
127,160-191,...)
etc.
• Set a parity bit to 1 if the total number of ones in the positions it checks is odd. Set a
parity bit to 0 if the total number of ones in the positions it checks is even.
A byte of data: 10011010
Create the data word, leaving spaces for the parity bits: _ _ 1 _ 0 0 1 _ 1 0 1 0
Calculate the parity for each parity bit (a ? represents the bit position being
set):

• Position 1 checks bits 1,3,5,7,9,11:


? _ 1 _ 0 0 1 _ 1 0 1 0. Even parity so set position 1 to a 0:
0_1_001_1010
• Position 2 checks bits 2,3; 6,7; 10,11:
0 ? 1 _ 0 0 1 _ 1 0 1 0. Odd parity so set position 2 to a 1:
011_001_1010
• Position 4 checks bits 4,5,6,7;12,13,14,15;…
0 1 1 ? 0 0 1 _ 1 0 1 0. Odd parity so set position 4 to a 1:
0111001_1010
• Position 8 checks bits 8,9,10,11,12,13,14,15; 24-31;…
0 1 1 1 0 0 1 ? 1 0 1 0. Even parity so set position 8 to a 0:
011100101010
• Code word: 011100101010.
Hadamard Matrix
H2m+1 =

H2 =

H4 =
Buat Tutorial 5

You might also like