【发布时间】:2017-10-23 00:28:10
【问题描述】:
- 伪随机矩形生成
- “中心节点”插入、矩形分离和最终节点选择
- Delaunay triangulation(显示之前选择的节点)
- 三角形边的渲染
此时(第 5 步),我想用这些数据形成一个Minimum Spanning Tree,但是有一个轻微 问题...
图表中的某处(可能靠近中心,但并非总是如此)将是一个节点,需要从其他唯一节点到它的 3-5 个连接。这使事情变得复杂,因为每个其他节点都应该只包含一个连接,并且正在使用的数据结构使得很难以可靠的、可遍历的格式确定“什么连接到什么”。
因此,给定上述格式的三角形数组,以及用作“根节点”的随机顶点,我如何正确地遍历网络以创建一个 MST,其中至少有 3 个连接到我们的“中心节点”,但与它的连接不超过 5 个?这可能吗?
【问题讨论】:
-
忘了说。权重只是顶点之间的简单欧式距离。
-
识别节点可能有多少个候选边?
-
@DavisHerring 我添加了一个示例图像,说明了从矩形生成到三角测量的所有步骤。在该示例中,您可以看到所有节点都有不同数量的边(因为图形由三角形组成)。但是“中心节点”的生成保证至少有 3 条边。下一步是选择一个随机节点,并让它遍历所有其他节点,同时以某种方式保证“中心节点”将有 3-5 个连接。
-
如果它有助于可视化目标,您可以说右上角的节点是“根节点”,但它是哪一个并不重要,只要“中心节点”在最终的 MST 中有 3-5 个与它的连接,并且所有其他节点都被访问不超过一次
-
显然,如果任何节点不与根相邻,则其他节点将具有多个连接。因此,我忽略了“每个其他节点应该只包含一个连接”,认为它只是意味着“其他节点没有度数限制”。但是你真的是说这个图必须是从根发出的 3-5 条路径吗?如果是这样的话,那确实是一个非常特殊的 MST,而且它一般不存在(尽管它可能适用于凸三角剖分)。
标签: c++ algorithm design-patterns graph-theory procedural-generation