【问题标题】:Networkx degree method didn't produce want I think it isNetworkx 学位方法没有产生想要的,我认为它是
【发布时间】:2014-06-05 14:16:28
【问题描述】:

我运行了以下脚本:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_edge(1, 1, weight=2)
G.add_edge(1, 3, weight=2)
G.add_edge(1, 4, weight=1)
G.add_edge(1, 5, weight=5)
G.add_edge(2, 3, weight=3)
G.add_edge(2, 4, weight=2)
G.add_edge(3, 5, weight=4)

d = G.degree(1)

print G.edge[1]
print "Degree of node 1:", \
    G.degree(1)
print "Weighted degree of node 1:", \
    G.degree(1, weight='weight')

nx.draw(G)
plt.show()

输出是:

{1: {'weight': 2}, 3: {'weight': 2}, 4: {'weight': 1}, 5: {'weight': 5}}
Weighted degree: 5
Weighted degree: 12

而绘图是这样的:

让我感到困惑的是:

既然节点1(包括自身)有4个节点,为什么度数是5

既然节点1的相邻边的总权重是10(2+2+1+5),那么度数法为什么会产生12?

谢谢

【问题讨论】:

  • 可能的解释:您的代码包含2 数字节点。这也是为什么您的总重量比预期大 2 的原因
  • @sshashank124 你好,我试过删除node2,问题依然存在。

标签: python python-2.7 graph networkx


【解决方案1】:

对于无向图,顶点的度数等于数 相邻顶点。

一个特殊情况是一个循环,它将两个添加到度数上。这可以通过让循环边缘的每个连接都算作它自己的相邻顶点来理解。换句话说,带有循环的顶点将自己“视为”边缘两端的相邻顶点,因此在度数上增加了两个,而不是一个。

【讨论】:

  • 感谢您的详细回答。谢谢:)
【解决方案2】:

根据definition of degree

在图论中,图的顶点的度(或化合价)是 入射到顶点的边数,循环计数两次。 (我的重点)

所以G.degree(1) 是 5,因为从 1 到 1 的循环被计算了两次。加权度数也计算循环两次,因此总数是 12 而不是 10,因为 1 节点的权重为 2。

【讨论】:

  • 感谢您周到的回答:)
猜你喜欢
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
相关资源
最近更新 更多