graph - 计算networkx子图中的边数
问题描述
我有以下无向和未加权图,我想测量聚类算法的质量。对于这个测量,我想要这个问题的答案:
单个簇的顶点之间有多少条独特的边?
例如:集群red
有 6 条边,集群blue
有 4 条边,集群green
有 4 条边。
这是我用来生成图表的代码:
import networkx as nx
G = nx.Graph(directed=False).to_undirected()
G.add_edges_from([
("peter", "missy"),
("peter", "longfellow"),
("missy", "rhinehardt"),
("missy", "vivian"),
("brandon", "longfellow"),
("brandon", "zoe"),
("longfellow", "flash"),
("longfellow", "ox"),
("longfellow", "heather"),
("rhinehardt", "ox"),
("rhinehardt", "zostra"),
("rhinehardt", "vivian"),
("ox", "jenny"),
("vivian", "zostra"),
("vivian", "sarah"),
("flash", "zoe"),
("flash", "zostra"),
("flash", "heather"),
("zoe", "mathilda"),
("heather", "caitlyn"),
("heather", "sarah"),
("zostra", "mathilda"),
("zostra", "jenny"),
("sarah", "caitlyn"),
("caitlyn", "jenny")
])
解决方案
绿色集群的示例
# Original cluster
cluster = set(["caitlyn", "jenny", "zostra", "ox", "flash"])
# Searching for external vertices between two of cluster's vertices
# Can be more efficient if the inner loop starts from the current position
# of the outer loop
for u in cluster:
for v in cluster:
for between in list(nx.shortest_path(G, u, v)):
cluster.add(between)
# Create subgraph and count edges
subgraph = G.subgraph(list(cluster))
print(len(subgraph.edges()))
推荐阅读
- html - 有没有办法定位所有 Font Awesome 图标并将它们居中对齐?
- python - 如何在 Python 中查询嵌套的 mongoDB 数据?
- c# - 在 Visual Studio 19 和 Monogame/Xna 上开始调试需要很长时间
- java - 如何在 CLI 中从 /src 和 /WebContent 文件夹创建有效的战争文件?
- spring - 使用 Spring Security 和 Keycloak OpenID Connect 注销不起作用
- bash - 通过给定指令将项目迭代存储到相应的文件
- reactjs - React-Native Google-SignIn 注销不起作用
- excel - VBA减去两个日期
- c++ - 为什么我添加 MPI 时文件打不开?
- javascript - 我如何循环遍历数组和拆分值