Graph Reduction in Linear Time

This is an implementation of an algorithm discovered by Arnborg, Courcelle, Proskurowski, and Seese. They discovered that, using rewrite rules, you can determine, in linear time, whether a particular graph of bounded treewidth has a property that is describable in monadic second order logic. (Whew. That's a mouthful.) Unfortunately, the proof was non-constructive, which means tht you are on your own if you want to automagically generate an algorithm that checks whether or not a set of graphs has a particular property or not.

This directory contains two implementations of the concept

n_to_the_k/
My first attempt, this code works, but it is not the super-cool linear time algorithm described in the paper. This particular algorithm is O(nk) due to it being a naive implementation, although it does contain some pleasingly opaque generator-based code to generate all combinations of all permutations that was lifted from Knuth.

Note that this implementations is not quite correct - at the end it only checks whether or not your graph is equal to the null graph or the single point graph, rather than whether or not the reduced graph is isomorphic to any of the set of representatives. This is fine for the reduction sets I implemented, but not all sets have only those as their representatives - you have been warned.

linear/
This is the second attempt at the algorithm. As of 9/5/3 it works as well! It runs in O(n) (expected) time!

In this directory, the files contract.pdf and drp.pdf contain my DRP contract and final report, respectively. An HTML version of my DRP is also available.

Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - [   ] DRP-5-25-2004.pdf 24-May-2004 23:05 397K [   ] DRP.ppt 23-May-2004 13:50 139K [   ] DRP.sxi 24-May-2004 22:58 114K [   ] Makefile 15-Mar-2004 22:50 928 [   ] NRG.ppt 23-May-2004 13:49 139K [TXT] algorithm.tex 24-May-2004 11:11 1.7K [TXT] code.tex 01-Apr-2004 09:55 704 [   ] contract.aux 24-May-2004 19:38 417 [   ] contract.bbl 24-May-2004 19:38 565 [   ] contract.blg 24-May-2004 19:38 803 [   ] contract.dvi 24-May-2004 19:38 5.6K [   ] contract.log 24-May-2004 19:38 3.4K [   ] contract.pdf 24-May-2004 19:38 58K [   ] contract.ps 24-May-2004 19:38 105K [TXT] contract.tex 25-Feb-2004 18:04 3.8K [   ] drp.aux 25-May-2004 08:09 1.5K [   ] drp.bbl 25-May-2004 08:09 681 [TXT] drp.bib 24-May-2004 19:38 1.8K [   ] drp.blg 25-May-2004 08:09 801 [   ] drp.dvi 25-May-2004 08:09 45K [   ] drp.log 25-May-2004 08:09 6.8K [   ] drp.pdf 25-May-2004 08:05 198K [   ] drp.ps 25-May-2004 08:05 340K [TXT] drp.tex 25-May-2004 08:09 13K [DIR] drp/ 25-May-2004 08:05 - [TXT] drp2.tex 07-May-2004 13:25 3.1K [DIR] linear/ 25-Feb-2004 18:55 - [TXT] makeCodeListing.sh 12-Jan-2004 12:09 277 [DIR] n_to_the_k/ 22-Sep-2003 16:38 - [   ] p3t_rules.dia 06-May-2004 19:25 4.3K [   ] p3t_rules.eps 06-May-2004 19:25 32K [IMG] p3t_rules.png 24-May-2004 12:16 25K [   ] p3t_rules2.eps 25-Feb-2004 20:15 14K [TXT] proof.tex 12-Jan-2004 12:09 2.7K [   ] reduction.desc 16-Jul-2003 11:02 736 [   ] schedule 23-Sep-2003 22:31 1.7K [TXT] writeup.tex 15-Mar-2004 22:50 13K
Apache/2.2.3 (Debian) mod_python/3.2.10 Python/2.4.4 PHP/4.4.4-8+etch4 mod_perl/2.0.2 Perl/v5.8.8 Server at soy.dyndns.org Port 80