|
nagram様よりご提示いただきましたプログラムをヒントにdo while loopを加えてみました。
隣接行列の値も変えています。これでちゃんとできているみたいですが。
DIM dist(7), node$(7),path$(7)
MAT READ node$
DATA A,B,C,D,E,F,G
MAT path$=node$(1)&NUL$
DIM c(7,7)
MAT c=1000*CON
LET inf=1000
LET dist(1)=0
LET dist(2)=inf
LET dist(3)=inf
LET dist(4)=inf
LET dist(5)=inf
LET dist(6)=inf
LET dist(7)=inf
LET c(1,1)=0
LET c(2,2)=0
LET c(3,3)=0
LET c(4,4)=0
LET c(5,5)=0
LET c(6,6)=0
LET c(7,7)=0
LET c(1,2)=30
LET c(2,1)=30
LET c(1,3)=20
LET c(3,1)=20
LET c(1,7)=1
LET c(7,1)=1
LET c(2,3)=2
LET c(3,2)=2
LET c(2,4)=6
LET c(4,2)=6
LET c(2,5)=1
LET c(5,2)=1
LET c(2,7)=6
LET c(7,2)=6
LET c(3,4)=2
LET c(4,3)=2
LET c(3,5)=3
LET c(5,3)=3
LET c(3,6)=1
LET c(6,3)=1
LET c(4,5)=20
LET c(5,4)=20
LET c(4,6)=30
LET c(6,4)=30
LET c(4,7)=100
LET c(7,4)=100
LET c(5,7)=2
LET c(7,5)=2
LET c(5,6)=5
LET c(6,5)=5
LET c(6,7)=10
LET c(7,6)=10
REM-----------------------------------------------------------------
LET w=0
DO WHILE w<=7
FOR t=1 TO 7
FOR i=1 TO 7
IF dist(i)>dist(t)+c(t,i) THEN
LET dist(i)=dist(t)+c(t,i)
LET path$(i)=path$(t)&node$(i)
END IF
NEXT i
NEXT t
LET w=w+1
LOOP
REM-----------------------------------
PRINT "-------------------------------------------------------"
FOR x=1 TO 7
PRINT "最短距離="; dist(x); ", 経路=";path$(x)
NEXT x
END
|
|