paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Algebras for weighted search

加权搜索的代数
ICFP 5(ICFP)2021匹配度 1/10 · 论文属于函数式编程与形式语义,研究加权搜索的代数结构和 monad transformer,与用户关注的静态分析/LLM/Agent、浮点程序分析及贝叶斯程序分析均无直接关联;仅概率采样主题与贝叶斯方向有极弱联系。引用 6 inbox
Donnacha Oisín Kidney, Nicolas Wu
crossref: 2026-09-10

AI 速览

一句话:提出以自由半模 monad 为代数基础的加权搜索框架,并实现 Dijkstra 与高效概率采样。

加权搜索是许多基础算法的重要组件,但作为计算效应,其研究远少于深度优先或广度优先搜索。本文探索加权搜索的代数基础,并展示如何将其实现为 monad transformer。作者首先将广度优先搜索表达为半环上的多项式,再推广到自由半模 monad,以涵盖概率 monad、多项式 monad 及加权搜索等广泛应用。随后,基于自由半模 monad 引入 monad transformer,通过优化该类型得到配对堆,并用于实现 Dijkstra 算法和高效概率采样。该构造在 Cubical Agda 中形式化,并在 Haskell 中实现。

问题
加权搜索作为计算效应研究不足,缺乏统一的代数基础与可复用实现。
方法
将广度优先搜索表示为半环上的多项式,并推广到自由半模 monad,进而构造 monad transformer 并施加优化。
评估
优化后的构造得到配对堆,用于实现 Dijkstra 算法与高效概率采样;形式化于 Cubical Agda,并在 Haskell 中实现。
原文摘要(Abstract)

Weighted search is an essential component of many fundamental and useful algorithms. Despite this, it is relatively under explored as a computational effect, receiving not nearly as much attention as either depth- or breadth-first search. This paper explores the algebraic underpinning of weighted search, and demonstrates how to implement it as a monad transformer. The development first explores breadth-first search, which can be expressed as a polynomial over semirings. These polynomials are generalised to the free semimodule monad to capture a wide range of applications, including probability monads, polynomial monads, and monads for weighted search. Finally, a monad transformer based on the free semimodule monad is introduced. Applying optimisations to this type yields an implementation of pairing heaps, which is then used to implement Dijkstra's algorithm and efficient probabilistic sampling. The construction is formalised in Cubical Agda and implemented in Haskell.

链接与引用

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

BibTeX
@article{paperbot1112,
  title = {Algebras for weighted search},
  author = {Donnacha Oisín Kidney and Nicolas Wu},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {5},
  number = {ICFP},
  year = {2021},
  doi = {10.1145/3473577}
}