Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория графов и её приложения

..pdf
Скачиваний:
45
Добавлен:
15.11.2022
Размер:
12.77 Mб
Скачать

Практическое применение этой задачи, которая в терминах теории графов называется «нахождение кратчайшего пути в графе

срёбрами единичной длины», может быть проиллюстрировано, например, интеллектуальным погрузчиком, когда диаметр диска – это габариты груза на складе и необходимо переместить «башню» товара

содной площадки на другую, пользуясь одной промежуточной площадкой (свободная площадь – на вес золота!). Если больший по габаритам груз окажется над меньшим, упасть может!

Стержни также могут быть представлены стэками процессора, а «диски» – адреса подпрограмм или запросов на прерывание, приоритеты которых упорядочены.

Стержни могут быть и некоторыми уровнями, например безопасности.

«Диаметры» дисков могут иметь другую, например значения уязвимостей, или временную интерпретацию, скажем, время с начала эксплуатации. Известна задача ротации магнитных носителей информации для создания резервных копий с учётом их ресурсов (время нахождения в эксплуатации, число циклов копирования).

Так, при трёх носителях 1, 2, 3 (номера соответствуют условному времени нахождения в эксплуатации, первый – самый «молодой») порядок их использования, например для записи видеоинформации, такой: 1, 2, 1, 3, 1, 2, 1. Эта последовательность – так называемый палиндром (читается одинаково слева направо и справа налево) – есть не что иное, как порядок перекладываний дисков в Ханойской башне с n = 3 (не сказано куда, но указано – кто, какой диск берётся) и расписание «работы»: понедельник – 1, вторник – 2, среда – опять 1 и так далее. Первый диск работает 4 раза, второй 2, третий – 1 (7 шагов).

Самый старый всегда один раз работает и не в выходные… «Дедовщина» какая-то получается!

Если будут четыре носителя, получим количество раз: 8, 4, 2, 1 (15 шагов); при пяти – 15, 8, 4, 2, 1 (31 шаг). Ясно, что это последовательность степеней числа 2.

Впринципе всё это может быть формализовано как задача оптимального и в каком-то смысле безопасного (с точки зрения «зако-

141

нов Брахмы»!) «перемещения упорядоченности чего-либо» с одного объекта на другой с дополнительными вспомогательными объектами размещения этой самой упорядоченности.

А чем плоха такая интерпретация: перемещение линейных боевых порядков (впереди, на первой линии обороны, наименее уязвимые подразделения) с одной позиции на другую через «запасной аэродром» – через дополнительную позицию?! Да если учитывать вероятности нападения противника на эти позиции? Это уже смахивает на теорию игр, к тому же несколько размывается дискретность задачи, каждый «диск» «перекладывается» не сразу, а по «кусочкам»…

Интересно, что задача об оптимальной и безопасной «перевозке через реку козы, капусты и волка» чем-то похожа на задачу о Ханойской башне: три стержня – это два берега реки и лодка (с перевозчиком), но здесь не перемещение вектора упорядоченности, а перемещение множества, некоторые подмножества которого запрещены! Вероятно, здесь мы имеем дело со своего рода «динамической» безопасностью, с оптимальным перемещением, с «трансфером» безопасности. Типа переезд серьёзной организации из одного здания в другое.

Можно предложить и комбинированный вариант – множество башен с запрещением некоторых из их подмножеств, множество последовательностей башен. Но с таким же успехом за одномерной встаёт задача двухмерная – матрица башен, а за ней трёхмерная – куб из ячеек – башен, а там и n-мерная! А как вам задача перемещения деревьев, а то и леса?

Но мы слишком углубились в сторону… Вернёмся к началу. Для алгоритмического решения задачи о Ханойской башне

с произвольным числом дисков представление в виде графа, рассмотренное нами ранее в курсе дискретной математики, весьма неудобно. Действительно, чтобы найти кратчайший путь, необходимо сначала построить весь граф, а он может быть очень громоздким.

Попробуем упростить решение, ещё раз проанализировав особенности задачи. Рассмотрим n = 1 и назовём стержни X, Y, Z

(рис. П3.5).

142

аб

Рис. П3.5. Задача о Ханойской башне для n = 1: а – исходное состояние; б – целевое состояние

Изобразим-таки опять задачу в виде графа (рис. П3.6). Перекладывание в формате «откуда куда» выглядит так:

(Х Z). Здесь движение идёт как бы направо из исходного состояния. Вспомним граф для n = 2, там надо двигаться всегда налево

(рис. П3.7).

Рис. П3.6. Граф задачи

Рис. П3.7. Граф задачи о Ханойской

о Ханойской башне для n = 1

башне для n = 2

Здесь получаем: (Х Y), (Х Z), (Y Z). В случае n = 3 имеем

(Х Z), (Х Y), (Z Y), (Х Z), (Y Х), (Y Z), (Х Z),

в этом случае надо двигаться всегда направо (рис. П3.8).

143

Рис. П3.8. Граф задачи о Ханойской башне для n = 3

