Найти тему
Денис Комаров

Роман "В ожидании Даши". Глава 11 - "Генератор графов"

Добрый день.

Представляю вам продолжение романа "В ожидании Даши". Напоминаю, события романа происходят в альтернативной истории, где не случилась Февральская революция, описанное в романе может отличаться от мнений экспертов об этой альтернативной ветви.

Глава 11. Генератор графов

Город Пятигорск - место событий главы (фото из открытых источников)
Город Пятигорск - место событий главы (фото из открытых источников)

22 февраля. Приближался 9-й день рождения Арсения. Арсений любит отмечать дни рождения. Но не любит сладкое - поэтому просит Наталью не покупать торты - только небольшие пирожные. Встречает Арсений дни рождения с друзьями. А какие были друзья у Арсения - скажу позже.

Как-то раз Арсений смотрел передачу "Русская рулетка" на канале МИР. Там игроки отвечали на вопросы, а если отвечают неправильно - то с некоторой вероятностью проваливаются под люк. И вдруг там звучит вопрос про кубик Рубика. Арсений в этот момент стал размышлять:

"А что, если сделать граф всех возможных позиций кубика Рубика?"

И решил Арсений воспользоваться программой Graph Master от компании Adobe. Программа стоит 30 рублей, но Арсений установил ее при помощи Play&Update.

Adobe Graph Master - программа, в которой можно создавать и редактировать графы, т.е. визуальные объекты, состоящие из точек и соединяющих их дуг. Графы могут быть ориентированными (т.е. содержащими односторонние дуги) и неориентированными, а также мультиграфами (между двумя конкретными точками - несколько дуг).

Арсений замечает, что в этой программе есть несколько функций, генерирующих графы по заданным параметрам. Самые базовые из них - линии, циклы, звезды (все точки соединены с одной и только с ней), полные графы (каждая точка соединена с каждой) и сетки определенной длины (фрагменты квадратной мозаики). Арсений начинает их тестировать.

Первое, за что он взялся, - это декартово произведение. Арсений вводит два произвольных графа, а затем выдается граф, который содержит произведение точек из исходных графов, а также повторяющиеся шаблоны соединения дугами из каждого исходного графа. Результаты впечатлили Арсения.

Потом он решил сделать известные мозаики в виде точек и ребер. Это не только квадратная, треугольная и шестиугольная сетка. Сетки можно преобразовывать разными способами при помощи следующих инструментов: усечение, рефлектация (стороны превращаются в точки, и середины прежних сторон соединяются), создание двойственных графов (где точки - это исходные грани, а дуги - показатель смежности граней), уменьшение граней (между соседними гранями образуется прямоугольник), всеусечение (уменьшение и усечение граней), операция snub и т.д. Получался бесконечный граф с заданныии параметрами.

Далее Арсений решил вызвать построение графа положений и ходов для разных игр. Это, к примеру, пятнашки, "Тор", поворот клеток, перевертыши (выбранная и соседние клетки меняют значение) и, конечно, кубик Рубика. Сначала он вызвал построение графа для пятнашек 3×2. Появились 360 точек, обозначающие возможные позиции, а дуги показывали, из какой позиции в какую можно дойти одним ходом.

"Ну, хорошо. Для угловых - 2 возможных хода, для краевых - 3, для остальных - 4. Не так громоздко." - сказал Арсений.

Затем он вызвал составление графа для игры "Тор", где линии сдвигаются по круговой, и нужно собрать таким правилом искомый рисунок. Арсений взял за основу вариант 2×2. Образовались 24 позиции, от каждой позиции - 4 дуги как 4 возможных хода при данном варианте.

"Небольшой, но выглядит красиво." - сказал Арсений.

Затем он взял под основу игру, где вращаются клетки 2D-поворотом, причем ее вариант для поля 3×2. Появиолсь 120 позиций, от каждой - 4 дуги как возможных хода при условии, что при за один ход можно повернуть только на 90 градусов.

"Тоже красиво." - сказал Арсений.

И вот он взялся за кубик Рубика размерностью 2×2×2. Поскольку такой, пусть и наименьший, кубик имеет больше 3,6 миллиона позиций, то и граф на выходе оказался таким огромным, что Арсений закричал от страха.

И тут выбежала Наталья.

"Что случилось?" - сказала она.

"Да вот, составлял графы Кэли для популярных головоломок. Вызвал граф для кубика 2×2×2, а тут такое огромное полотно. Я испугался." - сказал Арсений.

"В том то и дело, что даже самый маленький кубик Рубика - а это 2×2×2 - имеет 3,6 с лишним миллиона позиций. У 3×3×3 их вообще 43 квинтиллиона." - сказала Наталья. "Кстати, что у тебя за программа?"

"Adobe Graph Master, конструктор графов." - сказал Арсений.

"Не ожидала, что редактор графов может быть таким функциональным." - сказала Наталья.

Продолжение следует...

Данный вариант главы не является окончательным. Если вы хотите что-то поправить или дополнить, пишите в комментариях. Также вы можете сделать иллюстрации к ромвну и опубликовать их в комментариях к этой статье.

На этом все. До встречи!