Synthetic Maximum Flow Families

Core Experiments

The core experiments contain eight problem families produced by four generators. Below we describe how to run these experiments. In case one needs to change size parameters from default values, and we give a brief description of the generators and the families.

System Requirenments

The software is designed to run under UNIX (or LINUX). We assume basic familiarity with the UNIX shell. Generation of some of the problems, especially those produced by the washington generator, require substantial space. (The biggest WASH-LINE-MODERATE problem requires 256M.) For smaller machines, some of the larger test problems need to be eliminated.

Running the Experiments

Downloading generators and scripts

Download the gens.tar file and run

tar xvf gens.tar

to unpack software.

Compiling generators

To compile generators, run

make all

in directory gens. Modify the makefile in that directory if needed.

The main script

Directory gens/scripts contains the scripts for generating synthetic problems. The main script is run-core .

The script uses shell variables to pass values to scripts it calls. One can edit a corresponding script to set script-specific variable values if desired.

To run all synthetic core experiments on a list of maxflow codes L, change to the gens/scripts directory and give the following command

run-core L

For example, to get the data for programs h_prf and f_prf, run run-core h_prf f_prf. Program output appears in the gens/results directory.

One can run the main script on each maxflow program individually as well as on a list of programs. One can also run each auxiliary script individually. In this case, one needs to set the above-mentioned variables in the shell or edit the script and set the variables.

One also needs to edit the scripts to change problem parameters. In particular, one may need to change the range of network sizes to fit a test machine size and speed. Next we outline generators and problem families.

Genrmf Generator and Families

The GENRMF generator, developed by Goldfarb and Grigoriadis, is described in their paper "A Computational Comparison of the Dinic and Network Simplex Methods for Maximum Flow," Annals of Oper. Res. (13), 83-123, 1998. The generator produces networks consisting of b frames. Each frame is an a by (square) grid. Each vertex of the grid connects to the neighbour vertices of the grid by an arc. Capacities of these grid arcs are selected uniformly at random from the range [1...c1]. For every frame except for the last one, every vertex connects to a vertex in the next grid according to a random permutation by an arc. Inter-frame arc capacities are selected uniformly at random from the range [1...c2]. A coner vertex of the first frame is the source and a corner vertex of the last frame is the sink. Note that the number of vertices in a GENRMF network is a*a*b.

The generator has the following parameters:

genrmf a, b, c1, c2, seed

The core experiments include three GENRMF families defined by the following parameter values (for a network with 2^x vertices):

We round a and b to the nearest integer; the number of vertices in the resulting problem may differ from 2^x.

The default set of values for (a, b) pairs for the GENRMF-LONG family, used in the gens/scripts/rmg-long script, is {(8 64), (10 91), (11 128) (13 181) (16 256) (19 362) (23 512) (30 724)}. These values correspond to x ranging from 12 to 19.

The default set of values for b pairs for the GENRMF-LONGER family, used in the gens/scripts/rmg-longer script, is {1024, 2048, 4096, 8192, 16384, 32768}. These values correspond to x ranging from 12 to 17.

The default set of values for (a, b) pairs for the GENRMF-WIDE family, used in the gens/scripts/rmg-wide script, is {(28 5), (37 6), (49 7) (64 8) (85 9) (111 10) (147 12) (194 14)}. These values correspond to x ranging from 12 to 19.

Washington Generator and Families

The
WASHINGTON generator, developed by Andreson et al., is described in "Network Flows and Matchings," D.S. Johnson and C.C. McGeoch, DIMACS Series in Discr. Math. and Comp. Sci., AMS 1993, 580-581. The generator takes the following parameters:

washington function arg1 arg2 arg3 seed

where function specifies the desired graph type, seed is a seed for the pseudorandom number generator, and the remaining arguments are interpreted depending on the function type. We use function types two (random level graphs) and six (basic line graphs). In both cases, graph vertices correspond to points on a rectangular grid with arg1 rows and arg2 columns. In addition, there is a source, connected to every vertex in the first row, and a sink, to which every vertex in the last row connects.

For random level graphs, agr3 determines ranges from which arc capacities are chosen. For each column except for the last one, every vertex is connected to three randomly chosen vertices in the next column. Capacities of the connecting arcs are chosen uniformly at random from the range [1...arg3]. Capacities of the source and sink arcs are chosen independently at random from the range [1 ... 3*arg3].

For basic line graphs, arg3 determines vertex outdegrees. Vertices of a basic line graph can be thought of as points on a line, numbered from 0 (source) to arg1 * arg2 + 1 (sink). Other arcs are generated as follows. For every vertex i other then the source and the sink, pick a random subset of size arg3 from the set {1,...,arg2*arg3}. Then for each j in this set, if k = i + j < sink, then we connect i to k by an arc with capacity chosen uniformly at random from the range [1...1,000,000]. The source and the sink arc capacities are chose independently at random from the interval [1 ... arg3*1,000,000].

The core experiments include three WASHINGTON families defined by the following parameter values (for a network with 2^x vertices):

For the last problem family, the value of arg3 is rounded to the nearest integer.

The default set of values for arg2 in the WASHINGTON-RLG-LONG problem family, used in gens/scripts/wash-rlg-long script, is {128, 256, 512, 1024, 2048, 4096, 8192, 16384}.

The default set of values for arg1 in the WASHINGTON-RLG-WIDE problem family, used in gens/scripts/wash-rlg-wide script, is {128, 256, 512, 1024, 2048, 4096, 8192, 16384}.

The default set of values for the (arg1, arg3) pair in the WASHINGTON-LINE-MODERATE problem family, used in gens/scripts/wash-line-moderate script, is {(1024 16) (2048 23), (4096 32), (8192 45), (16384 64)}.

Acyclic-Dense

The ACYCLIC-DENSE generator, developed by Waissi (the C version we use has been coded by Setubal), takes the following parameters:

ac n capacity seed

The generator produces a complete acyclic graph with n vertices by connecting every vertex to all higher-numbered vertices. Arc capacities are picked uniformly at random from the interval [1...capacity]. Pseudorandom number generator is seeded with seed. Vertex 1 is the source and vertex n is the sink.

We call the family of problems produced by this generator ACYCLIC-DENSE. This family has capacity set to 1,000,000, and n = 2^x for consequtive integers x. The default set of values of n, used in gens/scripts/ac-dense script, is {256, 512, 1024, 2048}.

The AK Generator

The AK generator, developed by Cherkassky and Goldberg, is described in their paper "On Implementing Push-Relabel Method for the Maximum Flow Problem," Algorithmica (19), 390-410, 1997. This generator produces problems designed to be hard for Dinitz's algorithm as well as for the push-relabel algorithms with global update and gap heuristics. See the paper for details. This generator takes the following parameters:

AK n

where n is the number of vertices. Note that the generator is fully deterministic and does not use a random numer generator.

The core experiments include one AK family with n = 2^x. The default values of x are {1024, 2048, 4096, 8192, 16384, 32768}

CATS maxflow home page