algoritmi per la soluzione di problemi di assegnazione
TRANSCRIPT
A L G O R I T M I P E R LA S O L U Z I O N E D I P R O B L E M I D I A S S E G N A Z I O N E
C. B/3HM - L. S3_NTUCCI
Istituto per le Applicazioni del Calcolo ( IAC)- CNR, Roma
Summary: An iterative algorithm is proposed to reduce in mast cases the number of permu- tations necessary for finding possibly solution of the multiple assignement problem for the rows and at same time for the columns of two matrices.
Simbologia
A , B
A Z _ B
G , H
g , h
AZ__B P
I l a ~ l l , IIb,~ll ( i = 1 . . . . , n ; k = 1 , . . . , m )
aik ,L bik
matrici di permutazione r ispet t ivamente di ordine n , m
corrispondenti funzioni di permutazione degli indici
(EG) (EH) (GAH z B)
X . Y
II r~k,~t I1
II rik,~t 11
II r~,~_~ 11
Y ~ o'/gm
II xik yik II II r(i-1)m+k.(s-1)m+t 11 ( i , s = 1 . . . . . n; k , t = 1 . . . . . m)
sottomatrice di II rlk.st II o t tenuta fissando k = k , t = t
)), ) )
(EG) (G L__ X)
(EH) (H L y )
( i , s = 1 . . . . . n)
ottenuta fissando i = i , s = s ( k , t = 1 , . . . , m )
Iniz iamo con il considerare il seg-uente problema che generalizza quello trat- tato in [1 ] .
Date due matrici A , B delle stesse dimensioni n Xm, ad elementi apparte- nenti ad un insieme totalmente ordinato esiste una matrice di permutaz ione G ed una H per cui , considerando GAH, si ha GAH L_ B ?
218
In caso affermativo cliremo che B P-copre A e scriveremo A _z B. P
Per ogni coppia A , B la decisione se A __ B o no pub essere ottenuta depo P
non pih d i n ! m ! passi, ciascun passo verificando per ogni permutazione su righe e su colonne se G~AHk__4B ( i = 1 , . . . , n ! ; k = 1 , . . . , m ! ) .
Ci interessa la questione di ridurre, nella maggior parte dei casi, il numero
di passi necessari per la risposta. Poichd ogni elemento di A pub essere spostato in ogni posizione di A per
una arbitraria combinazione di permutazione di righe e colonne, tutte le informa- zioni che necessitano su A e B per la risoluzione de1 nostro problema sono rias- sunte nella matrice binaria di ordine n m cosi definita
R = II rik,st II rik,st = 1 se aik ~ b,t
rik,st = 0 se aik > bst E' facile veriticare che
A __ B se e solo se (Eg) (Eh) (rg(s)~(t).st = 1) P
Pertanto da ora in poi potremo limitarci ad esaminare qualche propriet~ della
matrice bool.eana R. Sembra conveniente chiederci se qualche sottomatrice quadrata di R (o qual-
che altra facilmente ottenibile da questa) gode della proprietor di Hall (cio~ ~ n 6 ~R~m) do~ se copre qualche matrice di permutazione.
Definiamo i seguenti due insiemi di sottomatrici quadrate di R:
G ~k-'t> = [[ ri_k.~t_ [[ k , t = 1 , . . . , m di ordine n
H (!'v = [[ rik.~t [[ i , s = 1 , . .... n di ordine m
Costruiamo, ora, le clue seguenti matrici binarie:
H* = II h*~t II h*_~,_ = 1 s e G ~-ka-' ~ ~ n
h%t = 0 ~, G(-k't- ~ ~ ~R~n
G* = II g*!~_ I1 g*:~ = 1 ,, H (i-'v 6 ~;R~m
g'is ---- 0 ~> H "-'~-~ { /~m
Si dimostrano immediatamente i seguenti tre teoremi:
Teorema I
(Eg)(Eh)(rg(s)h(t).st = 1) so!o se H * 6 / ~ m e G * 6 ~ ,
219
Dim. - Su'pponiamo, per assurdo, la premessa ed H* { ~m entrambe valide. La seconda affermazione implica che, per ogni permutazione h di { 1 , . . . , m } vi
almeno un indice q E { 1 . . . . , m} tale che G(h(q~'q){ ~ . Questo vuol dire di. nuovo che, per ogni permutazione g di { 1 , . . . , n}, vi
almeno un indice u E { 1 . . . . , n} tale che rg(u)h(q).~q = 0. Ma l'ultima afferma- zione 6 in contraddizione con la premessa per s = u , t = q. Analogamente si dimostra la seconda implicazione (G* E 8r c.d.d.
T e o r e m a I I
Per ogni permutazione g ed h
rg(s)h(t),st = "l 8010 se rg(s)h(t),st = 1
ove R ~ ottenuto da R ponendo identicamente uguale a zero alcune matrici G (L~
per cui h*i~ = 0 oppure alcune matrici H (j'w~ per cui g*jw = 0.
Dim. - Dimostriamo la prima alternativa, (Caso G (1'~), la seconda si di-
mostra similmente.
Supponendo rjl.ux = 1 , rj1.~ = 0, la premessa vera e, per assurdo, la conse- guenza falsa.
Allora deve essere j = g ( u ) l = h ( x ) e
rg(u)h(x),ux = 0 e rg(u)h(x),ux = 1
Per l 'uhima affermazione otteniamo
G ~h(x~'~ = G (L~ E ~
per cui h*l.~ = 1 (contraddizione) c.d.d.
Analoga dimostrazione vale per il seguente
T e o r e m a I I I
Per ogni permutazione g ed h
rg(s)h(t),st = 1 SOlO se rg(s)h(t),st = 1
ove R ~ ottenuta da R azzerando rik.st se g'is = 0 oppure se h*k t = 0. Lo studio del problema di P-copertura ~ facilmente generalizzabile, introdotta
R, a quello di una relazione r qualsiasi. Nel caso m = 1, ci si riduce a considerate il problema di assegnazione semplice tra due insiemi di n etementi: si tratta di
220
decidere sei l permanente della matrke quadrata binaria R di ordine n, rappresen- tante la {unzione caratteristica di r, ~ diversa da zero o no (o equivalentemente R 6 ~ n oppure R ~ b~n).
Nel caso m > 1, generalizziamo il precedente problema, studiando ii problema di assegnazione muhipla tra due famiglie di n insiemi, ciascuno d i m elementi.
Questo problema ~ risolto se esiste u~a corrispondenza biunivoca fra le due famiglie X , Y in modo che insiemi corrispondenti risolvano il problema dell'as- segnazione semplice.
Se ogni ir~sieme contiene m elementi, 18 soluzione di questo ultimo problema comporta al pifi n ( n + l ) / 2 decision1 su matrici quadrate binarie d'ordine m ed una decisione su un,a matrice d'ordine n.
Possiamo, ora, formulare un problema pi~ complicato, consistente nel for- mare rispettivamente con X e Y due matrici di dimensioni n X m ed imporre di risolvere il problema di assegnazione muhipla, contemporaneamente per la cop- pia di famiglie delle righe e t a coppia di famiglie delle colonne. In ahre parole si vuole decidere se esiste una permutazione delle righe e simuhaneamente delle co- lonne di X che permetta di assegnare, a permutazione avvenuta, yik ad Xik.
.Sulla base dei precedenti teoremi generalizzati al caso di una qualsiasi re!a- zione r, diamo un algorit.mo che per un certo numero di casi risolve il problema di decisione per ultimo accennato. L'algoritmo essenzialmente decide se valgono simuhaneamente le due seguenti proprietfi:
1) Per ogni rigo i di X esiste almeno una riga j ~ i di X e due righe di Y tall che, per sottomatrici X' e Y' formate da queste coppie di righe, il problema uhimamente accennato ammette soluzione.
2) Proprietfi analoga sussiste per s ottomatrici formate da coppie di colonne.
Ne consegue che se una o l'ahra delle propr~efft non .sussiste il problema &lie assegnazioni muhiple non ha soluzione.
Ahrimenti sussiste di tale proprietfi una condizione necessaria ma non suf- ficieme.
L'algoritmo accerta, inohre, l'esistenza di una soluzione in casi particolari di facile verifica.
Diremo che l'algoritmo ha esito positivo se esiste, nota r, la possibilit~ di risolvere il problema di assegnazione muhipla contemporaneamente per la coppia di famiglie delle righe e delle colonne di X e Y, invece diremo che ha esito nega- tivo se non esiste soluzione per il problema.
Esponiamo, ora, brevemente, i passi dell'algoritmo:
1) Date due matrici, costituite dalle famiglie di insiemiX e Y, viene costruita R.
2) Se R _ U (U matrice unitaria dello stesso ordine di R) l'algoritmo ha esito ,positivo, ahrimenti continua.
3) Costruisce H e modifica R:
221
se G(~ '~ pone h*kt = 0 ed azzera G (k't)
>> G (k'~ ~ ~ , >> h*kt = 1
( k , t -- 1 , . . . , m )
Se H* ~ ~d~ 1'algoritmo ha esito negativo altrimenti
4) Costruisce G e modifica R:
se H (i's) ~. t/din pone g'is -- 0 ed azzera H (i's)
>> H (i's) ~ i~m ~> g'is -- i
( i , s = 1 , . . . , n )
Se G* ~ ~Id. l'algoritmo ha esito negativo altrimenti
5) Se g'is = 1
sostituisce H Ci'~ con il prodotto elemento per elemento
( i , s =
Effettuata tale sostituzione
se H (i's) ~/~R~m
g'is = 0
H (i's) �9 H*
pone
ed H "'s' ---- 0
1 , . . . , n )
e per ogni coppia ( k , t ) individuata da un elemento rlu.,t azzerato pone, se
h*kt = 2,
h*kt = 1
g'is = 2
se, invece, H (i'*~ 6 ~R~ pone
6) Se G* ~ ~ . l'algoritmo ha esito negativo altrimenti
7) Considera il prodotto ~a elemento per el emento di tutte le H "s) ~ 0. Se zca ~ ~ m l'algoritmo ha esito positivo altrimenti
8) Opera come al passo 6) simmetricamente per ogni h*kt.
9) Se H* ~ t~dm l'algoritmo ha esito negativo altrimenti
10) Considera il prodotto ~c elemento per elemento di tutte le G (k'~ ~ 0. Se z:6 6 t/d. l'algoritmo ha esito positivo altrimenti
(*) Per poter permettere un utile confronto con il lavoro [4], apparso recentemente, riportiamo in seguito il programma RELATE.
222
11 ) Se, nei precedenti passi, almeno un elemento di R ~ stato azzerato, l'algoritmo riprende dal passo 5); se non ~ stato azzerato alcun elemento l'algoritmo pone ogni elemento diverso da zero in G* ed in H* uguale a 2.
12) Per ogni g'is :7 2 0 ( i , s = 1 , . . . , n)
costruisce una G '"'~) che ha come elementi
g'is = 1
g'iw = 0
g'jw = 1
g'jw = 0
( w ~ s ) g'js = 0 ( j ~ i )
( j ~ i , w ~ s) se g*jw :~ 0 ed H (i's) H (j'w~ 6 ~ m
(j :~ i , w :~ s) se g*jw = 0 o H (i's) H (j'w~ 6 ~ m
Se G '(i'~{Ig.n pone H ( i ' ' ) = 0 e g ' i , = 0
e per ogni elemento rik,st azzerato pone, se h%t = 2 , h*kt = 1.
Se G ' " ' ~ { ~ n e se H (i's~ ba m oppure m + l uni l'algoritmo ha esito positivo, altrimenti pone
g'is = 2
13) G* ~ ~ n l'algoritmo ha esito negativo altrimenti opera analogamente al passo 12) per ogni h * k t = 2 ( k , t = 1 , . . . , m ) .
14) Se H* ~ ~ m l'algoritmo ha esito negativo. Se H* 6 ~ m ed 6 stato azzerato almeno un elemento di R, ralgoritmo riprende d, al passo 5) in caso contrario si ferma.
Di questo algoritmo ne ~ stata effettuata una versione in FORTRAN IV, pro- gramma R E L A T E ( * ) ; per il problema di P-copertura ed una nel caso di una relazione qualsiasi tra insiemi X e Y ad elementi ,appartenenti ad un insieme ordinato.
Diamo alcuni esempi in cui l'algoritmo ha esito positivo:
RELATE PROGRAM
A
7 6 1 2 3 4 5
3 4 8 9 10 1 2
3 2 1 8 8 3 9
3 1 3 8 2 1 3
1 2 2 4 2 1 1
223
B
6 4 3 1 2 7 5
4 1 10 8 9 4 3
I. 3 2 5 9 4 3
2 3 8 1 9 4 9
4 4 4 4 4 4 4
B RELATE
1 2 4 3
6 1 4 5
A
1 2 3
4 1 3
1 4 2
B
3 4 1
4 3 1
4 4 4
A (1)
5
3 2 7
B RELATE A (4)
1 3 2
3 1 2
Nel primo esempio l'algoritmo decide al passo 7), nel secondo decide al passo 12).
$ JOB $ IBJOB $ IBFI'C C C C C C C C C
224
7201, RELAT
GIVEN 2 MATRICES JA AND JB OF SAME SIZE N*M AND A BINARY RELATION RELATE WHOSE CHARACTERISTIC FUNCTION IS A SQUARE BINARY MATRIX OF ORDER KN, THE PROGRAM LOOKS FOR PERMUTATIONS OF ROWS AND COLUMNS OF JA SUCH THAT THE NEW MATRIX SO OBTAINED RELATE TO JB ELEMENT BY ELEMENT. IN ORDER TO DO THIS SAME NECESSARY CONDITIONS AND SOME SUFFICIENT CONDITIONS ARE TESTED. STATEMENTS 30 AND 40 PROVIDE TO THE CONSTRUCTION OF THE
C C C C C C C C C C C C C
C
C
JA,JB N,M IR,IG,IH,IGG,IHH MP IU,IV REMARK
BINARY MATRIX IR (THE RELATION NOT GREATER THEN IS HERE EXEMPLIFIED). DESCRIPTION OF PARAMETERS
INPUT MATRICES SIZE OF MATRICES BINARY SQUARE MATRICES PRODUCT ELEMENT BY ELEMENT OF MATRICES PERMUTATION FUNCTIONS
N MUST BE NOT GREATER THEN 8 M MUST BE NOT GREATER THEN 10 SUBROUTINE REQUIRED SUBROUTINE AHALL DIMENSION JA(8,10)JB(8,10),IR(80,80),IHL(80,80),IG(10,10)
1 IH(10,10),IB(10,10),IGG(10,10),IHH(10,10),MP(10,10) 2 M.R( 10,10),IU( 10),IV(10)
COMMON/RHR/ IHL,IT,IND,IB,ICC COMMON/VVV/ MR
1 READ (5,900)N,M DO 10 I,=I,N
10 RE/LD(5,900)( JA(IJ),J = 1,M) DO 12 I = I , N
12 KEAD(5,900)(JB(I,J ),J = 1,M) WRITE (6,902) DO 14 I=I~N
14 WRITE(6,900)(JA(I,J),I= I,M) WRITE(6,904) DO 16 I = I , N
16 WRITE(6,9OO)(JB(I,J),J= I~M) BEGINNING OF STEP 1 KN=N*M DO 30 J=:ydq DO 30 1 = 1,KN
30 IR(I,J)= 1 DO 50 I J = I , N DO 50 KS=I ,M DO 50 I = I , N DO 50 K=LM IF (JA(I,K).GTJB(IJ,KS)) GO TO 40 GO TO 50
40 I K = ( I - 1)*M+K IRS= (I J - 1)*M+KS IR(IK,IRS)=0
5O CONTINUE BEGINNING OF STEP 2 DO 20 I = I , K N IF(IR(I,I).EQ.1) GO TO 2O GO TO 22
20 CONTINUE WRITE(6,908) GO TO 1
225
C
C
70 WRITE(6,906) KKK GO TO 1
22 ICL=0 80 DO 90 J=I ,N
DO 9O I = 1,N 90 IG(I,J)= 1
DO i00 J=I,M DO lO0 I=l~vl
100 IH(IJ)= 1 BEGINNING OF STEP 3 IT=M I = l
102 K=I 103 DO 110 J=I,M
DO ii0 L=I,M IJ=(I--1)*M+J KL=(K--1)*M+L
II0 IB(J,L)= IR(IJ,KL) CALL AHALL IF(ICC) 302,30L302
301 IG(I,K)=0 DO 3OO J = l ~ DO 300 L=I~M IJ=(I--1)*M+J KL=(K--1)*M+L
300 IR(IJ,KL)=0 302 IF(K--N) 120,130,120 130 IF(I~N) 122,140,122 120 K=K+I
GO TO 103 122 I = I + 1
GO TO 102 BEGINNING OF STEP 4
140 IT=N DO 333 I = 1 ~ DO 333 K=I,N
333 IB(I,K)=IG(I,K) CALL AHALL IF(ICC) 142,75,142
76 KKK=2 GO TO 70
142 I=1 202 K= 1 203 DO 210 J=I ,N
DO 210 L=I,N IJ=I+(J--1)*M KL=K+ (L-1)*M
210 IB(J,L)= IR(IJ,KL) CALL AHALL IF(ICC) 402,401,402
401 IH(I,K)=0 DO 4O3 L=I,N
226
C
DO 403 J=LN IJ=(J--1)*M+I KL=(L--1)*M+K
4O3 IR(IJ,KL)=0 402 IF(K--M) 220,230,220 220 K = K + I
GO TO 203 230 IF(I--M) 222,270,222 222 I = I + l
GO TO 202 270 IT=M
DO 443 I=1~r DO 443 K=I,M
443 IB(I,K)= IH(I~) CALL AHALL IF(ICC) 500,75,500
75 KKK=3 GO TO 70
272 IF(ICD) 500,2000,500 500 ICD=0
BEGINNING OF STEP 5 I=1
502 K=I 503 IF(IG(I,K)---1) 603,602,603 602 DO 610 J=I,M
DO 610 L=I,M I J=( I -1 )*M+J KL=(K-- 1)*M+L IF(IH(J,L).GT.O) GO TO 610
634 IF(IR(IJ,KL).EQ.O) GO TO 610 IR(IJ,KL)= 0 ICD= 1
610 IB(J,L)=IR(IJ,KL) CALL AHALL IF(ICC) 633,630,633
633 IG(I,K)=2 GO TO 6O3
630 IG(I,K)=0 DO 640 L=I,M DO 640 J = 1,M I J=( I -1 )*M+J KL=(K- 1)*M+L IF(IR(IJ,KL).EQ.O) GO TO 640 IF(IH(J,L).EQ.2) IH(J,L)= 1 ICD = 1
640 IR(IJ,KL)= 0 6O3 IF(K-N) 670,680,870 680 IF(I -N) 672,690,672 670 K = K + I
GO TO 503 672 I = I + l
GO TO 5O2
227
690 IT=N C BEGINNING OF STEP 6
DO 675 I=I ,N DO 675 K=I,N
675 IB(I,K)=IG(I,K) CALL AHALL IF(ICC) 700,76,700
700 DO 711 L=I,N 711 IU(L)=MR(L)
C BEGINNING OF STEP 7 DO 710 I=I,M DO 710 J=I ,M
710 MP(IJ)= 1 DO 715 I=I,N DO 715 K=I,N IF(IG-(I,K)- 1) 715,720,720
720 DO 722 J=I,M DO 722 L=I,M I J=( I -1 )*M+J KL=(K-1)*M+L
722 MP(J,L) = MP(J,L)*IR(IJ,KL) 715 CONTINUE
IT=M DO 730 I = 1,M DO 73O J=I ,M
730 IB(IJ)=MP(IJ) CALL AHALL IF(ICC) 2999,701,2999
2999 KKK=I DO .3071 L=I,M
307I IV(L)=MR(L) .3000 WRITE(6,912) KKK
WRITE(6,900) (IU(L),L= 1,N) WRITE(6,900) (IV(L),L= 1,M) GO TO 1
C BEGINNING OF STEP 8 701 IT=N
I=1 702 K=I 703 IF(IH(I,K)-I) 803,802,803 802 DO 810 J=I~N
DO 810 L=I,N I J=(J -1 )*M+I KL=(L-- 1)*M+K IF(IG(J,L).GT.0) GO TO 810
8.35 IF(IR(IJ,KL).EQ.0) GO TO 810 IR(IJ,KL)=0 I CD = 1
810 IB(J,L)= IR(IJ,KL) CALL AHALL IF(ICC) 833,830,833
228
833 IH(I,K)=2 GO TO 803
830 IH(I,K)= 0 DO 840 J=I ,N DO 840 L=I,N I J = ( J - 1)*M+I K L = ( L - 1)*M+K IF(IR(IJ,KL).EQ.0) GO TO 840 IF(IG(J,L).EQ.2) IG(J,L)= 1 ICD = 1
840 IR(IJ,KL)=0 803 IF(K-M) 870,880,870 880 IF ( I -M) 872,890,872 870 K = K + I
GO TO 7O3 872 I = I + l
GO TO 702 C BEGINNING OF STEP 9
89O IT=M DO 834 I = 1,M DO 834 K=I,M
834 IB(I,K)=IH(I,K) CALL AHALL IF(ICC) 901,75,901
901 DO 913 L=I,M 913 IV(L)=MR(L)
C BEGINNING OF STEP 10 DO 911 I=I ,N DO 911 J=l~I
911 MP(I,J)= I DO 915 I=I,M DO 915 K=I,M IF(IH(I,K)- I) 915,921,921
921 DO 922 J=I,N DO 922 L=I,N I J = ( J - 1 ) * M + I KL=(L-- 1)*M+K
922 MP(J,L) = MP(J,L)*IR(IJ,KL) 915 CONTINUE
IT=N DO 931 I=I ,N DO 931 J=I ,N
931 IB(I,J)=MP(IJ) CALL AHALL IF(ICC) 2998,272,2998
2998 KKK=2 DO 3012 L=I,N
3012 IU(L)=MR(L) C BEGINNING OF STEP 11
GO TO 3000 C BEGINNING OF STEP 12
229
2000 ICD:0 I T : M I : 1
2002 K : I 2003 IF(IG(I,K)) 2020,2010,2020 2020 DO 2030 J=I ,N
DO 2030 L=I,N 2030 IGG(J,L)= 0
IGG(IX)=I J=l
21o2 L=I 21o3 IF((J.EQ.I.OR.LEQ.K).OR.IG(J,L).EQ.0) GO TO 2202 2240 DO 2242 II=l~Vi
DO 2242 KK = I,M 2242 IB(II,KK)= 0
DO 2250 JJ=IN DO 2250 LL= I,M I J = ( I - 1)*M+JJ KL=(K- 1)*M+LL I I J = ( J - 1)*M+JJ KKL=(L- 1)*M+LL IF(IR(IJ,KL)*IR(IIJ,KKL)) 2235,2250,223~
2235 IB(JJ,LL)= 1 225O CONTINUE
CALL AHALL IF(ICC) 2260,2202,2260
2260 IGG(J,L)= 1 2202 IF(L-N) 2222,2231,2222 2231 .IF(J-N) 2220,2265,2220 2220 J = J + l
GO TO 2102 2222 L = L + I
GO TO 2103 2010 IF(K-N) 2120,2130,2120 2130 IF(I-N) 2122,2500,2122 2120 K = K + I
GO TO 2003 2122 I = I + 1
GO TO 2002 2265 IT=N
DO 2150 L=I,N DO 2150 J=I,N
2150 IB(L,J)= IGG(L,J) CALL AHALL IF(ICC) 2400,2350,2400
2350 IG(I,K)=0 DO 2360 J=I,M DO 2360 L=I,M I J = ( I - 1)*M+J KL=(K- I)*M+L IF(IR(IJ,KL).EQ.0) GO TO 2360
230
C
IF(IH(J,L).EQ.2) IH(J,L)= 1 ICD=I
2360 IR(IJXL)=0 GO TO 2010
2400 DO 3014 L=l~q 3014 IU(L)--MR(L)
ISUM = 0 DO 2450 JJ=I ,M DO 2450 LL=I,M I J = ( I - i)*M+JJ K L = ( K - 1)*M+LL IF(IR(IJ,KL).EQ1) ISUM-- ISUM+ 1 IB(JJ,LL)= IR(IJ,KL)
2450 CONTINUE IF(M+ 1-ISUM) 2010,2997,2997
2997 KKK=3 IT=M CALL AHALL DO 3016 L=I,M
3016 IV(L)----MR(L) GO TO 3000 BEGINNING OF STEP 13
25OO IT=N DO 2555 L=I ,N DO 2555 J=I~N
2555 IB(J,L) =IG(J,L) CALL AHALL IF(iCC) 2501,76,2501
2501 I--1 3002 K= 1 3003 IF(IH(I,K)-2) 3010,3200,3010 3200 DO 3220 J=I ,M
DO 3220 L=I,M 3220 IHH(J,L)= 0
IHH(I,K)= 1 J - 1
3102 L=I 3103 IF((J.EQ.I.OR.L.EQK).OR.IH(J,L).EQ.0) GO TO 3202 3240 DO 3242 I I= I ,N
DO 3242 KK=I,N 3242 IB(II,KK)=0
DO 3250 JJ=I ,N DO 3250 LL=I,N I J= ( J J -1 )*M+ I KL=(LL- 1)*M+K I I J=( J J -1 )*M+J KKL=(LL- 1)*M+L IF(IR( IJ,KL)* IR(IIJ,KKL)) 3235,3250,3235
3235 IB(H,LL)= 1 3250 CONTINUE
CALL AHALL IF(ICC) 3260,3202,3260
231
3260 IHH(J,L)= 1 3202 IF(L-M) 3322,3330,3322 3330 IF(J-M) 3320,3140,3320 3320 J = J + l
GO TO 3102 3322 L=L4-1
GO TO 3103 3010 IF(K-M) 3120,3130,3120 3130 IF(I-M) 3122,3500,3122 3120 K=K4-1
GO TO 30O3 3122 I = I + 1
GO TO 3OO2 3140 IT=M
DO 3150 L=I,M DO 3150 J=I,M
3150 IB(L,J)= IHH(L,J) 3350 IH(I,K)=O
CALL AHALL IF (ICC) 3400,3350,3400
3350 IH(I~K) =0 DO 3360 J= 1,N DO 336O L=I,N I J = ( J - 1)*M+I KL=(L-- 1)*M+K IF(IR(IJ,KL).EQ.0) GO TO 3360 IF(IG(J,L).EQ.2) IG(J,L)=I ICD=I
3360 IR(IJ,KL)=0 GO TO 3010
3400 DO 3018 L=I,M 3018 IV(L)=MR(L)
ISUM = 0 DO 3450 JJ=I,N DO 3450 LL=I,N IJ=(JJ-1)*M+I KL=(LL-- 1)*M+K IF(IR(IJ,KL).EQ.I) ISUM=ISUM+ 1 IB(JJ,LL) = IR(IJ,KL)
3450 CONTINUE IF(N+ 1-ISUM) 3010,2996,2996
2996 KKK=4 IT=N CALL AHALL DO 3020 L=I,N
3020 IU(L)=MR(L) GO TO 3000 BEGINNING OF STEP 14
3500 IT=M DO 355O L=I,M DO 3550 J=I,M
232
3550 IB(J,L)= IH(J,L) CALL AHALL IF(ICC) 3501,75,3501
350l IF(ICD) 500,4000,500 4000 WRITE(6,930)
GO TO 1 900 FORMAT(15IS) 902 FORMAT(20H1 RELATE PROGRAM 904 FORMAT(10X,9H B /) 906 FORMAT(/10X,24HB DOES NOT P RELATE A (,12.2H)) 908 FORMAT(/20H B RELATE A / / ) 912 FORMAT(/10X,14HB P RELATE A (,12,2H)) 930 FORMAT(/10X,4HSTOP )
END C $ IBFTC
C C C C C C C C C C C C C C
///,10X,gH A /)
AHALL SUBROUTINE AHALL
GIVEN A BINARY SQUARE MATRIX IB OF ORDER IT, IT IS DETERMINATED WHETHER IB COVERS OR DOES NOT COVER AT LEAST A PERMUTAZION MATRIX OF THE SAME ORDER. THE VALUE OF THE BINARY VARIABLE ICC IS ONE IF SUCH PROBLEM CAN BE SOLVED, OTHERWISE IS ZERO. DESCRIPTION OF PARAMETERS IB BINARY SQUARE MATRIX IT ORDER OF IB ICC BINARY VARIABLE REMARK IT MUST BE NOT GREATER TEN 10 SUBROUTINE REQUIRED SUBROUTINE HALL DIMENSION 113(10,10),MM(10,10),IHL(80,80),MR(10) COMMON/QFW/MM,JN JM,KCC COMMON/RHR/ IHL,IT,IND,IB,ICC COMMON/VVV/ MR JN=IT JM=IT ICC-0 DO 1 I= I , IT I S U M = 0
DO 2 J=I , IT IF(IB(I,J).GE.1) ISUM=ISUM+I CONTINUE IF(ISUM.EQ.0) GO TO 30 CONTINUE DO 3 J=I , IT ISUM=0 DO 4 I=I,IT IF(IB(IJ).GE.1) ISUM= ISUM+ 1 CONTINUE IF(ISUM.EQ.0) GO TO 30
233
3 CONTINUE DO 5 J = 1,JM DO 5 I = 1,JN
5 MM(I,J)=0 DO 10 I = I , J N K = 0 DO 10 J = I , J M IF(IB(IJ)- 1) 10,20,20
20 K = K + I MM(I,K)=J
10 CONTINUE CALL HALL ICC = KCC
3O RETURN END
C IBFTC HALL
SUBROUTINE HALL
GIVEN A MATRIX MM OF SIZE JN*JM IT IS DETERMINATED POSSIBLY A VECTOR MR OF DISTINCT REPRESENTATIVES OF EACH ROW. THE VALUE OF THE BINARY VARIABLE KCC IS ONE IF SUCH DISTINCT REPRESENTATIVES EXIST, OTHERWISE IS ZERO. DESCRIPTION OF PARAMETERS
MATRIX SIZE OF MM VECTOR OF DISTINCT REPRESENTATIVES BINARY VARIABLE
MM JN,JM MR KCC REMARK JN,JM MUST BE NOT GREATER THEN 10 DIMENSION MM(10,10),MR(10),ITC(10),IV(10),IVI(10),ITCR(10~ COMMON/QFW/MM,JN,JM,KCC COMMON/VVV/ MR MR(1)=MM(1,1) KK=2
3 J l = l J S = K K - 1
12 DO 4 I = I J S IF(MM(KK,J1)- MR(I))4,8,4
4 CONTINUE MR(KK) =MM(KK,J1)
17 I F ( K K - JN)7,9,7 7 K K = K K + I
GO TO 3 8 Jl=Jl+l
IF(Ji -JM)i0,10,100 10 IF(MM(KK,J1))12,100,12 9 KCC=I
GO TO 201 i00 Jl=O
DO 20 I=I,JM IF(MM(KK,I))22,20,22
234
20 CONTINUE 22 J l = J l + l
DO 24 I= l , J1 ITCR(I) =KK
24 ITC(I)= MM(KK,I) I9=J1 J2=J1 I6=1
50 DO 28 I=I ,JS .IF(MR( I ) - ITC( I6 ) )28,30,28
30 I7=I GO TO 29
28 CONTINUE
GO TO 60 29 DO 40 J=I ,JM
IF(MM(I7,7) )31,40,31 31 DO 35 I=1,J2
IF(MM(I7,J) - ITC( I ) )35,40,35 35 CONTINUE
I 9 = I 9 + 1 ITC(I9)=MM(I7,J) ITCR(I9) = 17
40 CONTINUE I 6 = I 6 + 1 IF( 16 - I9 )70,70,200
200 KCC=0
201 RETURN
7O J2=I9 GO TO 5O
60 L = I IV(L)= ITC(I6) K12 = ITCR(I6)
85 L = L + I IV(L)=MR(K12) IVl(L)=K12 DO 95 I= l , J1 IF(ITC(I)-IV(L))95,90,95
95 CONTINUE
61 DO 88 I=1,I9 IF(ITC(I)- IV(L))88,80,88
8O K12=ITCR(I) GO TO 85
88 CONTINUE PAUSE
90 L I = L - 1 DO 92 I=I,L1 L 2 = I V I ( I + I )
92 MR(L2)= IV(I)
235
MR(KK) = IV(L) GO TO 17 END
ENTRY $ IBSYS
BIBLIOGRAFIA
[1] A quasi - Decision algorithm for the P-equivalence of two matrices. CORRADO B6HM and Adelina Santolini. ICC. vol. 3, n. 1, 1964.
[2] Some aspects o~ Analysis and Probability. - Kaplansky, Hewitt, Hall, Fortet. Volume IV Surveys in Applied Mathematics: John Wiley and Sons, Inc., Publishers.
[3] On representatives of subsets. Ph. Hall - j. London Math. Soc., 10, 26-30 (1935). [4] GOTUSSO, L., TARSI SANTOLINI A.: A FORTRAN IV quasi-decision algorithm /or the
P-equivalence o~ two matrices. Calcolo, vol. V, Fas. I 1968.
236