1 个不稳定版本
0.1.0 | 2021年4月3日 |
---|
#5 in #isomorphism
17KB
298 行代码
assert-graph-iso
一个测试实用工具,用于检查两个属性图是否相等,即是否同构。通过为每个图计算规范字符串表示来执行检查。如果规范表示相同,则认为图是同构的。该包应作为测试实用工具使用,它不是为大规模图比较而设计的。
属性图数据模型
属性图由节点和关系组成。节点可以有零个或多个标签,关系可以有零个或一个关系类型。节点和关系都具有属性,以键值对的形式组织。关系是有向的,从源节点开始,指向目标节点。
使用方法
该包包含一个Graph
特质,用于定义属性图。用户应为其自定义图实现实现该特质。该包还提供了一个gdl
特性,允许使用声明性语言简单定义图。有关该语言的更多信息,请参阅crates.io上的gdl。
相等性测试
use ::gdl::Graph as GdlGraph;
use assert_graph_iso::*;
let g1 = "(a), (b), (a)-[:REL { foo:42 }]->(b)".parse::<GdlGraph>().unwrap();
let g2 = "(a), (b), (b)-[:REL { foo:42 }]->(a)".parse::<GdlGraph>().unwrap();
assert!(equals(&g1, &g2))
比较规范表示以简化调试
use ::gdl::Graph as GdlGraph;
use assert_graph_iso::*;
let g1 = "(a:Label1), (b:Label2), (a)-->(b)".parse::<GdlGraph>().unwrap();
let g2 = "(a:Label2), (b:Label1), (b)-->(a)".parse::<GdlGraph>().unwrap();
assert_eq!(canonicalize(&g1), canonicalize(&g2))
许可证
Apache 2.0 或 MIT
依赖
~0–300KB