我想在有向图中创建一堆“与”、“或”和“非”门。然后从输入中遍历,看看它们的结果是什么。
我认为有一个现成的遍历可以做到这一点,但我没有看到。我不知道这种遍历的名称是什么。
当然,广度优先是行不通的。我需要得到所有的叶子,然后走向根部。换句话说
A = (B & (C & Z))
我需要先解决 C@Z。
我需要将这种类型的东西放在一个图表中并向上遍历。
我想在有向图中创建一堆“与”、“或”和“非”门。然后从输入中遍历,看看它们的结果是什么。
我认为有一个现成的遍历可以做到这一点,但我没有看到。我不知道这种遍历的名称是什么。
当然,广度优先是行不通的。我需要得到所有的叶子,然后走向根部。换句话说
A = (B & (C & Z))
我需要先解决 C@Z。
我需要将这种类型的东西放在一个图表中并向上遍历。
您可能会将每个操作创建为具有 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