SubgraphMatching项目使用教程
1. 项目介绍
SubgraphMatching是一个开源项目,致力于研究内存中的子图匹配性能。该项目对比了八种代表性的内存子图匹配算法,包括QuickSI、GraphQL、CFL、CECI、DP-iso、RI和VF2++,并在过滤候选顶点、查询顶点排序、部分结果枚举以及其他优化技术四个方面进行了详细分析。项目基于SIGMOD'2020论文《In-Memory Subgraph Matching: an In-depth Study》。
2. 项目快速启动
环境准备
确保已经安装了CMake和相应的编译环境。
编译项目
在项目根目录下执行以下命令来编译源代码:
mkdir build
cd build
cmake ..
make
测试
编译成功后,执行以下命令来测试可执行文件的正确性:
cd test
python test.py ../build/matching/SubgraphMatching.out
运行
编译后,你可以在build/matching
目录下找到名为SubgraphMatching.out
的二进制文件。使用以下命令执行该文件:
./SubgraphMatching.out -d data_graphs -q query_graphs -filter method_of_filtering_candidate_vertices -order method_of_ordering_query_vertices -engine method_of_enumerating_partial_results -num number_of_embeddings
其中:
-d
指定数据图输入-q
指定查询图输入-filter
设置候选顶点过滤方法-order
设置查询顶点排序方法-engine
设置部分结果枚举方法-num
设置要找到的最大匹配数
如果要找到所有结果,可以将-num
设置为MAX
。
3. 应用案例和最佳实践
应用案例
使用GraphQL算法对样本数据集进行子图匹配:
./SubgraphMatching.out -d ../../test/sample_dataset/test_case_1.graph -q ../../test/sample_dataset/query1_positive.graph -filter GQL -order GQL -engine GQL -num MAX
最佳实践
根据数据图密度和查询大小,选择特定的技术。例如,对于密集图和大型查询,使用DP-iso算法的失效集剪枝技术可以显著提高性能。
4. 典型生态项目
SubgraphMatching项目可以与其他图处理项目结合使用,例如:
- 用于图存储和查询的JanusGraph
- 用于大规模图计算的Apache Giraph
这些项目共同构成了一个丰富的图计算生态系统,可以用于各种图数据处理和分析场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考