Реализация алгоритма тестирования планарности

Я хочу написать алгоритм, который принимает в качестве входных данных граф и возвращает истину, если он плоский или ложь, если это не так. Я искал вокруг и нашел тонны алгоритмов, но нелегких для понимания реализаций.

Есть ли какая-либо реализация, такая как Бойер-Мирволд или любая другая, доступная на C++ или Java, которая выполняет то, что я спрашиваю?

2 ответа

Решение

Реализация в Boost of Boyer-Myrvold довольно понятна и очень хорошо прокомментирована.

https://www.boost.org/doc/libs/1_67_0/boost/graph/planar_detail/boyer_myrvold_impl.hpp

Однако я бы не стал читать код без предварительного чтения оригинальной статьи.

В этом тезисе есть подробное описание метода сложения путей при тестировании на плоскость (как математическая теория, так и алгоритмическая реализация).

Полный исходный код Java также содержится в приложениях, поддерживающих:

  • Тестирование на плоскостность;
  • Генерация плоского вложения; а также
  • Для циклического генерирования всех возможных плоских вложений двусвязного графа (за линейное время, пропорциональное количеству ребер и количеству вложений для генерации всех вложений).
Другие вопросы по тегам