Class Hub
Graphs·Διάλεξη 6·~38 min

L06 · Γραφήματα Ι — Βασικές Έννοιες

Χρειάζεσαι:L01 · Εισαγωγικά

Τι θα δούμε

Με αυτή τη διάλεξη ξεκινά το μεγαλύτερο κομμάτι του μαθήματος. Σύμφωνα με τα παλιά θέματα, οι αλγόριθμοι σε γραφήματα είναι περίπου το 30–35% του βαθμού στις εξετάσεις — το μεγαλύτερο μονοκόμματο μπλοκ. Τα τέσσερα επόμενα κεφάλαια (L07L09) χτίζονται πάνω σε αυτό εδώ.

Το L06 είναι το προετοιμαστικό κεφάλαιο — και θα είναι ειλικρινές μαζί σου: δεν θα δεις αλγόριθμο εδώ. Θα δεις τρία πράγματα, και θα τα δεις καλά:

  1. Τι είναι ένα γράφημα — η ορολογία που θα χρησιμοποιείς σε κάθε επόμενη διάλεξη.
  2. Πώς το αποθηκεύεις στον υπολογιστή — και γιατί αυτή η επιλογή καθορίζει τις πολυπλοκότητες όλων των αλγορίθμων που θα μάθεις.
  3. Τι θα το ρωτήσεις — τα προβλήματα που θα λύσουν τα L07–L09.

Τι είναι ένα γράφημα

Ένα μη κατευθυνόμενο γράφημα (ή απλό γράφημα) γράφεται

και αποτελείται από δύο σύνολα:

  • — το σύνολο των κορυφών (vertices, nodes, κόμβοι): τα «αντικείμενα».
  • — το σύνολο των ακμών (edges): οι συνδέσεις. Κάθε ακμή είναι ένα μη διατεταγμένο ζευγάρι κορυφών — «μη διατεταγμένο» σημαίνει ότι και είναι η ίδια ακμή.

Δύο μεγέθη μετράμε διαρκώς:

  • — το πλήθος των κορυφών.
  • — το πλήθος των ακμών.

Και μία έννοια ανά κορυφή: ο βαθμός (degree) μιας κορυφής είναι το πλήθος των ακμών που την ακουμπούν — διαισθητικά, «πόσους γείτονες έχει».

Ένα παράδειγμα

12345678

Σε αυτό το γράφημα:

  • , άρα .
  • , άρα .
  • Οι βαθμοί: , , , (η κορυφή 6 ακουμπάει μόνο μία ακμή).

Πόσοι βαθμοί συνολικά;

Φαντάσου ότι σε μια συνάντηση κάθε άνθρωπος μετράει πόσα χέρια έσφιξε. Αν αθροίσεις αυτούς τους αριθμούς, παίρνεις διπλάσιο του συνολικού πλήθους χειραψιών — γιατί κάθε χειραψία προσμετρήθηκε δύο φορές, μία από κάθε άνθρωπο που συμμετείχε. Σε ένα γράφημα ισχύει ακριβώς το ίδιο, με τις ακμές στη θέση των χειραψιών:

Δοκίμασέ το ζωντανά — πρόσθεσε ακμές μία-μία και παρακολούθησε τους μετρητές: σε κάθε νέα ακμή, δύο βαθμοί τικάρουν +1 και ο μετρητής 2m τικάρει +2. Δεν θα μπορούσαν ποτέ να βγουν διαφορετικοί:

Λήμμα της χειραψίας — μετράμε ακμή προς ακμή

Κάθε νέα ακμή ανάβει στα δύο της άκρα — οι μετρητές βαθμού τικάρουν +1+1. Σύγκρινε στο τέλος το Σ deg με το 2m.

+1 +11020304050607080
Σ deg(v)
0
2m
0(m = 0)
deg(v) ανά κορυφή
Δεν έχουμε προσθέσει καμία ακμή. Όλοι οι βαθμοί είναι 0 και 2m = 0. Πάτα «Επόμενη ακμή» ή ▶.
0 / 11 ακμές

Πού κρύβονται γραφήματα

Η δύναμη της έννοιας φαίνεται στο πόσο διαφορετικά πράγματα μοντελοποιεί:

