1

反復的な深さ優先検索で分枝限定を実装しようとしていますが、最適なデータ構造表現は何かわかりません。ルートから出るまでの各ブランチのトラバースの重みを計算したいと思います。ブランチの値が max_weight を超える場合、ブランチを剪定し、隣接するブランチにバックトラックします

下の図は、ツリーの簡単な図を示しています。

                                          0
                           /                             \
                          /                               \ 
                        1 (X1=1)                           0 (X1=0)
                  /                     \              /               \
                 /                       \            /                 \
               1 (X2=1)             0 (X2=0)        1(X2=1)            0(X2=0)  
        /               \          /
       /                 \        /
   1 (X3=1)          0 (X3=0)  1 (X3=1)

ツリーは

root 0 -> 
node X1=1 -> 
node X2=1 -> 
node X3=1 (calculate branch value)->
node X3=0 (calculate branch value)-> 
node X2 = 0-> 
node X3=1 (calculate branch value)->
node X1=0 ->
node X2=1 (calculate branch value)
node X2=0 (calculate branch value)

私の質問は、ノードとエッジの最良の表現 (リスト? 辞書?) は何ですか?

たとえば、以下の例は、各ノードを明確に表現したツリーの表現を示しています

graph = {'A':['B','C'],'B':['D','E'],'C':['D','E'],'D':['E'],'E':['A']}`

しかし、私の場合、そのような表現は不適切なようです。なにか提案を?

4

0 に答える 0