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 ループを書いていて、探しているものを正確に知っているときです。

最初に 1 つのヒントにたどり着いてから、バックトラックしてから次のヒントに進むのが最善でしょうか ...

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

しかし明らかに、ノード 'n' がどのくらい深いのかわかりません... うーん... 役立つ提案は大歓迎です!

4

2 に答える 2

1

私はPythonの経験がありませんが、明示的な答えは必要ないとおっしゃっています。

あなたは木を持っています。これは、世の中で最もよく覆われた構造の1つであり、それを表現して横断する方法はたくさんあります。

少なくとも、ツリーのルートにあるノードを認識し、任意のノードの子を取得できる必要があります。これらの2つの情報から、実行していることを追跡していれば、ツリー全体をトラバースすることができます。

ツリートラバーサルを調べます。

ここにPythonでツリーを実装することについての質問もあります。

于 2012-06-10T18:06:04.047 に答える
0

ダイクストラのアルゴリズムを採用することを検討しましたか?

于 2012-06-10T17:56:34.823 に答える