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
下面是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
相关文章推荐
- Introduction to Objects
- Operators
- Controlling Execution
- Interfaces
- Type Information
- Thinking——写在前面的话
- 什么是编程模型
- CSDN 第一篇博文
- 遍身罗绮者 不是养蚕人
- AI&设计思维微课
- 设计思维的要素:假设(Assumption)
- DT02_设计思维的要素_假定(Hypothesis)
- DT03_设计思维的要素:溯因推理
- 竞品分析与设计:Apple平板的故事
- 像Bill Gates一样思考集装箱
- 设计思维的要素:优化愿景(Vision)
- 设计思维的要素:新鲜事物(Unknowns)
- 总裁决策大数据:新思维&技术
- 对 Thinking in java 4th Edition I/O DirList.java的疑问
- 从配置文件到各种计算机语言:扩展