我无法理解如何处理这个问题......我并不是要求一个明确的答案,只是想知道采取什么方法。因为我到目前为止所遇到的每一个都遇到了问题。
我有一组节点:
nodes = { ('A','B'),
('B','C'),
('C','D'),
('C','E'),
('B','E'),
('C','F')}
作为集合词典:
nodedict = { 'A': {'B'},
'C': {'B', 'E', 'D', 'F'},
'B': {'A', 'C', 'E'},
'E': {'C', 'B'},
'D': {'C'},
'F': {'C'} }
我想要做的是建立一个这样的结构:
代表'A'
A
|
B
_________|_________
| |
C E
_____|_____ |
| | | C
D E F ____|____
| |
D F
所以可以找到A的所有可能路线。
我一直在使用一个列表代表braches,然后尝试在while循环中包装一个for循环...如果孩子不在列表中,则将每个列表附加其子项...但我一直在粘住。我有时会接近,但这是我写明确的循环,并确切地知道我在寻找什么。
最好先尝试一个小费,然后再回溯一下,然后转到下一个小费......
for x in xs:
...
for a in x:
...
for b in a
但显然我不知道节点'n'有多深......嗯......任何有用的建议都非常感谢!
答案 0 :(得分:1)
我没有使用python的经验,但是你说过你不想要一个明确的答案。
你有一棵树。这是最好的覆盖结构之一,有很多方法来表示和遍历它。
至少您需要知道树根处的节点,并能够检索任何给定节点的子节点。从这两条信息中,如果你跟踪你正在做的事情,就可以遍历整棵树。
还有一个关于在python here中实现树的问题。
答案 1 :(得分:0)
您是否考虑过采用Dijkstra's algorithm?