m0_64677750 2023-01-03 14:37 采纳率: 50%
浏览 16
已结题

两点间输出所有程序并排序

怎么做到输出所有路径后排序呢

import networkx as nx

# 建立带权图
G = nx.Graph()

# 向图中添加边,每条边都有一个权值
G.add_edge('A', 'B', weight=5)
G.add_edge('A', 'C', weight=3)
G.add_edge('A', 'D', weight=2)
G.add_edge('B', 'C', weight=1)
G.add_edge('B', 'D', weight=2)
G.add_edge('C', 'D', weight=4)

# 查找从点 A 到点 B 的所有路径
all_paths = nx.all_simple_paths(G, 'A', 'B')

for path in all_paths:
    print(path)


  • 写回答

1条回答 默认 最新

  • 阿_旭 2023-01-03 15:32
    关注

    代码如下,望采纳

    import networkx as nx
     
    # 建立带权图
    G = nx.Graph()
     
    # 向图中添加边,每条边都有一个权值
    G.add_edge('A', 'B', weight=5)
    G.add_edge('A', 'C', weight=3)
    G.add_edge('A', 'D', weight=2)
    G.add_edge('B', 'C', weight=1)
    G.add_edge('B', 'D', weight=2)
    G.add_edge('C', 'D', weight=4)
     
    # 查找从点 A 到点 B 的所有路径
    all_paths = nx.all_simple_paths(G, 'A', 'B')
    
    # 记录路径与权重和
    all_paths_with_weight = {}
    for path in all_paths:
        weight_sum = 0
        for i in range(len(path)-1):
            A = path[i]
            B = path[i+1]
            weight = G.get_edge_data(A, B)['weight']
            weight_sum += weight
        all_paths_with_weight[str(path)] = weight_sum
        
    # 排序
    a = sorted(all_paths_with_weight.items(),key = lambda x:x[1],reverse = True)
    print(a)
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月11日
  • 已采纳回答 1月3日
  • 创建了问题 1月3日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度