Rev 8560 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8560 | Rev 12676 | ||
---|---|---|---|
Line 19... | Line 19... | ||
19 | slib_S=$slib_s |
19 | slib_S=$slib_s |
20 | 20 | ||
21 | slib_precedent=!values $slib_s for x = 1 to $slib_n |
21 | slib_precedent=!values $slib_s for x = 1 to $slib_n |
22 | 22 | ||
23 | !for slib_j=1 to $slib_n |
23 | !for slib_j=1 to $slib_n |
24 |
|
24 | slib_L=!line $slib_s of $slib_GM |
25 |
|
25 | !if $slib_j != $slib_s |
26 |
|
26 | slib_u=!item $slib_j of $slib_L |
27 |
|
27 | !if $slib_u=0 |
28 |
|
28 | slib_pi = $slib_pi,\infty |
29 |
|
29 | !else |
30 |
|
30 | slib_pi = $slib_pi,$slib_u |
31 |
|
31 | !endif |
32 |
|
32 | !else |
33 |
|
33 | slib_pi = $slib_pi,0 |
34 |
|
34 | !endif |
35 | !next slib_j |
35 | !next slib_j |
36 |
|
36 | slib_cor = ($slib_S), ($slib_pi) |
37 |
|
37 | slib_pi = !nonempty items $slib_pi |
38 | 38 | ||
39 | !for slib_i = 1 to $slib_n |
39 | !for slib_i = 1 to $slib_n |
40 | !if $slib_i != $slib_s |
40 | !if $slib_i != $slib_s |
41 | # 1. On trouve un sommet satisfaisant |
41 | # 1. On trouve un sommet satisfaisant |
42 | !distribute items $[($slib_bp+1)*$slib_n],0,0 into slib_x,slib_y,slib_z |
42 | !distribute items $[($slib_bp+1)*$slib_n],0,0 into slib_x,slib_y,slib_z |
43 | !for slib_j = 1 to $slib_n |
43 | !for slib_j = 1 to $slib_n |
44 |
|
44 | slib_u = !item $slib_j of $slib_pi |
45 |
|
45 | !if $slib_u notsametext \infty |
46 |
|
46 | !if ($slib_j notitemof $slib_S) and ($slib_u < $slib_x) |
47 |
|
47 | slib_x = $slib_u |
48 |
|
48 | slib_y = $slib_j |
49 |
|
49 | !endif |
50 |
|
50 | !else |
51 |
|
51 | !if ($slib_j notitemof $slib_S) and ($slib_z=0) |
52 |
|
52 | slib_z = $slib_j |
53 |
|
53 | !endif |
54 |
|
54 | !endif |
55 | !next slib_j |
55 | !next slib_j |
56 | !if $slib_y != 0 |
56 | !if $slib_y != 0 |
57 |
|
57 | slib_sommet = $slib_y |
58 | !else |
58 | !else |
59 |
|
59 | slib_sommet = $slib_z |
60 | !endif |
60 | !endif |
61 | 61 | ||
62 | slib_S = $slib_S,$slib_sommet |
62 | slib_S = $slib_S,$slib_sommet |
63 | # 2. On modifie le vecteur pi |
63 | # 2. On modifie le vecteur pi |
64 | !for slib_j = 1 to $slib_n |
64 | !for slib_j = 1 to $slib_n |
65 | !if $slib_j != $slib_s |
65 | !if $slib_j != $slib_s |
66 | slib_u = !item $slib_j of $slib_pi |
66 | slib_u = !item $slib_j of $slib_pi |
67 | slib_v = !item $slib_sommet of $slib_pi |
67 | slib_v = !item $slib_sommet of $slib_pi |
68 | slib_L = !line $slib_sommet of $slib_GM |
68 | slib_L = !line $slib_sommet of $slib_GM |
69 | slib_w = !item $slib_j of $slib_L |
69 | slib_w = !item $slib_j of $slib_L |
70 | slib_y = 0 |
70 | slib_y = 0 |
71 | !if $slib_v notsametext \infty |
71 | !if $slib_v notsametext \infty |
72 | !if $slib_u notsametext \infty |
72 | !if $slib_u notsametext \infty |
73 | slib_x = $[min($slib_u,$[$slib_v+$slib_w])] |
73 | slib_x = $[min($slib_u,$[$slib_v+$slib_w])] |
74 | !if ($slib_w != 0) and ($slib_j notitemof $slib_S) |
74 | !if ($slib_w != 0) and ($slib_j notitemof $slib_S) |
75 | slib_y = 1 |
75 | slib_y = 1 |
76 | !if $slib_x = $[$slib_v+$slib_w] |
76 | !if $slib_x = $[$slib_v+$slib_w] |
- | 77 | slib_precedent = !replace item number $slib_j by $slib_sommet in $slib_precedent |
|
- | 78 | !endif |
|
- | 79 | !endif |
|
- | 80 | !else |
|
- | 81 | slib_x = $[$slib_v+$slib_w] |
|
- | 82 | !if ($slib_w != 0) and ($slib_j notitemof $slib_S) |
|
- | 83 | slib_y = 1 |
|
77 | slib_precedent = !replace item number $slib_j by $slib_sommet in $slib_precedent |
84 | slib_precedent = !replace item number $slib_j by $slib_sommet in $slib_precedent |
78 | !endif |
85 | !endif |
79 | !endif |
86 | !endif |
80 | !else |
- | |
81 | slib_x = $[$slib_v+$slib_w] |
- | |
82 | !if ($slib_w != 0) and ($slib_j notitemof $slib_S) |
- | |
83 |
|
87 | !if $slib_y=1 |
84 |
|
88 | slib_pi = !replace item number $slib_j by $slib_x in $slib_pi |
85 | !endif |
89 | !endif |
86 | !endif |
90 | !endif |
87 | !if $slib_y=1 |
- | |
88 | slib_pi = !replace item number $slib_j by $slib_x in $slib_pi |
- | |
89 | !endif |
- | |
90 | !endif |
- | |
91 | !endif s |
91 | !endif s |
92 | !next slib_j |
92 | !next slib_j |
93 | slib_cor = $slib_cor, ($slib_S), ($slib_pi) |
93 | slib_cor = $slib_cor, ($slib_S), ($slib_pi) |
94 | !endif s |
94 | !endif s |
95 | !next slib_i |
95 | !next slib_i |
96 | 96 | ||
97 | path from s to t |
97 | path from s to t |
98 |
|
98 | slib_liste = $slib_t |
99 |
|
99 | slib_pit = !item $slib_t of $slib_pi |
100 | !if $slib_pit notsametext \infty |
100 | !if $slib_pit notsametext \infty |
101 | slib_prec = $slib_t |
101 | slib_prec = $slib_t |
102 | !for slib_k = 1 to $slib_pit |
102 | !for slib_k = 1 to $slib_pit |
103 | slib_prec = !item $slib_prec of $slib_precedent |
103 | slib_prec = !item $slib_prec of $slib_precedent |
104 | slib_liste = $slib_prec,$slib_liste |
104 | slib_liste = $slib_prec,$slib_liste |
105 | !next slib_k |
105 | !next slib_k |
106 | !endif |
106 | !endif |
107 | 107 | ||
108 | slib_out=$slib_liste |
108 | slib_out=$slib_liste |
109 | - | ||
110 | - |