如何通过列出最小起始顶点数来探索有向图(DAG)?

时间:2015-11-11 09:11:33

标签: algorithm graph-algorithm

给定一个DAG(可能没有强连接的e.i由几个连通的组件组成),目标是找到访问所需的最小起始顶点数以完全探索图形。
我想到的一种方法是生成给定顶点的所有排列并按该顺序运行拓扑排序。具有最小回溯的那个将是答案。
有没有一种有效的算法来执行上述任务?

1 个答案:

答案 0 :(得分:3)

这是一个名为minimum path cover的着名问题,遗憾的是wiki对此一无所知,你可以在谷歌搜索。

在正常情况下,最小路径覆盖问题为NP-hard。但在DAG中,可以使用Matching来解决。

方式:

将每个顶点u划分为两个不同的顶点u1u2。对于原始图中的每个边(u->v),在新图中添加边(u1->v2)。然后做你喜欢的任何匹配算法。结果是n - maximum matchingn是原始图表中顶点的总数。