ΓράφημαΚορυφέςΑκμές
Δίκτυα μεταφορώνδιασταυρώσειςδρόμοι
Δίκτυα επικοινωνιώνυπολογιστέςκαλώδια
Παγκόσμιος ιστόςιστοσελίδεςυπερσύνδεσμοι
Κοινωνικά δίκτυαάνθρωποισχέσεις/φιλίες
Τροφική αλυσίδαείδηθηρευτής → θήραμα
Λογισμικόσυναρτήσειςκλήσεις
Χρονοπρογραμματισμόςεργασίεςπεριορισμοί προτεραιότητας
Μετρόσταθμοίδιαδοχικές στάσεις

Η μοντελοποίηση είναι επιλογή

Διάβασε αυτόν τον πίνακα προσεκτικά. Σε κάθε γραμμή, κάποιος αποφάσισε τι θα είναι κορυφή και τι ακμή. Αλλά η ίδια κατάσταση μπορεί να γίνει διαφορετικό γράφημα ανάλογα με την ερώτηση που θέλεις να απαντήσεις. Δύο διαφορετικές απαντήσεις θα ζητούσαν δύο διαφορετικά γραφήματα — από τα ίδια ακριβώς δεδομένα.

Ένα παράδειγμα από το μετρό:

  • Αν ρωτάς «πόσοι σταθμοί χωρίζουν την Α από τη Μ;» → κορυφές = σταθμοί, ακμές = διαδοχικοί σταθμοί στην ίδια γραμμή. Η απάντηση είναι το μήκος του μονοπατιού.
  • Αν ρωτάς «πόσες αλλαγές γραμμής χρειάζομαι;» → οι ίδιοι σταθμοί δεν είναι πια κορυφές. Τώρα οι γραμμές είναι κορυφές, και υπάρχει ακμή ανάμεσα σε δύο γραμμές όταν μοιράζονται σταθμό μετεπιβίβασης. Η απάντηση είναι το μήκος μονοπατιού στο νέο γράφημα μείον ένα.

Άλλαξε τις «όψεις» παρακάτω και πάρε το ίδιο ζευγάρι αφετηρίας-προορισμού — οι δύο αριθμοί ΔΕΝ ταυτίζονται:

Η ίδια κατάσταση, δύο διαφορετικά γραφήματα

Διάλεξε αφετηρία και προορισμό κάνοντας κλικ πάνω στους σταθμούς. Άλλαξε όψη — η ερώτηση που απαντάς αλλάζει εντελώς.

ΑΒΓ ★ΔΕΖΗΘ ★ΙΚΛΜ
Διαδρομή
ΑΜ
Επόμενο κλικ ορίζει: αφετηρία
Σταθμοί που μεσολαβούν
6(μήκος μονοπατιού)
Α → Β → Γ ★ → Η → Θ ★ → Λ → Μ
Αυτό το γράφημα μετράει σταθμούς. Οι κορυφές είναι σταθμοί, οι ακμές διαδοχικοί σταθμοί στην ίδια γραμμή. Το μήκος του μονοπατιού = αριθμός ενδιάμεσων στάσεων.

Πώς αποθηκεύουμε ένα γράφημα

Πριν τρέξουμε οποιονδήποτε αλγόριθμο, πρέπει να βάλουμε το γράφημα στη μνήμη. Υπάρχουν δύο βασικοί τρόποι — και η επιλογή δεν είναι λεπτομέρεια: καθορίζει την πολυπλοκότητα κάθε αλγορίθμου που θα γράψεις από εδώ και πέρα.

Πίνακας γειτνίασης (adjacency matrix)

Ένας τετραγωνικός πίνακας διαστάσεων , όπου το κελί λέει αν υπάρχει ακμή ανάμεσα στις κορυφές και :

Σε μη κατευθυνόμενο γράφημα η ακμή είναι ίδια με την , οπότε ο πίνακας είναι συμμετρικός: .

Λίστα γειτνίασης (adjacency list)

Αντί για έναν μεγάλο πίνακα, κρατάμε μικρές λίστες — μία ανά κορυφή — όπου η λίστα της περιέχει ακριβώς τους γείτονες της .

Δες τες δίπλα-δίπλα

Το σχήμα, ο πίνακας και η λίστα είναι η ίδια πληροφορία ντυμένη αλλιώς. Διάλεξε μια κορυφή στο εργαλείο και πρόσεξε πώς ανάβει ταυτόχρονα και στις τρεις όψεις — και τι κοστίζει να βρεις τους γείτονές της σε καθεμία:

