NAME
Algorithm::CriticalPath - Perform a critical path analysis over a Graph Object, by Ded MedVed
VERSION
Version 0.03
SYNOPSIS
Performs a critical path analysis of a DAG where the vertices have costs, and the edges do not. All costs are assumed positive. Dummy Start and End nodes are used internally to aid the analysis.
The constructor takes a pre-constructed Graph object with weighted vertices and simple directed edges. The Graph object is embedded in the Algorithm::CriticalPath object as a readonly attribute, and cannot be updated once the Algorithm::CriticalPath object has been constructed. The two accessor attributes are 'rw', as I haven't found an easy way to default them from the constructor. They should be 'ro', i.e. not modifiable once set by the constructor.
The module checks that the passed-in Graph object is directed, non-cyclic, and simply connected, without multi-vertices and without multi-edges.
The module has been written on the assumption that no existing CPAN module performs this task.
METHODS
new
Algorithm::CriticalPath->new()
Creates and returns a new Algorithm::CriticalPath object.
my $g = Graph->new(directed => 1); $g->add_weighted_vertex('Node1', 1); $g->add_weighted_vertex('Node2', 2); $g->add_edge('Node1','Node2'); $g->add_weighted_vertex('Node3', 0.5); $g->add_edge('Node1','Node3'); my $cp = Algorithm::CriticalPath->new( {graph => $g} );
vertices
$g->vertices()
This returns the critical path as an array of node names.
my $g = Graph->new(directed => 1); $g->add_weighted_vertex('Node1', 1); $g->add_weighted_vertex('Node2', 2); $g->add_edge('Node1','Node2'); $g->add_weighted_vertex('Node3', 0.5); $g->add_edge('Node1','Node3'); my $cp = Algorithm::CriticalPath->new( {graph => $g} ); my @orderednodes = $cp->vertices();
cost
$g->cost()
This returns the critical path cost.
my $g = Graph->new(directed => 1); $g->add_weighted_vertex('Node1', 1); $g->add_weighted_vertex('Node2', 2); $g->add_edge('Node1','Node2'); $g->add_weighted_vertex('Node3', 0.5); $g->add_edge('Node1','Node3'); my $cp = Algorithm::CriticalPath->new( {graph => $g} ); my $cost = $cp->cost();
AUTHOR
Ded MedVed, <dedmedved at cpan.org>
BUGS
Please report any bugs or feature requests to bug-algorithm-criticalpath at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-CriticalPath. 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 Algorithm::CriticalPath
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Algorithm-CriticalPath
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
Copyright 2013 Ded MedVed.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.