Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная математика УчебПос.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
16.32 Mб
Скачать

Примеры решения задач

1) Выяснить, является ли код однозначно декодируемым?

С(S) = {b1, b1b2, b3b1}

Решение

Код S не является префиксным, кроме того и код S-1 = {b1, b2b1, b1b3} не является префиксным. Однако по коду можно однозначно восстановить исходное слово. Алгоритм следующий:

a). В кодовом слове находим все буквы b2 и выделяем пары b1b2,

b). В кодовом слове находим все буквы b3 и выделяем пары b3b1,

c). Заменяют найденные пары символами исходного алфавита, и определяются оставшиеся буквы b1.

2) Алфавитное кодирование задано схемой S в виде таблицы

Таблица 5.2

a1

a2

a3

a4

a5

b1b2

b1b3b2

b2 b3

b1b2 b1b3

b2 b1b2 b2 b3

C помощью общего критерия взаимной однозначности определить, является ли схема однозначной.

Решение

a) Для каждого элементарного кода выписываем все нетривиальные разложения:

b1 = (b1)(b2)

b2 = (b1)(b3b2) = (b1b3)(b2)

b3 = (b2)(b3)

b4 = (b1)(b2 b1b3) = (b1b2)(b1b3) = (b1b2 b1)( b3)

b5 = (b2)(b1b2 b2 b3) = (b2 b1)(b2 b2 b3) = (b2 b1b2)(b2 b3) = (b2 b1b2 b2)(b3)

b) Выписываем множество M1, состоящее из слов b', являющихся началом нетривиальных разложений.

М1 = {b1, b1b3, b2, b1b2, b1b2 b1, b2 b1, b2 b1b2, b2 b1b2 b2}

c) Выписываем множество M1, состоящее из слов b", являющихся окончаниями нетривиальных разложений

M2 = {b2, b3b2, b3, b2 b1b3, b1b3, b1b2 b2 b3, b2 b2 b3, b2 b3}

d) Выписываем множество М = М1 Ç М2 È {Ù}, т.е. множество слов, являющихся как началом, так и окончанием нетривиального разложения и пробел.

M = {b2, b1b3, Ù}

e) Выписываем все разложения, связанные с множеством M, т.е.

b = b'b1b2… binb", где b', b" Î М, причем n может быть равно 0 (заменяется Ù).

b2 = (b1b3)Ù(b2)

b4 (b1b2)(b1b3) = Ù b1 b1b3

b5 = (b2)(b1b2)(b2 b3) =(b2) b1b3Ù

f) По полученным разложениям строится ориентированный граф, следующим образом: вершины графа отождествляются с элементами множества М, пара вершин b' и b" соединяются ребрами только в том случае, если существует разложение b'b1b2… binb", ребру приписывается значение b1b2… bin.

Рис. 5.1

g) По полученному графу легко проверить, обладает ли схема кодирования однозначностью. Т.к. в графе есть цикл, проходящий через Ù. то взаимно-однозначного кодирования нет.

h) Найдем слово. декодируемое неоднозначно: начнем выписывать последовательно слова. присвоенные ребрам и вершинам. начиная с пробела и заканчивая пробелом:

b1b2 b1b3 b2 b1b2 b2b3

b1 = (b1b2)(b1b3b2)(b1b2)(b2b3) ® a1 = a1a2a1a3

b2 = (b1b2b1b3)(b2b1b2b2b3) ® a2 = a4a5

3) Пусть задано сообщение a = 1011011 = a1a2a3a4a5a6a7. Для этого сообщения необходимо построить код Хемминга.

Решение

a). Определим длину кода Хемминга:

m = 7, 2k >= k + 10, k = 4, l = 11.

b). Представим каждое число i из множества L = {1, 2, … l} в виде k-разрядного числа t = Vk-1Vk-2..V0 . Результат запишем в виде таблицы 5.3.

с). Разобьем множество L на подмножества следующим образом:

L0 = {1, 3, 5, 7, 9, 11}

L1 = {2, 3, 6, 7, 10, 11}

L2 = {4, 5, 6, 7}

L3 = {8, 9, 10, 11}

Таблица 5.3

V 3

V 2

V 1

V 0

1

0

0

0

1

2

0

0

1

0

3

0

0

1

1

4

0

1

0

0

5

0

1

0

1

6

0

1

1

0

7

0

1

1

1

8

1

0

0

0

9

1

0

0

1

10

1

0

1

0

11

1

0

1

1

d). Первые элементы (их ровно k) являются степенью числа 2, они определяют номера контрольных разрядов кода Хемминга:

b1 b2 b4 b8

e). Остальные разряды являются информационными, заполняются исходного сообщения по порядку:

b3 = 1, b5 = 0, b6 = 1, b7 = 1, b9 = 0, b10 = 1, b11 = 1.

f). Контрольные разряды заполняются следующим образом:

b1 = b3 Å b5 Å b7 Å b9 Å b11 = 1 Å 0 Å 1 Å 0 Å 1 = 1,

b2 = b3 Å b6 Å b7 Å b10 Å b11 = 1 Å 1 Å 1 Å 1 Å 1 = 1,

b4 = b5 Å b6 Å b7 = 0 Å 1 Å 1 = 0,

b8 = b9 Å b10 Å b11 = 0 Å 1 Å 1 = 0.

Окончательное решение для слова a = 1011011: b = 11100110011.

4) Пусть вместо кода b = 11100110011, на приемник пришло слово b¢ = 10100110011. Найти, в каком разряде произошла ошибка, и исправить ее.

Решение

Найдем числа V¢:

V¢0 = b1 Å b3 Å b5 Å b7 Å b9 Å b11 Å b13 = 1 Å 1 Å 0 Å 1 Å 0 Å 1 = 0,

V¢1 = b2 Å b3 Å b6 Å b7 Å b10 Å b11 = 0 Å 1 Å 1 Å 1 Å 1 Å 1 = 1,

V¢2 = b4 Å b5 Å b6 Å b7 = 0 Å 0 Å 1 Å 1 = 0,

V¢3 = b8 Å b9 Å b10 Å b11 =0 Å 0 Å 1 Å 1 = 0.

t = 0100, следовательно ошибка произошла в разряде 2, исправим символ в этом разряде на противоположный.

Исходный код b = 11100110011.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]