# source:lemon-0.x/doc/quicktour.dox@1177:e41c2907fb49

Last change on this file since 1177:e41c2907fb49 was 1175:6205eebd62fc, checked in by athos, 15 years ago

Everithing is half-done, but some progress has been made in writing documentation.

File size: 2.8 KB
Line
1/**
2
3\page quicktour Quick Tour to LEMON
4
5Let us first answer the question <b>"What do I want to use LEMON for?"
6</b>.
7LEMON is a C++ library, so you can use it if you want to write C++
8programs. What kind of tasks does the library LEMON help to solve?
9It helps to write programs that solve optimization problems that arise
10frequently when <b>designing and testing certain networks</b>, for example
11in telecommunication, computer networks, and other areas that I cannot
12think of now. A very natural way of modelling these networks is by means
13of a <b> graph</b> (we will always mean a directed graph by that).
14So if you want to write a program that works with
15graphs then you might find it useful to use our library LEMON.
16
17
18
19Some examples are the following:
20
21- First we give two examples that show how to instantiate a graph. The
22first one shows the methods that add nodes and edges, but one will
23usually use the second way which reads a graph from a stream (file).
24
25
26-# The following code fragment shows how to fill a graph with data.
27
28 \code
29
30  typedef ListGraph Graph;
31  typedef Graph::Edge Edge;
32  typedef Graph::InEdgeIt InEdgeIt;
33  typedef Graph::OutEdgeIt OutEdgeIt;
34  typedef Graph::EdgeIt EdgeIt;
35  typedef Graph::Node Node;
36  typedef Graph::NodeIt NodeIt;
37
38  Graph g;
39
40  for (int i = 0; i < 3; i++)
42
43  for (NodeIt i(g); i!=INVALID; ++i)
44    for (NodeIt j(g); j!=INVALID; ++j)
45      if (i != j) g.addEdge(i, j);
46
47 \endcode
48
49 -#
50
51- If you want to solve some transportation problems in a network then
52you will want to find shortest paths between nodes of a graph. This is
53usually solved using Dijkstra's algorithm. A utility
54that solves this is  the \ref lemon::Dijkstra "LEMON Dijkstra class".
55A simple program using the \ref lemon::Dijkstra "LEMON Dijkstra class" is
56as follows (we assume that the graph is already given in the memory):
57
58\code
59
60\endcode
61
62- If you want to design a network and want to minimize the total length
63of wires then you might be looking for a <b>minimum spanning tree</b> in
64an undirected graph. This can be found using the Kruskal algorithm: the
65class \ref lemon::Kruskal "LEMON Kruskal class" does this job for you.
66The following code fragment shows an example:
67
68\code
69
70\endcode
71
72
73
74Some more detailed introduction can be obtained by following the links
75below:
76
77\ref graphs "Graph structures"
78play a central role in LEMON, so if you are new to the library,
79you probably should start \ref graphs "here".
80(You can also find that page along with others under
81<a class="el" href="pages.html"> Related Pages </a>.)
82
83If you are
84interested in data structures and algorithms in more details, then
85you should browse the reference manual part of the documentation.
86Section <a class="el" href="modules.html"> Modules </a>
87 is a good starting point for this.
88*/
Note: See TracBrowser for help on using the repository browser.