-
Notifications
You must be signed in to change notification settings - Fork 0
/
vertexcover.py
54 lines (41 loc) · 1.12 KB
/
vertexcover.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from pulp import *
#graph=[[0,0,1,0,0],
# [0,0,0,0,1],
# [1,0,0,0,1],
# [0,0,0,0,1],
# [0,1,1,1,0]]
# a,b,c,d,e,f,g
graph=[[0,1,1,0,0,0,0],
[1,0,1,1,0,0,0],
[1,1,0,0,1,0,1],
[0,1,0,0,0,1,0],
[0,0,1,0,0,1,0],
[0,0,0,1,1,0,1],
[0,0,1,0,0,1,0],
]
nodes=[LpVariable("A"+str(i), 0, 1) for i in range(len(graph))]
constraints=[]
prob = LpProblem("myProblem", LpMinimize)
for i,row in enumerate(graph):
for j,colval in enumerate(row):
if colval==1:
prob += nodes[i]+nodes[j]>=1
eq=nodes[0]
for x in range(1,len(graph)):
eq+= nodes[x]
prob+=eq
status=prob.solve()
print(status)
print("SOLUTION IS ",LpStatus[status])
optimalvalues=[]
for node in nodes:
#print(value(node))
optimalvalues.append(value(node))
print("Optimal values through Linear Programming are ",optimalvalues)
roundedvalues=[]
for optimalnode in optimalvalues:
if optimalnode<0.5:
roundedvalues.append(0)
else:
roundedvalues.append(1)
print("Rounded values are ",roundedvalues)