2

我想在有向图中创建一堆“与”、“或”和“非”门。然后从输入中遍历,看看它们的结果是什么。

我认为有一个现成的遍历可以做到这一点,但我没有看到。我不知道这种遍历的名称是什么。

当然,广度优先是行不通的。我需要得到所有的叶子,然后走向根部。换句话说

A = (B & (C & Z))

我需要先解决 C@Z。

我需要将这种类型的东西放在一个图表中并向上遍历。

4

1 回答 1

1

您可能会将每个操作创建为具有 N 个传入连接和一个传出连接的节点。当然,您也可以将更复杂的操作封装为节点。

对于 Neo4j 2.0,我将使用标签进行 3 种类型的操作。

我假设你的叶子会是布尔值?实际上我认为你有很多根,只有一片叶子(结果表达式)

(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 回答