Анализ задачи при n = 4 ((Х Y), (Х Z), (Y Z), (Х Y), (Z Х), (Z Y), (Х Y), (Х Z), (Y Z), (Y Х), (Z Х), (Y Z), (Х Y), (Х Z), (Y Z)) показывает, что в соответствующем графе надо двигаться всегда налево (рис. П3.9).

Следовательно, напрашивается предположение, что при нечётном n надо двигаться направо, при чётном – налево! Видимо, этот вывод можно строго доказать методом математической индукции. Да, но где право, где лево, если не строить граф, а решать задачу пошагово?!

Вернёмся к задаче для n = 1. Будем обозначать диски номерами так, что номер – это как бы «диаметр» диска. Чем больше номер, тем больше диаметр. Изобразим стержни X, Y, Z не на одной линии, а в виде треугольника (рис. П3.10).

144

145

Рис. П3.9. Граф задачи о Ханойской башне для n = 4

Рис. П3.10. Решение задачи о Ханойской башне для n = 1

Следовательно, в такой интерпретации для n = 1 речь идёт о движении диска 1 против часовой стрелки в треугольнике X, Y, Z

[30].

Задача о Ханойской башне для n = 2

Исходное состояние изображено на рис. П.3.11.

а

б

Рис. П3.11. Задача о Ханойской башне для n = 2: а – исходное состояние на стержнях; б – исходное состояние в виде графа – треугольника с помеченными вершинами

Первый диск переносится по часовой стрелке (рис. П3.12).

146

аб

Рис. П3.12. Задача о Ханойской башне для n = 2: а – перенос первого диска – на стержнях; б – перенос первого диска – по часовой стрелке в графе – треугольнике с помеченными вершинами

Второй диск переносится против часовой стрелки (рис. П3.13).

а

б

Рис. П3.13. Задача о Ханойской башне для n = 2: а – перенос не первого, второго диска – на стержнях; б – перенос не первого, второго диска – против часовой стрелки в графе – треугольнике с помеченными вершинами

Первый диск переносится по часовой стрелке, и задача решена –

(рис. П3.14).

а

б

Рис. П3.14. Задача о Ханойской башне для n = 2: а – перенос первого диска – на стержнях; б – перенос первого диска – по часовой стрелке в графе – треугольнике с помеченными вершинами. Заключительное состояние

147

Задача о Ханойской башне для n = 3

Исходное состояние изображено на рис. П3.15.

аб

Рис. П3.15. Задача о Ханойской башне для n = 3: а – исходное состояние на стержнях; б – исходное состояние в виде графа – треугольника с помеченными вершинами

Первый шаг. Первый диск переносится против часовой стрелки

(рис. П3.16).

а б

Рис. П3.16. Задача о Ханойской башне для n = 3: а – перенос первого диска – на стержнях; б – перенос первого диска – против часовой стрелки в графе – треугольнике с помеченными вершинами

Второй шаг. Второй диск переносится по часовой стрелке

(рис. П.3.17).

а

б

Рис. П3.17. Задача о Ханойской башне для n = 3: а – перенос не первого, второго диска – на стержнях; б – перенос не первого, а второго диска – по часовой стрелке в графе – треугольнике с помеченными вершинами

148

Третий шаг. Первый диск опять переносится против часовой стрелки (рис. П3.18).

аб

Рис. П3.18. Задача о Ханойской башне для n = 3: а – второй перенос первого диска – на стержнях; б – второй перенос первого диска – против часовой стрелки в графе – треугольнике с помеченными вершинами

Четвёртый шаг. Третий диск, а может быть перенесён только он, поскольку первый диск дважды не переносится, а второй не может быть перенесён, переносится против часовой стрелки (рис. П.3.19).

а

б

Рис. П3.19. Задача о Ханойской башне для n = 3: а – перенос не первого, третьего диска – на стержнях; б – перенос не первого, а третьего диска – по часовой стрелке в графе – треугольнике с помеченными вершинами

Пятый шаг. Первый диск третий раз переносится против часовой стрелки (рис. П3.20).

аб

Рис. П3.20. Задача о Ханойской башне для n = 3: а – третий перенос первого диска – на стержнях; б – третий перенос первого диска – против часовой стрелки в графе – треугольнике с помеченными вершинами

149

Шестой шаг. Второй диск второй раз переносится по часовой стрелке (рис. П3.21).

а

б

Рис. П3.21. Задача о Ханойской башне для n = 3: а – перенос не первого, второго диска – второй раз на стержнях; б – перенос не первого, а второго диска второй раз – по часовой стрелке в графе – треугольнике с помеченными вершинами

И, наконец, первый диск четвёртый раз переносится против часовой стрелки (рис. П3.22).

а

б

Рис. П3.22. Задача о Ханойской башне для n = 3: а – четвёртый перенос первого диска – на стержнях; б – четвёртый перенос первого диска – против часовой стрелки в графе – треугольнике с помеченными вершинами.

Заключительное состояние

Таким образом, первый диск при нечётном общем числе дисков движется против часовой стрелки, а при чётном общем числе дисков – по часовой стрелке.

Построим таблицу местоположения дисков (рис. П3.23).

Рис. П3.23. Таблица местоположения дисков

150