动态树在解决诸如网络流,动态图,组合问题(Tarjan和Werneck的“实践中的动态树”)以及最近合并的字典(Adam Karczmarz的“ A Simple Mergeable Dictionary”)等问题中起着重要的作用,
对于动态树,我指的是1983年Sleator&Tarjan的论文“动态树的数据结构”中所述的定义。此后,在功能编程研究领域几乎没有发表任何努力。
- Edward Kmett实施了ST树的一个版本,主要是作为C ++对应版本的翻译,请参阅Link-cut树。
- 克里斯·冈崎(Chris Okasaki)在他着名的《纯函数数据结构》一书中对Splay树做了有限的实现。
- Ralf Hinze和Ross Paterson引入了称为2-3手指树的功能数据结构,但其目标与动态树的原始定义有所不同。
动态树的实现(可能是性能)根据三种方法进行划分:
- 线性化,其中ET树(Euler游览)发挥了重要作用。找不到纯粹的功能研究。
- ST树是旗舰的路径分解,刚刚发现了Kmett的版本。
- 树收缩,其中顶级树,拓扑树和RC树是参与者。找不到纯粹的功能研究。
可以在Splay,AVL,红黑树上找到纯功能分析和实现,但不是动态树。前者被视为后者的影子(也称为虚拟或辅助)数据结构。
所以,我的问题是:
函数式编程研究社区不参与动态树数据结构的原因(缺点,弱点)是什么?
14
我不理解如果不组建一个权威的功能性编程社区委员会来形成官方意见,那么如何解决这个问题。我们不能重新表述这个问题,以便在这里可以回答一些问题吗?据我所知,OP应该只是去在Haskell或其他任何东西上实现他的动态树,然后回到这里报告毕竟它已经完成了。
—
Andrej Bauer
更新到@AndrejBauer:OP已经消失并在Haskell中实现了他的动态树:arxiv.org/abs/1908.11105
—
jbapple