Μία πληροφορία, τρεις όψεις — σχήμα, πίνακας, λίστα
Κορυφή 2

Διάλεξε κορυφή — με κλικ στο σχήμα, στον πίνακα ή στη λίστα.

12345678
Πίνακας γειτνίασης
0
1
1
0
0
0
0
0
1
0
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
1
0
0
1
0
0
0
0
1
1
1
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
1
0
0
0
1
0

Γραμμή 2 = οι γείτονες· η στήλη 2 έχει την ίδια πληροφορία (συμμετρία Aᵢⱼ = Aⱼᵢ).

Λίστα γειτνίασης
Κορυφή 2 · βαθμός deg(2) = 4 · γείτονες: 1, 3, 4, 5
Για να βρεις τους γείτονες της 2: ο πίνακας σαρώνει ολόκληρη τη γραμμή — 8 κελιά, ανεξάρτητα από το πόσοι είναι. Η λίστα διαβάζει ακριβώς 4, όσος και ο βαθμός.

Ποια να διαλέξω;

Οι δύο αναπαραστάσεις δεν είναι ισοδύναμες — η καθεμία είναι καλή σε άλλο πράγμα:

Πίνακας γειτνίασηςΛίστα γειτνίασης
Χώρος
«Υπάρχει η ακμή
Σάρωση γειτόνων της
Σάρωση όλου του γραφήματος
Κάρτα μνήμηςΑναπαράσταση γραφήματος
Λέξεις-κλειδιά
πίνακας n×nλίστα n+mO(1) έλεγχος ακμήςO(deg) σάρωση γειτόνωνπυκνό vs αραιό
Τα βήματα στο μυαλό σου
1Κοίτα τον λόγο του m προς το n — πόσο πυκνό είναι το γράφημα;
2m κοντά στο n² (πυκνό) → πίνακας γειτνίασης.
3m = O(n) ή O(n log n) (αραιό — το σύνηθες) → λίστα γειτνίασης.
4Βλέπεις πολυπλοκότητα με m μέσα; Υπονοεί λίστα γειτνίασης.
Πολυπλοκότητα
πίνακας Θ(n²) · λίστα Θ(n+m)
Κλασική παγίδα
Ο πίνακας απαντά «υπάρχει η ακμή {i,j};» σε O(1) — αλλά για να βρεις όλους τους γείτονες μιας κορυφής σαρώνει ολόκληρη γραμμή, O(n), ακόμα κι αν ο βαθμός είναι 1. Η λίστα διαβάζει ακριβώς O(deg). Οι αλγόριθμοι γραφημάτων σαρώνουν γείτονες συνεχώς — γι' αυτό σχεδόν πάντα λίστα.

Διαδρομές και συνεκτικότητα

Με το γράφημα αποθηκευμένο, χρειαζόμαστε λεξιλόγιο για να μιλήσουμε για κίνηση μέσα του.

Διαδρομή

Φαντάσου ότι περπατάς πάνω στο γράφημα: κάθε σου βήμα είναι μια ακμή. Μια διαδρομή (path) είναι ακριβώς αυτή η περιπατητική: μια ακολουθία κορυφών

όπου κάθε διαδοχικό ζευγάρι είναι ακμή του γραφήματος — δηλαδή κάθε βήμα είναι «νόμιμο», ακολουθεί υπαρκτή σύνδεση. Το μήκος της διαδρομής είναι το πλήθος των βημάτων, .

Μια απλή διαδρομή είναι μια διαδρομή όπου όλες οι κορυφές είναι διαφορετικές — δεν περνάς δύο φορές από τον ίδιο κόμβο.

Γιατί μας νοιάζει να είναι απλή; Σκέψου το αλλιώς: αν μια διαδρομή ξαναπεράσει από κάποιον κόμβο, τότε ανάμεσα στις δύο επισκέψεις έχει κάνει έναν «κύκλο» — μια κυκλική περιπλάνηση που τη φέρνει πίσω στο ίδιο σημείο. Αν σου ενδιαφέρει το μήκος (π.χ. ψάχνεις τη συντομότερη διαδρομή), αυτός ο κύκλος είναι περιττός: κόψε τον, και βγαίνεις με τα ίδια άκρα αλλά μικρότερο μήκος. Γι' αυτό μια συντομότερη διαδρομή είναι πάντα απλή.

