[Lemon-commits] Peter Kovacs: Simplify the first example code + ...

Lemon HG hg at lemon.cs.elte.hu
Tue Nov 4 11:41:26 CET 2008


details:   http://lemon.cs.elte.hu/hg/lemon-tutorial/rev/ed4c8506e151
changeset: 16:ed4c8506e151
user:      Peter Kovacs <kpeter [at] inf.elte.hu>
date:      Mon Nov 03 23:46:30 2008 +0100
description:
	Simplify the first example code + fix toc

diffstat:

3 files changed, 33 insertions(+), 131 deletions(-)
demo/hello_lemon.cc |   75 +++++++--------------------------------------------
getting_started.dox |   71 +++++++++---------------------------------------
toc.txt             |   18 +++++-------

diffs (225 lines):

diff -r 7cc2418766c3 -r ed4c8506e151 demo/hello_lemon.cc
--- a/demo/hello_lemon.cc	Sat Nov 01 08:25:30 2008 +0000
+++ b/demo/hello_lemon.cc	Mon Nov 03 23:46:30 2008 +0100
@@ -17,12 +17,9 @@
  */
 
 ///\file
-///\brief Demonstrating the basic concepts and fetures of LEMON
+///\brief Simple "Hello World!" program for LEMON.
 ///
-/// This program is intended to be a "Hello World!" program that shows
-/// the very basic notions of LEMON: \ref graphs "graphs" and
-/// \ref maps "maps".
-///
+/// Simple "Hello World!" program for LEMON.
 /// \include hello_lemon.cc
 
 #include <iostream>
@@ -30,67 +27,17 @@
 
 int main()
 {
-  // Convenience type definitions
-  typedef lemon::ListDigraph Digraph;
-  typedef Digraph::Node Node;
-  typedef Digraph::Arc Arc;
-  typedef Digraph::NodeIt NodeIt;
-  typedef Digraph::ArcIt ArcIt;
-  typedef Digraph::ArcMap<int> LengthMap;
-  using lemon::INVALID;
+  typedef lemon::ListDigraph Graph;
+  Graph g;
 
-  // Create a directed graph
-  Digraph g;
+  Graph::Node u = g.addNode();
+  Graph::Node v = g.addNode();
+  Graph::Arc  e = g.addArc(u, v);
 
-  // Add nodes to the digraph
-  Node v1 = g.addNode();
-  Node v2 = g.addNode();
-  Node v3 = g.addNode();
-  Node v4 = g.addNode();
-
-  // Add arcs to the digraph
-  Arc v1_v2 = g.addArc(v1, v2);
-  Arc v1_v3 = g.addArc(v1, v3);
-  Arc v2_v3 = g.addArc(v2, v3);
-  Arc v2_v4 = g.addArc(v2, v4);
-  Arc v3_v4 = g.addArc(v3, v4);
-
-  // Create an arc map (length)
-  LengthMap length(g);
-
-  // Set the length of each arc
-  length[v1_v2]  = 10;
-  length[v1_v3]  = 20;
-  length[v2_v3] = 5;
-  length[v2_v4] = 25;
-  length[v3_v4] = 10;
-
-  // Welcome message
-  std::cout << "Hello World!" << std::endl;
-  std::cout << "This is LEMON library here. We have a direceted graph.";
-  std::cout << std::endl << std::endl;
-
-  // Iterate through the nodes and print their IDs
-  std::cout << "Nodes:";
-  for (NodeIt n(g); n != INVALID; ++n)
-    std::cout << " " << g.id(n);
-  std::cout << std::endl;
-
-  // Iterate through the arcs and print the IDs of their
-  // source and target nodes
-  std::cout << "Arcs:";
-  for (ArcIt a(g); a != INVALID; ++a)
-    std::cout << " (" << g.id(g.source(a)) << ","
-              << g.id(g.target(a)) << ")";
-  std::cout << std::endl << std::endl;
-
-  // Iterate through the arcs and print their length
-  std::cout << "There is a map on the arcs (length):" << std::endl;
-  std::cout << std::endl;
-  for (ArcIt a(g); a != INVALID; ++a)
-    std::cout << "length(" << g.id(g.source(a)) << ","
-              << g.id(g.target(a)) << ")=" << length[a] << std::endl;
-  std::cout << std::endl;
+  std::cout << "Hello World! This is LEMON library here." << std::endl;
+  std::cout << "We have a directed graph with "
+            << countNodes(g) << " nodes and "
+            << countArcs(g) << " arc." << std::endl;
 
   return 0;
 }
diff -r 7cc2418766c3 -r ed4c8506e151 getting_started.dox
--- a/getting_started.dox	Sat Nov 01 08:25:30 2008 +0000
+++ b/getting_started.dox	Mon Nov 03 23:46:30 2008 +0100
@@ -29,37 +29,16 @@
 \skip #include
 \until }
 
-First let us briefly explain how this example program works.
-(The used notions will be discussed in detail in the following sections.)
+In this small example a directed graph is created with two nodes and
+an arc added to it.
 
-After some convenience typedefs we create a directed graph (\e digraph)
-and add some nodes and arcs to it.
-ListDigraph is one of the digraph classes implemented in LEMON.
-It is based on linked lists, therefore iterating through its nodes and
-arcs is fast.
+Now let us compile this code.
+(We suppose that you have it in a file called <tt>hello_lemon.cc</tt>.)
 
-Then we iterate through all nodes of the digraph and print their unique
-IDs. We use a constructor of the node iterator to initialize it to the
-first node.
-The <tt>operator++</tt> is used to step to the next node. After the last
-node the iterator becomes invalid (i.e. it is set to \c INVALID).
-This is what we exploit in the stop condition.
-We iterate through all arcs of the digraph very similarly and print the
-IDs of their source (tail) and target (head) nodes using the \c source()
-and \c target() member functions.
-
-After that we create an arc map, which is actually a mapping that assigns
-an \c int value (length) to each arc, and we set this value for each arc.
-Finally we iterate through all arcs again and print their lengths.
-
-Now let us compile this simple example program.
-
-[SEC]hello_lemon_system[SEC] If LEMON is Installed System-Wide
-
-If LEMON is installed system-wide (into directory \c /usr/local),
+If LEMON is installed <b>system-wide</b> (into directory \c /usr/local),
 then it is very easy to compile this program with the
 following command (the argument <tt>-lemon</tt> tells the compiler
-that we are using the installed LEMON):
+that we are using the installed LEMON).
 
 \verbatim
 g++ -lemon hello_lemon.cc -o hello_lemon
@@ -72,11 +51,9 @@
 ./hello_lemon
 \endverbatim
 
-[SEC]hello_lemon_user[SEC] If LEMON is Installed User-Local
-
-Compiling the code is a bit more difficult if you installed LEMON
-user-local into a directory (e.g. <tt>~/lemon</tt>) or if you just
-skipped the step <tt>make install</tt>.
+If LEMON is installed <b>user-local</b> into a directory
+(e.g. <tt>~/lemon</tt>) or if you just skipped the step
+<tt>make install</tt>, then compiling the code is a bit more difficult.
 You have to issue a command like this.
 
 \verbatim
@@ -86,34 +63,14 @@
 If everything has gone well, then our program prints out the followings.
 
 \verbatim
-Hello World!
-This is LEMON library here. We have a direceted graph.
-
-Nodes: 3 2 1 0
-Arcs: (2,3) (1,3) (1,2) (0,2) (0,1)
-
-There is a map on the arcs (length):
-
-length(2,3)=10
-length(1,3)=25
-length(1,2)=5
-length(0,2)=20
-length(0,1)=10
+Hello World! This is LEMON library here.
+We have a directed graph with 2 nodes and 1 arc.
 \endverbatim
 
-You may note that iterating through the nodes and arcs is done in the
-reverse order compared to the creating order (the IDs are in decreasing
-order).
-This is due to implementation aspects, that may differ at other graph
-types, moreover it may be changed in the next releases.
-Thus you should not exploit this method in any way, you should not
-suppose anything about the iteration order.
-
 If you managed to compile and run this example code without any problems,
-you can go on reading this tutorial to get to know more features and tools
-of LEMON.
-Otherwise if you encountered problems that you did not manage to solve,
-do not hesitate to
+you may go on reading this tutorial to get to know the basic notions,
+features and tools of LEMON. However if you encountered problems that
+you did not manage to solve, do not hesitate to
 <a href="mailto:lemon-user at lemon.cs.elte.hu"><b>contact us</b></a>.
 
 [TRAILER]
diff -r 7cc2418766c3 -r ed4c8506e151 toc.txt
--- a/toc.txt	Sat Nov 01 08:25:30 2008 +0000
+++ b/toc.txt	Mon Nov 03 23:46:30 2008 +0100
@@ -2,16 +2,14 @@
 ** intro_lemon
 ** intro_tutorial
 * hello_lemon
-** hello_lemon_system
-** hello_lemon_user
-**_digraph_build
-**_digraph_iterate
-**_standard_maps
-**_algorithms
-***_alg_bfs_dfs
-***_alg_dijkstra
-***_alg_kruskal
-**_undir_graphs
+*_digraph_build
+*_digraph_iterate
+*_standard_maps
+*_algorithms
+**_alg_bfs_dfs
+**_alg_dijkstra
+**_alg_kruskal
+*_undir_graphs
 *_tools
 **_lgf
 **_glemon



More information about the Lemon-commits mailing list