一句话:证明以进程数为参数时,栈、队列、优先队列和映射的线性一致性监测是固定参数可处理的。
线性一致性监测判断给定并发历史是否等价于数据结构的某次顺序执行,一般 NP 难,即使对寄存器等简单对象;已有工作仅处理受限历史。本文从参数化视角重新审视可处理边界,证明对栈、队列、优先队列和映射等广泛数据结构,以进程数 k 为参数时线性一致性监测是固定参数可处理的,时间为 O(c^k·poly(n))(n 为历史长度)。方法将问题归约为图上的语言可达性:判断带标签图是否存在标签序列属于固定语言 L 的路径,并识别刻画上述数据结构顺序规约的语言类。作者实现原型并显著加速;结果补充既有难解性与可处理子类,提供统一框架。
We study the linearizability monitoring problem, which asks whether a given concurrent history of a data structure is equivalent to some sequential execution of the same data structure. In general, this problem is NP -hard, even for simple objects such as registers. Recent work has identified tractable cases for restricted classes of histories, notably unambiguous and differentiated histories. We revisit the tractability boundary from a fine-grained, parameterized perspective. We show that for a broad class of data structures — including stacks, queues, priority queues, and maps—linearizability monitoring is fixed-parameter tractable when parameterized by the number of processes. Concretely, we give an algorithm running in time O ( c k · poly ( n )), where n is the history size, k is the number of processes, and c is a constant, yielding efficient performance when k is small. Our approach reduces linearizability monitoring to a language reachability problem on graphs, which asks whether a labeled graph admits a path whose label sequence belongs to a fixed language L . We identify classes of languages that capture the sequential specifications of the above data structures and show that language reachability is efficiently solvable on the graph structures induced by concurrent histories. Our results complement prior hardness results and existing tractable subclasses, and provide a unified algorithmic framework. We implement our approach and demonstrate significant runtime improvements over existing algorithms, which exhibit exponential worst-case behavior.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{abs-2509-05586,
title = {Fixed Parameter Tractable Linearizability Monitoring},
author = {Zheng Han Lee and Umang Mathur},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {PLDI},
year = {2026},
doi = {10.1145/3808315}
}