有å‘图的最å°æ”¯é…集

时间:2015-05-09 13:04:49

标签: algorithm graph directed-graph set-theory

http://en.wikipedia.org/wiki/Dominating_set

现在,我有一个想法找到它,我需è¦ä½ çš„æ„è§

第一:
在图上创建一个排å系统,æ¯ä¸ªé¡¶ç‚¹éƒ½æœ‰ä¸€ä¸ªæŽ’å。 顶点等级为:2 * [出边数] - [边内数]

第二:
更改DFS算法:使其返回生æˆæž—上所有根的组(ä¸ä¼šæ”¹å˜å¤æ‚性)

算法:
1.从所有顶点开始作为最å°æ”¯é…集
2.使用起始顶点è¿è¡ŒDFS:排å最高的顶点
3.查看生æˆæž—上的根,获å–最å°æ”¯é…集的列表,并删除ä¸æ˜¯ç”Ÿæˆæž—上的根的æ¯ä¸ªé¡¶ç‚¹
4.é‡å¤2-3,排å第二的顶点ä¿ç•™åœ¨æœ€å°æ”¯é…集上 5.当你在最å°æ”¯é…集上的æ¯ä¸ªé¡¶ç‚¹ä¸Šè¿è¡ŒDFSæ—¶åœæ­¢ 6.退货

我使用adj-list,所以DFS是O(| V | + | E |) 你怎么看待这个算法?它会起作用å—?我å¯ä»¥åšå¾—更好å—?这个算法的最å情况是什么?

1 个答案:

答案 0 :(得分:1)

会起作用å—?

没有。一个简å•çš„å例是这个图:

simple graph

排å为[1:6, 2:-1, 3:1, 4:-1, 5:-1].在第2步,您从顶点1.è¿è¡ŒDFS它是生æˆæž—中唯一的根,因此在第3步中删除所有其他顶点并返回。但是,这ä¸æ˜¯ä¸€ä¸ªä¸»å¯¼çš„集åˆï¼ 5æ—¢ä¸åœ¨ä¸»å¯¼é›†åˆä¸­çš„节点也ä¸ç›¸é‚»ã€‚

此算法的最å情况是什么?

最å的情况是O(| V | + | E | + k 2 ),其中k是返回集的大å°ã€‚您将在第一次删除除根之外的所有内容,因此循环中的下一个O(k)时间æ¯æ¬¡åªéœ€è¦O(k)时间。

我å¯ä»¥åšå¾—更好å—?

是的,无论是正确性还是速度。删除当å‰é¡¶ç‚¹çš„所有邻居,然åŽç§»åŠ¨åˆ°ä»ç„¶åœ¨é›†åˆä¸­çš„下一个顶点。这åªéœ€è¦O(| V | + | E |)。

似乎你试图获得更接近全çƒæœ€å°å€¼çš„东西;为此,我建议检查文献中的"最å°æ”¯é…集近似。"