如何通过访问最少数量的起始顶点来探索有向图 (DAG)?

How do I explore a directed graph (DAG) by visting minimum number of starting vertices?

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

这个著名的问题叫minimum path cover,可惜wiki上只字未提,大家可以在google.

中搜索

作为methioned,最小路径覆盖问题是NP-hard in normal graph. But in DAG, it can be solved with Matching

方法:

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