以下节点链接

时间:2012-06-10 17:50:44

标签: python nodes

我无法理解如何处理这个问题......我并不是要求一个明确的答案,只是想知道采取什么方法。因为我到目前为止所遇到的每一个都遇到了问题。

我有一组节点:

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'有多深......嗯......任何有用的建议都非常感谢!

2 个答案:

答案 0 :(得分:1)

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

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

至少您需要知道树根处的节点,并能够检索任何给定节点的子节点。从这两条信息中,如果你跟踪你正在做的事情,就可以遍历整棵树。

查看Tree traversal

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

答案 1 :(得分:0)

您是否考虑过采用Dijkstra's algorithm