【发布时间】:2020-04-16 22:02:35
【问题描述】:
我正在尝试使用 core.logic 对图形进行建模,并希望将所有具有边的节点与其他两个节点匹配。我想出了以下内容,但它返回两个结果而不是所需的结果,因为 [2 3 4] 和 [2 4 3] 是等价的。如何将查询限制为只返回所需的结果?
(use 'clojure.core.logic.pldb)
(db-rel edge a b)
(def g
(db
[edge 1 2]
[edge 2 3]
[edge 3 4]
[edge 2 4]))
(with-db g
(run* [q]
(fresh [x y z]
(edge x y)
(edge x z)
(!= y z)
(== q [x y z]))))
【问题讨论】:
标签: graph clojure clojure-core.logic