The following code shall find the maximum weight independent set and weight in a given graph:
def wis(arr):
if(len(arr) == 0):
return 0
A = []
B = {}
for i in xrange(len(arr)+1):
A.insert(i, 0)
A[0] = 0
A[1] = arr[0]
B[arr[0]] = [arr[0]]
for i in xrange(2, len(arr)+1):
A[i] = max(A[i-1], A[i-2]+arr[i-1])
try:
if(A[i-2]+arr[i-1] > A[i-1]):
B[A[i]] = [B[A[i-2]], arr[i-1]]
except KeyError:
B[A[i-2]] = 0
B[A[i]] = [B[A[i-2]], arr[i-1]]
return A,B
res, trace = wis([5, 7, 100, -15, 3, 2])
print res[len(res)-1]
print trace[res[len(res)-1]]
No comments:
Post a Comment