From: "Brian Schröder" Date: 2005-08-30T07:03:54+09:00 Subject: [ANN] Priority Queue 0.0.0.0. ... .0 ------=_Part_24_31164064.1125353029936 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline As I recently said, I'd like some more advanced datastructures in ruby. So I wrote a nice priority queue extension. Maybe it's not so nice c-code right now, because it is my first try on an extension, but it works really good. I created quite a quick quiz solver with it ;-) As I have a problem with my webspace at the moment, this first release is mailing list only. The extension is not packaged for installation but it is easy to build and use. It's late here and I'm talking weird stuff, so I'll just paste the readme and append the library. Have fun, Brian -------------------------------------------------- # Ruby extension implementing a priority queue ## Description This is a fibonacy heap priority queue implementation. That means insert: O(1) decrease_priority: Amortized O(1) delete_min: Amortized O(log n) ## Legal stuff (c) 2005 Brian Schr=F6der Please submit bugreports to priority_queue@brian-schroeder.de This extension is under the same license as ruby. Do not hold me reliable for anything that happens to you, your programs or anything else because of this extension. It worked for me, but there is no guarantee it will work for you. ## Installation $ ruby extconf.rb $ make put priority_queue.so somewhere where your program can find it. E.g. /usr/local/lib/ruby/1.8/priority_queue.so ## Usage require 'priority_queue' q =3D PriorityQueue.new q.push "node1", 0=20 q.puts "node2", 1 q.min #=3D> "node1" q.decrease_priority("node2", -1) q.pop_min #=3D> "node2" q.min #=3D> "node1" -------------------------------------------------- --=20 http://ruby.brian-schroeder.de/ Stringed instrument chords: http://chordlist.brian-schroeder.de/ ------=_Part_24_31164064.1125353029936 Content-Type: application/octet-stream; name="priority_queue.tar.bz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="priority_queue.tar.bz" QlpoOTFBWSZTWabSgW8ANHX//////3//////////////////v/9//+////93//v//++/4Ce99wAA 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 ------=_Part_24_31164064.1125353029936 Content-Type: application/x-gzip; name="priority_queue.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="priority_queue.tar.gz" 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 ------=_Part_24_31164064.1125353029936--