ΣΥΝΘΕΣΗ ΣΧΕΣΕΩΝ

 Ας είναι Χ,Υ,Ζ τρία σύνολα και σχέσεις RÍX×Y , SÍY×Z. Η σύνθεσή τους που συμβολίζεται RS είναι μία σχέση από το Χ στο Ζ :

 RS={(x,z)/ υπάρχει  yÎY τέτοιο ώστε (x,y)ÎR και (y,z)ÎS}.

 

Παράδειγμα

Ας είναι X={x1,x2,x3,x4} και

Tότε

 

Θα μπορούσατε όμως να χρησιμοποιήσετε τον παραπάνω απλό τρόπο εύρεσης της RS αν το Χ είχε για παράδειγμα 10 ή περισσότερα στοιχεία;

Σημαντική βοήθεια στην περίπτωση αυτή μας παρέχει η επόμενη πρόταση.

 

Πρόταση

Αν  X={x1,...,xn} είναι ένα πεπερασμένο σύνολο και R,S Í X×X, τότε

Μ(RS)=M(R)M(S).

 

Για να βρούμε δηλαδή τη σύνθεση δύο σχέσεων R,S Í X×X πάνω σε ένα πεπερασμένο σύνολο X={x1,...,xn}, υπολογίζουμε το γινόμενο των Μπουλιανών πινάκων M(R)M(S). Η σχέση που αντιστοιχεί στον πίνακα αυτό είναι η ζητούμενη σύνθεση RS.

Ιδιότητες της σύνθεσης σχέσεων

                   i.               R1ÍS1 και R2ÍS2 Þ  R1R2 Í S1S2

                 ii.               R1◦(R2R3) =(R1R2)◦R3

              iii.               R◦(S1S2)=RS1ÈRS2 ,   (R1ÈR2)◦S=R1SÈR2S

               iv.               (R◦S)-1=S-1◦R-1

(με την προϋπόθεση ότι οι παραπάνω πράξεις ορίζονται).

Οι διαδοχικές δυνάμεις μιας σχέσης RÍX×X ορίζονται ως εξής:

R0Χ , R1=R , R2=RR , ..., Rn =R◦ ... ◦R (n φορές)

Για κάθε m,nΠ ισχύουν οι ισότητες:

RmRn=Rm+n

(Rm)n=Rmn

Για κάθε σχέση RÍX×X ορίζουμε τη σχέση


Αν το σύνολο X={x1,...,xn}είναι πεπερασμένο, τότε ισχύει


Στην περίπτωση αυτή η σχέση R* υπολογίζεται με την βοήθεια των Μπουλιανών πινάκων, αφού


Ο υπολογισμός της σχέσης R* δηλαδή, ανάγεται σε πράξεις Μπουλιανών πινάκων.

Ο αλγόριθμος Warshall μας επιτρέπει να βρίσκουμε την R* με ακόμη ευκολότερο τρόπο.

Ας είναι λοιπόν X={x1,...,xn}και RÍX×X.

Αν

(S) : a®a1®a2®...®ak®b

είναι μια διαδρομή στο γράφημα της R, οι κορυφές a1,a2,...,ak ονομάζονται εσωτερικές κορυφές της (S).

Για κάθε k=1,2,...,n συμβολίζουμε με Wk τον n×n Μπουλιανό πίνακα που ορίζεται με τον εξής τρόπο: στη θέση (i,j) έχει 1 αν και μόνο αν στο γράφημα της R υπάρχει μια διαδρομή από το xi στο xj της οποίας όλες οι εσωτερικές κορυφές (εφόσον υπάρχουν) είναι στοιχεία του συνόλου {x1,x2,...,xk}.

Είναι φανερό πως Wn=M(R*). Θέτοντας W0=MΧÈR) προκύπτει η ακολουθία των Μπουλιανών πινάκων

W0,W1,...,Wn=M(R*).

 Το παρακάτω "πρόγραμμα" (με ακέραιες μεταβλητές) διαβάζει τον πίνακα W0 και με τη βοήθεια του αλγορίθμου του Warshall υπολογίζει τον Wn:

 

                    begin

                    do  i=1,n                                                                         ! Ανάγνωση του πίνακα W0

                         do  j=1,n

                             read  wij

                         end do

                    end do

                    do  k=1,n

                         do  i=1,n                                                                     ! Αρχή αλγορίθμου Warshall

                             do  j=1,n

                                   if  ((wij=1) or (wik=1 and wkj=1))  then 

                                            uij=1 

                                   else 

                                            uij=0 

                             end do

                         end do                                                                       ! Τέλος αλγορίθμου Warshall

                         do  i=1,n

                             do  j=1,n

                                 wij=uij

                             end do

                         end do

                    end do

                    end .