Δοκίμασέ το: φτιάξε μια διαδρομή κάνοντας κλικ σε κορυφές με τη σειρά. Αν επαναλάβεις σκόπιμα μια κορυφή, το «ψαλίδι» θα κόψει τον κύκλο μπροστά σου, και το μήκος θα πέσει:

Φτιάξε μια διαδρομή — και αν διπλώνει, ψαλιδίζεται

Κλικ στις κορυφές για να βαδίσεις. Επιτρέπεται να επιστρέψεις σε κορυφή — αλλά μετά η διαδρομή θα είναι «μη απλή».

12×2345678
Η διαδρομή σουμήκος 5
1 → 2 → 3 → 5 → 2 → 4
διαδρομή;
απλή;
Μη απλή διαδρομή — η κορυφή 2 εμφανίζεται στις θέσεις 2 και 5. Ανάμεσά τους κρύβεται κύκλος. Πάτα το ψαλίδι για να τον κόψεις και να μείνει μικρότερη διαδρομή με τα ίδια άκρα.
Γιατί κόβει η ψαλίδα: ανάμεσα στις δύο εμφανίσεις της κορυφής 2 (θέση 2 και 5) η διαδρομή φτιάχνει έναν κύκλο. Διαγράφοντας αυτό το ενδιάμεσο κομμάτι, τα άκρα μένουν τα ίδια αλλά το μήκος πέφτει κατά 3. Αυτή είναι η απόδειξη που λέει «η συντομότερη διαδρομή είναι πάντα απλή».

Συνεκτικότητα

Ένα μη κατευθυνόμενο γράφημα είναι συνεκτικό (connected) αν για κάθε ζευγάρι κορυφών υπάρχει διαδρομή που τις ενώνει. Διαισθητικά: κανείς δεν είναι «νησί» — από όπου κι αν ξεκινήσεις, μπορείς να φτάσεις παντού.

Αν το γράφημα δεν είναι συνεκτικό, σπάει φυσικά σε κομμάτια: τις συνεκτικές συνιστώσες (connected components). Κάθε συνιστώσα είναι ένα μέγιστο υποσύνολο κορυφών μέσα στο οποίο όλοι φτάνουν σε όλους — αλλά κανείς δεν φτάνει σε κάποιον έξω από τη συνιστώσα.

Ο πιο φυσικός τρόπος να δεις τι είναι μια συνιστώσα είναι να ξεκινήσεις από μια κορυφή και να αφήσεις ένα «κύμα» να εξαπλωθεί. Όπου σταματάει το κύμα — εκεί είναι το όριο της συνιστώσας:

Συνεκτικότητα & συνιστώσες — δες πού φτάνει το «κύμα»

Τρεις ασύνδετοι «νησιώτες». Κλικ σε όποια κορυφή θες — ή ▶ — και δες πώς το κύμα μένει εγκλωβισμένο στη συνιστώσα του.

a1a2a3a4a5b1b2c1c2c3c4
Συνιστώσα 1
5 κορυφές
Συνιστώσα 2
2 κορυφές
Συνιστώσα 3
4 κορυφές
Διάλεξε κορυφή, ή πάτα ▶. Το «κύμα» θα ανάψει τη συνιστώσα όπου ανήκει αυτή η κορυφή.
κύμα 0 / 3

Κύκλος

Ένας κύκλος (cycle) είναι, με λίγα λόγια, μια απλή διαδρομή που κλείνει — ξεκινάς από κάπου, περνάς από διαφορετικές κορυφές, και επιστρέφεις στην αφετηρία ακολουθώντας μια ακόμα ακμή. Τυπικά, μια ακολουθία που:

  1. είναι διαδρομή, και επιπλέον — η αρχή ενώνεται με το τέλος με γνήσια ακμή του γραφήματος·
  2. έχει — αυτό αποκλείει τους τετριμμένους «κύκλους» μήκους 2 (πήγαινε-έλα στην ίδια ακμή, που δεν θα μέτραγε ως πραγματικός κύκλος)·
  3. έχει όλες τις κορυφές διαφορετικές — όπως και στην απλή διαδρομή.

