Home > matgraph > @graph > delete.m

delete

PURPOSE ^

delete --- delete vertices or edges from a graph

SYNOPSIS ^

function delete(g,i,j)

DESCRIPTION ^

 delete --- delete vertices or edges from a graph
 delete(g,v) --- delete vertex v
 delete(g,vlist) --- delete vertices in column vector v
 delete(g,i,j) --- delete edge ij
 delete(g,elist) --- delete edges in m-by-2 array elist

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function delete(g,i,j)
0002 % delete --- delete vertices or edges from a graph
0003 % delete(g,v) --- delete vertex v
0004 % delete(g,vlist) --- delete vertices in column vector v
0005 % delete(g,i,j) --- delete edge ij
0006 % delete(g,elist) --- delete edges in m-by-2 array elist
0007 
0008 global GRAPH_MAGIC
0009 
0010 n = nv(g);
0011 
0012 if nargin==3   % simple delete an edge
0013    if (i<1) | (i>n) | (j<1) | (j>n) 
0014        return
0015    end
0016    GRAPH_MAGIC.graphs{g.idx}.array(i,j) = 0;
0017    GRAPH_MAGIC.graphs{g.idx}.array(j,i) = 0;
0018    return
0019 end
0020 
0021 % from here on, we're in the single argument case
0022 
0023 [nr,nc] = size(i);
0024 
0025 % delete a set of vertices (or a single vertex)
0026 
0027 if  (nc==1)
0028     kill_list = i(find((i>0) & (i<=n)));
0029     keep_list = setdiff(1:n,kill_list);
0030     if hasxy(g)
0031         GRAPH_MAGIC.graphs{g.idx}.xy = ...
0032             GRAPH_MAGIC.graphs{g.idx}.xy(keep_list,:);
0033     end
0034     if is_labeled(g)
0035         GRAPH_MAGIC.graphs{g.idx}.labels = ...
0036             GRAPH_MAGIC.graphs{g.idx}.labels(keep_list);
0037     end
0038     GRAPH_MAGIC.graphs{g.idx}.array = ...
0039         GRAPH_MAGIC.graphs{g.idx}.array(keep_list,keep_list);
0040     return
0041 end
0042 
0043 
0044 if (nr==1) & (nc ~=2)
0045     error('for delete(g,vlist), vlist must be a single COLUMN vector');
0046 end
0047 
0048 % finally, we're in the delete a list of edges case
0049 
0050 if (nc ~= 2)
0051     error('delete(elist) requires elist to have exactly two columns')
0052 end
0053 
0054 for k=1:nr
0055     delete(g,i(k,1),i(k,2));
0056 end
0057     
0058

Generated on Thu 13-Mar-2008 14:23:52 by m2html © 2003