This is a coding project by Josh Mermelstein and Michael James in the summer of 2012 for the
Tufts CS departament.  Its goal is to create a program that can take a
non-planar graph and determine if there is a way to make it planar by copying
any number of vertices while preserving connections.

The overall structure is centered on a circular doublely linked list which is
specified in the circ_list files.

the following is the format in which the program reads in a graph:
the first line will be the number of vertices
every subsequent line will represtent a new vertex whose index is the line
number -1
Each of these lines will end in a newline character.
The program internally runs from 0->n-1 but all inputs and outputs should be from 1->n.

some known information.

Planar Expandable graphs
K_6
K_{3,4}
K_{2,2,3}
K_{3,3,1}
K_{4,2,1}
K_7 with 4 edges missing (all 4 sharing a vertex)
	(make a drawing of a K_6 and put a new vertex inside of a triangle)
K_7 with 4 edges missing (no vertex missing more than 2)
	(example of missing edge set, 12, 34, 35, 56
	make a K_2211 and put the final vertex in the square)


Proven non-planar expandable
K_7
K_{4,4}
K_{3,5}

Suspected expandable


suspected non expandable
any two planar expandible graphs connected by one edge
a K_7 with two edges missing (not sharing a vertex)
a K_7 with two edges missing (sharing a vertex)

Running theories
Eli:
	40% undecidable, 55% linear time solvable, 5% more than linear time
Ben:
	Maybe decidable but worth considering that it is undecidable.
	If it is decidable, then no vertex needs to be used more than twice
Michael:
	It could be anywhere from undecidable to NP-complete.
Josh:
	Probably decidable
	If one can partition the verticies into two sets such that each set is
	non-planar (even if that set is planar expandable) then the graph is not
	planarexpanable. (also the graph is connected)