Subversion Repositories wimsdev

Rev

Rev 13587 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
!if $wims_read_parm!=slib_header
13587 bpr 2
  !goto proc
20 reyssat 3
!endif
4158 bpr 4
 
11865 bpr 5
slib_author=Bernadette, Perrin-Riou; Dominique, Bernardi
6
slib_example=[0,0,1,1,1,1,0,0;0,0,1,1,1,1,1,0;0,0,0,0,0,0,0,1;0,0,0,0,0,0,1,0;0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0],3,8\
7
[0,0,1,1,0,1;0,0,1,1,0,0;0,0,0,0,1,0;0,0,0,0,1,1;0,0,0,0,0,0;0,0,0,0,0,0],1,5
20 reyssat 8
!exit
9
 
10
:proc
11865 bpr 11
!reset slib_out
20 reyssat 12
 
13
!distribute item $wims_read_parm into slib_A,slib_s,slib_t
11865 bpr 14
slib_A=!declosing $slib_A
15
slib_A=!lines2rows $slib_A
16
 
14860 bpr 17
Directed Acyclic Graph
11865 bpr 18
 
14860 bpr 19
slib_res=!exec pari (allpaths(M,a,b)={my(n=#M,res=[],res1);if(a==b,res=[[a]],for(i=1,n,if(M[a,i],res1=allpaths(M,i,b);for(j=1,#res1,res=concat(res,[concat(a,res1[j])]))))); res});A=[$slib_A]; allpaths(A,$slib_s,$slib_t)
11865 bpr 20
 
21
slib_rescnt=!itemcnt $slib_res
22
!for slib_ch=1 to $slib_rescnt
23
  slib_chh=!declosing $(slib_res[$slib_ch])
24
  slib_out=!append line $slib_chh to $slib_out
25
!next
26
 
27
!exit
28
 
29
slib_A=!replace internal ; by $\
30
$ in $slib_A
31
 
20 reyssat 32
slib_A= !declosing $slib_A
33
slib_A=!replace internal ; by $\
34
$ in $slib_A
35
slib_n = !linecnt $slib_A
11865 bpr 36
slib_chemin=$slib_t
20 reyssat 37
 
38
!for slib_i=1 to $slib_n
12676 bpr 39
  !for slib_k=1 to $slib_n
40
    !for slib_j=1 to $slib_n
41
      slib_r=!line $slib_k of $slib_A
42
      slib_r=!item $slib_j of $slib_r
43
      !if $slib_r != 0
44
        slib_cnt=!linecnt $slib_chemin
45
        !for slib_u = 1 to $slib_cnt
46
          slib_che=!line $slib_u of $slib_chemin
47
          slib_che1=!item 1 of $slib_che
48
          !if $slib_che1 = $slib_j and $slib_k,$slib_che notlineof $slib_chemin
49
            slib_chemin=$slib_chemin\
20 reyssat 50
$slib_k,$slib_che
12676 bpr 51
          !endif
52
        !next slib_u
53
      !endif
54
    !next slib_j
55
  !next slib_k
20 reyssat 56
!next slib_i
57
 
11865 bpr 58
slib_chemin=!select $slib_chemin where column 1=$slib_s
59
 
20 reyssat 60
slib_out=$slib_chemin