Algorithmic Thinking Week1

来源:互联网 发布:怎么上架淘宝宝贝 编辑:程序博客网 时间:2024/05/21 00:46

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 graphsdef 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 indegreesdef 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


0 0
原创粉丝点击