【发布时间】:2018-02-02 22:06:10
【问题描述】:
我正在尝试解决以下问题。它类似于 k-minimum-spanning-tree 和 steiner 树问题,但它是带有图的。
- 我们有一个非负无向加权图 G = (V, E)。
- 对于每对顶点 v1 和 v2,都存在一条边 e12。换句话说,每个顶点都连接到其他每个顶点。
- 我们将创建一个包含 k 个顶点的顶点 U 的子集。
- 我们的目标是选择 U 中的 n 个顶点,使得从 U 中的每个顶点到每个其他顶点的边的总和最小化。换句话说,我们希望选择 U 中的顶点,使得从 U 中的节点向外的所有边的总和最小化。
- 1
我是否正确,k-MST 或施泰纳树近似解决方案都不起作用?如果是这样,这个问题叫什么?解决方案是什么?我可以使用启发式或近似来解决这个问题,并且不需要正式的证明。
【问题讨论】:
-
我最近在这类问题上没有太多经验,所以我不得不问几个可能很愚蠢的问题:k 和 n 是一回事吗? U和V是一回事吗?你的第三点只是你第四点的简化版吗?
-
不完全是。 V 表示某个图中所有顶点的集合。 E 表示该图中的边集。 k 只是一个整数,表示我们想要多少个顶点(它是问题的输入,以及包含 V 和 E 的图 G)。 U 表示我们想用某种算法选择的 k 个顶点的子集(U 是问题的输出)。所以第 4 点是说我们的算法选择在 U 中的 k 个顶点应该这样选择,使得它们的边到所有顶点(包括那些不在 U 中的顶点)的长度之和最小化。
-
因此,如果您想到一个矩阵,其中每列/行是一个顶点,每个单元格都是一个权重。那么U是行的一个子集,然后你想最小化每一行的权重之和?
标签: graph tree graph-theory graph-algorithm subgraph