4.4. Задача о Ханойской башне
Рассмотрим пример представления графом изменения состояний дискретной системы [18].
Это так называемая задача о Ханойской башне. Имеется три стержня, на первом из которых нанизано n дисков, диаметр которых убывает снизу вверх. Ставится цель: перекладывая диски по одному, расположить их в таком же порядке на третьем стержне, используя в качестве промежуточного, второй стержень и, соблюдая условия, чтобы ни на каком шаге больший диск не оказался выше меньшего ни на одном из стержней. Оптимизация заключается в достижении цели за наименьшее число шагов.
Легенда гласит, что в одном буддийском монастыре во Вьетнаме на первом стержне нанизано 64 диска. Если переложить все их по указанным правилам на третий стержень, то наступит конец света. Конец света – вопрос философский, но, тем не менее, не будем испытывать судьбу и рассмотрим задачи с меньшим числом дисков.
Рассмотрим n=1 (рис. 24).
Рис. 24. Задача о Ханойской башне для n=1
Задача для n=1 решается за один шаг, но возможен и неоптимальный вариант – два шага, т.е. сначала диск устанавливают на второй стержень, а потом на третий.
Обозначим X, Y и Z множества дисков, надетых соответственно на первый, второй и третий стержни. Состояние такой системы будем описывать набором элементов этих множеств (X,Y,Z).
Тогда возможные состояния такой системы имеют вид:
X Y Z
(1,0,0) – исходное,
(0,0,1) – целевое,
(0,1,0) – промежуточное.
Представим состояния системы в виде графа с использованием координатной плоскости с осями X и Z (рис. 25). Такое представление избавляет нас от необходимости указывать состояние вершин.
Рис. 25. Представление графом задачи о Ханойской башне при n=1
Третья ось на рис. 25 не указана, множество Y всегда можно получить как дополнение множеств X, Z до полного множества дисков.
Тогда путь 11 соответствует оптимальному решению задачи, а путь 101 – неоптимальному.
Рассмотрим случай n=2. Будем описывать элементы множеств в виде столбца цифр, соответствующих убыванию диаметра дисков:
X Y Z
(,0,0) – исходное состояние,
(2,1,0) – 1-й шаг,
(0,1,2) – 2-й шаг,
(0,0,) – 3-й шаг, целевое состояние.
Это оптимальное решение задачи – за 3 шага. Возможны также неоптимальные последовательности. Изобразим вначале все возможные последовательности в виде графа и обозначим все ребра следующим образом (рис. 26)
Рис. 26. Возможные последовательности решения
задачи о Ханойской башне для n=2
а) для трех множеств X,Y,Z, б) для двух множеств X,Z
Представим теперь случай n=2 на координатной плоскости, используя координаты – множества X,Z (первая и третья координаты). Получим рис. 27, на котором отмечены дуги, соответствующие рис. 26б. Видно, что этот граф как бы содержит в себе три графа для n=1, а оптимальное решение соответствует последовательности дуг а,b,с (,0;2,0;0,2;0,).
Общий способ решения задачи о Ханойской башне может быть получен путем анализа трансформации графа для n дисков при переходе к n+1 диску.
Граф в задаче о Ханойской башне имеет ту особенность, что все ребра имеют одинаковую длину, равную единице, что соответствует одному шагу состояния дискретной системы.
Рис. 27. Представление графом задачи
о Ханойской башне для n=2
Оптимальный переход всегда из нижней левой точки крайнего правого треугольника! Степени всех вершин, кроме крайних равны 3. Есть три пути, как у витязя на распутье. Кратчайший путь для данных графов можно найти полным перебором возможных путей. Рассмотрим систематический метод определения этого пути. Общее правило нахождения кратчайшего пути в графе с ребрами единичной длины состоит в том, чтобы каждой вершине хi приписать индекс li, равный длине кратчайшего пути из данной вершины в конечную:
1) конечной вершине приписывается индекс 0;
2) всем вершинам, из которых идет ребро в конечную вершину, приписывается индекс 1;
3) всем вершинам, ещё не имеющим индексов, из которых идет ребро в вершину с индексом li приписывается индекс li+1.
Так продолжается до тех пор, пока не будет помечена начальная вершина. По окончании разметки индекс начальной вершины будет равен длине кратчайшего пути.
Сам кратчайший путь найдем, двигаясь из начальной вершины в направлении убывания индексов.
Такой способ определения кратчайшего пути является частным случаем нахождения оптимального решения по методу динамического программирования (Р. Беллмана).
Подобную задачу должен решать интеллектуальный транспортный робот на складе при перекладке, например, ящиков различной величины с одной площадки на другую с использованием одной промежуточной площадки.
Нахождение кратчайшего пути в графе с ребрами неединичной длины.
Если граф имеет ребра неединичной длины, то подобное присвоение индексов должно учитывать их длину, причем индексы эти могут уменьшаться в ходе разметки вершин с учетом индексов всех соседних вершин [18]. Оптимальный путь ищут, двигаясь из начальной вершины в сторону тех вершин, индекс которых равен индексу текущей минус длина ребра. Может быть, таких оптимальных (кратчайших) путей будет и не один, но все они имеют длину, равную индексу начальной вершины после завершения разметки.
- Содержание
- 6. Элементарные двоичные переключательные функции
- 7. Основные законы булевой алгебры и преобразование
- Приложение 2. Варианты контрольных заданий по дисциплине
- Предисловие
- Дискретная математика
- 1. Множества и алгебраические системы. Булевы алгебры
- 1.1. Основные понятия теории множеств
- 1.2. Основные операции над множествами
- 1.3. Декартово произведение множеств
- 1.4. Соответствия и функции
- 1.5. Отношения
- 1.6. Использование множеств в языке Паскаль
- 2. Элементы общей алгебры
- 2.1. Операции на множествах
- 2.2. Группа подстановок Галуа
- 2.3. Алгебра множеств (алгебра Кантора)
- 2.4. Алгебраические системы. Решетки
- 2.5. Задание множеств конституентами
- 2.6. Решение уравнений в алгебре множеств.
- 3. Элементы комбинаторики
- 3.1. Комбинаторные вычисления
- 3.2. Основные понятия комбинаторики
- 3.3. Размещения
- 3.4. Перестановки
- 3.5. Сочетания
- 3.6. Треугольник Паскаля.
- 3.7. Бином Ньютона
- 3.8. Решение комбинаторных уравнений
- 4. Основные понятия теории графов
- 4.1. Способы задания графов
- 4.2. Характеристики графов
- 4.3. Понятие о задачах на графах
- 4.4. Задача о Ханойской башне
- 5. Переключательные функции и способы их задания
- 5.1. Понятие о переключательных функциях
- 5.2. Двоичные переключательные функции и способы их задания
- 5.3. Основные бинарные логические операции
- 5.4. Понятие о переключательных схемах и технической реализации переключательных функций
- 5.5. Использование логических операций в теории графов
- 6. Элементарные двоичные переключательные функции и функциональная полнота систем переключательных функций
- 6.1. Элементарные переключательные функции одной переменной
- 6.2. Элементарные переключательные (логические) функции двух переменных
- 6.3. Функциональная полнота систем переключательных функций
- 6.4. Базисы представления переключательных функций
- 6.5. Пример анализа и определения свойств пф, заданной десятичным номером
- 7. Основные законы булевой алгебры и преобразование переключательных функций
- 7.1. Основные законы булевой алгебры переключательных функций
- 7.2. Равносильные преобразования. Упрощение формул алгебры переключательных функций
- 7.3. Преобразование форм представления переключательных функций
- 8. Минимизация переключательных функций
- 8.1. Цель минимизации переключательных функций
- 8.2. Основные понятия и определения, используемые при минимизации
- 8.3. Аналитические методы минимизации переключательных функций
- 8.4. Минимизация переключательных функций по картам Карно
- 8.5. Метод поразрядного сравнения рабочих и запрещенных наборов
- Минимизация переключательных функций на основе поразрядного сравнения рабочих и запрещенных восьмеричных наборов.
- 8.6. Минимизация переключательных функций, заданных в базисе {, и, не}
- 8.7. Минимизация систем переключательных функций
- 8.8. Минимизация переключательных функций методом неопределенных коэффициентов
- 9. Понятие об автомате и его математическом описании
- 9.1. Основные определения теории конечных автоматов
- 9.2. Описание конечных детерминированных автоматов
- 9.3. Понятие о технической интерпретации конечных автоматов
- 9.4. Синтез комбинационных автоматов в заданном базисе
- 9.5. Булева производная
- 9.6. Элементарные автоматы памяти на основе комбинационного автомата и задержки
- 9.7. Синтез автомата – распознавателя последовательности
- 10. Элементы теории кодирования
- 10.1. Понятие о кодировании
- 10.2. Системы счисления, как основа различных кодов
- 10.3. Понятие о помехоустойчивом кодировании
- 10.4. Кодирование по Хэммингу
- 10.5. Кодирование с использованием циклических кодов и математического аппарата умножения и деления полиномов. Сигнатурный анализ
- 10.6. Понятие о криптографической защите информации
- 10.7. Понятие о сжатии информации