给定一个DAG(可能没有强连接的e.i由几个连通的组件组成),目标是找到访问所需的最小起始顶点数以完全探索图形。
我想到的一种方法是生成给定顶点的所有排列并按该顺序运行拓扑排序。具有最小回溯的那个将是答案。
有没有一种有效的算法来执行上述任务?
答案 0 :(得分:3)
这是一个名为minimum path cover的着名问题,遗憾的是wiki对此一无所知,你可以在谷歌搜索。
在正常情况下,最小路径覆盖问题为NP-hard。但在DAG中,可以使用Matching来解决。
方式:强>
将每个顶点u
划分为两个不同的顶点u1
和u2
。对于原始图中的每个边(u->v)
,在新图中添加边(u1->v2)
。然后做你喜欢的任何匹配算法。结果是n - maximum matching
,n
是原始图表中顶点的总数。