Δοκίμασε να χτίσεις έναν εσύ. Στο εργαλείο παρακάτω, κλικ σε κορυφές για να βαδίσεις· επιστροφή στην αρχή «κλείνει» τη διαδρομή. Οι τέσσερις όροι (κάθε βήμα είναι ακμή, , διακριτές, υπάρχει η κλείστρα) ελέγχονται ζωντανά — δες ποιον σπας με τα τρία προεπιλεγμένα παραδείγματα:

Χτίσε έναν κύκλο — οι τέσσερις όροι ζωντανά

Κάνε κλικ σε κορυφές για να βαδίσεις. Επιστροφή στην αρχή «κλείνει» τη διαδρομή.

112345678
Η διαδρομή σου
1
Οι τέσσερις όροι
  • κάθε διαδοχικό ζευγάρι είναι ακμή του G
  • k ≥ 3 (όχι πήγαινε-έλα)k = 1
  • όλες οι κορυφές διακριτές
  • η ακμή {v₁, vₖ} κλείνει τον κύκλο
Διάλεξε διαδοχικές κορυφές για να χτίσεις μια διαδρομή· κλείσε την επιστρέφοντας στην αρχή.
σε εξέλιξη

Δένδρα

Ανάμεσα σε όλα τα γραφήματα, μία οικογένεια είναι τόσο σημαντική που έχει δικό της όνομα. Ένα γράφημα είναι δένδρο (tree) αν είναι ταυτόχρονα:

  1. συνεκτικό — όλοι φτάνουν σε όλους, και
  2. ακυκλικό — δεν περιέχει κανέναν κύκλο.

Διαισθητικά, ένα δένδρο είναι το πιο οικονομικό γράφημα που μπορείς να φτιάξεις διατηρώντας τα πάντα συνδεδεμένα: αρκετές ακμές για να φτάνει κανείς οπουδήποτε, αλλά ούτε μία παραπάνω που να φτιάχνει κυκλώματα. Όπως ο σκελετός που κρατάει ένα δίκτυο όρθιο χωρίς πλεονασμό.

Αυτή η οικονομικότητα μεταφράζεται σε έναν ακριβή αριθμό — και σε ένα από τα πιο όμορφα θεωρήματα του κεφαλαίου:

«Οποιεσδήποτε δύο» ακούγεται σαν ταχυδακτυλουργία — μέχρι να το δοκιμάσεις. Στο εργαλείο παρακάτω ξεκινάς από ένα δένδρο 6 κορυφών (και οι τρεις δείκτες πράσινοι). Κάνε ένα πειραματικό κλικ:

  • Πρόσθεσε μία ακμή → εμφανίζεται κύκλος, οπότε «ακυκλικό» πέφτει στο κόκκινο. Και το πλήθος ακμών γίνεται → «» πέφτει επίσης. Δεν γίνεται να σπάσει μόνο μία από τις τρεις.
  • Αφαίρεσε μία ακμή του δένδρου → το γράφημα σπάει σε δύο κομμάτια, «συνεκτικό» πέφτει. Και το πλήθος γίνεται , «» πέφτει κι αυτό.

Το πρότυπο «προσπάθησε να σπάσεις μόνο μία ⇒ σπάει και άλλη» είναι η απόδειξη του θεωρήματος, μεταμφιεσμένη σε παιχνίδι:

Δένδρο = «οποιεσδήποτε δύο από τις τρεις»

Κάνε κλικ σε μια ακμή (συμπαγής → αφαίρεση, διακεκομμένη → προσθήκη). Οι τρεις δείκτες δεξιά ανανεώνονται ζωντανά.

ABCDEF
Συνεκτικό
1 συνιστώσα — όλοι φτάνουν σε όλους.
Ακυκλικό
Κανένας κύκλος.
Έχει n − 1 ακμές
m = 5, n − 1 = 5. Ακριβώς n − 1.
Δένδρο ✓
Και οι τρεις ιδιότητες πράσινες. Το γράφημα είναι δένδρο.

Μια συνέπεια που θα χρησιμοποιήσουμε ξανά και ξανά: σε ένα δένδρο υπάρχει μοναδικό μονοπάτι ανάμεσα σε κάθε ζευγάρι κορυφών. Αν υπήρχαν δύο διαφορετικά μονοπάτια ανάμεσα σε δύο κορυφές, ενώνοντάς τα θα σχηματιζόταν κύκλος — αντίφαση με το ότι το δένδρο είναι ακυκλικό.

