Planarity — компьютерная игра-головоломка 2005 года , созданная Джоном Тантало, основанная на концепции Мэри Рэдклифф из Университета Западного Мичигана . [1] Название происходит от концепции планарных графов в теории графов; это графы, которые можно вложить в евклидову плоскость так, чтобы ни одно ребро не пересекалось. По теореме Фари , если граф плоский, его можно нарисовать без пересечений, так что все его ребра будут отрезками прямых линий. В игре Planarity игроку предоставляется круговая схема планарного графа , в которой все вершины размещены на одной окружности и имеют множество пересечений. Цель игрока — устранить все пересечения и построить прямолинейное вложение графа, перемещая вершины одну за другой в лучшие позиции.
Игра была написана на Flash Джоном Тантало из Университета Кейс Вестерн Резерв в 2005 году. [2] Популярность в Интернете и местная известность, которую он приобрел, сделали Тантало одним из самых интересных людей Кливленда в 2006 году. [3] [4] Это, в свою очередь, вдохновило Криса Монтгомери из Xiph.org на создание версии GTK+ , которая обладает дополнительными алгоритмами генерации уровней и возможностью манипулировать несколькими узлами одновременно. [5]
Определение головоломки планарности не зависит от того, как генерируются планарные графы в головоломке, но исходная реализация использует следующий алгоритм:
Если граф сгенерирован из линий, то граф будет иметь ровно вершины (каждая линия имеет вершины, и каждая вершина является общей с одной другой линией) и ребра (каждая линия содержит ребра). Первый уровень планарности построен из линий, поэтому он имеет вершины и ребра. Каждый последующий уровень генерируется на одну линию больше, чем предыдущий. Если уровень был сгенерирован из линий, то следующий уровень имеет больше вершин и больше ребер.
Наиболее известные алгоритмы из вычислительной геометрии для построения графов линейных расположений решают задачу за время, [6] линейное по размеру графа, который нужно построить, но они несколько сложны. Альтернативно и более просто, можно индексировать каждую точку пересечения парой линий, которые пересекаются в этой точке, сортировать пересечения вдоль каждой линии по их -координатам и использовать этот отсортированный порядок для генерации ребер планарного графа за почти оптимальное время. После того, как вершины и ребра графа сгенерированы, их можно равномерно разместить по окружности с помощью случайной перестановки .
Задача определения того, является ли граф планарным, может быть решена за линейное время , [7] и любой такой граф гарантированно имеет прямолинейное вложение по теореме Фари , которое также может быть найдено из планарного вложения за линейное время. [8] Таким образом, любая головоломка может быть решена компьютером за линейное время. Однако эти головоломки не так просты для решения людьми.
В области вычислительной геометрии процесс перемещения подмножества вершин в графе встраивания для устранения пересечений ребер изучался Пахом и Тардосом (2002), [9] и другими, вдохновленными головоломкой планарности. [10] [11] [12] [13] Результаты этих исследователей показывают, что (теоретически, предполагая, что поле игры представляет собой бесконечную плоскость, а не ограниченный прямоугольник) всегда можно решить головоломку, оставив входные вершины зафиксированными на месте в их исходных положениях, для константы , которая не была определена точно, но лежит между 1/4 и немного меньше 1/2. Когда планарный граф, который нужно распутать, является циклическим графом , большее количество вершин может быть зафиксировано на месте. Однако определение наибольшего количества вершин, которые можно оставить на месте для конкретной входной головоломки (или, что эквивалентно, наименьшего количества ходов, необходимых для решения головоломки), является NP-полной задачей .
Вербицкий (2008) показал, что рандомизированная круговая схема , используемая для начального состояния планарности, является почти наихудшей из возможных с точки зрения количества пересечений : независимо от того, какой планарный граф должен быть запутан, ожидаемое значение количества пересечений для этой схемы находится в пределах трехкратного значения наибольшего количества пересечений среди всех схем. [14]
В 2014 году математик Дэвид Эппштейн опубликовал статью [15], в которой предложил эффективный алгоритм решения планарных графов, созданных с помощью оригинальной игры Planarity, основанный на специфике алгоритма генерации головоломок.