🤖 AI Summary
Rule systems in real-time applications often suffer from exponential time and space complexity due to insufficient variable constraints or intermediate match explosion, leading to response latency or memory overflow—particularly when rules are auto-generated by online AI systems, which frequently trigger worst-case matching behavior. To address this, we propose a novel pattern-matching method based on iterative relational graph traversal: forward construction of an instantiation graph followed by backward traversal to generate matches, eliminating RETE’s β-memory and exhaustive conflict-set maintenance. Our approach is the first to guarantee strict quadratic time and space complexity while supporting streaming match output. Experimental evaluation demonstrates significant performance gains over RETE-based implementations in SOAR and OPS5 on combinatorial matching tasks, markedly improving stability and throughput in real-time AI planning, reactive control, and low-latency query systems.
📝 Abstract
Rule-based systems must solve complex matching problems within tight time constraints to be effective in real-time applications, such as planning and reactive control for AI agents, as well as low-latency relational database querying. Pattern-matching systems can encounter issues where exponential time and space are required to find matches for rules with many underconstrained variables, or which produce combinatorial intermediate partial matches (but are otherwise well-constrained). When online AI systems automatically generate rules from example-driven induction or code synthesis, they can easily produce worst-case matching patterns that slow or halt program execution by exceeding available memory. In our own work with cognitive systems that learn from example, we've found that aggressive forms of anti-unification-based generalization can easily produce these circumstances. To make these systems practical without hand-engineering constraints or succumbing to unpredictable failure modes, we introduce a new matching algorithm called CORGI (Collection-Oriented Relational Graph Iteration). Unlike RETE-based approaches, CORGI offers quadratic time and space guarantees for finding single satisficing matches, and the ability to iteratively stream subsequent matches without committing entire conflict sets to memory. CORGI differs from RETE in that it does not have a traditional $β$-memory for collecting partial matches. Instead, CORGI takes a two-step approach: a graph of grounded relations is built/maintained in a forward pass, and an iterator generates matches as needed by working backward through the graph. This approach eliminates the high-latency delays and memory overflows that can result from populating full conflict sets. In a performance evaluation, we demonstrate that CORGI significantly outperforms RETE implementations from SOAR and OPS5 on a simple combinatorial matching task.