This is way out of my league, but have you had a look at Michals priority 
search queues?

https://github.com/michalmarczyk/psq.clj 
<https://github.com/michalmarczyk/psq.clj>

He had a presentation about them at Euroclojure in 2016

Priority Search Queues: 1.5 dimensional Tree Search - MichaƂ Marczyk 
<https://www.youtube.com/watch?v=pZ9gBKO_qCA&index=8&list=PLZdCLR02grLowQLPjuZ7k3pl2ScEyW7A7>

Erik.
> On 8 Apr 2017, at 05:49, Brian Beckman <bc.beck...@gmail.com> wrote:
> 
> I have found a few data types in Clojure that support search and priority 
> queues. In particular, I found 
> 
> Priority Map    https://github.com/clojure/data.priority-map
> PSQ    https://goo.gl/Dw4gkV
> data.avl    https://goo.gl/e07q7H
> 
> I would be grateful for a few clarifying words on whether any of these can 
> meet my requirements out-of-the-box before I begin a deep-dive. Forgive me 
> for being a bit lazy (actually, just in a hurry), but I thought I'd check 
> whether someone knows an answer for me off-the-cuff.
> 
> I need collections of [k v] pairs supporting efficient peek, pop, get, and 
> subseq-style search on either the key space or on the value space. I need all 
> operations on just one of the two spaces.
> 
> Priority map supports efficient peek and pop of the value space on its API 
> surface, but I don't see a get subseq (or rsubseq) or other way to quickly 
> search the value space on the API surface. The comments in the source suggest 
> that there is an auxiliary inverse sorted map from values to keys. The 
> supported "get" operation seems to operate on the key space, but I could use 
> one on the value space (see line 313 of https://goo.gl/qhfXKL). Perhaps that 
> inverse map easy to get at, in which case I'll be done.
> 
> PSQ supports peek and pop on values, and efficient search on keys, according 
> to its documentation. Do I read that correctly?
> 
> I have not read the documentation for data.avl deeply enough to know whether 
> it will do my job out-of-the box. But I am sure I could build what I need on 
> top of AVL trees, RB trees, 2-3 trees, splay trees, etc. I'm just looking to 
> save myself work (and use tested software).
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en 
> <http://groups.google.com/group/clojure?hl=en>
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com 
> <mailto:clojure+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to