【发布时间】:2015-05-07 01:50:19
【问题描述】:
假设我有一个有 7 个节点的无向图。
g = {1:[2,3], 2:[1,4], 3:[1,4,6], 4:[2,3,5,7], 5:[4,6 ], 6:[3,5], 7:[4]}
我想从图中删除一些边,特别是度数超过 2 的节点。我已经实现了以下代码,可以通过 DFS 方式探索图中的每个节点,检查它们的度数并根据节点的度数。
def Remove_edges(graph, start):
stack = [start]
visited = []
while stack:
vertex = stack.pop()
if vertex not in visited:
visited.append(vertex)
check_node_degree = node_degree(graph,vertex)
if check_node_degree > 2:
compute_edges = get_edges(graph, vertex)
while len(compute_edges)!=2:
compute_edges.pop()
for neighbour in graph[vertex]:
stack.append(neighbour)
graph.update(g.edges())
new_g = graph.copy()
return new_g
我得到了这样的结果,new_g = {1: 3, 2: 4, 3: 6, 4: 7, 5: 6, 6: [3, 5], 7: [4]}。
谁能帮我解决这个问题?
【问题讨论】:
-
修正缩进。我强烈建议您查看networkx。
-
想要的输出是什么?
-
您的基本假设可能有问题。您说要删除基于度数> 2的节点的边缘。边缘度数> 2的两端?或者任何与节点 d > 2 相邻的边?
-
什么是
graph?start是什么? -
感谢@dbliss 的建议。