HY118- ιακριτά Μαθηµατικά Παρασκευή, 24/03/2017 Αντώνης Α. Αργυρός e-mail: argyros@csd.uoc.gr Το υλικό των διαφανειών έχει βασιστεί σε διαφάνειες του Kees van Deemter, από το University of Aberdeen 3/24/2017 1 1
Σχέσεις 3/24/2017 2
Την προηγούµενη φορά Αντισυµµετρικές σχέσεις Μεταβατικές σχέσεις Κλειστότητα ως προς κάποια ιδιότητα Ανακλαστική κλειστότητα Συµµετρική κλειστότητα Μεταβατική κλειστότητα Εναλλακτικές αναπαραστάσεις σχέσεων Πίνακας Γράφος 3/24/2017 3
Αναπαριστώντας σχέσεις µέσω πινάκων Αναπαράσταση µίας διµελούς σχέσης R:A Αµε ένα A Α 0-1 πίνακα M R = [m ij ]: m ij = 1αν και µόνο αν (a i,b j ) R. Π.χ., δέστε τον παρακάτω πίνακα: Joe Fred Mark Joe 1 1 0 Fred 0 1 0 Mark 0 0 1 3/24/2017 4
Αναπαριστώντας σχέσεις µε κατευθυνόµενους γράφους Έναςκατευθυνόµενος γράφος G=(A,E)αποτελείται από ένα σύνολο A κορυφών (κόµβων) και από ένα σύνολο ακµών E A A. Οπτικά αναπαριστάται χρησιµοποιώντας τελείες για τις κορυφές και βέλη για τις ακµές. Μία σχέση R Α Α αναπαριστάται ως ο γράφος G=(A, E). Πίνακας M R : Γράφος G: Joe Fred Mark Joe 1 1 0 Fred 0 1 0 Mark 0 0 1 3/24/2017 5 Joe Mark Σύνολο ακµών E (µπλέ βέλη) Fred Σύνολο κορυφών A (µαύρες τελείες)
Ιδιαίτερες ευκολίες µε γράφους Ιδιότητες οι οποίες είναι κατά κάποιο τρόπο τοπικές και σχετιζόµενες µε ένα συγκεκριµένο στοιχείο, π.χ., υπάρχουν αποµονωµένα στοιχεία; Ιδιότητες που περιλαµβάνουν συνδυασµούς από ζευγάρια, π.χ., Περιέχονται κύκλοι στη σχέση; Μεταβατικότητα; Έννοιες που έχουν να κάνουν µε την σύνθεση σχέσεων 3/24/2017 6
Σύνθεση σχέσεων Έστω R:A B, και S:B C. Τότε η σύνθεση SR:A Cτης R και της S είναι µία σχέση που ορίζεται ως: SR = {(a,c) A C b Β: arb bsc} 3/24/2017 7
Σύνθεση σχέσεων Παράδειγµα: Σχέση Μ= O φοιτητής x παίρνει το µάθηµα y (ορίζεται στο Φοιτητές x Μαθήµατα) Μ={(Κώστας, ιακριτά), (Νίκος, ιακριτά), (Πάνος, Προγραµµατισµός), (Μαρία, Λογική)} 3/24/2017 8
Σύνθεση σχέσεων Σχέση = Το µάθηµα y το διδάσκει ο καθηγητής z (ορίζεται στο Μαθήµατα x Καθηγητές) ={( ιακριτά, Αργυρός), (Υπολογιστική Όραση, Αργυρός), (Προγραµµατισµός, Παπαγιαννάκης), (Λογική, Πλεξουσάκης)} 3/24/2017 9
Σύνθεση σχέσεων Σχέση Μ= Ο φοιτητής x παρακολουθεί µάθηµα που διδάσκει ο καθηγητής z (ορίζεται στο Φοιτητές x Καθηγητές) Μ={(Κώστας, Αργυρός), (Νίκος, Αργυρός), (Πάνος, Παπαγιαννάκης), (Μαρία, Πλεξουσάκης)} 3/24/2017 10
n οστή δύναµη R n µίας σχέσης R Η n οστή δύναµη R n µίας σχέσης Rεπί ενός συνόλου A κλπ. Η 1 η δύναµητης R είναι η ίδια η R Η 2 η δύναµητης R είναι η R 2 = RR Η 3 η δύναµητης R είναι η R 3 = RRR 3/24/2017 11
n οστή δύναµη R n µίας σχέσης R Η n οστή δύναµη R n µίας σχέσης Rεπί ενός συνόλου A µπορεί να οριστεί αναδροµικά ως R 1 : R ; R n+1 : R n R για κάθε n 1. Π.χ., Έστω η σχέση R a e b c d 3/24/2017 12
n οστή δύναµη R n µίας σχέσης R a e b c d a e b d c R R 2 = RR R 2 = RR = {(a,c),(b,d),(c,c),(d,d)} 3/24/2017 13
n οστή δύναµη R n µίας σχέσης R a e b d c a e b c d a e b c d R 2 = RR R R 3 = R 2 R R 3 = R 2 R = {(a,d),(b,c),(c,d),(d,c)} 3/24/2017 14
R* Πως θα ορίζαµε τυπικά την R*; 3/24/2017 15
R* Πως θα ορίζαµε τυπικά την R*; i= 1 R i 3/24/2017 16
R* Πως θα ορίζαµε τυπικά την R*; Αρκεί n = A n i= 1 R i 3/24/2017 17
Έστω ένας γράφος G(A, E). Ένα µονοπάτι µήκους n από ένακόµβο a Aπρος ένα κόµβο b Aστο G είναι µία ακολουθία (a,x 1 ), (x 1,x 2 ),, (x n 1,b)από n διατεταγµένα ζεύγη του E (σύνολο ακµών) Ένα µονοπάτι µήκους n 1από το aστον εαυτό του είναι ένας κύκλος. Θεώρηµα: Έστω ο γράφος G(Α, E)που αναπαριστά µία διµελή σχέση R επί ενός συνόλου Α και δύο στοιχεία a Α, b Α.Υπάρχει ένα µονοπάτι µήκους nαπό το aστο bστον Gαν και µόνο αν (a,b) R n. 3/24/2017 18
R * Ένα διατεταγµένος ζεύγος (a, b)ανήκει στην R * αν και µόνο ανυπάρχει ένα µονοπάτι πεπερασµένου µήκους από το a στο bστην αναπαράσταση της Rως γράφος. 3/24/2017 19
Γιατί η R* είναι ενδιαφέρουσα; Υποθέστε ότι µία µολυσµατική ασθένεια µεταδίδεται από άνθρωπο σε άνθρωπο µέσω χειραψίαςχ(a, b) Έστω ότι ξέρετε ότι ο Φώτης είναι µολυσµένος και ότι θέλετε να µάθετε ποιός άλλος έχει µολυνθεί από αυτόν. Για να το πετύχετε,πρέπει να: 1. Προσδιορίσετετους ανθρώπους που έκαναν χειραψία µε το Φώτη. Αυτό σας δίνει τους άµεσα µολυσµένους 2. Βρείτε οποιονδήποτε µολύνθηκε από κάποιον που µολύνθηκε από τον Φώτη... Και ούτω καθεξής... 3/24/2017 20
τελικά, ποιός µολύνθηκε;;; Υποθέστε ότι η «Χειραψία»είναι η ακόλουθη σχέση: Χ={ (Φώτης,Νίκος), (Νίκος,Κώστας), (Κώστας,Πέτρος), (Μάνος, Μαρία)}. Η ίδια η σχέση µας δίνει τους άµεσα µολυσµένους από το Φώτη Η µεταβατική της κλειστότητα µας δίνει όλους τους µολυσµένους X* = {(Φώτης,Νίκος), (Νίκος,Κώστας), (Κώστας, Πέτρος), (Μάνος, Μαρία), (Φώτης, Κώστας), (Φώτης Πέτρος), (Νίκος, Πέτρος)} Σε αυτή εµφανίζονται τα στοιχεία (Φώτης,Νίκος), (Φώτης, Κώστας), (Φώτης Πέτρος) εποµένως και αυτοί, εµµέσως (µεταβατικά) µολύνθηκαν! 3/24/2017 21
εν ξέρουµε πάντα την R* Στην πραγµατική ζωή, συχνά δεν ξέρουµε την ακριβή έκταση της R* (δηλ., ποιά ζεύγη ανήκουν σε αυτή τη σχέση) εν έχω κάνει ποτέ χειραψία µε τον δήµαρχο του Hong Kong ((Αργυρός, ήµαρχοςhongkong) Χ) Τι µπορούµε να πούµε για τηνχ*(αργυρός, ήµαρχοςhongkong) ; 3/24/2017 22
Αλγοριθµικός υπολογισµός µεταβατικής κλειστότητας Αλγόριθµος του Warshall (επίσης γνωστός ως αλγόριθµος Roy-Warshall) Χρησιµοποιεί την αναπαράσταση πίνακα µιας σχέσης. 3/24/2017 23
Υπολογισµός της R* /* Assume a function edge (i,j) which is 1 if i is related to j and 0 otherwise. Also assume that n is the number of vertices */ int path[][]; /* A 2-Dimensional matrix. At each step in the algorithm, path[i][j] is 1 if there is a path from i to j using intermediate values in (1..k-1). Each path[i][j] is initialized to edge(i,j). */ procedure Warshall() for k: = 1 to n Begin for i: = 1 to n for j: = 1 to n begin path[i][j] = OR ( path[i][j], path[i][k] AND path[k][j] ); End End endproc 3/24/2017 24
Εύρεση ελαχίστων µονοπατιών Αν ξεκινήσω από ένα λιµάνι, σε ποιο µπορώ να φτάσω (R*); Ποια είναι η οικονοµικότερη διαδροµή; Σηµείωση:για µία συµµετρική σχέση, δεν χρησιµοποιούµε βέλη στον αντίστοιχο γράφο 3/24/2017 25
Εύρεση ελαχίστων µονοπατιών /* Assume a function edgecost(i,j) which returns the cost of the edge from i to j (infinity if there is none). Also assume that n is the number of vertices and edgecost(i,i) = 0 */ int path[][]; /* A 2-dimensional matrix. At each step in the algorithm, path[i][j] is the shortest path from i to j using intermediate vertices (1..k 1). Each path[i][j] is initialized to edgecost(i,j). */ procedure FloydWarshall () for k := 1 to n for i := 1 to n for j := 1 to n path[i][j] = min(path[i][j], path[i][k]+path[k][j] ); End 3/24/2017 26