       Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable

• To: mathgroup at smc.vnet.net
• Subject: [mg83131] Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Mon, 12 Nov 2007 05:15:39 -0500 (EST)
• Organization: The Open University, Milton Keynes, UK
• References: <fh6d5q\$4kr\$1@smc.vnet.net>

```mumat wrote:

<snip>

> Question 3. How can I graph a weighted Graph show the edgeweights show
> up on the graph? for instance for this graph?
>
> In=t = Wheel;k = SetEdgeWeights[t, WeightingFunction ->
> RandomInteger, WeightRange -> {0, 4}]
>
> Any help would be greatly appreciated.

Arguably, the easiest way might be to use Mathematica 6 built-in
function *GraphPlot*. It accepts a list of pair of the form (v_out ->
v_in, "edge_label"}. So, using your graph k, we are interested in
transforming its first element k[], a list of lists of the form
{{v_out, v_in}, EdgeWeight -> edge_weight} (see Out), into the
required format for GraphPlot. To do so, we just use a transformation
rule that we apply to k[] (see In) before calling GraphPlot.

In:= Needs["Combinatorica`"]
t = Wheel; k =
SetEdgeWeights[t,
WeightingFunction -> (RandomChoice[{2, 3, 5, 7}] &)];
Edges[k, EdgeWeight];

In:= k[]

Out= {{{1, 8}, EdgeWeight -> 3}, {{2, 8},
EdgeWeight -> 5}, {{3, 8}, EdgeWeight -> 3}, {{4, 8},
EdgeWeight -> 5}, {{5, 8}, EdgeWeight -> 7}, {{6, 8},
EdgeWeight -> 3}, {{7, 8}, EdgeWeight -> 7}, {{1, 2},
EdgeWeight -> 3}, {{2, 3}, EdgeWeight -> 3}, {{3, 4},
EdgeWeight -> 7}, {{4, 5}, EdgeWeight -> 2}, {{5, 6},
EdgeWeight -> 7}, {{6, 7}, EdgeWeight -> 2}, {{1, 7},
EdgeWeight -> 2}}

In:= k[] /. {{p_Integer, q_Integer},
EdgeWeight -> r_} :> {p -> q, ToString@r}

Out= {{1 -> 8, "3"}, {2 -> 8, "5"}, {3 -> 8, "3"}, {4 -> 8,
"5"}, {5 -> 8, "7"}, {6 -> 8, "3"}, {7 -> 8, "7"}, {1 -> 2,
"3"}, {2 -> 3, "3"}, {3 -> 4, "7"}, {4 -> 5, "2"}, {5 -> 6,
"7"}, {6 -> 7, "2"}, {1 -> 7, "2"}}

{{1 -> 8, "2"}, {2 -> 8, "2"}, {3 -> 8, "3"}, {4 -> 8, "5"}, {5 -> 8,
"7"}, {6 -> 8, "3"}, {7 -> 8, "2"}, {1 -> 2, "3"}, {2 -> 3,
"5"}, {3 -> 4, "5"}, {4 -> 5, "7"}, {5 -> 6, "7"}, {6 -> 7,
"7"}, {1 -> 7, "3"}}

In:= GraphPlot[%, VertexLabeling -> True]

(Deleted Out that shows a nice plot of a graph with the weight of
each edge and the vertex numbers.)

Regards,
--
Jean-Marc

```

• Prev by Date: Re: greetings and a question!
• Next by Date: Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable
• Previous by thread: WeightingFunction and Showing Graphs with wieghts as Edge Lable
• Next by thread: Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable