33RGL is a framework for graph data structures and algorithms.
44
55The design of the library is much influenced by the Boost Graph Library (BGL)
6- which is written in C++. Refer to http ://www.boost.org/libs/graph/doc for
6+ which is written in C++. Refer to https ://www.boost.org/libs/graph/doc for
77further links and documentation on graph data structures and algorithms and
88the design rationales of BGL.
99
1010A comprehensive summary of graph terminology can be found in the graph section
1111of the * Dictionary of Algorithms and Data Structures* at
12- http ://www.nist.gov/dads/HTML/graph.html or
12+ https ://www.nist.gov/dads/HTML/graph.html or
1313[ Wikipedia] ( https://en.wikipedia.org/wiki/Graph_%28discrete_mathematics%29 ) .
1414
1515## Documentation
1616
17- * RGL's [ API Reference] ( http://www.rubydoc.info/github/monora/rgl ) at
18- http://rubydoc.info
19-
17+ * RGL's [ API Reference] ( https://www.rubydoc.info/github/monora/rgl ) at
18+ https://rubydoc.info
2019
2120## Design principles
2221
@@ -31,7 +30,6 @@ Ruby. The main design goals directly taken from the BGL design are:
3130* A standardized generic interface for traversing graphs
3231 {RGL::GraphIterator}
3332
34-
3533RGL provides some general purpose graph classes that conform to this
3634interface, but they are not meant to be the ** only** graph classes. As in BGL
3735I believe that the main contribution of the RGL is the formulation of this
@@ -48,11 +46,10 @@ achieve genericity:
4846* Element Type Parameterization
4947* Vertex and Edge Property Multi-Parameterization
5048
51-
5249The first is easily achieved in RGL using mixins, which of course is not as
5350efficient than C++ templates (but much more readable :-). The second one is
5451even more easily implemented using standard iterators with blocks or using the
55- [ stream] ( http ://www.rubydoc.info/github/monora/stream) module. The third one
52+ [ stream] ( https ://www.rubydoc.info/github/monora/stream) module. The third one
5653is no issue since Ruby is dynamically typed: Each object can be a graph
5754vertex. There is no need for a vertex (or even edge type). In the current
5855version of RGL properties of vertices are simply attached using hashes. At
@@ -65,7 +62,6 @@ RGL current contains a core set of algorithm patterns:
6562* Breadth First Search {RGL::BFSIterator}
6663* Depth First Search {RGL::DFSIterator}
6764
68-
6965The algorithm patterns by themselves do not compute any meaningful quantities
7066over graphs, they are merely building blocks for constructing graph
7167algorithms. The graph algorithms in RGL currently include:
@@ -77,7 +73,6 @@ algorithms. The graph algorithms in RGL currently include:
7773* Dijkstras Shortest Path Algorithm {RGL::DijkstraAlgorithm}
7874* Bellman Ford Algorithm {RGL::BellmanFordAlgorithm}
7975
80-
8176### Data Structures
8277
8378RGL currently provides two graph classes that implement a generalized
@@ -86,7 +81,6 @@ adjacency list and an edge list adaptor.
8681* {RGL::AdjacencyGraph}
8782* {RGL::ImplicitGraph}
8883
89-
9084The AdjacencyGraph class is the general purpose _ swiss army knife_ of graph
9185classes. It is highly parameterized so that it can be optimized for different
9286situations: the graph is directed or undirected, allow or disallow parallel
@@ -95,20 +89,20 @@ removal at the cost of extra space overhead, etc.
9589
9690### Differences to BGL
9791
98- The concepts of IncidenceGraph, AdjacencyGraph and VertexListGraph (see
99- http ://www.boost.org/libs/graph/doc/IncidenceGraph.html ) are here bundled in
100- the base graph module. Most methods of IncidenceGraph should be standard in
101- the base module Graph. The complexity guarantees can not necessarily provided.
102- See http ://www.boost.org/libs/graph/doc/graph_concepts.html .
92+ The concepts of IncidenceGraph, AdjacencyGraph and VertexListGraph
93+ (see [ IncidenceGraph ] ( https ://www.boost.org/libs/graph/doc/IncidenceGraph.html) ) are
94+ bundled in RGL's base graph module. Most methods of IncidenceGraph
95+ should be standard in the base module Graph. The complexity guarantees
96+ can not necessarily provided (see [ BGL's Graph Concepts ] ( https ://www.boost.org/libs/graph/doc/graph_concepts.html) ) .
10397
10498## Installation
10599
106100 % gem install rgl
107101
108- or download the latest sources from the git repository
109- http ://github.com/monora/rgl .
102+ or download the latest sources from the [ git
103+ repository ] ( https ://github.com/monora/rgl) .
110104
111- If you are going to use the drawing functionalities install [ Graphviz] ( http ://www.graphviz.org/) .
105+ If you are going to use the drawing functionalities install [ Graphviz] ( https ://www.graphviz.org/) .
112106
113107## Running tests
114108
@@ -229,8 +223,6 @@ This graph shows all loaded RGL modules:
229223Look for more in
230224[ examples] ( https://github.com/monora/rgl/tree/master/examples ) directory.
231225
232- I collect some links to stuff around RGL at http://del.icio.us/monora/rgl .
233-
234226## Credits
235227
236228Many thanks to Robert Feldt which also worked on a graph library
@@ -239,29 +231,28 @@ graph resources.
239231
240232Robert kindly allowed to integrate his work on graphr, which I did not yet
241233succeed. Especially his work to output graphs for
242- [ GraphViz] ( http ://www.graphviz.org) is much more elaborated than the minimal
234+ [ GraphViz] ( https ://www.graphviz.org) is much more elaborated than the minimal
243235support in dot.rb.
244236
245237Jeremy Siek one of the authors of the nice book [ The Boost Graph
246- Library] ( http ://www.boost.org/libs/graph/doc) kindly allowed to use the BGL
238+ Library] ( https ://www.boost.org/libs/graph/doc) kindly allowed to use the BGL
247239documentation as a * cheap* reference for RGL. He and Robert also gave feedback
248240and many ideas for RGL.
249241
250- Dave Thomas for [ RDoc] ( http ://rdoc.sourceforge.net) which generated what you
242+ Dave Thomas for [ RDoc] ( https ://rdoc.sourceforge.net) which generated what you
251243read and matz for Ruby. Dave included in the latest version of RDoc (alpha9)
252244the module dot/dot.rb which I use instead of Roberts module to visualize
253245graphs (see rgl/dot.rb).
254246
255- Jeremy Bopp, John Carter, Sascha Doerdelmann, Shawn Garbett, Andreas Schörk
256- and Kirill Lashuk for contributing additions, test cases and bugfixes.
257-
258- Kirill Lashuk who started to take over further development in November 2012.
247+ Jeremy Bopp, John Carter, Sascha Doerdelmann, Shawn Garbett, Andreas
248+ Schörk, Dan Čermák and Kirill Lashuk for contributing additions, test
249+ cases and bugfixes.
259250
260- See also http ://github.com/monora/rgl/contributors.
251+ See also: https ://github.com/monora/rgl/contributors
261252
262253## Copying
263254
264- RGL is Copyright (c) 2002,2004,2005,2008,2013,2015,2019,2020 by Horst
255+ RGL is Copyright (c) 2002,2004,2005,2008,2013,2015,2019,2020,2022 by Horst
265256Duchene. It is free software, and may be redistributed under the [ Ruby
266257license] ( https://en.wikipedia.org/wiki/Ruby_License ) and terms specified in
267258the LICENSE file.
0 commit comments