Контекст
Я создаю 3d-игру, используя процедурное поколение. Я пытаюсь подключить несколько предварительно сгенерированных комнат таким образом, чтобы независимо от того, игрок всегда может добраться до любой другой комнаты на карте. В номерах есть "возможные точки входа", к которым должны быть подключены соединительные коридоры. Однако не все точки входа доступны из всех других точек входа в комнату. Например, может быть ловушка для ямы, поэтому игрок на дне не сможет проехать через комнату наверху и должен будет найти другой способ.
Проблема
Учитывая набор ранее созданных ориентированных графов, встроенных в трехмерное пространство, добавьте набор (двунаправленных) путей минимальной общей длины, которые связывают подграфы с большим графом. В противном случае (поскольку некоторые исследования указывает, что это NP-Hard), сделайте пути как можно короче, чтобы вычислить за короткий промежуток времени.
Пока работаем
Мое лучшее решение основано на это сообщение о процедурной генерации, где он создает триангуляцию Delaney всех узлов. Я рассматриваю каждый сильно связанный компонент комнат (например, верхний этаж и нижний этаж ямы-ловушки) как отдельные узлы и строю MST, но это ограничивает некоторые из наиболее интересных возможностей (например, два однонаправленных пути, чтобы вернуться туда, где вы начали).
Кто-нибудь знает лучший метод решения этой проблемы?