algoritmi per la soluzione di problemi di assegnazione

19
ALGORITMI PER LA SOLUZIONE DI PROBLEMI DI ASSEGNAZIONE 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 AZ_B G,H g,h AZ__B P Ila~ll , IIb,~ll (i= 1 .... ,n ; k= 1,...,m) aik ,L bik matrici di permutazione rispettivamente 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 ottenuta 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) Iniziamo 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 permutazione G ed una H per cui , considerando GAH, si ha GAH L_ B ? 218

Upload: c-boehm

Post on 10-Jul-2016

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algoritmi per la soluzione di problemi di assegnazione

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

Page 2: Algoritmi per la soluzione di problemi di assegnazione

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

Page 3: Algoritmi per la soluzione di problemi di assegnazione

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

Page 4: Algoritmi per la soluzione di problemi di assegnazione

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

Page 5: Algoritmi per la soluzione di problemi di assegnazione

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

Page 6: Algoritmi per la soluzione di problemi di assegnazione

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

Page 7: Algoritmi per la soluzione di problemi di assegnazione

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

Page 8: Algoritmi per la soluzione di problemi di assegnazione

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

Page 9: Algoritmi per la soluzione di problemi di assegnazione

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

Page 10: Algoritmi per la soluzione di problemi di assegnazione

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

Page 11: Algoritmi per la soluzione di problemi di assegnazione

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

Page 12: Algoritmi per la soluzione di problemi di assegnazione

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

Page 13: Algoritmi per la soluzione di problemi di assegnazione

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

Page 14: Algoritmi per la soluzione di problemi di assegnazione

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

Page 15: Algoritmi per la soluzione di problemi di assegnazione

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

Page 16: Algoritmi per la soluzione di problemi di assegnazione

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

Page 17: Algoritmi per la soluzione di problemi di assegnazione

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

Page 18: Algoritmi per la soluzione di problemi di assegnazione

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

Page 19: Algoritmi per la soluzione di problemi di assegnazione

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