
- •Введение
- •1. Элементы теории множеств
- •1.1.Понятие множества.
- •1.2. Способы задания множеств.
- •1.3. Свойства множеств.
- •1.4. Конечные и бесконечные множества.
- •1.5. Подмножества.
- •1.6. Множество как абстракция.
- •1.7. Операции над множествами.
- •1.8.Декартово произведение множеств
- •1.9. Контрольные задания
- •2. Отношения
- •2.1. Общие положения
- •2.2. Задание отношений.
- •2.3. Виды отношений.
- •2.3.1. Рефлективность.
- •2.3.2. Симметричность.
- •2.3.3. Транзитивность.
- •2.4. Отношение эквивалентности
- •2.5. Функция.
- •2.6. Отношение как базовое понятие в реляционных
- •2.7. Контрольные задания
- •3. Элементы алгебры логики
- •3.1. Силлогизмы Аристотеля.
- •3.2. Высказывания.
- •3.3. Исчисление высказываний и
- •3.4. Функции алгебры логики
- •3.5. Равносильности алгебры логики
- •3.6. Одна логическая задача
- •3.7. Реализация функций в элементных базисах
- •3.9. Совершенная конъюнктивная нормальная форма
- •3.10. Реализация операции суммирования в компьютере
- •3.11. Контрольные задания
- •4. Элементы теории графов
- •4.1. История возникновения
- •4.2. Основные понятия
- •4.3. Матрицы графа
- •4.4. Деревья
- •4.5. Раскраска
- •5. Элементы теории алгоритмов
- •5.1. Интуитивное понятие алгоритма
- •5.2. Свойства алгоритмов
- •5.3. Вычислительные и комбинаторные алгоритмы
- •5.5. Асимптотические оценки сложности алгоритма
- •Порядки сложности алгоритма
- •5.6. Комбинаторный взрыв
- •6. Полиномиальные алгоритмы
- •6.1. Построение минимального остовного дерева.
- •6.1.1. Жадный алгоритм
- •6.1.2. Алгоритм Прима
- •6.2. Контрольные задания
- •7. Эвристические алгоритмы
- •7.1. Алгоритм последовательной раскраски
- •7.2. Контрольные задания
- •8. Сетевое планирование
- •8.1. Основные понятия
- •8.2 Параметры сетевого планирования
- •8.3. Вычисление параметров сетевого графика
- •8.4. Контрольные задания
- •9. Элементы абстрактной теории автоматов
- •9.1. Определение абстрактного автомата
- •9.2. Методы задания автоматов
- •9.3. Связь между моделями Мили и Мура.
- •9.4.1. Преобразование автомата Мура в автомат Мили
- •9.4.2. Преобразование автомата Мили в автомат Мура
- •9.5. Контрольные задания
- •10. Уточнение понятия алгоритма
- •10.1. Машина Тьюринга
- •Для каждого алгоритма u из класса к1 существует равносильный ему алгоритм l из класса к2.
- •10.2. Нормальный алгоритм Маркова
7. Эвристические алгоритмы
Как говорилось выше, большинство комбинаторных задач имеют оценку сложности алгоритма не ниже экспоненциальной. Это означает, что для них нахождение оптимального решения в реальных задачах большой размерности невозможно. Поэтому следует отказаться от поиска оптимального решения и искать приближенное.
Алгоритмы называются эвристическими, если для поиска решения используются приближенные методы. В них применяется ограниченная тактика поиска оптимального решения, заключающаяся в том, что, используя какую-либо здравую идею, на дереве перебора выделяют поддерево, на котором ищут наилучшее решение. Поскольку ищется локальный, а не глобальный оптимум, то не гарантируется, что выбранное решение совпадает с оптимальным.
Для эвристических алгоритмов характерны следующие основные правила:
не отменяй принятых решений;
упаковывая вещи, начинай с самых громоздких предметов.
Особенности применения эвристических алгоритмов рассмотрим на примере задачи раскраски графа.
Дан
граф G(X,U),
=n,
=m.
Требуется раскрасить граф G в минимальное
число цветов таким образом, чтобы никакие
две смежные вершины не были раскрашены
в один цвет.
7.1. Алгоритм последовательной раскраски
Алгоритм последовательной раскраски графа в минимальное число цветов имеет следующий вид.
1. Упорядочить вершины графа в порядке не возрастания степеней.
2. Положить i=0.
3. Положить i=i+1.
4. Просматривая вершины графа в порядке не возрастания степеней, окрашивать неокрашенные вершины в цвет i . Окрашиваемая в цвет i вершина не должна быть смежной с уже окрашенными в данный цвет вершинами.
5. Если все вершины графа окрашены, то перейти к п.6, иначе - к п.3.
6. Конец алгоритма.
Пример. Применим последовательный алгоритм для раскраски графа G, изображенного на рис. 7.1. Упорядочим его вершины от 1 до n.
G
9
8
Рис. 7.1. Граф G
В массиве А (рис. 7.2а) содержатся степени вершин графа G. Индекс массива соответствует номеру вершины.
В массиве В (рис. 7.2б) содержатся номера вершин графа G, упорядоченные по не возрастанию степеней.
Вершины массива В, раскрашенные 1-ой краской, отмечены в массиве С на рис. 7.2в.
Вершины массива В, раскрашенные 1-ой и 2-ой красками, находятся в массиве С на рис. 7.2г.
На рис.7.2д. в массиве С показана полная раскраска графа G.
-
степени вершин
4
4
3
8
3
3
3
4
4
номера вершин
графа
G
А
1 2 3 4 5 6 7 8 9
а) массив степеней графа G
В
-
номера вершин
графа G
4
1
2
8
9
3
5
6
7
1 2 3 4 5 6 7 8 9
б) упорядочение вершин графа G по
не возрастанию степеней
-
1
0
0
0
0
0
0
0
0
С 1 2 3 4 5 6 7 8 9
в) раскраска вершин графа G
1-ой краской
-
1
2
0
0
2
0
2
2
0
С 1 2 3 4 5 6 7 8 9
г) раскраска вершин графа G
1-ой и 2-ой красками
-
1
2
3
3
2
3
2
2
3
С 1 2 3 4 5 6 7 8 9
д) полная раскраска вершин
графа G в три цвета
Рис. 7.2. Раскраска графа G последовательным алгоритмом
Легко видеть, что в данном алгоритме выполняются все вышеперечисленные правила. Основное из них заключается в том, что если вершина окрашена, то она уже не перекрашивается в другой цвет.