Основные ограничения вашей проблемы двояки: создание односвязного графа; и создавая его с проксимальными связями. Ответ Филиппа, хотя и несколько ценный, не затрагивает все ограничения вашей проблемы
В идеале, червоточина не должна превышать максимальную длину, и, если возможно, червоточины не должны пересекаться друг с другом.
Когда вы наивно соединяете точки в облаке, вы рискуете (и к тому же высок), что эти условия не будут выполнены.
Итак, вы видите, проблема не столько в связанности, сколько в близости этих соединений. Соединить каждый узел графа с любым другим узлом тривиально, но соединить только те, которые находятся ближе всего при сохранении односвязности всего графа, немного сложнее.
Это то, что создает триангуляция Делоне в n измерениях. Первая причина использования триангуляции Делоне состоит в том, что она выполняет оба эти условия неявно. Вторая причина в том, что намного проще работать в обратном направлении от такого графа (вычитая ненужные ребра и вершины), чем пытаться создать его другими способами.
- Случайно создайте ваше полное облако точек.
- Делоне-триангулируй это.
- Построить график (соединение точек). При этом вы можете либо сначала сгенерировать весь график (каждую звезду), а затем получить график в виде миноров, представляющих ваши области, связанные с червоточиной, при выполнении шага 4. В качестве альтернативы вы можете работать наоборот, генерируя только области, связанные с червоточиной сначала в качестве узлов суперграфа, а затем во второй фазе, генерируют отдельные звезды в ограничивающих объемах этих областей (для них я бы вывел двойственный граф триангуляции Делоне - диаграмму Вороного в 3 измерениях) в виде подграфов. Теперь у вас есть проксимально связанные звездные скопления, и все скопления связаны более редкими червоточинами: ваша топология и топография имеют смысл для игрока.
- Применяйте интеллектуальные методы для формирования супер- и подграфов, в зависимости от того, как вы решили обращаться с ним на шаге 3.
Важно видеть, что это иерархический процесс. Первый уровень связан с подключением червоточины; вторая касается расстояний, по-видимому, пройденных с использованием стандартного корабля. Вы можете применить Делоне на одном или обоих уровнях, чтобы удовлетворить ваши ограничения.
Выполнение этого чисто топологически оставит вас с червоточинами, которые не имеют смысла, поскольку они могут соединить одну сторону галактики с другой, несмотря на высокую плотность звезд между ними (и, возможно, даже падение на прямой маршрут червоточины). Топология не топография; последнее является соображением сверх первого. Вы обеспокоены близостью и, следовательно, топографией.