Главная страница
Навигация по странице:

  • Ответ

  • Теория информации. Вариант_05. Выясните, какие из представленных ниже кодов, является префиксными


    Скачать 36.72 Kb.
    НазваниеВыясните, какие из представленных ниже кодов, является префиксными
    АнкорТеория информации
    Дата17.05.2023
    Размер36.72 Kb.
    Формат файлаdocx
    Имя файлаВариант_05.docx
    ТипДокументы
    #1138416

    1. Выясните, какие из представленных ниже кодов, является префиксными:


    {01, 101, 110, 1, 10}

    {11, 001, 101, 1001, 110}

    { 10, 01, 110, 111}

    {01, 101, 110, 111}

    {11, 01, 011, 111}

    {01, 110, 001, 111}
    Ответ: префиксными кодами являются:
    {01, 101, 110, 1, 10}

    {10, 01, 110, 111}

    {01, 101, 110, 111}

    {01, 110, 001, 111}


    1. Дискретная случайная величина X, задана распределением:




    Х

    1

    2

    3

    4

    5

    6

    7

    8

    Р

    0,15

    0,2

    0,1

    0,15

    0,1

    0,05

    0,2

    0,05


    Найти энтропию.
    Ответ:
    H(X) = - (0,15 * log2(0,15) + 0,2 * log2(0,2) + 0,1 * log2(0,1) + 0,15 * log2(0,15) + 0,1 * log2(0,1) + 0,05 * log2(0,05) + 0,2 * log2(0,2) + 0,05 * log2(0,05))
    H(X) ≈ - (0,15 * (-3,16993) + 0,2 * (-2,32193) + 0,1 * (-3,32193) + 0,15 * (-3,16993) + 0,1 * (-3,32193) + 0,05 * (-4,32193) + 0,2 * (-2,32193) + 0,05 * (-4,32193))
    H(X) ≈ 0,55354 + 0,46439 + 0,33219 + 0,47549 + 0,33219 + 0,21610 + 0,46439 + 0,21610
    H(X) ≈ 2,25449
    Энтропия дискретной случайной величины X составляет примерно 2,25449.


    1. Определить энтропию, приходящуюся в среднем на одну букву и на одно двухбуквенное сочетание, количество информации, которое несёт в себе сообщение о получении первой буквы относительно второй. В качестве сообщения использовать Ваше ФИО с пробелами, например: «Иванов Иван Иванович».


    Ответ:

    Сообщение: Лихобабин Василий Васильевич


    Буква

    Количество

    Вероятность

    Л

    1

    1/21

    и

    3

    3/21

    х

    1

    1/21

    о

    2

    2/21

    б

    2

    2/21

    а

    2

    2/21

    н

    1

    1/21

    пробел

    1

    1/21

    В

    2

    2/21

    с

    2

    2/21

    л

    2

    2/21

    й

    1

    1/21

    в

    1

    1/21

    е

    1

    1/21

    ч

    1

    1/21



    Расчёт энтропии на основе вероятностей:
    H(буква) = - ((1/21) * log2(1/21) + (3/21) * log2(3/21) + (1/21) * log2(1/21) + (2/21) * log2(2/21) + (2/21) * log2(2/21) + (2/21) * log2(2/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (2/21) * log2(2/21) + (2/21) * log2(2/21) + (2/21) * log2(2/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21))
    H(буква) = - ((1/21) * (-4.39) + (3/21) * (-1.585) + (1/21) * (-4.39) + (2/21) * (-2.585) + (2/21) * (-2.585) + (2/21) * (-2.585) + (1/21) * (-4.39) + (1/21) * (-4.39) + (2/21) * (-2.585) + (2/21) * (-2.585) + (2/21) * (-2.585) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39)))
    H(буква) = 0.202 + 0.227 + 0.202 + 0.393 + 0.393 + 0.393 + 0.202 + 0.202 + 0.393 + 0.393 + 0.393 + 0.202 + 0.202 + 0.202 + 0.202
    H(буква) = 4.629
    "Лихобабин Василий Васильевич" энтропия, приходящаяся в среднем на одну букву в сообщении составляет примерно 4.629 бит.


    Буквы

    Количество

    Вероятность

    Л и х

    1

    1/21

    и х

    1

    1/21

    х о

    1

    1/21

    о б

    2

    2/21

    б а

    1

    1/21

    а б

    1

    1/21

    б и

    1

    1/21

    и н

    1

    1/21

    н

    1

    1/21

    В а

    1

    1/21

    а с

    1

    1/21

    с и

    1

    1/21

    и л

    1

    1/21

    л и

    1

    1/21

    и й

    1

    1/21

    й

    1

    1/21

    В а

    1

    1/21

    а с

    1

    1/21

    с и

    1

    1/21

    и л

    1

    1/21

    л ь

    1

    1/21



    H(пара) = - ((1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (2/21) * log2(2/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21) + (1/21) * log2(1/21))

    H(пара) = - ((1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (2/21) * (-2.585) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39) + (1/21) * (-4.39)))
    H(пара) = 0.202 + 0.202 + 0.202 + 0.393 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202 + 0.202
    H(пара) = 4.058
    Энтропия, приходящаяся в среднем на одно двухбуквенное сочетание в сообщении "Лихобабин Василий Васильевич" составляет примерно 4.058 бит

    Ответ:


    1. Вероятности появления символов источника заданы таблицей:




    Х

    1

    2

    3

    4

    5



    n

    5

    4

    4

    3

    3

    19

    w

    5/19

    4/19

    4/19

    3/19

    3/19

    1


    Найти длину кода и информационную избыточность при равномерном кодировании.
    Ответ:
    Длина кода для каждого символа:
    L(1) = log2(1/(5/19))

    L(2) = log2(1/(4/19))

    L(3) = log2(1/(4/19))

    L(4) = log2(1/(3/19))

    L(5) = log2(1/(3/19))
    L(1) = log2(19/5)

    L(2) = log2(19/4)

    L(3) = log2(19/4)

    L(4) = log2(19/3)

    L(5) = log2(19/3)

    I = (5/19) * L(1) + (4/19) * L(2) + (4/19) * L(3) + (3/19) * L(4) + (3/19) * L(5)
    I = (5/19) * log2(19/5) + (4/19) * log2(19/4) + (4/19) * log2(19/4) + (3/19) * log2(19/3) + (3/19) * log2(19/3)
    Длина кодов и информационная избыточность:
    L(1) ≈ 1.080

    L(2) ≈ 1.292

    L(3) ≈ 1.292

    L(4) ≈ 1.585

    L(5) ≈ 1.585
    I ≈ 0.378
    Таким образом, длины кодов при равномерном кодировании составляют около 1.080, 1.292, 1.292, 1.585 и 1.585 соответственно, а информационная избыточность составляет примерно 0.378.


    1. Используя частотные таблицы, полученные в задаче №3 и алгоритм Хаффмена, построить кодовые последовательности для букв русского алфавита. Каждый этап алгоритма необходимо подробно расписать.


    1. Используя частотные таблицы, полученные в задаче №3 и алгоритм Шеннона-Фано, построить кодовые последовательности для букв русского алфавита. Каждый этап алгоритма необходимо подробно расписать.




    1. Рассчитать среднюю длину кода для кодов, полученных в задачах №5 и №6. Определить, какой код наиболее эффективен.




    1. Методом взвешенных кодов закодировать и раскодировать сообщение «TEXT 123». TEXT заменить своим именем, 123 – количество букв в Вашем ФИО. Например для Иванов Иван Иванович получим: «IVAN 10» Используемый алфавит:

    • Латинские буквы (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z);

    • цифры (1 2 3 4 5 6 7 8 9 0);

    • знак пробела.

    Ответ:

    Присвоим каждому символу следующие веса:

    A = 10, B = 11, C = 12, D = 13, E = 14, F = 15, G = 16, H = 17, I = 18, J = 19, K = 20, L = 21, M = 22, N = 23, O = 24, P = 25, Q = 26, R = 27, S = 28, T = 29, U = 30, V = 31, W = 32, X = 33, Y = 34, Z = 35, пробел = 36, 1 = 1, 2 = 2, 3 = 3, 4 = 4, 5 = 5, 6 = 6, 7 = 7, 8 = 8, 9 = 9, 0 = 0.

    Теперь закодируем сообщение "VASILIY 20" с помощью взвешенных кодов:

    V = 31 (вес = 6)

    A = 10 (вес = 5)

    S = 28 (вес = 4)

    I = 18 (вес = 3)

    L = 21 (вес = 2)

    I = 18 (вес = 1)

    Y = 34 (вес = 0)

    (пробел) = 36 (вес = 0)

    2 = 2 (вес = 0)

    0 = 0 (вес = 0)

    Вычисление суммы взвешенных значений символов:

    316 + 105 + 284 + 183 + 212 + 181 + 340 + 360 + 20 + 00 = 186

    Контрольный символ (КС):

    КС = (37 - (186 % 37)) % 37

    КС = (37 - 22) % 37

    КС = 15

    Закодированное сообщение "VASILIY 20" будет выглядеть как "V6A5S4I3L2I1Y0P".

    Раскодирование сообщения

    V = 31 (вес = 6)

    6 = 6 (вес = 5)

    A = 10 (вес = 4)

    5 = 5 (вес = 3)

    S = 28 (вес = 2)

    4 = 4 (вес = 1)

    I = 18 (вес = 0)

    3 = 3 (вес = 0)

    L = 21 (вес = 0)

    2 = 2 (вес = 0)

    I = 18 (вес = 0)

    1 = 1 (вес = 0)

    Y = 34 (вес = 0)

    0 = 0 (вес = 0)

    P = 25 (вес = 0)

    Вычислим сумму взвешенных значений символов:

    316 + 65 + 104 + 53 + 282 + 41 + 180 + 30 + 210 + 20 + 180 + 10 + 340 + 00 + 25*0 = 666

    Проверим остаток от деления суммы на 37:

    666 % 37 = 15



    1. Методом Хемминга была закодировано некоторая комбинация α. После передачи по каналу связи было получено сообщение, содержащее комбинацию β =1100010. Необходимо проверить, есть ли ошибка в полученном сообщении и, при необходимости, исправить ее. Для решения использовать проверочную матрицу H и порождающую матрицу G:


    ,


    Ответ:

    β = 1100010

    H^T = (1 1 1)

    (0 1 0)

    (1 0 1)

    (0 1 1)

    (1 0 0)

    (0 1 0)

    (0 0 1)
    Выполним операцию умножения по модулю 2:
    синдром = β * H^T = (1 1 1 0 1 0 0) * (1 1 1) = (0 0 0)
    Полученный синдром ошибки равен нулевому вектору (синдром = 000), что означает, что ошибки в полученном сообщении β нет.
    Исправление ошибки (если была бы обнаружена):

    В случае, если синдром ошибки не равен нулевому вектору, мы могли бы определить позицию ошибки, сравнивая синдром ошибки со столбцами проверочной матрицы H. Затем мы могли бы инвертировать бит в этой позиции в полученном сообщении β для исправления ошибки. Однако, поскольку синдром равен нулю, исправление ошибки не требуется.

    Таким образом, в полученном сообщении β = 1100010 ошибок нет и оно может быть рассматриваться как корректное.



    1. Методом Хемминга закодировать комбинацию α=0110, построить порождающую проверочную матрицу. Внести ошибку в один из разрядов кодового вектора, найти синдром, найти и исправить ошибку.



    ,


    α = 0110

    G = (1 0 0 0 1 1 1)

    (0 1 0 0 1 1 0)

    (0 0 1 0 1 0 1)

    (0 0 0 1 0 1 1)
    β = α * G = (0 1 1 0 0 0 0)
    Таким образом, полученный кодовый вектор β равен 0110000.
    Внесение ошибки:

    Изменяем один из разрядов кодового вектора, чтобы создать ошибку.

    Допустим, мы внесли ошибку, инвертируя третий разряд кодового вектора β. Тогда новый кодовый вектор β' будет:
    β' = 0100000
    Нахождение синдрома:

    Умножаем полученный кодовый вектор β' на проверочную матрицу H, используя операцию умножения по модулю 2 (XOR), для вычисления синдрома ошибки.

    Синдром ошибки вычисляется следующим образом: синдром = β' * H^T, где H^T - транспонированная матрица H.

    Выполним необходимые вычисления:
    H^T = (1 1 1)

    (0 1 0)

    (1 0 1)

    (0 1 1)

    (1 0 0)

    (0 1 0)

    (0 0 1)
    синдром = β' * H^T = (0 1 0 0 0 0 0) * (1 1 1) = (1 1 1)
    Полученный синдром ошибки равен (1 1 1).
    Исправление ошибки:

    Сравниваем синдром ошибки со столбцами проверочной матрицы H, чтобы определить позицию ошибки.

    Инвертируем бит в позиции ошибки в кодовом векторе β' для исправления ошибки.

    В данном случае, синдром ошибки (1 1 1) указывает на третью позицию ошибки в проверочной матрице H. Мы инвертируем бит в третьей позиции кодового вектора β':
    Исправленный кодовый вектор β'' будет:
    β'' = 0110000
    Таким образом, исправленный кодовый вектор β'' равен 0110000.
    Кодовый вектор β'' снова стал исходной комбинацией α=0110, что указывает на успешное исправление ошибки.


    написать администратору сайта