首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双度阵列

问双度阵列
EN

Stack Overflow用户
提问于 2014-06-28 14:17:35
回答 2查看 553关注 0票数 1

我有一个问题

样本数据集:图的顶点数为5,边数为4,1 2,2 3,4 3,2 4为边列表。

此数据集的度数组为1 3 2 2 0(按顶点的顺序)。

我为这个数据集做了双度数组。是3 3 5 2 0.

我哪里错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-05 21:40:24

代码语言:javascript
复制
    #!/usr/bin/env python
    from os.path import dirname

    with open(dirname(__file__) + '/data/rosalind_ddeg.txt') as input_data:
        count_vertices={}
        total_number_of_vertices=map(int, input_data.readline().strip().split())[0]
        for line in input_data:
            vertex_pair=[int(i) for i in line.strip().split()]
            if count_vertices.get(vertex_pair[0])==None:
                count_vertices[vertex_pair[0]]=[vertex_pair[1]]
            else:
                count_vertices[vertex_pair[0]]+=[vertex_pair[1]]
            if count_vertices.get(vertex_pair[1])==None:
                count_vertices[vertex_pair[1]]=[vertex_pair[0]]
            else:
                count_vertices[vertex_pair[1]]+=[vertex_pair[0]]

        for vertex in xrange(1,total_number_of_vertices+1):
            total_sum=0
            if count_vertices.get(vertex)==None:
                print total_sum,
                continue
            for neighbor in count_vertices[vertex]:
                total_sum+=len(count_vertices[neighbor])
            print total_sum,
票数 0
EN

Stack Overflow用户

发布于 2014-08-05 22:10:27

代码语言:javascript
复制
INFILE = 'rosalind_ddeg.txt'

try:
    with open(INFILE) as data:
        '''
        read data in edgelist format:
        1st line: number of vertices, number of edges
        subsequent lines:
        edge given by two vertices
        '''
        nvertices, nedges = map(int, data.readline().rstrip().split())
        edges = [map(int, line.rstrip().split()) for line in data]

        # adjacency dict with vertices as keys, 
        # lists of adjacent vertices as values 
        adj = {k:[] for k in range(1,nvertices+1)}
        for v1, v2 in edges:
           adj[v1].append(v2)
           adj[v2].append(v1)

        # degree of a vertex is the number of edges that connect to it
        # BUT double degree of a vertex is the number of edges that are 
        # connected to ADJACENT vertices

        ddeg = {k:0 for k in adj.keys()}
        for vert in adj:
            for n in adj[vert]:
                ddeg[vert] += len(adj[n]) 

        for k, v in sorted(ddeg.items()):
            print v,


except IOError as e:
    print('Operation failed: %s' % e.strerror)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24467700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档