Реферат: Двоичный циклический код Хэмминга

--PAGE_BREAK--Порядок расчета Рлс и пример расчета Рлс для циклического (n,k)–кода Хэмминга, обеспечивающего минимум разности Рдоп – Рлс(n,k):

Произведем расчет для (18,13)-кода с d=3.

Для этого введем обозначения:

·                   Pбо– вероятность появления на выходе ДСК комбинации (n,k)-кода без ошибок при однократной передаче;

·                   Роо – вероятность появления на выходе ДСК комбинации (n,k)-кода с обнаруживаемыми ошибками при однократной передаче;

·                   Рно – вероятность появления на выходе ДСК комбинации (n,k)-кода с необнаруживаемыми ошибками при однократной передаче;

·                   Рi£vо– вероятность появления на выходе ДСК комбинации с ошибками кратности i£v;

·                   Рi>vо– вероятность появления на выходе ДСК комбинации с ошибками кратности i>v, которые расположены так, что обнаруживаются кодом;

·                   Рлс– вероятность появления на выходе СС с неограниченным числом переспросов ложного сообщения.

Найдем:

хэмминг код цикличный программа

Pбо = qn, где q=1-p;

Рi£vо =<img width=«106» height=«58» src=«ref-1_1662436692-461.coolpic» v:shapes="_x0000_i1027">, где v=d-1;

Роо = Рi£vо+ Рi>vо;

Рно £1- Pбо — Рi£vо;

Рлс = Рно/(1- Роо).



Пример:
Pбо = qn=0,999418=0,98925490, где q=1-p=0,9994;

Рi£vо =<img width=«103» height=«58» src=«ref-1_1662437153-457.coolpic» v:shapes="_x0000_i1028">=<img width=«74» height=«32» src=«ref-1_1662437610-213.coolpic» v:shapes="_x0000_i1029">+<img width=«75» height=«32» src=«ref-1_1662437823-220.coolpic» v:shapes="_x0000_i1030">=

18*0,0006*0,98984881+153*0,00000036*0,99044307=0,01074492, где v=d-1=2;

Роо = Рi£vо+ Рi>vо= 0,01074492;

Рно £1- Pбо — Рi£vо=1-0,98925490-0,01074492=0,00000018;

Рлс = Рно/(1- Роо)=0,00000018/(1-0,01074492)=0,00000018.

Структурная схема алгоритма расчета кода, ее описание

<img width=«589» height=«829» src=«ref-1_1662438043-64362.coolpic» v:shapes="_x0000_i1031">


<img width=«621» height=«891» src=«ref-1_1662502405-96447.coolpic» v:shapes="_x0000_i1032">


Описание алгоритма:

1)                Начало;

2)                Объявляем P = 0.0006, Pdop=0.0000002, i=0, k, Pbo, Poo, Pno, Pls, lgPls, h=0, M[61], H[], d=3;

3)                Вручную меняем d(по умолчанию d=3);

4)                Если d=2, то i=11, иначе переходим к шагу 7;

5)                Еслиi<=31, тоPbo=(1-P)^i, Poo=0, Poo=(C )*(P^1)*(1-P)^(i-1),

Pno=1-Pbo-Poo, Pls=Pno/(1-Poo), lgPls=log10(Pls),

M[i-11]=(Pdop-Pls), i=i+1, переходим к шагу 5, иначе переходим к шагу 35;

6)                Выводим Pbo, Poo, Pno, Pls, lgPls, переходим к шагу 5;

7)                Если d=3, то i=11, иначе переходим к шагу 21;

8)                Если i<=15, то Pbo=(1-P)^i, Poo=0, k=1, иначе переходим к шагу 14;

9)                Выводим Pbo;

10)            Если k<=2, то Poo=<img width=«107» height=«58» src=«ref-1_1662598852-465.coolpic» v:shapes="_x0000_i1033">, иначе переходим к шагу 12;

11)            k=k+1, переходим к шагу 10;

