gpt4 book ai didi

python - 对图的顶点重新排序。它应该像彼得森图一样排序

转载 作者:行者123 更新时间:2023-12-01 01:55:57 25 4
gpt4 key购买 nike

我有下一个代码:

import networkx

grafoPetersen = {
1: [2,5,6],
2: [3,1,7],
3: [4,2,8],
4: [5,3,9],
5: [1,4,10],
6: [1,8,9],
7:[2,9,10],
8: [3,10,6],
9: [4,6,7],
10: [5,7,8]
}

for k in grafoPetersen:
grafoPetersen[k].append(-1)
grafoPetersen[k].append(-2)
grafoPetersen[-1] = list(range(1,11))
grafoPetersen[-2] = list(range(1,11))

rutaHamiltoniana = [8, 3, 4, 5, 10, 7, 2, 1, 6, 9];
g = networkx.Graph()
for k, vs in grafoPetersen.items():
for v in vs:
if v in [-1, -2] or k in [-1, -2]:
continue
if abs(rutaHamiltoniana.index(k) - rutaHamiltoniana.index(v)) == 1:
g.add_edge(k,v, color='red', width=1.5)
else:
g.add_edge(k,v, color='black', width=0.5)

posicion = networkx.circular_layout(g)
edges = g.edges()
colores = [g[u][v]['color'] for u,v in edges]
anchuras = [g[u][v]['width'] for u,v in edges]
networkx.draw(g, posicion, edges=edges, edge_color=colores, width=anchuras, with_labels = True)

我得到的输出如下:

Output

我的图表是 Petersen 图表,我想将其显示为:

Petersen

但与我在第一张图片中设置的样式相同。

我尝试过:

options = {
'with_labels': True,
'node_color': 'black',
'node_size': 200,
'width': 3,
}
networkx.draw_shell(g, nlist=[range(5,10), range(5)], **options)

如下建议:How to show a graph like a Petersen's graph但我收到了几个错误。

知道如何将第一张图片解析为第二张图片并保持第一张图片的样式吗?

<小时/> 编辑1:这是我如何获取Petersen图形的路径并像第一张图片一样绘制它的完整代码: Hamiltonian path inside Petersen's graph algorithm

最佳答案

nlist 中的列表定义将放置在同心圆(壳)上的节点分组。节点由我们在 grafoPetersen 中定义的 ID 定义:1, 2, ..., 10

networkx.draw_shell(g, nlist=[range(5,10), range(5)])

此调用将节点range(5,10)=[5,6,7,8,9]分组在一个同心圆上,并且range(5)=[0,1, 2,3,4] 在第二个同心圆上。然而,grafoPetersen 中没有定义 ID 为 0 的节点。此外,我们还定义了 ID 为 10 的节点,该节点不由两个范围中的任何一个表示。

因此,为了解决这个问题,我们必须修复范围:

networkx.draw_shell(g, nlist=[range(6,11), range(1,6)])

以及所有精美的选项:

networkx.draw_shell(g, nlist=[range(6,11), range(1,6)], edge_color=colors, width=widths)

enter image description here

关于python - 对图的顶点重新排序。它应该像彼得森图一样排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50190974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com