🤖 AI Summary
This paper addresses the efficient evaluation of Regular Path Queries (RPQs) in graph databases, targeting redundant computation in traditional Product Graph (PG) methods—especially under small-output scenarios. We propose OSPG, an output-sensitive algorithm that integrates product automaton construction with enhanced bidirectional reachability search, augmented by output-size-aware pruning and sparse-graph adaptation. Theoretically, OSPG achieves data complexity O(|E|^{3/2} + min(OUT·√|E|, |V||E|)) for general RPQs, and further improves to O(|E| + |E|·√OUT) for Kleene-star-free queries—strictly outperforming classical PG methods and yielding asymptotic speedups for sparse outputs. Experimental evaluation on real-world graphs confirms substantial reductions in both runtime and memory access overhead.
📝 Abstract
We study the classical evaluation problem for regular path queries: Given an edge-labeled graph and a regular path query, compute the set of pairs of vertices that are connected by paths that match the query. The Product Graph (PG) is the established evaluation approach for regular path queries. PG first constructs the product automaton of the data graph and the query and then uses breadth-first search to find the accepting states reachable from each initial state in the product automaton. Its data complexity is O(|V|.|E|), where V and E are the sets of vertices and respectively edges in the data graph. This complexity cannot be improved by combinatorial algorithms. In this paper, we introduce OSPG, an output-sensitive refinement of PG, whose data complexity is O(|E|^{3/2} + min(OUT.sqrt{|E|}, |V|.|E|)), where OUT is the number of distinct vertex pairs in the query output. OSPG's complexity is at most that of PG and can be asymptotically smaller for small output and sparse input. The improvement of OSPG over PG is due to the unnecessary time wasted by PG in the breadth-first search phase, in case a few output pairs are eventually discovered. For queries without Kleene star, the complexity of OSPG can be further improved to O(|E| + |E|.sqrt{OUT}).