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算法的命令式实现的时间复杂度相匹配。对于每个程序,我们形式化证明了其正确性和时间复杂度,并提供了在不同图类上的运行时实验。