Circulant Graphs

circulant graph

Description

A circulant graph Cns1 … sk has n vertices, numbered from 0 to n−1. For each si, every vertex v is adjacent to vertex v+si, modulo n.

Generator

The generator, david_gen_circulant.c (depends on bit.h), takes as parameters the number of vertices, n, and a list skip1skipk.
	$ david_gen_circulant n skip1 … skipk
For example, the graph pictured above was generated with
	$ david_gen_circulant 10 2 3

Implementation

The generation of the graph follows simply from the mathematical definition: n vertices are created, and then for each si, an edge is added between v and (v+si)%n for each vertex v.

Timing

I timed the dominating set algorithms on four circulant graphs, stored in david_hard_interesting.txt. The graphs were:
  1. C1001, 2, 3
  2. C1003, 7, 11
  3. C1001, 12, 37
  4. C1002, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53
Each program was given 8 minutes to run.
graph1graph2graph3graph4time
bill151618517.86
lorena1516n/an/a480
patrick1516n/an/a480
paulo151626n/a480
carlos151626n/a480
david15n/an/an/a480
giancarlo15161855.73
di1516n/an/a480
wendy151626n/a480
thiago15161855.64
manjeet151618538.82