- •Министерство образования и науки украины
- •Дискретная математика
- •0915 - “Компьютерная инженерия”
- •Содержание
- •Введение
- •Операции алгебры множеств
- •Теоретические сведения
- •Операция объединение множеств
- •Операция пересечение множеств
- •Операция разность множеств
- •Операция симметрическая разность множеств
- •Универсум
- •Дополнение множества
- •Множество всех подмножеств (булеан)
- •Логические функции и реляционные операторы
- •Основные орпределения
- •Теоретические сведения
- •Табличный способ задания логической функции
- •Матричный способ представления
- •Графический способ представления
- •Аналитический способ представления
- •Переход от табличной формы к аналитической
- •Минимизация функций методом Квайна – Мак-Класки
- •Минимизация логических функций методом Петрика
- •Переход от алгебры Буля к алгебре Жегалкина
- •Реляционный оператор Select (выборка)
- •Реляционный оператор Project (проекция)
- •Алгоритмы на графах
- •Теоретические сведения
- •Задача о кратчайшем пути
- •Алгоритм Дейкстры нахождения кратчайшего пути в графе
- •Пример решения задачи нахождения кратчайшего пути
- •Задача нахождения наибольшего потока
- •Алгоритм Форда и Фалкерсона нахождения максимального потока транспортной сети
- •Пример нахождения максимального потока
- •Транспортная задача по критерию стоимости
- •Алгоритм метода частичных потоков
- •Пример решения транспортной задачи по критерию стоимости
- •Алгоритм Флёри нахождения эйлерова цикла
- •Пример решения задачи о коммивояжёре
- •Алгоритм Краскала нахождения остова минимального веса
- •Кодирование информации
- •6. Исправление ошибок в линейном систематическом коде.
- •7. Исправление ошибок в коде Хэмминга.
- •8. Исправление ошибок в циклическом коде.
- •Основные определения
- •Теоретические сведения
- •Построение онк по методике Шеннона-Фано
- •Построение онк по методике Хаффмена
- •Построение линейного систематического кода
- •Исправление ошибок в линейном систематическом коде
- •Построение кода Хємминга
- •Исправление ошибок в коде Хэмминга
- •Построение циклического кода
- •Исправление ошибок в циклическом коде
- •Алгоритмы теории чисел
- •Теоретические сведения
- •Вычисление степени числа а по модулю n
- •Алгоритм Евклида для нахождения наибольшего общего делителя
- •Вычисление обратных величин
- •Основные способы нахождения обратных величин
- •Расширенный алгоритм Евклида
- •Китайская теорема об остатках
Построение циклического кода
Информационная кодовая комбинация G(x) степени (k-1) умножается на одночлен x n-k и прибавляется R(x) - остаток от деления данного произведения на образующий многочлен Р(х) степени ρ:
F(x) = x n-k×G(x) R(x)
Т.о. первые k символов полученной кодовой комбинации будут совпадать с информационными символами.
Пример:
Пусть k = 12. Построить циклический код с помощью образующего многочлена пятой степени Р(х) = х5 х4 х2 1.
Пусть G(x) = х10 х6 х4 х3 1, т.е. G(x) = 010001011001. Найти F(x).
Решение
Находим произведение x n-k× G(x) = х5 × G(x) = х5 × (х10 х6 х4 х3 1) = х15 х11 х9 х8 х5
Получаем частное G(x) × x n-k х15 х11 х9 х8 х5
--------------------- = -------------------------------------------------
Р(х) х5 х4 х2 1
Остаток будет: R (x) = х4 х2 1.
Т.о. кодовая комбинация будет: х15 х11 х9 х8 х5 х4 х2 1 =
= 010001011001 10101
------------------ -------
k ρ
Исправление ошибок в циклическом коде
Производится по остаткам от деления принятой комбинации на образующий многочлен Р(х): если принятая комбинация делится на Р(х) без остатка, то код принят без ошибок. При наличии остатка определяют его вес .
Если (число исправляемых ошибок), то F(x) остаток = правильная кодовая комбинация.
Если , то циклически сдвигаем полученную кодовую комбинацию влево на один разряд. Полученную комбинацию делим на образующий многочлен Р(х). Определяем вес остатка .
Если , то сдвинутая комбинация остаток. Сдвигаем вправо циклически на один разряд и получаем правильную кодовую комбинацию.
Если , то циклически сдвигаем сдвинутую кодовую комбинацию влево на один разряд. Полученную комбинацию делим на образующий многочлен Р(х). Определяем вес остатка .
И так до тех пор пока не подучим .
Пример: F(x) = 1000110. P(x) = х3 х 1.
Исправить ошибку при ее наличии. = 1.
Решение
1.
1000110 |
1011 |
1011 |
1011 |
1111 |
|
1011 |
|
1000 |
|
1011 |
|
11 |
|
=2. .
Сдвигаем F(x) влево на один разряд: 0001101
2.
0001101 |
1011 |
1011 |
1 |
0110 |
|
=2. .
Сдвигаем F(x) влево на один разряд: 0011010
3.
0011010 |
1011 |
1011 |
1011 |
1100 |
|
1011 |
|
111 |
|
=3. .
Сдвигаем F(x) влево на один разряд: 0011010
4.
0110100 |
1011 |
1011 |
1011 |
1100 |
|
1011 |
|
1110 |
|
1011 |
|
101 |
|
=2. .
Сдвигаем F(x) влево на один разряд: 0011010
5.
1101000 |
1011 |
1011 |
1011 |
1100 |
|
1011 |
|
1110 |
|
1011 |
|
1010 |
|
1011 |
|
1 |
|
=1. = .
Суммируем по модулю два: 1101000 1 = 1101001.
Циклически сдвигаем вправо на 4 разряда и получаем исправленную комбинацию: 1001110.
Выполнение работы
Каждый студент получает номер задания для написания программы, реализующей конкретную задачу. Инструментарий не ограничивается.
Программа должна предусматривать ввод информационных символов, ввод образующей матрицы или многочлена, выдачу результатов.
Содержание отчета
1. Наименование и цель работы
2. Краткие теоретические сведения
3. Описание программы
4. Схема алгоритма
5. Текст программы
6. Контрольный пример
7. Выводы
Контрольные вопросы
1. Что такое коды ОНК?
2. В чем различие методик Шеннона-Фано и Хаффмена?
3. Основные шаги построения помехоустойчивых кодов.
4. Этапы нахождения ошибок в линейном систематическом коде, коде Хэмминга, циклическом коде.
ЛАБОРАТОРНАЯ РАБОТА № 5
