如何使用python修复path中的循环?

如何使用python修复path中的循环?,python,dictionary,graph,expand,Python,Dictionary,Graph,Expand,我的图表中的计算周期有问题。 我想 graph={('S','A'):('2','2'),('A','S'):('2','2'),('S','B'):('3','5'), ('B','S'):('3','5'),('S','C'):('3','6'),('C','S'):('3','6'), ('B','D'):('4','5'),('D','B'):('4','5'),('A','C'):('2','2'), ('D','C'):('3','4'),('C','D'):('3','4'),('

我的图表中的计算周期有问题。 我想

graph={('S','A'):('2','2'),('A','S'):('2','2'),('S','B'):('3','5'),
('B','S'):('3','5'),('S','C'):('3','6'),('C','S'):('3','6'),
('B','D'):('4','5'),('D','B'):('4','5'),('A','C'):('2','2'),
('D','C'):('3','4'),('C','D'):('3','4'),('T','C'):('5','8'),
('C','T'):('8','5'),('T','D'):('4','7'),('D','T'):('4','7'))

打印(图形)

目前,我们的一些,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,):('3','4'),('A','C'):('2','2')}

我想展开图形,但不想展开循环。在示例中: vs=
'S'
vt=
'T'

  • ('S','A'):('2','2'),('S','B'):('3',5'),('S','C'):('3','6')
  • 扩展:

    • ('S','A','C'):('S','A')+('A','C')=('2','2')+('2','2')=
      ('4','4')
    • ('S','B','D'):('S','B')+('B','D')=('3','5')+('4','5'))=
      ('7','10')
    • ('S','C','A'):不展开
    • ('S','C','S'):不展开
    • ('S','C','T'):('S','C')+('C','T')=('3','6')+('5','8'))=
      ('8','14')
    • ('S','C','D'):('S','C')+('C','D')=('3','6')+('3','4'))=
      ('6','10')
  • 产出(预期):

    • ('S','A','C'):('4','4')
    • ('S','B','D'):('7','10')
    • ('S','C','A'):不展开
    • ('S','C','S'):不展开
    • ('S','C','T'):('8','14')
    • ('S','C','D'):('6','10')

  • 你能帮我解决上面的问题吗?非常感谢..

    我不明白你的问题,但这是你想要的吗

    graph = {('S','A'): ('2','2'), ('A','S'): ('2','2'), ('S','B'): ('3','5'),
             ('B','S'): ('3','5'), ('S','C'): ('3','6'), ('C','S'): ('3','6'),
             ('B','D'): ('4','5'), ('D','B'): ('4','5'), ('A','C'): ('2','2'),
             ('D','C'): ('3','4'), ('C','D'): ('3','4'), ('T','C'): ('5','8'),
             ('C','T'): ('8','5'), ('T','D'): ('4','7'), ('D','T'): ('4','7')}
    
    sub = {}
    
    for keys, values in graph.items():
        for keys2, values2 in graph.items():
            if keys[1] == keys2[0]:
                key = keys + keys2[1:]
                valueB= int(values[0]) + int(values2[0])
                valueE = int(values[1]) + int(values2[1])
                value = (str(valueB), str(valueE))
                sub[key] = value
    print(sub)
    
    输出:

    {('S', 'A', 'S'): ('4', '4'), ('S', 'A', 'C'): ('4', '4'), ('A', 'S', 'A'): ('4', '4'), ('A', 'S', 'B'): ('5', '7'), ('A', 'S', 'C'): ('5', '8'), ('S', 'B', 'S'): ('6', '10'), ('S', 'B', 'D'): ('7', '10'), ('B', 'S', 'A'): ('5', '7'), ('B', 'S', 'B'): ('6', '10'), ('B', 'S', 'C'): ('6', '11'), ('S', 'C', 'S'): ('6', '12'), ('S', 'C', 'D'): ('6', '10'), ('S', 'C', 'T'): ('11', '11'), ('C', 'S', 'A'): ('5', '8'), ('C', 'S', 'B'): ('6', '11'), ('C', 'S', 'C'): ('6', '12'), ('B', 'D', 'B'): ('8', '10'), ('B', 'D', 'C'): ('7', '9'), ('B', 'D', 'T'): ('8', '12'), ('D', 'B', 'S'): ('7', '10'), ('D', 'B', 'D'): ('8', '10'), ('A', 'C', 'S'): ('5', '8'), ('A', 'C', 'D'): ('5', '6'), ('A', 'C', 'T'): ('10', '7'), ('D', 'C', 'S'): ('6', '10'), ('D', 'C', 'D'): ('6', '8'), ('D', 'C', 'T'): ('11', '9'), ('C', 'D', 'B'): ('7', '9'), ('C', 'D', 'C'): ('6', '8'), ('C', 'D', 'T'): ('7', '11'), ('T', 'C', 'S'): ('8', '14'), ('T', 'C', 'D'): ('8', '12'), ('T', 'C', 'T'): ('13', '13'), ('C', 'T', 'C'): ('13', '13'), ('C', 'T', 'D'): ('12', '12'), ('T', 'D', 'B'): ('8', '12'), ('T', 'D', 'C'): ('7', '11'), ('T', 'D', 'T'): ('8', '14'), ('D', 'T', 'C'): ('9', '15'), ('D', 'T', 'D'): ('8', '14')}
    
    我的代码只需搜索字典中的每个键,然后查找第一个键的结束字符并与第二个键的开始字符进行比较。如果相同,则将其合并。然后将这些字符的值合并并存储在一个集合中

    我也在学习,但我希望能尽力帮助大家,也许有一些专家可以帮助我们