add readme
This commit is contained in:
parent
6cb40f2011
commit
05d80f20f8
1 changed files with 81 additions and 0 deletions
81
README.md
Normal file
81
README.md
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
Finding all the circuits of a directed graph with self-arcs and multiple-arcs
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Algorithm and code by K.A. Hawick and H.A. James
|
||||||
|
|
||||||
|
Enumerating Circuits and Loops in Graphs with Self-Arcs and Multiple-Arcs
|
||||||
|
K.A. Hawick and H.A. James
|
||||||
|
Computer Science, Institute for Information and Mathematical Sciences,
|
||||||
|
Massey University, North Shore 102-904, Auckland, New Zealand
|
||||||
|
k.a.hawick@massey.ac.nz; heath.james@sapac.edu.au
|
||||||
|
Tel: +64 9 414 0800
|
||||||
|
Fax: +64 9 441 8181
|
||||||
|
Technical Report CSTN-013
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
make
|
||||||
|
./circuits_hawick 4 0,1 0,2 1,0 1,3 2,0 3,0 3,1 3,2
|
||||||
|
|
||||||
|
First argument is the number of vertices. Subsequent arguments are ordered
|
||||||
|
pairs of comma separated vertices that make up the directed edges of the
|
||||||
|
graph.
|
||||||
|
|
||||||
|
DOT file input
|
||||||
|
--------------
|
||||||
|
|
||||||
|
For simplicity, there is no DOT file parser included but the following allows
|
||||||
|
to create a suitable argument string for simple DOT graphs.
|
||||||
|
|
||||||
|
Given a DOT file of a simple (no labels, colors, styles, only pairs of
|
||||||
|
vertices...) directed graph, the following line produces commandline
|
||||||
|
arguments in the above format for that graph.
|
||||||
|
|
||||||
|
echo `sed -n -e '/^\s*[0-9]\+;$/p' graph.dot | wc -l` `sed -n -e 's/^\s*\([0-9]\) -> \([0-9]\);$/\1,\2/p' graph.dot`
|
||||||
|
|
||||||
|
The above line works on DOT files like the following:
|
||||||
|
|
||||||
|
digraph G {
|
||||||
|
0;
|
||||||
|
1;
|
||||||
|
2;
|
||||||
|
0 -> 1;
|
||||||
|
0 -> 2;
|
||||||
|
1 -> 0;
|
||||||
|
2 -> 0;
|
||||||
|
2 -> 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
It would produce the following output:
|
||||||
|
|
||||||
|
3 0,1 0,2 1,0 2,0 2,1
|
||||||
|
|
||||||
|
Reproducing the example from the paper
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Figure 10 of the paper cited above:
|
||||||
|
|
||||||
|
0 10 11 6 13 3 4 15 0 1 8 4 13 12 1
|
||||||
|
0 10 11 6 13 12 1 8 0 1 8 4 13 12 1
|
||||||
|
0 10 11 6 13 12 1 8 4 15 0 3 3
|
||||||
|
0 10 11 6 13 12 1 8 0 3 4 13 3
|
||||||
|
0 10 11 6 13 12 1 8 4 15 0 3 6 13 3
|
||||||
|
0 10 11 6 13 15 0 6 13 12 10 11 6
|
||||||
|
0 14 11 6 13 3 4 15 0 6 13 12 14 11 6
|
||||||
|
0 14 11 6 13 12 1 8 0 8 8
|
||||||
|
0 14 11 6 13 12 1 8 4 15 0 9 9
|
||||||
|
0 14 11 6 13 12 1 8 0 12 12
|
||||||
|
0 14 11 6 13 12 1 8 4 15 0
|
||||||
|
0 14 11 6 13 15 0
|
||||||
|
|
||||||
|
Figure 10: 22 Circuits found in the network shown in figure 9 which has 16
|
||||||
|
nodes and 32 arcs and allows self-arcs. Note there are repeated circuits due to
|
||||||
|
the presence of a multiple-arc connecting nodes 12 and 1.
|
||||||
|
|
||||||
|
The input graph, which is shown in figure 9, can be given as an input to the
|
||||||
|
program using above format as follows:
|
||||||
|
|
||||||
|
./circuits_hawick 16 0,2 0,10 0,14 1,5 1,8 2,7 2,9 3,3 3,4 3,6 4,5 4,13 \
|
||||||
|
4,15 6,13 8,0 8,4 8,8 9,9 10,7 10,11 11,6 12,1 12,1 12,2 12,10 12,12 \
|
||||||
|
12,14 13,3 13,12 13,15 14,11 15,0
|
Loading…
Reference in a new issue