Γλώσσες & Τεχνικές 4 ο Εξάµηνο - Ενότητα 9 - Προβλήµατα που βασίζονται σε γράφους Δηµοσθένης Σταµάτης http://www.it.tith.gr/~mos Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ To Πρόβληµα της Αναζήτησης του Θησαυρού Το παρακάτω γράφηµα παριστάνει µία σπηλιά µε επιµέρους χώρους. Να βρεθεί διαδροµή από την είσοδο στην έξοδο που να περνάει από το θησαυρό αλλά να µην περνάει από τους ληστές. 1
Γράφημα (Grph) Oρισμός 1: Έστω το µη κενό και πεπερασµένο σύνολο Vµε nδιακεκριµένα στοιχεία V = {v 1, v 2,..., v n }, και Eένα σύνολο µε m 0µε µη-διατεταγµένα ζεύγη ij = {v i, v j }, i =/= j, στοιχείων του V. Τότε το διατεταγµένο ζεύγος G = (V,E) ονοµάζεται µη κατευθυνόµενο γράφηµα (unirt grph) ή απλώς γράφηµα. Στο παράδειγμα: G = (V, E) µε: V = {,,,,, }, και Μη κατευθυνόμενο γράφημα E = { {, }, {, }, {, }, {, }, {, }, {, }, {, } } 2
Τάξη γραφήματος Oρισμός 2: Τάξη (orr)ενός γραφήµατος ονοµάζεται το πλήθος των κορυφών του, ενώ µέγεθος (siz) ονοµάζεται το πλήθος των ακµών του. Στο παράδειγµα η orr = 6 και siz = 7 Διπλανές κορυφές γραφήματος Oρισμός 3: ύο κορυφές v i, v j ονοµάζονται διπλανές (jnt) όταν υπάρχει ακµή ij = {v i, v j }, i =/= jπου να τις έχει άκρα. ύο κορυφές που δεν είναι διπλανές ονοµάζονται ανεξάρτητες ( inpnnt). Στο παράδειγµα οι και είναιδιπλανές ενώ οι και ανεξάρτητες 3
Βαθμός κορυφής ενός γραφήματος Oρισμός 4: Βαθµός (gr)µιας κορυφής ονοµάζεται το πλήθος των διπλανών κορυφών της, ή αλλιώς το πλήθος των ακµών που πρόσκεινται στην κορυφή. Μια κορυφή ονοµάζεται άρτιαή περιττήανάλογα µε το αν ο βαθµός της είναι άρτιος ή περιττός Στο παράδειγµα η είναι άρτιακαι ο βαθµός της είναι 4 Τερματική κορυφή γραφήματος Oρισμός 5: Μία κορυφή v i ονοµάζεται τερµατικήκορυφή (n vrtx)αν gr(v i ) = 1. Στο παράδειγµα η κορυφή είναι τερµατική 4
Απομονωμένη κορυφή γραφήματος Oρισμός 6: Μία κορυφή v i ονοµάζεται αποµονωµένη (isolt), αν ο βαθµός της gr(v i ) = 0 Στο παράδειγµα η κορυφή είναι αποµονωµένη Πλήρες Γράφημα (Grphs) Oρισμός 7: Ένα γράφηµα ονοµάζεται πλήρες (omplt grph)όταν περιλαµβάνει όλους τους δυνατούς συνδυασµούς ακµών ανάµεσα στις κορυφές του. Παρατήρηση: εν αποτελεί συνηθισµένη περίπτωση! 5
Κατευθυνόμενο Γράφημα (Dirt Grph) Oρισμός 8: Έστω το µη κενό και πεπερασµένο σύνολο Vµε nδιακεκριµένα στοιχεία V = {v 1, v 2,..., v n }, και Eένα σύνολο µε m 0µε διατεταγµέναζεύγη ij = {v i, v j }, i =/= j, στοιχείων του V. Τότε το διατεταγµένο ζεύγος DG = (V,E) ονοµάζεται κατευθυνόµενο γράφηµα (irt grph). Περίπατος γραφήματος Oρισμός 9: Ονοµάζουµε περίπατο (wlk)σε ένα γράφηµα G µία ακολουθία κορυφών του γραφήµατος, της µορφής W = <v 0, v 1, v 2,..., v n > και λέµε ότι έχει µήκος n. Στο παράδειγµα: W = <,,,,, > µε µήκος 5 6
Μονοπάτι γραφήματος Oρισμός 10: Ονοµάζουµε µονοπάτι (pth) σε ένα γράφηµα G µία ακολουθία κορυφών του γραφήµατος, της µορφής P = <v 0, v 1, v 2,..., v n >που είναι περίπατος στον οποίο καµία κορυφή δεν επαναλαµβάνεται Στο παράδειγµα: P = <,,, > µε µήκος 3 Παραδείγματα Γραφημάτων: Συνδεδεμένες δομές δεδομένων L... null irstno lstno null... null A D B F B C D A C G E F G H I J K L M E 7
Παραδείγματα Γραφημάτων: Δίκτυα Υπολογιστών Παραδείγματα Γραφημάτων: Κοινωνικά δίκτυα 8
Κοινωνικά δίκτυα Αναπαράσταση Προβλημάτων με Γραφήματα 9
Πίνακας διπλανών κορυφών Αναπαράσταση γραφήματος Έστω ένα κατευθυνόμενο γράφημα με nκορυφές, οι οποίες μπορούν να αριθμηθούν με διακριτές συνεχόμενες τιμές. Η αναπαράστασή του μπορεί να γίνει με τη βοήθεια ενός δισδιάστατου πίνακα Dμε διαστάσεις n x n, στον οποίο: η θέση του πίνακα (i,j) δηλώνει την ύπαρξη ή όχι ακμής D(i,j)=1, αν υπάρχει η ακμή, D(i,j)=0, αν δεν υπάρχει 0 1 1 1 0 1 0 0 0 1 D= 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 Αρίθμηση κορυφών: ->0, ->1, ->2, ->3, ->4 Λίστες διπλανών κορυφών Αναπαράσταση γραφήματος Έστω ένα κατευθυνόμενο γράφημα με nκορυφές, οι οποίες μπορούν να αριθμηθούν με διακριτές συνεχόμενες τιμές. Η αναπαράστασή του μπορεί να γίνει με τη βοήθεια ενός μονοδιάστατου πίνακα συνδεδεμένων λιστών: η θέση iτου πίνακα αντιστοιχεί στον κόμβο i το περιεχόμενο του πίνακα στη θέση iείναι η λίστα των κόμβων που συνδέονται με τον i 0 1 2 3 4 1 2 3 0 4 1 4 1 Αρίθμηση κορυφών: ->0, ->1, ->2, ->3, ->4 10
Επίλυση προβλήματος γραφήματος Αναζητούμε ένα μονοπάτι το οποίο να ξεκινάει από έναν κόμβο Χ (κόμβος αρχή) και να καταλήγει σε έναν κόμβο Υ (κόμβος στόχος). Αντίστοιχα μπορεί να αναζητούμε έναν περίπατο ο οποίος να ξεκινάει από έναν κόμβο Χ (κόμβος αρχή) και να καταλήγει σε έναν κόμβο Υ (κόμβος στόχος). Το γενικότερο πρόβλημα μπορεί να περιλαμβάνει: 1. θετικούς περιορισμούς (πρέπει οπωσδήποτε να περάσουμε από κάποιους κόμβους). 2. Αρνητικούς περιορισμούς (πρέπει οπωσδήποτε να αποφύγουμε κάποιους κόμβους). 3. Πρέπει να λάβουμε υπόψη μας τα βάρη σύνδεσης των κόμβων (προβλήματα ελαχιστοποίησης ή μεγιστοποίησης Λίγη ιστορία: οι γέφυρες του Konigsrg Lonhr Eulr (1707-1783) 11
To Πρόβληµα της Αναζήτησης του Θησαυρού nxt_to(εισοδος,βγονια). nxt_to(εισοδος,πηγη). nxt_to(πηγη,αδιεξοδο). nxt_to(πηγη,ληστες). nxt_to(πηγη,τροφιµα). nxt_to(πηγη,σταλακτιτες). nxt_to(ληστες,εξοδος). nxt_to(τροφιµα,θησαυρος). nxt_to(βαγονια,τροφιµα). nxt_to(βαγονια,θησαυρος). nxt_to(σταλακτιτες,εξοδος). nxt_to(θησαυρος,εξοδος). nxt_to(ληστες,θησαυρος). To Πρόβληµα της Αναζήτησης του Θησαυρού joint_with(pl1,pl2) :- nxt_to(p11,pl2). joint_with(pl1,pl2) :- nxt_to(p12,pl1). voi([αδιεξοδο,ληστες]). trvsrs(pl1,pl2) :- ανοί(dngrs), pth (Pl1,Pl2,Dngrs,[Pl1]). 12
To Πρόβληµα της Αναζήτησης του Θησαυρού pth(pl1,pl2,dngrs,mmory) :- mmr(pl2,mmory), mmr(θησυρoς,mmory), rvrs_writ(mmory). pth (Pl1,Pl2,Dngrs,Mmory):- joίnt_wίth(pl1,nwpl), not mmr(nwpl,dngrs), not mmr(nwpl,mmory), pth(nwpl,pl2,dngrs,[nwpl Mmory]). rvrs_writ([ ]). rvrs_writ([h Til]) :- rvrs_writ(til), ηl, writ(h). 13