求最大独立集
Find maximal independent set
本文关键字:独立 更新时间:2023-10-16
在给定邻接矩阵的情况下,求无向图的最大独立集的基本朴素方法是什么?它的复杂度是多少?
就像我们有3个顶点,矩阵是:
0 0 0
1 0 1
0 0 0
这里的解将是2,因为最大独立集包括{1,3}。
如何改进幼稚的方法?
我的方法:选择具有最小边数的节点并消除它的所有邻居。从其余的节点中,选择边数最少的节点,重复上述步骤,直到覆盖整个图这是正确的吗?
求最大独立集(MIS):
并行MIS算法使用随机化来获得并发性(Luby的图着色算法)。
最初,每个节点都在候选集
C
中。每个节点生成一个(唯一的)随机数,并与相邻节点通信。如果一个节点的数目超过它所有邻居的数目,它加入集合
I
。C
的所有邻域都被移除。此过程一直持续到
C
为空。平均而言,该算法在
O(log|V|)
步之后收敛。
相关文章:
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 独立读取-修改-写入顺序
- 带有多个独立参数的C++For循环
- 通过命令行在Visual Studio中编译单个独立文件
- 如何将独立的 c 应用程序组合到 c++ 应用程序中?
- 我们能否在stm32f中使用硬件定时器控制两个独立的进程
- antlr 规则上下文是否可以独立于目标
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 多个 rocksdb 实例:使用单个共享缓存还是多个独立缓存?
- 在路径的独立Qt项目中包括外部库
- emplace_back初始化列表错误,当初始化列表在独立变量上工作时
- 为什么不同的翻译单元没有独立和沙盒的内存空间?
- 如何创建独立于平台的宏来包装编译器扩展?
- 使用system()创建独立的子进程
- 独立于编译器的类名
- 独立于实现的浮点/整数转换
- 在C++中将内部类实现为具有名称空间的独立类有什么好处
- 如何在C++中创建总是在循环中接受新输入的独立进程
- 如何在C++中打开多个独立的终端窗口
- 将两个独立的stdin重定向为程序的输入