We report on recent advances in rule-based graph programming, which allow us to match the time complexity of some fundamental imperative graph algorithms. In general, achieving the time complexity of graph algorithms implemented in conventional languages using a rule-based graph-transformation language is challenging due to the cost of graph matching. Previous work demonstrated that with rooted rules, certain algorithms can be implemented in the graph programming language GP 2 such that their runtime matches the time complexity of imperative implementations. However, this required input graphs to have a bounded node degree and (for some algorithms) to be connected. In this paper, we overcome these limitations by enhancing the graph data structure generated by the GP 2 compiler and exploiting the new structure in programs. We present three case studies: the first program checks whether input graphs are connected, the second program checks whether input graphs are acyclic, and the third program solves the single-source shortest-paths problem for graphs with integer edge-weights. The first two programs run in linear time on (possibly disconnected) input graphs with arbitrary node degrees. The third program runs in time $O(nm)$ on arbitrary input graphs, matching the time complexity of imperative implementations of the Bellman-Ford algorithm. For each program, we formally prove its correctness and time complexity, and provide runtime experiments on various graph classes.
翻译:我们报告了基于规则的图编程的最新进展,这使得我们能够匹配一些基本命令式图算法的时间复杂度。通常,由于图匹配的成本,使用基于规则的图变换语言实现传统语言中的图算法的时间复杂度颇具挑战性。先前的研究表明,采用有根规则后,某些算法可以在图编程语言GP 2中实现,其运行时能够匹配命令式实现的时间复杂度。然而,这要求输入图具有有界节点度数,并且(对于某些算法)要求图是连通的。本文通过增强GP 2编译器生成的图数据结构并在程序中利用新结构,克服了这些限制。我们提出了三个案例研究:第一个程序检查输入图是否连通,第二个程序检查输入图是否无环,第三个程序解决具有整数边权的图的单源最短路径问题。前两个程序在可能不连通且节点度数任意的输入图上线性时间内运行。第三个程序在任意输入图上以$O(nm)$时间运行,匹配了Bellman-Ford算法命令式实现的时间复杂度。对于每个程序,我们正式证明了其正确性和时间复杂度,并提供了各类图上的运行时实验。