反復的な深さ優先検索で分枝限定を実装しようとしていますが、最適なデータ構造表現は何かわかりません。ルートから出るまでの各ブランチのトラバースの重みを計算したいと思います。ブランチの値が 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']}`
しかし、私の場合、そのような表現は不適切なようです。なにか提案を?