次のようにあなたはCudd BDDノードのその後と他の子にアクセスすることができます
DdNode *t = Cudd_T(f.getNode());
DdNode *e = Cudd_E(f.getNode());
これは、プレーンCインタフェースを使用するときに二分決定グラフを参照するために使用されるデータ構造であるDdNodeポインタを与えます。
BDD tb = BDD(mgr,t);
上記はfが補完されたノードでない場合にのみ作用することに注意してください。それ以外の場合は、Cudd_Regular関数を使用してgetNode関数を呼び出した結果を実行する必要があります。これは、BDDの意味を逆転させることに注意してください。
BDDは、CuDDが反転ノードを使用していないかのように扱うこともできます。このケースでは、次のように後継者を取得します。
BDD t;
BDD e;
if (Cudd_IsComplement(f.getNode())) {
t = !BDD(manager,Cudd_Regular(Cudd_T(f.getNode())));
e = !BDD(manager,Cudd_Regular(Cudd_E(f.getNode())));
} else {
t = BDD(manager,Cudd_T(f.getNode()));
e = BDD(manager,Cudd_E(f.getNode()));
}
ありがとうございます。 それは私の質問を解決しました:) –
@MarcBenedí質問に答えた場合は、この回答を受け入れることを検討してください。 –