supernode — replaces a group of nodes with a single node
g1 = supernode(v,g)
supernode
returns the graph g1
with the nodes with numbers given
by the vector v
being contracted in a single node. The number of the
supernode is the lowest number in v
. The characteristics of the old nodes
and edges are preserved. The supernode is located at the mean center of
v
. Its diameter and border are twice the previous of the replaced node.
The demand of the new node, if it exists, is the sum of the demands of the shrunken nodes.
ta=[1 1 2 2 2 3 4 5 5 7 8 8 9 10 10 10 10 10 11 12 13 13 13 14 15 16 16 17 17]; he=[2 10 3 5 7 4 2 4 6 8 6 9 7 7 11 13 13 15 12 13 9 10 14 11 16 1 17 14 15]; g=make_graph('foo',1,17,ta,he); g.nodes.graphics.x=[283 163 63 57 164 164 273 271 339 384 504 513 439 623 631 757 642]/2; g.nodes.graphics.y=[59 133 223 318 227 319 221 324 432 141 209 319 428 443 187 151 301]/2; show_graph(g); v=[7 10 13 9]; hilite_nodes(v); g1=supernode(v,g); show_graph(g1,'new'); //verify by superimposing the two graphs g1.nodes.graphics.diam(:)=g2.nodes.graphics.defaults.diam/2 g1.nodes.graphics.colors(2,:)=5; g1.edges.graphics.foreground(:)=5; g.edges.graphics.width(:)=4; show_graph(graph_union(g,g1,%f))