a. optymalny dobór kodu zwiększa sprawność transmisji, tak w przypadku kanałów bez zakłóceń, jak i tym bardziej z zakłóceniami
b. osiągnięcie prędkości transmisji bliskich Vgr można uzyskać stosując kodowanie dostatecznie długich bloków wiadomości elementarnych, nie zaś pojedynczych wiadomości. Dotyczy to zarówno kanałów z zakłóceniami, jak i bez.
Ukazujący możliwość zmniejszenia średniej długości wyrazu kodowego przez tworzenie bloków i w sposób odpowiedni kodowanie: xi, X2 — dwie wiadomości elementarne o prawdopodobieństwie p(x-i) = 0.9; p(x2) = 0.1.
Najprostsze kodowanie:
Kod |
wkład do średniej długości (L*p(Xj)) | |
X1 |
1 |
1 * 0.9 = 0.9 |
*2 |
0 |
1 *0.1 =0.1 |
Ur=1-0 |
Tworzenie bloku plus najprostsze kodowanie oraz lepszy kod:
p(XjXk) |
kod 1 |
U*p(xj) |
kod 2 |
U*p(Xi) |
A(Li*p(xi)) | |
XiXi |
0.81 |
11 |
2*0.81 |
1 |
1 *0.81 |
0.81 |
X1X2 |
0.09 |
10 |
2*0.09 |
01 |
2*0.09 |
0.00 |
X2X1 |
0.09 |
01 |
2*0.09 |
001 |
3*0.09 |
-0.09 |
x2x2 |
0.01 |
00 |
2*0.01 |
000 |
3*0.01 |
-0.01 |
Ur = 2.00 |
U =1-29 |
0.71 |
Widać, że tworzenie bloków daje pewną swobodę w kodowaniu i możliwości zmniejszania redundancji i podwyższania sprawności (oczywiście w przypadku takiego prostego źródła wiadomości kodowanie pierwotne x-i ++ 1, X2 <-* 0 jest najbardziej sprawne).
c. wykorzystanie praktycznych możliwości tkwiących w twierdzeniu Shannona jest bardzo trudne i właściwie dotąd nie ma przepisu jak konstruować kody optymalne w sensie twierdzenia Shannona
d. chęć eliminowania błędów w przypadku transmisji z zakłóceniami prowadzi do zmniejszania prędkości transmisji i wydłużania wyrazów kodowych czyli do konieczności pewnego nadmiaru informacji w procesie kodowania
Jak już wspomnieliśmy w rozważaniach o teorii informacji, gdy posługiwaliśmy się przykładem języka naturalnego, taki nadmiar ma dwie składowe — jedną, którą chcemy eliminować, bo stanowi obciążenie (występuje ona też dla kanałów bez zakłóceń) i drugą, którą chcemy zachować, bo pozwala eliminować w przypadku zakłóceń błędy transmisji.
Kody zabezpieczające
Kody posiadające własność wykrywania czy też korygowania błędów transmisji noszą nazwę kodów zabezpieczających. Zwykle polega to na wykorzystaniu algebraicznych własności kodów — stąd kody algebraiczne. Kody algebraiczne można podzielić na rekurencyjne i blokowe. W przypadku kodów blokowych mamy przyporządkowanie wiadomości — bloku (wyrazu kodowego) zbudowanego z L elementów alfabetu. Jeśli L jest stała dla wszystkich wiadomości mamy kod równomierny. Wśród kodów blokowych mamy rozdzielne i nierozdzielne. W kodach rozdzielnych pewne pozycje w wyrazach kodowych mają charakter informacyjny (zawierają elementy alfabetu konieczne do dekodowania wiadomości), inne kontrolny (nadmiarowy) — dodawane dla wykrycia i korygowania błędów. W przypadku kodów nierozdzielnych nie da się rozdzielić tych dwóch funkcji dla określonych