如何使用 QuikGraph C# 从顶点列表构建最小生成树?

问题描述

如何从顶点/节点列表获取可与 QuikGraph 一起使用的图形,例如生成最小生成树?

编辑:( 我一直在 QuikGraph wiki https://github.com/KeRNeLith/QuikGraph 上前进和后退,我能找到的每个例子都掩盖了图形创建 )

背景

我的程序按程序生成游戏关卡。我的计划是使用 QuikGraph 中的 UndirectedGraph 来存储关卡信息,这样我就可以使用库函数来半智能地布置关卡内容、设置巡逻等。

我的第一阶段根据可配置的参数将关卡与房间打包。 我的第二阶段试图用最少的无意义走廊连接房间——即,用一个直接的走廊连接相邻的房间。我将断开一些连接并稍后添加其他连接。这看起来就像是构建最小生成树的简单案例。

我希望找到某种算法,该算法采用图形节点列表(以及确定任意两个图形节点之间的权重/距离的一些方法),并返回边列表或其他内容。我似乎找不到 - 一切似乎都假设您已经有了一个边列表,即一个现有的图。

设置它的最佳方法是什么? “节点之间所有可能的边组合的列表”似乎很疯狂,但我想不出其他任何东西。

注意

我不使用游戏引擎。输出旨在成为适合人类在设置纸笔角色扮演游戏时使用的静态文本描述。所有的图形和输入处理、物理、声音和网络等等都太过分了......

解决方法

我收到了一些关于如何准备我的图表的好建议 - 使用 Delaunay 三角剖分例程将建立一个通过邻近度连接的图表,并且有效。我在 NuGet 上找到了 Delaunator 库,它似乎做得很好。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...