algorithm - 在二部图的一侧找到支配的顶点集

标签 algorithm graph

我有一个像这里的二分图

Initial Graph

我试图找到图右侧的最小节点集,使得图左侧的每个节点都恰好连接到图右侧的一个节点。对于上图,看起来像这样。

Reduced Graph

我不太确定我该怎么做。我有一种感觉,它类似于图论或基础 CS 中的一些常见问题,并且通过一些转换变得等同于具有已知解决方案的问题。

最佳答案

你的问题是 NP-hard,因为 set cover problem (或者更确切地说,大卫指出的 exact cover problem )可以简化为它。一种简单的指数时间算法适用于节点子集上的动态规划。它可以在时间 O(2^m * n) 内实现,其中 m 是左侧的节点数,n 是右侧的节点数。

基于 Branch & Bound 的算法在实践中可能更有效。

关于algorithm - 在二部图的一侧找到支配的顶点集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619566/

相关文章:

algorithm - 从 Delaunay 三角剖分计算 alpha 形状的边界多边形

python - 高效解析 100 GB 的 xml 文件

python - 我想在 python 中实现 Karatsuba 乘法

c++ - 区分有向图和无向图

java - 绘制动态图(正交)

algorithm - 我们如何在完全图中找到最大生成树

python - 生成所有可能的三连通图

graph - HighCharts 将折线图的动画设置为 false

javascript - 如何增加 Google Charts 中 y 轴的长度?

c++ - Igraph (C) 返回错误的顶点 ID