这篇博客简要总结了我的 GSoC 2018 项目(并行图开发)以及取得的结果。有关详细说明,请参阅我的 GSoC 博客。
该项目分布在 LightGraphs 代码库中。它涉及
生成关键图算法的并行实现。
改进 LightGraphs 中关键图算法的顺序实现。
实施启发式方法以获得关键 NP-Hard 图问题的良好解决方案。
基准测试是在使用 4 个内核的 64 位 Linux 机器上进行的。
编号 | 图 | 顶点 | 边 |
---|---|---|---|
1 | 推特社交圈 | 81,306 | 1,342,310 |
2 | 天体物理合作 | 17,903 | 197,031 |
3 | Facebook 社交圈 | 4,039 | 88,234 |
这些图来自 SNAPDatasets 仓库。
算法 | 推特 | 天体物理 | |
---|---|---|---|
广度优先搜索 | 1.92 | 2.59 | 1.54 |
PageRank | 1.77 | 1.54 | 1.65 |
Bellman Ford 单源最短路径 | - | - | 1.88 |
Floyd Warshall 全对最短路径 | - | - | 1.27 |
Johnson 全对最短路径 | - | - | 2.10 |
随机启发式 | 1.88 | 1.70 | 1.66 |
介数中心性 | - | - | 1.96 |
接近中心性 | - | - | 2.17 |
压力中心性 | - | - | 1.66 |
算法 | 推特 | 天体物理 | |
---|---|---|---|
PageRank | 3.05 | 3.37 | 3.17 |
Dijkstra 单源最短路径 | 2.80 | 2.10 | 1.68 |
Prim 最小生成树 | 7.65 | 4.25 | 4.05 |
Kruskal 最小生成树 | 7.70 | 3.37 | 2.80 |
算法 | 推特 | 天体物理 | |
---|---|---|---|
并行 | 7.07 | 1.20 | 0.26 |
顺序 | 13.63 | 3.11 | 0.41 |
本节列出了已实现的功能以及指向我 克隆的 LightGraphs 仓库 中相应分支的链接。
以下分支已合并到 LightGraphs master 中
最小顶点覆盖
最小支配集
最大独立集
顶点连通性
介数中心性
接近中心性
压力中心性
以下分支未合并到 LightGraphs master 中,因为该功能不适合 LightGraphs
以下分支未合并到 LightGraphs 中,因为并行实现比顺序实现慢
我要感谢我的导师 Divyansh Srivastava 和 LightGraphs 共同所有者 Seth Bromberger 在夏季审查我的代码并提供宝贵的建议。我还感谢 Julia 项目 和 NUMFocus 赞助我参加 JuliaCon 2018。