paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Pushing the Information-Theoretic Limits of Random Access Lists: Traversing Cons Lists in (1 + 1/𝜎 ) ⌊lg 𝑛⌋ + 𝜎 + 9 Steps

逼近随机访问表的信息论极限:以 (1 + 1/σ)⌊lg n⌋ + σ + 9 步遍历 cons 表
ICFP 9(ICFP)2025匹配度 1/10 · 该论文属于函数式编程中的数据结构与理论优化,研究 cons 表随机访问的指针遍历上界,与用户关注的静态分析、LLM/Agent 与程序分析交叉、浮点程序分析或贝叶斯程序分析均无直接关系。引用 0 inbox
Edward Peters, Yong Qi Foo, Michael D. Adams
crossref: 2026-09-10

AI 速览

一句话:提出两种随机访问表变体,将 cons 表任意元素访问的指针遍历上界从 3⌈lg n⌉−5 改进至接近信息论最优。

单链表(cons 表)的任意元素访问最坏需线性遍历指针。applicative random-access list 将这一代价降至对数级,此前最好上界为 3⌈lg n⌉−5。本文研究如何进一步逼近信息论下界 ⌈lg(n+1)⌉−1。作者先给出一个简单变体,把访问任意元素的指针遍历次数上界改进为 2⌈lg(n+1)⌉−3;随后提出更复杂的变体,对任意 σ≥1 达到 (1+1/σ)⌊lg n⌋+σ+9。该结果表明,在保持 cons 表式接口的同时,随机访问的遍历代价可以渐近接近信息论最优。评估以最坏情况指针遍历次数的上界证明为主,并与已有随机访问表及信息论下界比较。

问题
cons 表任意元素访问需线性遍历指针,已有随机访问表虽达对数级,但仍远离信息论最优下界 ⌈lg(n+1)⌉−1。
方法
通过设计两种 applicative random-access list 变体——一个简单变体和一个参数化复杂变体——改进最坏情况指针遍历上界。
评估
以最坏情况指针遍历次数的数学证明为评估,比较改进上界与旧上界及信息论下界。
原文摘要(Abstract)

Accessing an arbitrary element of a singly linked list or cons list requires traversing up to a linear number of pointers. The applicative random-access list is a data structure that behaves like a cons list except that accessing an arbitrary element traverses only a logarithmic number of pointers. Specifically, in a list of length n , an arbitrary element can be accessed by traversing at most 3 ⌈ lg n ⌉ − 5 pointers. In this paper, we present a simple variation on random-access lists that improves this bound and requires traversing at most 2 ⌈ lg ( n + 1 ) ⌉ − 3 pointers. We then present a more complicated variation that improves this bound to ( 1 + 1 σ ) ⌊ lg n ⌋ + σ + 9 for any σ ≥ 1 . This shows that it is possible to get asymptotically close to the information-theoretically optimal bound of ⌈ lg ( n + 1 ) ⌉ − 1 .

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot3034,
  title = {Pushing the Information-Theoretic Limits of Random Access Lists: Traversing Cons Lists in (1 + 1/𝜎 ) ⌊lg 𝑛⌋ + 𝜎 + 9 Steps},
  author = {Edward Peters and Yong Qi Foo and Michael D. Adams},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {ICFP},
  year = {2025},
  doi = {10.1145/3747536}
}