2

有向グラフに「and」および「or」および「not」ゲートの束を作成したいと思います。次に、入力からトラバースして、結果が何であるかを確認します。

それを行う既製のトラバーサルがあると思いますが、表示されません。そのようなトラバーサルの名前が何であるかはわかりません。

確かに幅優先ではうまくいきません。私はすべての葉を手に入れ、根に向かって上る必要があります. 言い換えると

A = (B & (C & Z))

最初に C @ Z を解決する必要があります。

このタイプのものをグラフに入れて上にトラバースする必要があります。

4

1 に答える 1

1

おそらく、N 個の着信接続と 1 個の発信接続を持つノードとして各操作を作成することになるでしょう。もちろん、より複雑な操作をノードとしてカプセル化することもできます。

Neo4j 2.0 では、3 種類の操作にラベルを使用します。

あなたの葉はブール値になると思いますか?実際には、多くのルートと 1 つのリーフ (結果式) しかないと思います。

(input1)-->(:AND {id:1})-->(:OR {id:2})-->(output)
(input2)-->(:AND {id:1})
(input3)------------------>(:OR {id:2})

次に、ラベル タイプの決定に CASE を使用し、計算にコレクション述語 (ALL、ANY) を使用できます。

参照: http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html

述語: http://docs.neo4j.org/chunked/milestone/query-function.html

ラベル: http://docs.neo4j.org/chunked/milestone/query-match.html#match-get-all-nodes-with-a-label

于 2013-05-23T03:19:49.530 に答える