Δένδρα με ρίζα

Μέχρι τώρα μιλήσαμε για δένδρα ως απλά γραφήματα — όλες οι κορυφές «ισότιμες». Συχνά όμως διαλέγουμε μία κορυφή ως ξεχωριστή και «κρεμάμε» από αυτήν όλο το δένδρο. Αυτή η κορυφή λέγεται ρίζα (root), και η επιλογή της δημιουργεί ιεραρχία: κοντά στη ρίζα = «ψηλά», μακριά της = «χαμηλά».

Με τη ρίζα διαλεγμένη, κάθε κορυφή αποκτά τρεις νέους ρόλους:

  • Γονέας (parent) — ο μοναδικός γείτονας της που είναι πιο κοντά στη ρίζα. (Η ρίζα δεν έχει γονέα.)
  • Παιδιά (children) — οι γείτονες που είναι πιο μακριά από τη ρίζα.
  • Αν δεν έχει παιδιά, η είναι φύλλο (leaf).

Το κλειδί που πολλοί μαθητές χάνουν: το δένδρο μένει το ίδιο, η ρίζα είναι επιλογή σου. Διαφορετική ρίζα → διαφορετικός γονέας, διαφορετικά παιδιά, διαφορετικά φύλλα — από τις ίδιες ακριβώς ακμές. Άλλαξε ρίζα με κλικ και δες το να ξανακρεμιέται:

Δένδρο με ρίζα — διάλεξε ρίζα, το δένδρο ξανακρεμιέται
Ρίζα: A

Το ίδιο σύνολο 6 ακμών — μόνο η ρίζα αλλάζει. Κλικ σε οποιαδήποτε κορυφή για να την κάνεις ρίζα· οι έννοιες «γονέας», «παιδί», «φύλλο» ορίζονται με βάση την επιλογή σου.

Ad=0Bd=1Cd=1Dd=2Ed=2Fd=2Gd=2ρίζα
ρίζαφύλλο (χωρίς παιδιά)ενδιάμεση
Επιλεγμένη κορυφή
Aβάθος d = 0 (ρίζα)
Γονέας
— (είναι ρίζα)
Παιδιά
B, C
Πάτα μια άλλη κορυφή για να γίνει αυτή η ρίζα — οι ακμές δεν αλλάζουν, αλλά οι ρόλοι (γονέας/παιδί/φύλλο) ανακαθορίζονται. Αυτό κρύβει το ότι το «ριζωμένο δένδρο» είναι το αρχικό δένδρο συν μία επιλογή.

Δένδρα με ρίζα είναι παντού στην πληροφορική: φυλογενετικά δένδρα στη βιολογία, η δομή των αρχείων ενός δίσκου, το DOM μιας ιστοσελίδας, το αφηρημένο συντακτικό δένδρο (AST) ενός προγράμματος — ακόμα και τα δένδρα αναδρομής που σχεδιάσαμε στο L03.

Τι θα ρωτήσουμε — τα προβλήματα των L07–L09

Τώρα που έχουμε τη γλώσσα, ας διατυπώσουμε τα προβλήματα. Αυτά είναι που θα μας απασχολήσουν στις επόμενες διαλέξεις:

Πρόβλημα 1 — s-t συνεκτικότητα. Δεδομένων δύο κορυφών και , υπάρχει διαδρομή από την στην ;

Πρόβλημα 2 — s-t απόσταση. Δεδομένων δύο κορυφών και , ποιο είναι το μήκος της συντομότερης διαδρομής από την στην ;

Μοιάζουν απλά, αλλά κρύβονται παντού:

  • Κοινωνικά δίκτυα — πόσο «μακριά» είναι δύο άνθρωποι;
  • Λαβύρινθος — υπάρχει διαδρομή από την είσοδο στην έξοδο;
  • Six Degrees of Kevin Bacon — πόσες ταινίες απέχει ένας ηθοποιός από τον Kevin Bacon;
  • Routing στο διαδίκτυο — το πρωτόκολλο OSPF βρίσκει συντομότερες διαδρομές σε δίκτυα.

Κλείδωσε τη γνώση

