【发布时间】:2012-05-30 07:38:06
【问题描述】:
我想为无向图中的最大独立顶点集找到一种内存保守但高效的算法。
传统算法使用辅助数据结构(原始图的副本)来实现它。我想避免这种并行结构,因为内存分配对于实时实现来说很慢,而且我有一些内存边界。 我只想用布尔标签标记 MIS 中的节点。 有可能吗?
请注意,我不希望 maximum 独立,而是 maximal 独立集。
附: 我知道这个问题与语言无关,但我使用 C++ 和 STL 进行编码。
【问题讨论】:
-
经过一些研究,我发现了一个非常简单的 MIS 算法版本,但它再次使用了辅助数据结构(一组访问节点)。使用 std::set 将其实现为 RB 树可能会有所帮助。为了计算内存中图 G = (V, E) 的最大独立集 S,可以使用以下简单算法: 以任意顺序处理顶点。当访问一个顶点 v ∈ V 时,如果它的邻居都不在 S 中,则将其添加到 S。算法归功于 Karp,1985 年
标签: c++ algorithm graph graph-theory stl-algorithm