-
Notifications
You must be signed in to change notification settings - Fork 0
/
graph.py
68 lines (52 loc) · 1.81 KB
/
graph.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env python
from random import randint
class Graph():
############################################################################################################
## CLASS VARS
DEFAULT_GRAPH = [
[0,7,6,2,1],
[7,0,5,3,3],
[6,5,0,1,2],
[2,3,1,0,7],
[1,3,2,7,0],
]
DEFAULT_SIZE = 5
############################################################################################################
## INIT FUNCTIONS
def __init__(self, mode="default"):
if mode == "default":
self._graph = self.DEFAULT_GRAPH
elif mode == "random":
self._graph = self._random_graph_()
else:
raise Exception("Not implemented yet")
def _random_graph_(self):
graph = []
for i in xrange(self.DEFAULT_SIZE):
graph.append([])
for j in xrange(self.DEFAULT_SIZE):
if i == j:
graph[i].append(0)
else:
graph[i].append(randint(0,8))
return graph
############################################################################################################
## GET FUNCTIONS
def get_size(self):
return len(self._graph)
def get_graph(self):
return self._graph
############################################################################################################
## GRAPH ALTERATION FUNCTIONS
def minus(self, minus):
for i in xrange(self.get_size()):
for j in xrange(self.get_size()):
self._graph[i][j] = max(0, self._graph[i][j]-minus)
def normalize(self):
for i in xrange(self.get_size()):
sum_weight = sum(self._graph[i])
self._graph[i] = map(lambda x : float(x)/sum_weight, self._graph[i])
############################################################################################################
## PRINTING FUNCTIONS
def __str__(self):
return str(self._graph)