Κάρτα μνήμηςΔένδρο — οι τρεις ιδιότητες
Λέξεις-κλειδιά
συνεκτικόακυκλικόn−1 ακμέςοποιεσδήποτε δύο ⇒ η τρίτημοναδικό μονοπάτι
Τα βήματα στο μυαλό σου
1Δένδρο = συνεκτικό + ακυκλικό. Έχει ακριβώς n − 1 ακμές.
2Θεώρημα: από τις τρεις ιδιότητες (συνεκτικό / ακυκλικό / n−1 ακμές), όποιες δύο ισχύουν συνεπάγονται την τρίτη.
3Πρόσθεσε μία ακμή στο δένδρο → δημιουργείται κύκλος (χάνει το «ακυκλικό»).
4Αφαίρεσε μία ακμή στο δένδρο → σπάει σε δύο συνιστώσες (χάνει το «συνεκτικό»).
5Σε δένδρο: μοναδικό μονοπάτι ανάμεσα σε κάθε ζεύγος κορυφών.
Πολυπλοκότητα
n κορυφές, n−1 ακμές
Κλασική παγίδα
«n−1 ακμές» από μόνο του ΔΕΝ φτιάχνει δένδρο: μπορείς να έχεις n−1 ακμές με κύκλο σε ένα κομμάτι και μια απομονωμένη κορυφή σε άλλο. Χρειάζεσαι ΔΥΟ από τις τρεις.

Συμπλήρωσε τα κενά στις θεμελιώδεις έννοιες — χωρίς να κοιτάς πίσω:

Συμπλήρωσε τα κενά
Το λεξιλόγιο των γραφημάτων, σε τέσσερις λέξεις-κλειδιά.
Ένα γράφημα G = (V, E) έχει n κορυφές και m . Το άθροισμα των βαθμών όλων των κορυφών ισούται με φορές το πλήθος των ακμών. Ένα συνεκτικό και ακυκλικό γράφημα λέγεται και έχει ακριβώς n − ακμές, με μοναδικό μονοπάτι ανάμεσα σε κάθε ζεύγος κορυφών.

Μοτίβο σκέψης

Τι μάθαμε

Τι κρατάμε από αυτή τη διάλεξη

  1. Γράφημα κορυφές, ακμές. Ο βαθμός μιας κορυφής μετράει τους γείτονές της, και (χειραψία).
  2. Δύο αναπαραστάσεις: πίνακας γειτνίασης ( χώρος, έλεγχος ακμής) ή λίστα γειτνίασης ( χώρος, σάρωση γειτόνων). Λίστα για αραιά γραφήματα — το σύνηθες· πίνακας για πυκνά.
  3. Έννοιες κίνησης: διαδρομή, απλή διαδρομή, μήκος, συνεκτικότητα, συνεκτική συνιστώσα, κύκλος.
  4. Δένδρο: συνεκτικό + ακυκλικό + ακμές — οποιεσδήποτε δύο δίνουν την τρίτη. Μοναδικό μονοπάτι ανάμεσα σε κάθε ζεύγος κορυφών.
  5. Δένδρο με ρίζα: ιεραρχία γονέα–παιδιού–φύλλου. Παντού: AST, DOM, δομές αρχείων, δένδρα αναδρομής.
  6. Τα προβλήματα προς λύση: s-t συνεκτικότητα και s-t απόσταση — τα λύνουν το BFS και το DFS στο L07.
Επόμενο
L07 · Γραφήματα II — DFS, τοπολογική, SCC

Ασκήσεις από εξετάσεις

Από τη θεωρία στην εξεταστική

6 άσκησεις που χρησιμοποιούν ως τελευταίο εργαλείο αυτή τη διάλεξη. Οι πρόσφατες εξεταστικές (2024/2025) φέρουν badge προτεραιότητας.

Από φροντιστήριοΦροντιστήριο 2023–24Άσκηση 5ΓραφήματαΜέτριο

Φροντιστηριακό Σετ #5 · Άσκηση 5 — Συνεκτικές συνιστώσες από λίστες γειτνίασης

Δίνεται ένας μη κατευθυνόμενος γράφος με κορυφές και ακμές, αποθηκευμένος ως λίστες γειτνίασης σε δύο γραμμικούς πίνακες: δείχνει για κάθε κορυφή πού αρχίζει η λίστα της μέσα στον , και ο κρατά τους γείτονες σερί. Να δοθεί αλγόριθμος εύρεσης των συνεκτικών συνιστωσών του και η πολυπλοκότητά του.

