ΤΕΙ Αθήνας: Σχολή ΤΕΦ: Τμήμα Ναυπηγικής Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ NA0703C39 Εξάμηνο Ζ’ Διδάσκων Κωνσταντίνος Β. Κώστας Παρουσίαση 9
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ2 Θεωρία Γράφων Θεωρείται μία από τις νεότερες υπό-περιοχές των μαθηματικών Ωστόσο ή πρώτη εργασία στην θεωρία γράφων εμφανίζεται το 1736 από τον Leonard Euler με την οποία έδωσε απάντηση στο πρόβλημα της γέφυρας του Könisgberg (σήμερα Kaliningrand Ρωσία)
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ3 Γράφος και Εφαρμογές Ο Γράφος είναι ένα σύνολο από σημεία (κορυφές) και ένα σύνολο γραμμών (πλευρές), η κάθε μία από τις οποίες ενώνει είτε 2 σημεία είτε ένα σημείο με τον εαυτό του. Οι ιδέες για την θεωρία γράφων είναι πολύ απλές και ενδεχομένως αυτός είναι και ένας βασικός λόγος για τον οποίο η θεωρία γράφων βρίσκει εφαρμογές σε όλες σχεδόν τους σύγχρονους επιστημονικούς κλάδους: από την Χημεία και την Επιστήμη της Πληροφορικής στα Οικονομικά, στην Ηλεκτρονική αλλά και στην γλωσσολογία
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ4 Ορισμοί (1) Ένας Μη Κατευθυνόμενος (Non directed) Γράφος Γ αποτελείται από: Ένα πεπερασμένο μη κενό σύνολο σημείων V (κορυφές) Ένα πεπερασμένο σύνολο πλευρών Ε, και Μία συνάρτηση δ:E P (V) τέτοια ώστε για κάθε πλευρά ε, ή δ(ε) είναι ένα υποσύνολο ενός ή δύο σημείων του V Η πλευρά ε λέγεται πως ενώνει τα στοιχεία της δ(ε)
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ5 Ορισμοί (2) Ένας γράφος Γ, ο οποίος: Έχει το πολύ μία πλευρά ε να ενώνει ένα ζεύγος σημείων {v1,v2}V Δεν έχει καμία πλευρά να ενώνει ένα σημείο με τον εαυτό του Ονομάζεται απλός γράφος (Simple)
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ6 Ορισμοί (3) Δυο κορυφές v και w είναι γειτονικές (adjacent) αν υπάρχει πλευρά ε που τις ενώνει. Σε αυτήν την περίπτωση λέμε πως οι v και w πρόσκειται στην ε και ότι ή ε πρόσκειται στις v και w Οι πλευρές ε1,ε3,...,εN είναι γειτονικές (adjacent) αν έχουν τουλάχιστον μια κοινή κορυφή Ο βαθμός μια κορυφής σ(v) είναι ο αριθμός των πλευρών που πρόσκειται στην v
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ7 Ορισμοί (4) Κενός γράφος (Null) είναι ο γράφος του οποίου το σύνολο πλευρών είναι κενό Πλήρης γράφος (Complete) είναι ο απλός γράφος για τον όποιο κάθε ζευγάρι κορυφών ενώνεται από μία πλευρά Διμερής (Bipartite) είναι ο γράφος για τον οποίο υπάρχουν δύο υποσύνολα {V1,V2} του V με V1UV2=V και κάθε πλευρά του ενώνει μία κορυφή του V1 με μία κορυφή του V2 Πλήρης Διμερής είναι ένας διμερής γράφος για τον οποίο κάθε κορυφή του V1 ενώνεται με κάθε κορυφή του V2 με μοναδικές πλευρές
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ8 Ορισμοί (5) Ένας γράφος Σ είναι υπο-γράφος του γράφου Γ έαν V Σ V Γ, Ε Σ Ε Γ και δ Σ (ε)=δ Γ (ε). Τότε η σχέση των Σ,Γ συμβολίζεται ως Σ≤Γ Αν υποθέσουμε πως έχουμε έναν γράφο Γ με σύνολο κορυψών V:{v1,v2,…,vN} τότε ονομάζουμε πίνακα γειτνίασης (adjacency matrix) του Γ τον πίνακα ΝxN A (A=A(Γ)) για τον οποίο ή τιμή του στοιχείου a ij ισούται με τον αριθμό των ξεχωριστών πλευρών που ενώνουν τα vi και vj
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ9 Παράδειγμα 1
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ10 Ορισμοί (6) Μια σειρά πλευρών (edge sequence) μήκους n ενός γράφου Γ είναι μια ακολουθία πλευρών του ε 1,ε 2,...,ε n (η κάθε πλευρά μπορεί να εμφανίζεται παραπάνω από μία φορές) τέτοια ώστε οι ε i και η ε i+1 είναι γειτονικές για i=1,2,…,n-1. Μια σειρά πλευρών καθορίζει και μια σειρά κορυφών-vertex sequence (επίσης κάθε κορυφή μπορεί να εμφανίζεται παραπάνω από μία φορές) v 0,v 1,v 2,…,v n όπου δ(ε i )={v i-1,v i } Διαδρομή (path) σε έναν γράφο Γ είναι μια σειρά πλευρών για την οποία κάθε πλευρά εμφανίζεται μία φορά. Αν σε μια διαδρομή γράφου η κάθε κορυφή εμφανίζεται μία φορά (εκτός ενδεχομένως από την πρώτη και τελευταία που μπορούν να συμπίπτουν v 0 =v n ) τότε η διαδρομή ονομάζεται απλή διαδρομή Μια σειρά πλευρών ονομάζεται κλειστή αν v 0 =v n. Μια κλειστή απλή διαδρομή που περιέχει τουλάχιστον μία πλευρά ονομάζεται κυκλική διαδρομή (circuit).
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ11 Ορισμοί (7) Ένας γράφος Γ είναι συνδεδεμένος αν για κάθε ζευγάρι ξεχωριστών κορυφών του, υπάρχει μια διαδρομή που τις ενώνει Μια διαδρομή Eulerian σε έναν γράφο Γ είναι μια κυκλική διαδρομή που περιλαμβάνει κάθε πλευρά του Γ. Ένας γράφος είναι Eulerian εάν υπάρχει τουλάχιστον μία Eulerian διαδρομή σε αυτόν. Ένας συνδεδεμένος γράφος είναι Eulerian αν και μόνο αν η κάθε κορυφή του έχει βαθμό άρτιο.
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ12 Ορισμοί (8) Μια κυκλική διαδρομή σε έναν γράφο Γ είναι Hamiltonian αν η διαδρομή περνά μια φορά από κάθε κορυφή του γράφου. Ένας γράφος είναι Hamiltonian εάν διαθέτει μια Hamiltonian κυκλική διαδρομή Εάν Γ ένας συνδεδεμένος απλός γράφος με n (3) κορυφές και ο βαθμός της κάθες κορυφής v είναι σ(v) 1/2 n τότε ο Γ είναι Hamiltonian (ικανή αλλά όχι αναγκαία συνθήκη) Δένδρο είναι ένας συνδεδεμένος γράφος που δεν περιέχει καμία κυκλική διαδρομή
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ13 Εύρεση της συντομότερης διαδρομής (shortest path problem) Θεωρούμε έναν συνδεδεμένο γράφο Γ, ο οποίος επιπλέον διαθέτει «βάρη-weights» στις πλευρές του. Έστω ακόμη δύο κορυφές του, v i και v j. Το πρόβλημα της εύρεσης της συντομότερης διαδρομής μεταφράζεται στην εύρεση της διαδρομής με το μικρότερο συνολικό βάρος. Η διαδρομή είναι ένας υπογράφος του γράφου και κατά συνέπεια το βάρος της είναι το άθροισμα των βαρών των πλευρών της. Η ύπαρξη της συντομότερης διαδρομής ανάμεσα σε 2 κορυφές σε πεπερασμένους και συνδεδεμένους γράφους είναι προφανής, ωστόσο η μοναδικότητα μιας τέτοιας διαδρομής δεν είναι εξασφαλισμένη. Μέ άλλα λόγια ένας αλγόριθμος εύρεσης συντομότερης (ή γενικότερα βέλτιστης διαδρομής) έχει ως αποτέλεσμα μία ή περισσότερες από τις βέλτιστες διαδρομές
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ14 Εύρεση Βέλτιστης Διαδρομής (Αλγόριθμος του Dijkstra) H ιδέα του αλγόριθμου για εύρεση της βέλτιστης διαδρομής μεταξύ των v και u έχει ως ακολούθως: Ξεκινούμε από την κορυφή v και κινούμαστε στον γράφο θέτοντας μια τιμή L(u i ) σε κάθε κορυφή u i που συναντούμε. Η τιμή L(u i ) αντιστοιχεί στο μήκος της διαδρομής που έχουμε διανύσει από την v προς τη u. H τιμές αυτές είναι προσωρινές και δύναται να αλλάξουν αν βρούμε μία συντομότερη διαδρομή από την v προς την u.
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ15 O αλγόριθμος του Dijkstra (1) Εύρεση διαδρομής στον Γράφο Γ από την κορυφή v στην κορυφή u 1.Για κάθε κορυφή vi του γράφου θέτω 1.L(vi)= και 2.P(vi)=NULL 2.Θέτω L(v) = 0 3.Έστω V το σύνολο των κορυφών του Γ 4.Αν V 1.Θέτω ως ui την κορυφή με την μικρότερη L(vi) [Την πρώτη φορά θα είναι ui=vi] 2.Αφαιρώ την ui από το σύνολο V 3.Αν uiu 1. Για κάθε γειτονική κορυφή vi της ui: 1.Θέτω a = L(ui) + w(ε ui-vi ) 2.Αν a<L(vi) 1.L(vi)=a 2.P(vi)=ui 5.Επέστρεψε την συνάρτηση P()
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ16 Εφαρμογή του αλγορίθμου του Dijkstra [Βήμα 0-1]
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ17 Εφαρμογή του αλγορίθμου του Dijkstra [Bήμα 2-3]
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ18 Εφαρμογή του αλγορίθμου του Dijkstra [Bήμα 3-4]
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ19 Εφαρμογή του αλγορίθμου του Dijkstra [Εύρεση της βέλτιστης διαδρομής από την συνάρτηση P()] Έστω κενή λίστα S ui = u Όσο P(ui)NULL Εισήγαγε την ui στην αρχή της S ui = P(ui) H διαδρομή έχει αποθηκευτεί στην S
Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ 20 Παράδειγμα καταστρώματος και τοπολογική μοντελοποίησή του ως γράφο