12 June 2006 @ 11:29 pm
История о ПТиЦЕ, пентограмме, Петерсоне и эксэле.  


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

Аудитория оживилась, так как такое изображение
с булевыми функциями и их минимизацией ни у кого не асоциировалось,
а асоциировалось оно (у тех кто поумнее) с графом Петерсона,
о котором в прошлом семестре рассказывали на Дискретке,
который стягивается до графа К5

, поэтому непланарный (нельзя нарисовать без пересечений),
а те кто по глупее оживились, так как символ женского начала (венера - пентарь)
у любого более менее нормального мужика вызовет положительные эмоции,
а те, кто спал вообще проснулись и тоже по этому поводу оживились.
И вот такой вот взбудораженой толпе лектор и объяснил,
что теория графов используется в ВТ, когда надо как-то хитро соединить процессоры.
А граф Петерсона граф на 10 вершин,
так что из каждой вершины можно попасть в каждую за один или два хода,
причём единственным образом.
Рассказав всю эту басню,
Романкевич предложил нам нарисовать аналогичный граф на 15 вершин (30 рёбер).

С этой задачкой я мудохался дня 3-4, в то время, как уже 2-3 человека с потока успело написать прогу, которая этот граф найдёт перебором, правда для 15 вершин даже четвёртые пни не очень-то торопились перебирать все 5,3919893334301279589334030174039e+67 (примерно) варианты.

Так вот, решение я таки нашел.
Оказалось, что пятиугольник и звезда - это одно и тоже и, пару раз вывернув третий пятиугольник, таки присобачил его к графу Петерсона.

0 1 0 0 1 1 0 0 0 0 1 0 0 0 0
1 0 1 0 0 0 1 0 0 0 0 1 0 0 0
0 1 0 1 0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 1 0 0 0 1 0 0 0 0 1 0
1 0 0 1 0 0 0 0 0 1 0 0 0 0 1
1 0 0 0 0 0 0 1 1 0 1 0 0 0 0
0 1 0 0 0 0 0 0 1 1 0 0 1 0 0
0 0 1 0 0 1 0 0 0 1 0 0 0 0 1
0 0 0 1 0 1 1 0 0 0 0 1 0 0 0
0 0 0 0 1 0 1 1 0 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0 0 0 1 1 0
0 1 0 0 0 0 0 0 1 0 0 0 0 1 1
0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 1 0 0 0 1 1 0 0

Но в процессе поиска я таки написал процедуру,
которая проверяет по матрице смежности, является ли граф искомым.

Чтобы каждый раз не вводить 225 символов я посчитал целесообразным
читать их из текстового файла,
а в текстовый файл копипастил содержимое Эксэль-таблицы,
в которой наглядно видно матрицу, с которой удобно общаться.
Так и родился файл Peterson.xls

Сегодня я зачем-то начал просматривать старые доки и на этот файл наткнулся.
И, вдохновлённый сегодняшним сражением
с режимом "диаграмма" в эксэле (рисовал высотный профиль похода),
я взял и непонятно зачем начал делать из матрицы смежности диаграммку.
Интересно всё-таки, как реагирует Эксэлевский автодиаграммер на нули с единицами.

Ну и получил следующее:

первым был объёмный график:



далее - поверхности:
чёрно-белая:



и цветная:



ну и наконец просто поверхность выглядела так: