1

我很难弄清楚如何解决这个问题......我不是在要求一个明确的答案,只是对采取什么方法进行提醒。到目前为止,我遇到的每一个问题都遇到了问题。

我有一组节点:

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
                               |
                               B
                      _________|_________
                      |                  |
                      C                  E
                 _____|_____             |
                 |    |     |            C
                 D    E     F        ____|____
                                     |        |
                                     D        F

因此可以找到从 A 出发的所有可能路线。

我一直在使用一个列表来表示分支,然后尝试将 for 循环包装在一个 while 循环中……如果孩子不在列表中,则将每个列表及其子项附加……但我一直卡住了。我有时会很接近,但这是我写明确的 for 循环并确切知道我在寻找什么的时候。

最好先尝试获得一个提示,然后回溯,然后再获得下一个提示...

for x in xs:
   ...
   for a in x:
      ...
      for b in a

但显然我不知道节点'n'有多深......嗯......任何有用的建议都非常感谢!

4

2 回答 2

1

我没有使用 python 的经验,但是你说过你不想要一个明确的答案。

你有一棵树。这是目前覆盖得最好的结构之一,有很多方法可以表示和遍历它。

至少您需要知道树的根节点并能够检索任何给定节点的子节点。如果您跟踪自己在做什么,则可以从这两条信息中遍历整个树。

查看Tree traversal

这里还有一个关于在 python 中实现树的问题。

于 2012-06-10T18:06:04.047 回答
0

您是否考虑过采用Dijkstra 算法

于 2012-06-10T17:56:34.823 回答