12)            Pno=1-Pbo-Poo, Pls=Pno/(1-Poo), lgPls=log10(Pls),

M[i+10]=(Pdop-Pls), i=i+1;

13)            Выводим Poo, Pno, Pls, lgPls, переходим к шагу 8;

14)            i=17;

15)            Если i<=31, то Pbo=(1-P)^i, Poo=0, k=1, иначе переходим к шагу 35;

16)            Выводим Pbo;

17)            Если k<=2, то Poo=<img width=«107» height=«58» src=«ref-1_1662598852-465.coolpic» v:shapes="_x0000_i1034">, иначе переходим к шагу 19;

18)            k=k+1, переходим к шагу 17;

19)            Pno=1-Pbo-Poo, Pls=Pno/(1-Poo), lgPls=log10(Pls),

M[i+10]=(Pdop-Pls), i=i+1;

20)            Выводим Poo, Pno, Pls, lgPls, переходим к шагу 15;

21)            Если d=4, то i=11, иначе переходим к шагу 35;

22)            Если i<=15, то Pbo=(1-P)^i, Poo=0, k=1, иначе переходим к шагу 28;

23)            Выводим Pbo;

24)            Если k<=3, то Poo=<img width=«107» height=«58» src=«ref-1_1662599782-462.coolpic» v:shapes="_x0000_i1035">, иначе переходим к шагу 26;

25)            k=k+1, переходим к шагу 24;

26)            Pno=1-Pbo-Poo, Pls=Pno/(1-Poo), lgPls=log10(Pls),

M[i+10]=(Pdop-Pls), i=i+1;

27)            Выводим Poo, Pno, Pls, lgPls, переходим к шагу 22;

28)            i=17;

29)            Если i<=31, то Pbo=(1-P)^i, Poo=0, k=1, иначе переходим к шагу 35;

30)            Выводим Pbo;

31)            Если k<=3, то Poo=<img width=«107» height=«58» src=«ref-1_1662599782-462.coolpic» v:shapes="_x0000_i1036">, иначе переходим к шагу 33;

32)            k=k+1, переходим к шагу 31;

33)            Pno=1-Pbo-Poo, Pls=Pno/(1-Poo), lgPls=log10(Pls),

M[i+10]=(Pdop-Pls), i=i+1;

34)            Выводим Poo, Pno, Pls, lgPls, переходим к шагу 29;

35)            h=0, i=0;

36)            Если i<=60, то переходим к шагу 37, иначе переходим к шагу 38;

37)            Если M[i]>0, то h=h+1, i=i+1, иначе i=i+1 и переходим к шагу 36;

38)            Выделяем память под массив Н из hэлементов.

39)            Если i<=60, то переходим к шагу 40, иначе переходим к шагу 41;

40)            Если M[i]>0, то H[k]=M[i], k=k+1, i=i+1, иначе i=i+1 и переходим к шагу 39;

41)            i=0;

42)            Ищем минимальный элемент в массиве Н;

43)            Если i<=60, то переходим к шагу 44, иначе переходим к шагу 50;

44)            Если M[i]=минимальному элементу, то и переходим к шагу 45, иначе i=i+1 и переходим к шагу 43;

45)            Если i>=0 и i<=20, то выводим (i+11,i+10)-код, иначе переходим к шагу 46;

46)            Если i>=21 и i<=25, то выводим (i-10,i-14)-код, иначе переходим к шагу 47;

47)            Если i>=26 и i<=40, то выводим (i-9,i-14)-код, иначе переходим к шагу 48;

48)            Если i>=41 и i<=45, то выводим (i-30,i-35)-код, иначе переходим к шагу 49;

49)            Если i>=46 и i<=60, то выводим (i-29,i-35)-код, иначе i=i+1 и переходим к шагу 39;

50)            Выводим минимальный элемент из массива Н, как минимум разницы Рдоп-Рлс;

51)            Конец.
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по коммуникациям