2010-08-04 30 views
16

是否有任何语言的纯功能soft heap数据结构的实现?纯功能软堆

+0

我昨晚通过了一点;我没有验证时间复杂性,但他们似乎错误的log(1/e)其中e是0 nlucaroni 2010-08-05 15:11:14

+0

太棒了!对于小于1的参数,对数只有负值,但1 /ε不是因为0 <ε<1所以1 <ε - 1 <∞。 – 2010-08-05 18:36:46

+1

哦,当然。你是对的。我清楚地(或不是我想的),想着日志(ε)。所以,当他说所有的业务都是摊销成本0时,他是在谈论一个不变的因素? – nlucaroni 2010-08-05 18:48:32

回答

20

对ACM数字图书馆的快速搜索表明Chazelle的软堆结构尽管非常有趣,但收到的研究相对较少,因此持久性/功能性软堆是一个开放的研究课题。

所以我会说不,没有已知的方法持久软堆。描述一个将是一个可发布的结果(这可能归结为添加复制,你会改变原始结构,并识别共享机会)。

+3

@Jon,如果您打算解决这个问题,并且您还没有阅读* Purely Functional Data Structures *,我建议您这样做。尽管它不包含软堆,它将教会你如何解决这个问题,从而帮助你理解功能数据结构设计的基本原理。 – 2010-08-04 13:42:36

+1

在我的Oni CF库中有一个相当全功能的OCaml实现Okasaki的歪斜二项式堆栈:http://bitbucket.org/jhw/oni – 2010-09-15 01:19:44

0

该项目的Java代码可能不会太糟糕,无法转换为Scala ...然后使其功能更强大。

https://github.com/lowasser/SoftSelect

但正如前面所提到的纯功能性数据结构本书有Haskell代码可能更易于采用软堆,尤其是考虑到例如Java代码。

https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

+0

我也在看ACM的这篇文章,其中SoftHeaps是用二进制树木:http://dl.acm.org/citation.cfm?id=1496823 – RudeDude 2014-07-07 21:43:20