Re: Adding an edge to a directed cyclic graph
- To: mathgroup at smc.vnet.net
- Subject: [mg88962] Re: [mg88908] Adding an edge to a directed cyclic graph
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Thu, 22 May 2008 02:38:04 -0400 (EDT)
- Organization: Mathematics & Statistics, Univ. of Mass./Amherst
- References: <200805211848.OAA10337@smc.vnet.net>
- Reply-to: murray at math.umass.edu
Aside from explicitly changing the embedding coordinates of vertices in
the Graph object, offhand the only ways I know to change the location of
vertices for ShowGraph by Mathematica commands are the Combinatorica
functions ShakeGraph and SpringEmbedding. But some other methods are:
other options are:
(1) Use GraphPlot instead of ShowGraph and then manually move the
vertex by clicking in its vicinity until you see a small graphics square
highlighted, then drag to a new position.
(2) Use Levon Lloyd's visual graph editor, which exports in
Combinatorica Graph type form.
Undoubtedly it would not be terribly difficult to construct a Dynamic
expression that uses locators in order to create and move vertices and
edges for a graph. This could just reproduce the behavior of Lloyd's
visual editor, so it's not clear what would be gained except that
everything could be done strictly within Mathematica.
You might find helpful the guide to Combinatorica'a graph functions (and
to the kernel's GraphPlot function) that I used for my Discrete
Structures course. See the item "Graphs.nb" on the Files page at:
www.math.umass.edu/Courses/Math_455_Eisenberg
W_Craig Carter wrote:
> Sorry to ask a question that probably has an answer in the
> Combinatorica book; I've just purchased it and waiting for delivery.
>
> I am teaching myself discrete math by learning Combinatorica. Is there
> an obvious way to add an edge to a directed graph and have
> the edges renumbered associated with the cyclic order? The number of
> vertices are fixed.
>
> This seems like a common thing to do; so before embarking on my own
> code to do this, I am hoping I am missing an obvious built-in.
>
> For example:
>
> Needs["Combinatorica`"]
>
> (*c6 is the cycle in which I'd like to insert and edge*)
>
> c6 = Cycle[6, Type -> Directed]
> ShowGraph[c6, VertexNumber -> True, EdgeLabel -> True,
> EdgeLabelColor -> Darker[Orange], BaseStyle -> Large]
>
> (*here I hope to add a sub-loop to replace the edge going from 4-5*)
> modc6 = AddEdges[
> DeleteEdge[c6, {4, 5}],
> {
> {{4, 5}, EdgeColor -> Green},
> {{5, 4}, EdgeColor -> Blue},
> {{4, 5}, EdgeColor -> Red}
> }
> ]
>
> (*the edge numbering no longer corresponds to the cycle index--what I
> need is a "ReplaceEdge"*)
>
> ShowGraph[modc6, VertexNumber -> True, EdgeLabel -> True,
> EdgeLabelColor -> Darker[Orange], BaseStyle -> Large]
>
> (*does anyone know an option to increase the "bowing angle" of the
> Graphics for the subloop?*)
>
> (*thanks*)
--
Murray Eisenberg murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower phone 413 549-1020 (H)
University of Massachusetts 413 545-2859 (W)
710 North Pleasant Street fax 413 545-1801
Amherst, MA 01003-9305
- References:
- Adding an edge to a directed cyclic graph
- From: "W_Craig Carter" <ccarter@mit.edu>
- Adding an edge to a directed cyclic graph