10.50 2 3 * THIS IS NOT COMPATIBLE with the old 0.2xxx series of the Graph 4 module. Your scripts are likely to break. I did try to fashion a 5 nice compatibility mode but there was no way to do that cleanly 6 and to cover all the old oddities. You can try the compatibility 7 mode but I suggest changing your code instead because the compat 8 mode is not going to be carried over to the next releases of the 9 module. 10 11 * The main reason for introducing the incompatibilities was that 12 the new Graph supports graphs of 'higher dimensions', and the 13 assumptions made by the old module (most importantly that edges 14 could only span two vertices) in effect made it impossible to 15 extend the interfaces. 16 17 * The most serious incompatibility is edges(): with the old 18 way in list context it returned the vertices of the edges as a 19 flat list. Now it returns a list of anonymous arrays that contain 20 the vertices for each edge. 21 22 * vertices() now returns the vertices in an undefined order. 23 24 * This release does not worry much about speed (some inlining 25 of the "hot paths" has been done, however), but instead 26 about correctness and documentation. Everything is probably 27 slower than 0.2xx by a factor of two to five, or worse. 28 29 * The average size of an empty graph is about 1160 bytes. 30 * The average size per vertex is about 110 bytes. 31 * The average size per edge is about 390 bytes. 32 * These figures are for a 32-bit Perl. 33 34 * If you want speed (or especially if you want small memory 35 footprint), you shouldn't be using pure Perl. Consider using 36 things like PDL (pdl.perl.org), XS interfaces to LEDA or Boost Graph 37 libraries (no, I don't know of such interfaces), or build your own 38 algorithms on top of Bit::Vector, or resort non-Perl solutions 39 like MATLAB or Mathematica, or again LEDA or Boost. 40 41 * The current implementation of Graph objects is decidedly 42 non-trivial (see DESIGN), which means that you cannot extend 43 it in trivial ways (e.g. access vertices of a graph as keys 44 in a hash). But you shouldn't be doing things like that anyway, 45 peeking and poking at objects' innards, right? 46 47 * The next version of Graph (most likely 0.90) is going to aim 48 for speed. The backward compatibility for the 0.2xxx series 49 will be dropped (because that, too, slows down this release). 50 51 * No DAG SSSP has been implemented for this release. 52 Dijkstra and Bellman-Ford SSSPs are available, though. 53 54 * No flow network algorithms (like Ford-Fulkerson) have been 55 implemented for this release. This omission will no doubt bring 56 out from the woodwork all the myriad users of flow networks. 57 58 * This release depends on the List::Util module, part of Perl 59 releases since Perl 5.8.0, or available from the CPAN. (Also the 60 Heap module is required, as it was already with Graph 0.2xxx.) 61 62 * This release requires at least Perl 5.005, a step up from 63 5.004_04 as required by 0.2xx. (I just don't have 5.004 64 installed any more, so I simply wasn't able to test this 65 release with 5.004.) 66 67-- 68