1120 T=TR(I): L=I
1130 NEXT I
1140 U(L)=0: IU(L)=1: C0=1: CR=1: CT=0
1150 FOR J=1 TO N
1160 IF IX(L, J)=0 THEN GOTO 1190
1170 V(J)=C(L, J): IV(J)=1
1180 CT=CT 1: C0=C0 1
1190 NEXTJ
1195 REM ОБРАБОТАТЬ БАЗИСНЫЕ ПЕРЕМЕННЫЕ В ПОМЕЧЕННЫХ
1196 REM СТРОКАХ ИЛИ СТОЛБЦАХ
1200 FOR I=1 TO M
1210 FOR J=1 TO N
1220 IF IX(I, J)=0 THEN GOTO 1310
1230 IF IU(I)=0 AND IV(J)=0 THEN GOTO 1310
1240 IF IU(I)=1 AND IV(J)=1 THEN GOTO 1310
1250 IF IU(I)=0 AND IV(J)=1 THEN GOTO 1290
1260 V(J)=C(I, J)-U(I): IV(J)=1
1270 CT=CT 1: C0=C0 1
1280 GOTO 1310
1290 U(I)=C(I, J)-V(9J): IU(I)=1
1300 CR=CR 1: C0=C0 1
1310 NEXT J
1320 NEXT I
1325 REMПРОВЕРИТЬ, ВСЕ ЛИ СТРОКИ И СТОЛБЦЫ БЫЛИ ПОМЕЧЕНЫ
1330 IF C0M N THEN GOTO 1200
1340 PRINT “ДОПОЛНИТЕЛЬНЫЕ СТОИМОСТИ”
1341 PRINT “U(I)”;: FOR I=1 TO M: PRINT U(I);: NEXT I: PRINT ””
1342 PRINT “V(J)”;: FOR J=1 TO N: PRINT V(J):; NEXT J: PRINT “”
1390 REM ЭЛЕМЕНТЫ С’(IJ) ПОМЕЩАЮТСЯ В МАССИВ D(I, J);
1395 REM ПРОВЕРИТЬ, РАВНЫ ЛИ ОНИ 0 ДЛЯ БАЗИСА
1400 FOR I=1 TO M
1410 FOR J=1 TO N
1420 IF IX(I, J)=0 THEN GOTO 1460
1430 D(I, J)=C(I, J)-U(I)-V(J)
1440 IF D(I, J)0 THEN PRINT “ОШИБКА 1”
1450 GOTO 1470
1460 D(I, J)=C(I, J)-U(I)-V(J)
1470 NEXT J
1480 NEXT I
1490 REM НАЙТИ НАИМЕНЬШИЙ ЭЛЕМЕНТ В МАССИВЕ D(I, J) И
1495 REM ПРИПЕСАТЬ ЕМУ ИНДЕКСЫ (K, L)
1500 T=0: K=0: L=0
1510 FOR I=1 TO M
1520 FOR J=1 TO N
1530 IF IX(I, J)=1 THEN GOTO 1560
1540 IF D(I, J)>=T THEN GOTO 1560
1550 T=D(I, J): K=I: L=J
1560 NEXT J
1570 NEXT I
1575 REM ЕСЛИ Т ВСЕ ЕЩЕ БОЛЬШЕ 0, ТО ВСЕ D(I, J) ПОЛОЖИТЕЛЬНЫ
1576 REM И ДАННОЕ РЕШЕНИЕ ОПТИМАЛЬНО
1580 IF T=0 THEN GOTO 4000
1581 PRINT “”: PRINT “C’KL=”T;: PRINT “K=”K;: PRINT “L=”:PRINT
1582 PRINT “”: GOSUB 5000
1585 REM В ПОДПРОГРАММЕ, НАЧИНАЮЩЕЙСЯ СО СТРОКИ 5000,
1586 REM ПЕЧАТАЕТСЯ БАЗИСНОЕ ДОПУСТИМОЕ РЕШЕНИЕ
1990 REM НАЙТИ СЛЕДУЮЩЕЕ БАЗИСНОЕ ДОПУСТИМОЕ РЕШЕНИЕ;
1995 REM СНАЧАЛА ВСЕ ИНДИКАТОРЫ И СЧЕТЧИКИ ПОЛОЖИТЬ РАВНЫ 0
2000 FOR I=1 TO M: IU(I)=0: NEXT I
2010 FOR J=1 TO N: IV(J)=0: NEXT J
2015 FOR I=1 TO M N: RT(I)=O: CT(I)=0: NEXT I
2020 FOR I=1 TO M: FOR J=1 TO N
2030 D(I, J)=0: MM(I, J)=0
2040 NEXT J: NEXT I
2050 T=1: IP=0
2060 RT(T)=K: CT(T)=L
2070 D(K, L)=1: MM(K, L)=1: IU(K)=1
2071 PRINT T, K; L
2100 FR=0: FC=0: RI=RT(T): CJ=0
2110 FOR J=1 TO N
2120 IF FC=1 THEN GOTO
2180
2130 IF IX(RI, J)=0 THEN GOTO 2180
2140 IF IV(J)=1 THEN GOTO 2180
2150 IF MM(RI, J)=1 THEN GOTO 2180
2155 IF TC(J)=1 AND J=L THEN GOTO 2170
2160 IF TC(J)=1 THEN IP=1: GOTO 2180
2170 FC=1: CJ=J: IV(J)=1: J=N
2180 NEXT J
2190 IF CJ0 THEN GOTO 2300
2200 IF IP>0 THEN IP=0
2210 D(RT(T), CT(T))=0: T=T-1
2220 GOTO 2500
2300 T=T 1
2310 RT(T)=RI: CT(T)=CJ
2320 D(RI, CJ)=-1: MM(RI, CJ)=1
2321 PRINT T, RI; CJ
2400 IF CT(T)=L AND T>2 THEN GOTO 3000
2500 FR=0: FC=0: RI=0: CJ=CT(T)
2510 FOR I=1 TO M
2520 IF FR=1 THEN GOTO 2580
2530 IF IX(I, CJ)=0 THEN GOTO 2580
2540 IF IU(I)=1 THEN GOTO 2580
2550 IF MM(I, CJ)=0 THEN GOTO 2580
2560 IF TR(I)=1 AND IP=0 THEN IP=1: GOTO 2580
2570 FR=1: RI=I: IU(I)=1: I=M
2580 NEXT I
2590 IF RI0 THEN GOTO 2700
2600 IF IP>0 THEN IP=0
2610 D(RT(T), CT(T)=0: T=T-1
2620 GOTO 2100
2700 T=T 1: IP=0
2710 RT(T)=RI: CT(T)=CJ
2720 D(RT(T), CT(T))=1: MM(RI, CJ)=1
2721 PRINT T, RI; CJ
2730 GOTO 2100
3000 W=1E10: L=0: KK=0
3010 FOR I=2 TO T STEP 2
3020 IF X(RT(I),CR(I))>=W THEN GOTO 3040
3030 W= X(RT(I), CT(I)): KK=RT(I): LL=CT(I)
3040 NEXT I
3100 FOR I=1 TO T
3110 X(RT(I), CT(I))=X(RT(I), CT(I)) W*D(RT(I), CT(I))
3120 NEXT I
3200 IX(K, L)=1: IX(KK, LL)=0
3210 TR(K)=TR(K) 1: TR(KK)=TR(KK)-1
3220 TC(L)=TC(L) 1: TC(LL)=TC(LL)-1
3221 PRINT “W=”W;: PRINT “KK=”KK;: PRINT “LL=”LL
3222 PRINT “ПРЕОБРАЗОВАНИЕ ЗАКОНЧЕНО УСПЕШНО”
3250 GOTO 1000
4000 PRINT “ОКОНЧЕННОЕ РЕШЕНИЕ”
4010 GOSUB 5000
4500 END
5000 CC=0
5010 PRINT “ I J
XIJ CIJ
СТОИМОСТЬ”
5020 FOR I=1 TO M
5030 FOR J=1 TO N
1320 NEXTI
1325 REM ПРОВЕРИТЬ ВСЕ ЛИ СТРОКИ И СТОЛБЦЫ БЫЛИ ПОМЕЧЕНЫ
1330 IF C0M N THEN GOTO 1200
1340 PRINT “ДОПОЛНИТЕЛЬНЫЕ СТОИМОСТИ”
1341 PRINT “U(I)”;: FOR I=1 TO M: PRINT U(I);: NEXT I:
PRINT “”
1342 PRINT “V(J)”;: FOR J=1 TO N: PRINT V(J);: NEXT J:
PRINT ””
1390 REM ЭЛЕМЕНТЫ C’(IJ) ПОМЕЩАЮТСЯ В МАССИВ D(I, J);
1395 REM ПРОВЕРИТЬ, РАВНЫ ЛИ ОНИ 0 ДЛЯ БАЗИСА
1400 FOR I=1 TO M
1410 FOR J=1 TO N
1420 IF IX(I, J)=0 THEN GOTO 1460
1430 D(I, J)=C(I, J)-U(I)-V(J)
1440 IF D(I, J)0 THEN PRINT “ОШИБКА 1”
1450 GOTO 1470
1460 D(I, J)=C(I, J)-U(I)-V(J)
1470 NEXT J
1480 NEXT I
1490 REM НАЙТИ НАИМЕНЬШИЙ ЭЛЕМЕНТ В МАССИВЕ D(I, J) И
1495 REM ПРИПИСАТЬ ЕМУ ИНДЕКСЫ (K, L)
1500 T=0: K=0: L=0
1510 FOR I=1 TO M
1520 FOR J=1 TO N
1530 IF IX(I,J)=1 THEN
GOTO 1560
1540 IF
D(I,J)>=T THEN GOTO 1560
1550 T=D(I,J): K=I:
L=J
1560 NEXT J
1570 NEXT I
1575 REM ЕСЛИ Т
ВСЕ ЕЩЕ БОЛЬШЕ 0, ТО ВСЕ В(I,J) ПОЛОЖИТЕЛЬНЫ
1576 REM И
ДАННОЕ РЕШЕНИЕ ОПТИМАЛЬНО
1580 IF Y=0 THEN GOTO
4000
1581 PRINT ””: PRINT
C’KL=”T;: PRINT “K=”K:;PRINT “L=”:PRINT “”
1582 PRINT “”: GOSUB
5000
1585 REM В
ПРОГРАММЕ, НАЧИНАЮЩЕЙСЯ СО СТРОКИ 5000,
1586 REM
ПЕЧАТАЕТСЯ БАЗИСНОЕ ДОПУСТИМОЕ РЕШЕНИЕ
1990 REM НАЙТИ
СЛЕДУЮЩЕЕ БАЗИСНОЕ ДОПУСТИМОЕ РЕШЕНИЕ;
1995 REM СНАЧАЛА ВСЕ
ИНДИКАТОРЫ И СЧЕТЧИКИ
1996 REM ПОЛОЖИТЬ
РАВНЫМИ 0
2000 FOR I=1 TO M:
IU(I)=0: NEXT I
2010 FOR J=1 TO N:
IV(I)=0: NEXT J
2015 FOR I=1 TO M N:
RT(I)=0: CT(I)=0: NEXT I
2020 FOR I=1 TO M: FOR
J=1 TO N
2030 D(I,J)=0:
MM(I,J)=0
2040 NEXT J: NEXT I
2050 T=1: IP=0
2060 RT(T)=K: CT(T)=L
2070 D(K,L)=1:
MM(K,L)=1: IU(K)=1
2071 PRINT T,K;L
2100 FR=0: FC=0:
RI=RT(T): CJ=0
2110 FOR J=1 TO N
2120 IF FC=1 THEN GOTO
2180
2130 IF IX(RI,J)=0
THEN GOTO 2180
2140 IF IV(J)=1 THEN
GOTO 2180
2150 IF MM(RI,J)=1
THEN GOTO 2180
2155 IF TC(J)=1 AND
J=L THEN GOTO 2170
2160 IF TC(J)=1
THEN IP=1: GOTO 2180
2170 FC=1: CJ=J:
IV(J)=1: J=N
2180 NEXT J
2190 IF CJ0
THEN GOTO 2300
2200 IF IP>0 THEN
IP=0
2210 D(RT(T),CT(T))=0:
T=T-1
2220 GOTO 2500
2300 T=T 1
2310 RT(T)=RI:
CT(T)=CJ
2320 D(RI,CJ)=-1:
MM(RI,CJ)=1
2321 PRINT T,RI;CJ
2400 IF CT(T)=L AND
T>2 THEN GOTO 3000
2500 FR=0: FC=0: RI=0:
CJ=CT(T)
2510 FOR I=1 TO M
2520 IF FR=1 THEN GOTO
2580
2530 IF IX(I,CJ)=0
THEN GOTO 2580
2540 IF IU(I)=1 THEN
GOTO 2580
2550 IF MM(I,CJ)=0
THEN GOTO 2580
2560 IF TR(I)=1 AND
IP=0 THEN IP=1: GOTO 2580
2570 FR=1: RI=I: IU=1:
I=M
2580 NEXT I
2590 IF RI0
THEN GOTO 2700
2600 IF IP>0 THEN
IP=0
2610 D(RT(T),CT(T))=0:
T=T-1
2620 GOTO 2100
2700 T=T 1: IP=0
2710 RT(T)=RI:
CT(T)=CJ
2720 D(RT(T),CT(T))=1:
MM(RI,CJ)=1
2721 PRINT T,RI;CJ
2730 GOTO 2100
3000 W=1E10: L=0: KK=0
3010 FOR I=2 TO T STEP
2
3020 IF
X(RT(I),CR(I))>=W THEN GOTO 3040
3030 W=X(RT(I),CT(I)):
KK=RT(I): LL=CT(I)
3040 NEXT I
3100 FOR I=1 TO T
3110
X(RT(I),CT(I))=X(RT(I),CT(I)) W*D(RT(I),CT(I))
3120 NEXT I
3200 IX(K,L)=1: IX(KK,LL)=0
3210 TR(K)=TR(K) 1:
TR(KK)=TR(KK)-1
3220 TC(L)=TC(L) 1:
TC(LL)=TC(LL)-1
3221 PRINT “W=”W;:
PRINT “KK=”KK;: PRINT “LL=”LL
3222 PRINT
ПРЕОБРАЗОВАНИЕ ЗАКОНЧЕНО УСПЕШНО”
3250 GOTO 1000
4000 PRINT
ОКОНЧАТЕЛЬНОЕ РЕШЕНИЕ”
4010 GOSUB 5000
4500 END
5000 CC=0
5010 PRINT “ I
J XIJ
CIJ СТОИМОСТЬ”
5020 FOR I=1 TO M
5030 FOR J=1 TO N
5040 IF IX(I,J)=0 THEN
GOTO 5110
5050 PP=C(I,J)*X(I,J)
5060 CC=CC PP
5070 PRINT I;J;
5080 PB=430:
PA=X(I,J): GOSUB 9000
5090 PA=C(I,J): GOSUB
9000: PA=PP: GOSUB 9000
5100 PRINT “”
5110 NEXT J: NEXTI
5200 PRINT “ОБЩАЯ
СТОИМОСТЬ РАВНА “;CC
5250 RETURN
9000 PC=INT(PB/100)
9010 P$=’’
9020 IF PC=0 THEN
PRINT “”: GOTO 9040
9030 PRINT
LEFT$(P$,PC);
9040 PC=PB-100*PC
9050 PD=INT(PC/10):PC=PC-10*PD
9060 IF PD=0 THEN PD=1
9070 IF PA<0 THEN
P$=P$ ”-”
9080 PE=ABS(PA)
9090
PE=PE 5*10^(-1-PC)
9100 IF PE>=10^PD
THEN PRINT PA;: RETURN
9110
P$=P$ MID$(STR$(INT(PE)),2,PD)
9120 PRINT RIGHT$(P$,PD 1)
9130 IF PC=0 THEN
RETURN
9140 PRINT ”.”;
9150
PE=INT((PE-INT(PE))*10^PC)
9160 P$=”000000000”
9170
P$=P$ MID$(STR$(PE),2,PC)
9180 PRINT
RIGHT$(P$,PC);: RETURN
10000 DATA 3,5
10010 DATA 1,0,3,4,2
10020 DATA 5,1,2,3,3
10030 DATA 4,8,1,4,3
10040 DATA 15,25,20
10050 DATA 20, 12,5,8,15
READY.
РЕШЕНИЕ ТРАНСПОРТНОЙ ЗАДАЧИ
ДОПОЛНИТЕЛЬНЫЕ СТОИМОСТИ
U(I)-4 0 0
V(J) 5 4 1 3 3
C’KL=-3 K= 2 L= 2
I J
XIJ CIJ СТОИМОСТЬ
1 1
3
1 3
1 2
12
0 0
2 1
17 5
85
2 4
8
3 24
2 5
0
3 0
3 3
5
1 5
3 5
15
3 45
ОБЩАЯ СТОИМОСТЬ РАВНА 162
1
2 2
2
2 1
3
1 1
4
1 2
W= 12 KK= 1 L= 2
ПРЕОБРАЗОВАНИЕ ЗАКОНЧЕНО УСПЕШНО
ДОПОЛНИТЕЛЬНЫЕ СТОИМОСТИ
U(I)-4 0 0
V(J) 5 1 1 3 3
C’KL=-1 K= 3 L= 1
I J
XIJ CIJ СТОИМОСТЬ
1 1
15 1
15
2 1
5
5 25
2 2
12
1 12
2 4
8
3 24
2 5
0
3 0
3 3
5
1 5
3 5
15
3 45
ОБЩАЯ СТОИМОСТЬ РАВНА 126
1
3 1
2
3 5
3
2 5
4
2 1
W= 5 KK= 2 L= 1
ПРЕОБРАЗОВАНИЕ ЗАКОНЧЕНО УСПЕШНО
Назад
В начало реферата
Если у вас есть аналогичные работы Реферат "Транспортная задача" сообщите нам об этом. Также нам будет интересны рефераты, дипломные работы по теме Реферат "Транспортная задача", а также курсовые работы. Присылайте их нам, помогите в учебе другим людям.