2010-08-04 33 views
16

¿Existen implementaciones de una estructura de datos soft heap puramente funcional en cualquier idioma?Pilas blandas puramente funcionales

+0

llegué a través de un poco de ella la noche anterior; No he verificado las complejidades de tiempo, pero parecen incorrectas log (1/e) donde e es 0 nlucaroni

+0

¡Genial! El registro solo es negativo para argumentos menores que 1, pero 1/ε no es porque 0 <ε <1 por lo tanto 1 <ε⁻¹ <∞. –

+1

Oh, por supuesto. Sí, tiene usted razón. Estaba claramente (o no supongo), pensando en log (ε). Entonces, cuando dice que todas las operaciones se amortizan cuestan 0, ¿está hablando de un factor constante? – nlucaroni

Respuesta

20

Una búsqueda rápida de la biblioteca digital de ACM indica que la estructura de montón blando de Chazelle, a pesar de ser muy interesante, ha recibido relativamente poco estudio y que los montones suaves persistentes/funcionales son un tema de investigación abierto.

Así que diría que no, no hay enfoques conocidos para los acumulados suaves persistentes. Describir uno sería un resultado publicable (puede reducirse a agregar copia en la que mutarías la estructura original e identificar oportunidades de intercambio).

+3

@Jon, si planeas abordar este problema, y ​​aún no has leído * Estructuras de Datos Puramente Funcionales *, te sugiero que lo hagas. A pesar de que no cubre los montones suaves, le enseñará los principios básicos del diseño de la estructura de datos funcionales que serán útiles para abordar este problema. –

+1

Hay una implementación de OCaml con todas las funciones de montones oblicuos binomiales de Okasaki en mi biblioteca Oni CF: http://bitbucket.org/jhw/oni –

0

Este proyecto tiene un código Java que puede no ser demasiado terrible para traducir a Scala ... y luego hacerlo más funcional.

https://github.com/lowasser/SoftSelect

Pero como se señaló anteriormente el puramente funcional libro Estructuras de datos tiene el código de Haskell que puede ser más fácil adoptar a Soft Montones, especialmente teniendo en cuenta el ejemplo de código Java.

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

+0

También estoy viendo este documento del ACM donde SoftHeaps está hecho con binarios Árboles: http://dl.acm.org/citation.cfm?id=1496823 – RudeDude

Cuestiones relacionadas