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 |) ä½ æ€Žä¹ˆçœ‹å¾…è¿™ä¸ªç®—æ³•ï¼Ÿå®ƒä¼šèµ·ä½œç”¨å—?我å¯ä»¥åšå¾—更好å—?这个算法的最å情况是什么?
ç”案 0 :(得分:1)
会起作用å—?
没有。一个简å•çš„å例是这个图:
排å为[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 |)。
ä¼¼ä¹Žä½ è¯•å›¾èŽ·å¾—æ›´æŽ¥è¿‘å…¨çƒæœ€å°å€¼çš„东西;为æ¤ï¼Œæˆ‘建议检查文献ä¸çš„"最å°æ”¯é…集近似。"