algorithm - 删除直接连接的组件后的最小元素数

标签 algorithm

假设我有一个由邻接矩阵表示的无向:

[[0, 1, 0, 0],
 [1, 0, 0, 1],
 [0, 0, 0, 1],
 [0, 1, 1, 0]]

a[i][j] = 1 如果节点 ij 已连接。一个操作包括从图中删除任何两个直接连接的组件。例如,在上图中,您可以删除节点 0 和 1。在任意数量的操作之后剩余的最小节点数是多少?

显然,我们可以在 O(N^2 * 2^N) 中通过暴力强制组件的每个组合来做到这一点。我在想有一个贪婪的方法可以在 O(N)O(N^2) 中解决这个问题。

编辑:

如果 A[i][j] = 1,则两个节点直接相连。这不是可传递的,因此如果 (i, j) 直接连接并且 (j, k) 直接连接,则 (i, k) 不一定直接连接。

最佳答案

正如 Nico Schelter 所写,您想查找的是 maximum matching .

enter image description here

您可以使用 blossom algorithm为此。

关于algorithm - 删除直接连接的组件后的最小元素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57778223/

相关文章:

c# - LCP 的投影高斯-赛德尔

algorithm - 尝试优化此算法/代码以计算 a 和 b 之间互质整数的最大子集

algorithm - 最小搜索的非递归版本

algorithm - 找到面积最大的矩形,包含占用网格中的特定点

c++ - 计算也是平方数的第 N 个三角数

algorithm - 多个图表上的共识

algorithm - 以最少的 Action 同时解决所有 4x4 迷宫

algorithm - 在整数的单链表中,查找该列表是否为回文

algorithm - 可变数量的集合之间的模糊选择

algorithm - 在 F# 中创建不超过某个值的列表或数字序列