Hi all,
has anyone spent some thought on how to efficiently represent sparse vectors in
Clojure?
A naive scheme I came up with is using a vector of [idx val] pairs, e.g.:
(def sparse-vec [[12 "a"][23 "aa"][25 "aaa"][234 "aaaa"]])
Accessing a value at an idx can be done so:
(get-nth sparse-vec 25)
=> "aaa"
with:
(defn get-nth [sparse-vec n]
(let [indices (map (fn [[i _]] i) sparse-vec)
idx (java.util.Collections/binarySearch indices n)
[_ v] (nth sparse-vec idx)]
v))
For this to work the indices have to be in order. Can anyone think of more
efficient (algorithmically and implementation wise)
ways of doing this?
Kind Regards
Andreas
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en