NAME
Data::PrioQ::SkewBinomial - A functional priority queue based on skew binomial trees
SYNOPSIS
use aliased 'Data::PrioQ::SkewBinomial' => 'PQ';
my $pq = PQ->empty;
$pq = $pq->insert(1, "foo")->insert(3, "baz")->insert(2, "bar");
until ($pq->is_empty) {
($pq, my ($priority, $data)) = $pq->shift_min;
print "$priority: $data\n";
}
DESCRIPTION
This module provides a purely functional priority queue. "Purely functional" means no method ever modifies a queue; instead they all return a new modified object. There is no real constructor either because there's no need for one: if the empty queue is never modified, you can just reuse it.
The following methods are available:
Data::PrioQ::SkewBinomial->empty
O(1). Returns the empty queue.
$pq->is_empty
O(1). Tests whether a priority queue is empty. Returns a boolean value.
$pq->insert($priority, $item)
O(1). Returns a new queue containing $item
inserted into $pq
with a priority level of $priority
. $priority
must be a number.
$pq->merge($pq2)
O(1). Returns a new queue containing all elements of $pq
and $pq2
.
$pq->peek_min
O(1). Finds the item with the lowest priority value in $pq
. Returns ($priority, $item)
in list context and $item
in scalar context. If $pq
is empty, returns the empty list/undef.
$pq->shift_min
O(log n). Finds and removes the item with the lowest priority value in $pq
. Returns ($pq_, $priority, $item)
in list context and $pq_
in scalar context, where $pq_
is a priority queue containing the remaining elements. If $pq
is empty, returns ($pq, undef, undef)
/$pq
in list/scalar context, respectively.
AUTHOR
Lukas Mai, <l.mai at web.de>
BUGS
Please report any bugs or feature requests to bug-data-prioq-skewbinomial at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-PrioQ-SkewBinomial. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Data::PrioQ::SkewBinomial
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-PrioQ-SkewBinomial
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
The code in this module is based on: Chris Okasaki, Purely Functional Data Structures.
COPYRIGHT & LICENSE
Copyright 2008 Lukas Mai, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.