Από φροντιστήριοΦροντιστήριο 2023–24Άσκηση 2ΓραφήματαΜέτριο

Φροντιστηριακό Σετ #7 · Άσκηση 2 — Λύκος, κατσίκα, λάχανο (αναζήτηση σε γράφο)

Ένας βαρκάρης βρίσκεται στην όχθη ενός ποταμού με ένα λάχανο, μια κατσίκα κι έναν λύκο, και θέλει να τα μεταφέρει στην απέναντι όχθη με τη βάρκα του. Περιορισμοί:

  • Για να κινηθεί η βάρκα πρέπει οπωσδήποτε να είναι μέσα ο βαρκάρης.
  • Όταν είναι ο βαρκάρης μέσα στη βάρκα, υπάρχει χώρος μόνο για ένα ακόμα αντικείμενο.
  • Αν ο λύκος μείνει μόνος με την κατσίκα, θα τη φάει· ομοίως η κατσίκα θα φάει το λάχανο αν μείνουν μόνα.

Πώς μπορεί να γίνει η μεταφορά;

Από φροντιστήριοΦροντιστήριο 2023–24Άσκηση 9ΓραφήματαΜέτριο

Φροντιστηριακό Σετ #7 · Άσκηση 9 — Το πάρτι της Alice (φιλτράρισμα γράφου)

Η Alice θέλει να διοργανώσει ένα πάρτι. Έχει υποψήφια άτομα και μια λίστα με τα ζεύγη ατόμων που ο ένας γνωρίζει τον άλλον. Θέλει να διαλέξει όσο το δυνατόν περισσότερα άτομα, με δύο περιορισμούς: (α) στο πάρτι, κάθε άτομο πρέπει να γνωρίζει τουλάχιστον άλλα 5 άτομα, και (β) κάθε άτομο πρέπει να έχει τουλάχιστον 5 άλλα άτομα που δε γνωρίζει. Δώστε αποδοτικό αλγόριθμο που δέχεται τη λίστα των υποψηφίων και τα ζεύγη γνωριμιών, και παράγει την καλύτερη επιλογή. Δώστε τον χρόνο εκτέλεσης συναρτήσει του .

Παλαιό θέμαΠρόοδος 2008Διαίρει & κυρίευεΜέτριο

Πρόοδος 2008 — υπό μεταγραφή

Εκφώνηση δεν έχει ακόμα μεταγραφεί.

Παλαιό θέμαΙούνιος 2023Θέμα 120%ΓραφήματαΜέτριο

Ιούνιος 2023 · Θέμα 1 — Συνεκτικές συνιστώσες γραφήματος

Δίνεται ένας απλός μη κατευθυνόμενος γράφος με κόμβους, ακμές και μια συνάρτηση βάρους στις ακμές. Η αναπαράσταση του είναι σε λίστες γειτνίασης. Μια συνεκτική συνιστώσα του είναι ένας υπογράφος του, μεγιστικός ως προς την έγκλιση, για τον οποίο ισχύει ότι για κάθε δύο κορυφές του υπάρχει μονοπάτι που τις συνδέει.

i. Να δοθεί αλγόριθμος σε φυσική γλώσσα, βέλτιστης πολυπλοκότητας, που βρίσκει τις συνεκτικές συνιστώσες του . ii. Να υπολογιστεί η πολυπλοκότητα του αλγορίθμου.

Παλαιό θέμαΣεπτέμβριος 2023Θέμα 115%ΓραφήματαΕύκολο

Σεπτέμβριος 2023 · Θέμα 1 — BFS/DFS & εύρεση γειτόνων N(v)

Δίνεται ένας μη κατευθυνόμενος γράφος με κόμβους, ακμές, και ο βαθμός του κόμβου .

i. Να δοθεί η πολυπλοκότητα των , στον .

ii. Να δοθεί αλγόριθμος σε φυσική γλώσσα που βρίσκει τους γείτονες ενός κόμβου του και να υπολογιστεί η πολυπλοκότητά του όταν: (α) η αναπαράσταση του είναι με λίστες γειτνίασης· (β) η αναπαράσταση του είναι με πίνακα γειτνίασης.

Φόρτωση σχολίων…
L06 · Γραφήματα Ι — Βασικές Έννοιες · Algorithms Class Hub