如何为Hanoi H₃图顶点随机分配0至38的标号?
修改方案:为Hanoi H₃图分配随机顶点标号
要实现顶点的随机标号(0到38之间的唯一整数),你需要借助random模块生成不重复的随机数,并将其映射到图的每个顶点上。以下是修改后的完整代码:
import networkx as nx import random # 新增:导入随机数模块 H3 = nx.Graph() H3.add_edges_from([(1 ,2), (2 ,3), (3 ,1), (2 ,4), (4 ,5), (5 ,6), (6 ,4), (6 ,8), (3 ,7), (7 ,8), (8 ,9), (9 ,7), (5 ,10), (10 ,11), (11 ,12), (12 ,10), (11 ,13), (13 ,14), (14 ,15), (15 ,13), (15 ,17), (12 ,16), (16 ,17), (17 ,18), (18 ,16), (18, 23), (9 ,19), (19 ,20), (20 ,21), (21 ,19), (20 ,22), (22 ,23), (23 ,24), (24 ,22), (24 ,26), (21 ,25), (25 ,26), (26 ,27), (27 ,25)]) # 生成0-38之间的27个唯一随机整数(H3共27个顶点) random_unique_labels = random.sample(range(0, 39), len(H3.nodes)) # 将随机数映射到每个顶点 node_labels = {node: label for node, label in zip(H3.nodes, random_unique_labels)} nx.set_node_attributes(H3, node_labels, 'label') # 计算和谐边标号(逻辑不变,基于新的顶点标号) edge_labels = {(u, v): (node_labels[u] + node_labels[v]) % (H3.number_of_edges()) for u, v in H3.edges} nx.set_edge_attributes(H3, edge_labels, 'label')
关键说明:
- 使用
random.sample()确保生成的随机数唯一,符合和谐标号对顶点标号不重复的要求。 - 若需要固定随机结果(方便调试),可在生成随机数前添加
random.seed(xxx)(xxx为任意整数),例如:random.seed(42) # 固定随机种子,每次运行得到相同的标号 random_unique_labels = random.sample(range(0, 39), len(H3.nodes))
内容的提问来源于stack exchange,提问作者Gisyaa_9
相关产品推荐
相关产品推荐

