File: max_flow.cat

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (57 lines) | stat: -rw-r--r-- 2,095 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
max_flow          Scilab Group          Scilab function            max_flow
NAME
   max_flow - maximum flow between two nodes
  
CALLING SEQUENCE
 [v,phi,flag] = max_flow(i,j,g)
PARAMETERS
 i  : integer, number of start node
    
 j  : integer, number of end node
    
 g  : graph list
    
 v  : value of the maximum flow it is exists
    
 phi
     : row vector of the value of the flow on the arcs
    
 flag
     : feasible problem flag (0 or 1)
    
DESCRIPTION
   max_flow returns the value of maximum flow v from node number i to node
  number j if it exists, and the value of the flow  on each arc as a row
  vector phi. All the computations are made with  integer numbers. The
  graph must be directed. If the problem is not  feasible, flag is equal to
  0, otherwise it is equal to 1.  The bounds of the flow are given by the
  elements edge_min_cap and edge_max_cap of the graph list.  The value of
  the maximum capacity must be greater than or equal to the  value of the
  minimum capacity. If the value of edge_min_cap or edge_max_cap is not
  given (empty row vector []), it is assumed to be equal to 0 on each edge.
  
EXAMPLE
 ta=[1 1 2 2 3 3 4 4 5 5 5 5 6 6 6 7 7 15 15 15 15 15 15];
 ta=[ta, 15 8 9 10 11 12 13 14];
 he=[10 13 9 14 8 11 9 11 8 10 12 13 8 9 12 8 11 1 2 3 4];
 he=[he, 5 6 7 16 16 16 16 16 16 16];
 n=16;
 g=make_graph('foo',1,n,ta,he);
 g('node_x')=[42 615 231 505 145 312 403 233 506 34 400 312 142 614 260 257];
 g('node_y')=[143 145 154 154 147 152 157 270 273 279 269 273 273 274 50 376];
 ma=edge_number(g);
 g('edge_max_cap')=ones(1,ma);
 g('edge_min_cap')=zeros(1,ma);
 source=15; sink=16;
 nodetype=0*ones(1,n); nodetype(source)=2; nodetype(sink)=1;
 g('node_type')=nodetype;
 nodecolor=0*ones(1,n); nodecolor(source)=11; nodecolor(sink)=11;
 g('node_color')=nodecolor;
 show_graph(g);
 [v,phi,ierr]=max_flow(source,sink,g);
 ii=find(phi<>0); edgecolor=phi; edgecolor(ii)=11*ones(ii);
 g('edge_color')=edgecolor;
 edgefontsize=8*ones(1,ma); edgefontsize(ii)=18*ones(ii);
 g('edge_font_size')=edgefontsize;
 g('edge_label')=string(phi);
 show_graph(g);