Algorithm 有向图的最小支配集

Algorithm 有向图的最小支配集,algorithm,graph,directed-graph,set-theory,Algorithm,Graph,Directed Graph,Set Theory,现在,我想找到它,我需要你的意见 第一: 在图上创建一个秩系统,每个顶点都有一个秩。 顶点的秩为:2*[出边数]-[入边数] 第二: 更改DFS算法:使其也返回生成林上所有根的组(不改变复杂性) 算法: 1.以所有顶点作为最小支配集开始 2.使用起始顶点运行DFS:排名最高的顶点 3.查看生成林上的根,获取最小支配集列表并删除不是生成林上根的每个顶点 4.重复2-3,下一个排名最高的顶点保持在最小支配集中 5.在最小支配集的每个顶点上运行DFS时停止 6.还它 我使用adj list,所以DFS

现在,我想找到它,我需要你的意见

第一:
在图上创建一个秩系统,每个顶点都有一个秩。 顶点的秩为:
2*[出边数]-[入边数]

第二:
更改DFS算法:使其也返回生成林上所有根的组(不改变复杂性)

算法:
1.以所有顶点作为最小支配集开始
2.使用起始顶点运行DFS:排名最高的顶点
3.查看生成林上的根,获取最小支配集列表并删除不是生成林上根的每个顶点
4.重复2-3,下一个排名最高的顶点保持在最小支配集中
5.在最小支配集的每个顶点上运行DFS时停止
6.还它

我使用adj list,所以DFS是O(| V |+| E |)
你觉得这个算法怎么样?行吗?我能做得更好吗?此算法的摊销最坏情况是什么?

它能工作吗?

不是。一个简单的反例是这个图:

列组是
[1:6,2:-1,3:1,4:-1,5:-1]。
在步骤2中,您从顶点
1运行DFS。
它是生成林中的唯一根,因此在步骤3中,您将每隔一个顶点删除一次并返回。然而,这并不是一个占主导地位的场景
5
既不在支配集中的节点内,也不与该节点相邻

此算法的摊销最坏情况是什么?

最坏的情况是O(| V |+| E |+k2),其中k是返回集的大小。您将在第一次通过时删除除根以外的所有内容,因此循环的下一个O(k)次每次仅需O(k)次

我能做得更好吗?

是的,在正确性和速度方面。删除当前顶点的所有相邻顶点,然后继续移动到集合中的下一个顶点。这只需要O(|V |+|E |)


似乎你试图得到更接近全球最小值的东西;为此,我建议查看“最小支配集近似”的文献。

在有向图中,邻接是否意味着从非支配顶点到支配顶点的有向边?否,支配集是一组顶点:
对于每个顶点v,至少有一个条件为真:
1。v在支配集中
2。是从一个主要顶点到vwhat的有向路径?我没有给出一个经过验证的算法,这只是一个想法,我想听听人们对它的看法,哈哈,现在还没有使用:)找到最小支配集是NP完全问题。意思是这行不通?(还不知道所有复杂组的主题)我想找到距离支配的最小集,注意:距离支配,1确实是距离主宰了图表:)@user4857930在你的问题中你没有这么说。我确实看到你在一篇评论中提到了“距离支配集”,但再次没有说那是你想要的。如果你想修改你的问题,我会修改我的答案。但这就是你目前问题的答案。我如何“修改”,只需编辑原始帖子?顺便说一句,很抱歉给您带来麻烦和不便:)