10  REM     SHORTEST ROUTE PROBLEM
20  REM     USING THE DYNAMIC PROGRAMMING METHOD
30  REM     WITH SUCCESSIVE APPROXIMATION IN FUNCTIONAL SPACE
40  DIM C[60,60],E[60,2],F[60,2]
50  MAT C=ZER
60  MAT E=ZER
70  MAT F=ZER
80  PRINT "TYPE 1-FOR ONE WAY TRAFFIC (C(I,J)#C(J,I))"
90  PRINT "     2-FOR TWO WAY TRAFFIC (C(I,J)=C(J,I))"
100  INPUT Z
110  READ N
120  READ I,J,C[I,J]
130  IF Z=1 THEN 150
140  C[J,I]=C[I,J]
150  IF I >= N AND J >= N THEN 170
160  GOTO 120
170  I1=0
180  FOR I=1 TO N-1
190  IF C[I,N]=0 THEN 250
200  X=RND(I)
210  IF X=0 THEN 200
220  X=X*10000
230  E[I,2]=X
240  GOTO 260
250  E[I,2]=C[I,N]
260  NEXT I
270  GOSUB 490
280  FOR I=1 TO N-1
290  IF E[I,2]#F[I,2] THEN 320
300  NEXT I
310  GOTO 340
320  MAT E=F
330  GOTO 270
340  PRINT "AFTER ";I1;"ITERATIONS, WE FOUND THE OPTIMAL SOLUTION";
350  PRINT " AS FOLLOWS:"
360  PRINT 
370  PRINT  USING 380
380  IMAGE "FROM",5X,"TO",5X,"DISTANCE"
390  I=1
400  IF I=N THEN 470
410  J=F[I,1]
420  K=C[I,J]
430  PRINT  USING 440;I,J,K
440  IMAGE X,2D,6X,2D,10D.2D
450  I=J
460  GOTO 400
470  PRINT "TOTAL DISTANCE =";F[1,2]
480  STOP 
490  REM SUBROUTINE FOR THE RECURSIVE EQUATIONS
500  I1=I1+1
510  FOR I=1 TO N-1
520  J0=0
530  F0=999999.
540  FOR J=1 TO N
550  IF J=I THEN 600
560  IF C[I,J]=0 THEN 600
570  IF F0 <= C[I,J]+E[J,2] THEN 600
580  F0=C[I,J]+E[J,2]
590  J0=J
600  NEXT J
610  F[I,1]=J0
620  F[I,2]=F0
630  NEXT I
640  RETURN 
9999  END 
