【发布时间】:2011-07-23 07:23:35
【问题描述】:
我在为上述问题编写程序时遇到了困难。我有以下图表....
A-----B------C D
A is connected to B
B is connected to C
D is connected with no body!!
The maximum Independent set in this is {A,C, D}...
图的邻接矩阵如下:-
为了解决这个问题,我画了下面的决策树:-
- 每个节点的第一个元素是索引。
每个节点的第二个元素是存储图的独立元素的集合。
左分支表示我不会考虑该元素,右分支表示我将考虑节点的第一个元素指定的索引处的元素。
所以大家可以清楚地看到,在每个节点上,我没有考虑节点的第一个元素索引指定的元素,我已经考虑了该元素是否可以插入到独立集合中。
我想用Python为此编写一个程序!!我是一个新手,还处于通过递归实现程序的早期阶段。
请帮忙!!
我编写了以下代码:- 但它对我来说看起来不太好.. 它以某种方式工作.. 请体验人们可以放入您的 cmets.. 我仍在学习递归..
def maxset(tab, i, set):
global numcalls
numcalls += 1
if i == 0:
flag = 0
for s in set:
if tab[i][s]:
return 0
if i not in set:
set.append(i)
return len(set)
without_i = maxset(tab, i-1, set)
flag = 0
for s in set:
if tab[i][s]:
return without_i
if i not in set:
set.append(i)
with_i = maxset(tab,i-1,set)
return max(without_i, with_i)
tab = [[0,1,0,0],[1,0,1,0],[0,1,0,0],[0,0,0,0]]
#tab = [[0,1,0,0,0],[1,0,1,1,0],[0,1,0,1,0],[0,1,1,0,1],[0,0,0,1,0]]
set = []
numVertIndex = 3 #### 0,1,2,3
numcalls = 0
print(maxset(tab, numVertIndex, set))
print(set)
print (numcalls)
【问题讨论】:
-
先尝试求解最大团。
标签: c++ python c algorithm data-structures