您的位置:首页 > 编程语言 > Go语言

Algorithmic Thinking Week1

2014-08-31 11:27 204 查看
Week1 主要将了graph,比较简单

下面是project 的代码, 注意图的表示方法

EX_GRAPH0 = {0:set([1,2]),
1:set([]),
2:set([])}

EX_GRAPH1 = {0:set([1,4,5]),
1:set([2,6]),
2:set([3]),
3:set([0]),
4:set([1]),
5:set([2]),
6:set([])}

EX_GRAPH2 = {0:set([1,4,5]),
1:set([2,6]),
2:set([3,7]),
3:set([7]),
4:set([1]),
5:set([2]),
6:set([]),
7:set([3]),
8:set([1,2]),
9:set([0,4,5,6,7,3])}

def make_complete_graph(num_nodes):
'''
establish complete graph
'''

if num_nodes == 1:
return {0:set([])}

graphs = {}
allnodes = [dummy_i for dummy_i in range(num_nodes)]
for self_node in range(num_nodes):
temp = allnodes[:]
temp.remove(temp.index(self_node))
graphs[self_node] = set(temp)
return graphs

def compute_in_degrees(digraph):
'''
compute indegree
'''

if digraph.keys()==[]:
return {}

indegrees = {}
for node in digraph.keys():
indegrees[node] = 0
allvalues = [list(item) for item in digraph.values()]
allvalues = reduce(lambda x,y:x+y,allvalues)
for innode in allvalues:
indegrees[innode] += 1
return indegrees

def in_degree_distribution(digraph):
'''
compute indegreee distribution
'''

indegrees = compute_in_degrees(digraph)
final = dict.fromkeys(list(set(indegrees.values())),0)
for indegree in indegrees.values():
final[indegree] += 1
return final
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Algorithmic Thinking