From lightning@pacificcoast.net Tue Feb 10 11:02:14 2004
Date: Mon, 9 Feb 2004 22:15:03 -0800
From: John Boyer <lightning@pacificcoast.net>
To: Marcos Goycoolea <mgoycool@isye.isye.gatech.edu>
Subject: Re: planarity

    [ The following text is in the "iso-8859-1" character set. ]
    [ Your display is set for the "US-ASCII" character set.  ]
    [ Some characters may be displayed incorrectly. ]

Hi Marcos,

Sure you are most welcome to a copy of my planarity implementation.  It is
attached.  There is also a Visual C++ 6 project, but if you are just making
with gcc, then you only have to compile and link all the C files together,
nothing fancy.

The program has been written in straight C to maximize the available
audience, but it has an API interface that should be used except when one is
desparate :-)

The idea is to follow a standard gp_New, gp_Read, gp_Embed, gp_Free pattern,
or gp_New, create edges with gp_AddEdge, gp_Embed, gp_Free.  You can also
reuse a graph structure over and over again by calling gp_ReinitializeGraph
after each use.  The sample code in planarity.c and the function
gp_CreateRandomGraph() show how to do these sorts of things.

Note: The implementation handles graphs of up to 3n edges, but you can
increase this amount by increasing the constant EDGE_LIMIT to some factor
higher than 3.

Note: gp_Embed() returns a planar embedding if the graph is planar, not just
the indication of planarity, and the function returns an identified
Kuratowski subgraph if the graph is not planar.  By default, the result
graph is left in depth first search order, so you should invoke
gp_SortVertices() to get the graph back to the numbering you started with.

Finally, note that the examples in planarity.c invoke functions like
gp_CheckEmbeddingIntegrity() and gp_CheckKuratowskiSubgraphIntegrity().  It
is not necessary for you to call these function.  They are part of my test
routines to make sure that the implementation is reliable.  I have tested
this implementation on billions of randomly generated graphs of all sizes,
many huge randomly generated maximal planar and minimally non-planar graphs,
and all graphs on fewer than 12 vertices.  Correct results are derived in
all cases, so I think you will have no more stability problems as you
continue your PhD work.  Best of luck to you and let me know how your
project goes.  Also, please send my regards and thanks to Bill Cook for
sending you my way.

Best regards,
John Boyer


----- Original Message ----- 
From: "Marcos Goycoolea" <mgoycool@isye.gatech.edu>
To: <jboyer@acm.org>
Sent: Monday, February 09, 2004 2:28 PM
Subject: planarity


> Dear Dr. Boyer,
>
> I apologize for sending this mail twice. Apparently something weird happened and I
> lost some lines. Anyhow, I hope this time its more clear.
>
> I am currently a PhD student, working towards a degree in Operations Research at
> ISYE in Georgia Tech. My work deals with the Traveling Salesman Problem, and in
> particular, with using planarity for separation. The algorithms which we are
> developing make strong use of planarity-testing and dual-computation algorithms.
> I understand that you have worked much on this topic, and have even implemented
> a code which performs these functions. Up until recently, I have been
> using another code, but unfortunately, I have detected some problems with it and
> will be needing a new one. My advisor, Dr. Bill Cook, has
> suggested that I write to you. Apparently a previous student of his used your
> code with very good results. Would it be possible for you to send me a copy of
> this code? This would be of great help for my research.
>
> Thanks beforehand,
>
> - Marcos Goycoolea.
>
> Marcos Guzman Goycoolea
> Georgia Institute of Technology
> School of Industrial and Systems Engineering
>
> E-mail address:   mgoycool@isye.gatech.edu
>

    [ Part 2, Application/X-ZIP-COMPRESSED  79KB. ]
    [ Unable to print this part. ]

