
- •Оглавление
- •Глава 5. Основы математической теории информации 58
- •Глава 6. Элементы теории чисел 74
- •6.2.1. Основные определения 83
- •Глава 7. Алгебраические структуры 87
- •Введение
- •Глава 1.Введение
- •1.1.Основные понятия криптографии
- •1.1.1.История развития криптографии
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •1.1.2.Сложность алгоритмов
- •1.1.3.Стойкость криптографических систем
- •Глава 2.Элементы теории множеств
- •2.1.Основные понятия теории множеств
- •2.1.1.Обозначения и способы задания множеств
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.1.2.Операции над множествами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.1.3.Прямое произведение множеств
- •П римеры решения задач
- •Задачи для самостоятельного решения
- •2.2.Отношения между множествами
- •2.2.1.Определение бинарных отношений
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.2.2.Представление бинарных отношений в виде графа, матрицы
- •Примеры решения задач
- •Построенная таблица есть таблица бинарного отношения. Задачи для самостоятельного решения
- •2.2.3.Свойства бинарных отношений, отношение эквивалентности
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •Глава 3.Булева алгебра
- •3.1.Булевы функции
- •3.1.1.Понятие булевой функции
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.2.Суперпозиция функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.3.Двойственные функции
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.4.Логические схемы
- •Примеры решения задач
- •3.2.Нормальные формы
- •3.2.1.Разложение функций по переменным
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.2.2.Минимизация нормальных форм, карты Карно
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Полиномы Жегалкина, алгоритм их построения для произвольных функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.3.Полные системы функций
- •3.3.1.Полнота множества функций
- •Примеры решения задач
- •Глава 4.Элементы теории графов
- •4.1.Основные понятия теории графов
- •4.1.1.Способы задания графов, основные определения
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.2.Числовые характеристики графов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.3.Операции с графами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.4.Изоморфизм графов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.6.Расстояния в графе, центры графа
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.7.Эйлеровы циклы
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.8.Алгоритм построения Эйлерова цикла
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.9.Гамильтоновы циклы
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.10.Алгоритм построения гамильтонова цикла в графе
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.2.2.Алгоритм Краскала для построения минимального остовного дерева
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.2.3.Обходы дерева
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Задачи для повторения
- •Вопросы для повторения
- •Глава 5.Основы математической теории информации
- •5.1.Меры информации
- •5.1.1.Мера Хартли
- •Примеры решения задач
- •5.1.2.Мера Шеннона
- •Примеры решения задач
- •5.1.3.Единицы измерения количества информации
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.2.2.Код Хаффмана
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3. Помехоустойчивое кодирование
- •5.3.1. Код с проверкой на четность
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.2.Коды с повторением
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.3.Групповой код Хемминга
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.4.Помехозащищенность кода
- •Примеры решения задач
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.2.Теорема о делении с остатком. Алгоритм Евклида
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.3.Отношение сравнимости
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.4.Алгебра вычетов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.5.Решение сравнений вида ахb(mod m)
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.6.Применение алгебры вычетов к простейшим шифрам
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.7.Построение и использование хеш-функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Задачи для повторения
- •6.2.Алгебра многочленов
- •6.2.1.Основные определения
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.2.2.Нод многочленов
- •Примеры решения задач
- •Задачи для самостоятельного решения.
- •6.2.3.Разложение многочлена на множители
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •Глава 7.Алгебраические структуры
- •7.1.Основные понятия и свойства алгебраических структур
- •7.1.1.Алгебра
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.2.Группа
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.3.Кольцо
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.4.Поле
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.5.Конечные поля
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.Многочлены над конечными полями
- •7.2.1.Каноническое разложение многочлена
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.2.Порядок многочлена над конечным полем
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.3.Сравнение многочленов по данному модулю
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.4.Поиск неприводимых многочленов поля gf(g(X)) над полем gf(р)
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.Генераторы псевдослучайных последовательностей
- •7.3.1.Понятие псевдослучайной последовательности чисел
- •7.3.2.Практические методы получения псевдослучайных чисел
- •Задачи для самостоятельного решения
- •7.3.3.Понятие линейной последовательности
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.4. Периодичность линейных рекуррентных последовательностей
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.5.Связь линейных рекуррентных последовательностей над конечными полями с многочленами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •214018, Г. Смоленск, проспект Гагарина, 56, т.: (0812) 55 – 41 – 04.
4.2.3.Обходы дерева
Основные операции на деревьях: поиск элемента, добавление элемента, удаление элемента. Для поиска элемента в произвольном бинарном дереве необходимо обойти все элементы этого дерева. Существует два основных способа обхода дерева: в глубину и в ширину.
Алгоритм обхода дерева в глубину.
Обход в глубину производится рекурсивно либо с использованием стека. В обоих случаях можно обходить узлы дерева в различной последовательности. Обход начинается от корня. Выделяют три наиболее важных порядка обхода в глубину:
- префиксный (прямой, левосторонний) обход — сначала обрабатывается текущий узел, затем левое и правое поддеревья;
- инфиксный (симметричный) обход — сначала обрабатывается левое поддерево текущего узла, затем корень, затем правое поддерево;
- постфиксный (обратный, от листьев к корню) обход — сначала обрабатываются левое и правое поддеревья текущего узла, затем сам узел.
Алгоритм обхода дерева в ширину.
Обход в ширину производится с помощью очереди. Первоначально в очередь помещается корень, затем, пока очередь не пуста, выполняются следующие действия:
Из очереди выталкивается очередной узел;
Этот узел обрабатывается;
В очередь добавляются оба потомка этого узла.
Заметим, что перечисление узлов происходит в порядке удаления от корня, что делает поиск в ширину удобным, например, для поиска узла дерева со значением k, наиболее близкого к корню, и т.д.
Примеры решения задач
Дан граф в виде дерева (рис. 88). Определите последовательности вершин при префиксном, инфиксном и постфиксном обходах графа в глубину.
Рис. 88
Решение.
Префиксный обход: I. A B D M N E C
II. B D C E R
Инфиксный обход: I. M D N B E A C
II. D B E C R
Постфиксный обход: I. M N D E B C A
II. D E R C B
Для графа на рис. 88 укажите обход данного дерева в ширину.
Решение.
Узлы дерева на рисунке перечисляются в порядке обхода в ширину следующим образом: I. A, B, C, D, E, M, N;
II. B, D, C, E, R.
Задачи для самостоятельного решения
Для графов на рисунках 70-74 укажите последовательность вершин при обходе графа в глубину тремя способами: префиксным, инфиксным и постфиксным.
Для графов на рисунках 70-74 укажите последовательность вершин при обходе графа в ширину.
Задачи для повторения
По рис. 89 выполните следующие упражнения:
Выясните, является ли граф двудольным?
Постройте матрицу инцидентности.
Постройте матрицу смежности.
Построить три остовных дерева.
Выясните, является ли граф планарным?
Укажите Эйлеров путь в графе, если он существует.
Изобразите три клики.
Дан граф G (см. рис. 90). Для него построить:
дополнение
;
матрицу смежности;
матрицу инцидентности;
цикл Эйлера;
цепь Эйлера;
цикл Гамильтона;
цепь Гамильтона.
Р
ис.
89 Рис. 90
Изобразите граф по заданной матрице смежности и ответьте на следующие вопросы:
|
V1 |
V2 |
V3 |
V4 |
V5 |
V6 |
V7 |
V1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
V2 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
V3 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
V4 |
0 |
0 |
1 |
0 |
0 |
2 |
0 |
V5 |
1 |
0 |
0 |
0 |
0 |
2 |
0 |
V6 |
1 |
1 |
0 |
2 |
2 |
0 |
1 |
V7 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Является ли полученный граф связным, полным, планарным, двудольным, мультиграфом, псевдографом? Ответ объясните.
Для полученного графа построить матрицу инцидентности.
Найдите степени вершин данного графа. Какие из вершин являются висячими, изолированными?
Указать два произвольных маршрута из V3 в V5, не являющихся цепями.
Указать цепь и простую цепь из V4 в V5.
Указать цикл и простой цикл.
Существует ли в графе Эйлеров цикл? Если да, укажите его. Если нет, объясните почему.
Существует ли в графе Эйлерова цепь? Если да, укажите её. Если нет, объясните почему.
Является ли полученный граф Эйлеровым? Объясните ответ.
Изобразить граф, состоящий из 10 вершин и 16 ребер, и ответьте на следующие вопросы:
Выясните, является ли он псевдографом, мультиграфом, орграфом?
Выписать:
пары смежных вершин;
висячие вершины;
изолированные вершины.
Определите степень каждой вершины.
Укажите три маршрута из V1 в V7 и выясните, являются ли они цепью, простой цепью, Найдите их длину.
Выясните, является ли граф связным? Если нет, укажите компоненты связности.
По рис. 91 и 92 ответьте на следующие вопросы:
является ли данный граф связным? Если да, то укажите компоненты связности.
Сколько вершин в данном графе?
Сколько ребер?
Найдите степени всех вершин графа.
Перечислите изолированные вершины.
Перечислите висячие вершины.
Укажите два произвольных маршрута, не являющихся цепью и циклом.
Укажите цепь, не являющуюся циклом и цикл.
Укажите простую цепь и простой цикл.
Является ли граф полным?
Является ли граф регулярным?
Изобразите два остовных подграфа.
Изобразите подграф, порожденный вершинами V1 , V2 , V4 , V5 , V7 .
Изобразите граф К6 – полный граф на 6 вершинах.
Решите задачу, используя графы. Из пункта А в пункт В выехали пять машин одной марки разного цвета: белая, черная, красная, синяя и зеленая. Черная едет впереди синей, зеленая – впереди белой, но позади синей, красная впереди черной. Какая машина едет первой, какая последней?