cycles_hawick_james
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Finding all the circuits of a directed graph with self-arcs and multiple-arcs by K.A. Hawick and H.A. James
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
    echo "0 1\n0 2\n1 0\n1 3\n2 0\n3 0\n3 1\n3 2" | ./circuits_hawick 4

First argument is the number of vertices. Ordered pairs of space separated
vertices are given via standard input and 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 and standard input for simple DOT graphs.

Given a DOT file of a simple (no labels, colors, styles, only pairs of
vertices...) directed graph, the following lines generate the number of
vertices as well as the edge list expected on standard input.

        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 lines work on DOT files like the following:

    digraph G {
      0;
      1;
      2;
      0 -> 1;
      0 -> 2;
      1 -> 0;
      2 -> 0;
      2 -> 1;
      }

They 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:

    echo "0 2\n0 10\n0 14\n1 5\n1 8\n2 7\n2 9\n3 3\n3 4\n3 6\n4 5\n4 13\n\
    4 15\n6 13\n8 0\n8 4\n8 8\n9 9\n10 7\n10 11\n11 6\n12 1\n12 1\n12 2\n12 10\n12 12\n\
    12 14\n13 3\n13 12\n13 15\n14 11\n15 0" | ./circuits_hawick 16

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。