为什么函数式编程没有研究动态树?


19

动态树在解决诸如网络流,动态图,组合问题(Tarjan和Werneck的“实践中的动态树”)以及最近合并的字典(Adam Karczmarz的“ A Simple Mergeable Dictionary”)等问题中起着重要的作用,

对于动态树,我指的是1983年Sleator&Tarjan的论文“动态树的数据结构”中所述的定义。此后,在功能编程研究领域几乎没有发表任何努力。

  1. Edward Kmett实施了ST树的一个版本,主要是作为C ++对应版本的翻译,请参阅Link-cut树
  2. 克里斯·冈崎(Chris Okasaki)在他着名的《纯函数数据结构》一书中对Splay树做了有限的实现。
  3. Ralf Hinze和Ross Paterson引入了称为2-3手指树的功能数据结构,但其目标与动态树的原始定义有所不同。

动态树的实现(可能是性能)根据三种方法进行划分:

  1. 线性化,其中ET树(Euler游览)发挥了重要作用。找不到纯粹的功能研究。
  2. ST树是旗舰的路径分解,刚刚发现了Kmett的版本。
  3. 树收缩,其中顶级树,拓扑树和RC树是参与者。找不到纯粹的功能研究。

可以在Splay,AVL,红黑树上找到纯功能分析和实现,但不是动态树。前者被视为后者的影子(也称为虚拟或辅助)数据结构。

所以,我的问题是:

函数式编程研究社区不参与动态树数据结构的原因(缺点,弱点)是什么?


14
我不理解如果不组建一个权威的功能性编程社区委员会来形成官方意见,那么如何解决这个问题。我们不能重新表述这个问题,以便在这里可以回答一些问题吗?据我所知,OP应该只是去在Haskell或其他任何东西上实现他的动态树,然后回到这里报告毕竟它已经完成了。
Andrej Bauer

更新到@AndrejBauer:OP已经消失并在Haskell中实现了他的动态树:arxiv.org/abs/1908.11105
jbapple

Answers:


-1

“在计算机科学中,函数式编程是一种编程范例。一种构建计算机程序的结构和元素的样式,它将计算视为对数学函数的评估,并避免更改状态和可变数据。” -维基百科

“改变状态和可变数据”,即“动态”。

所以你的问题有点像问为什么左不正确。


1
功能程序可以表示具有持久数据结构的动态数据。这个问题是在问为什么尚未研究针对某个问题的持久性数据结构的开发。这个问题是有道理的。
恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.