neo4j逻辑门模拟,如何?

时间:2013-05-21 20:45:02

标签: graph neo4j fsm directed-graph graph-traversal

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

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

当然,广度优先不会胜任这项工作。 我需要得到所有的叶子,然后向上走。 换句话说

A =(B&(C& Z))

我需要先解决C @ Z.

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

1 个答案:

答案 0 :(得分: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