L12 · Άπληστοι Αλγόριθμοι II — Ελάχιστη Καθυστέρηση & Τοπολογική Διάταξη
Τι θα δούμε
Δύο θέματα — και μία τεχνική απόδειξης που θα ξαναδείς σε κάθε εξεταστική:
- Χρονοπρογραμματισμός με ελάχιστη καθυστέρηση, και μαζί το επιχείρημα ανταλλαγής (exchange argument) — η δεύτερη μεγάλη τεχνική για άπληστους αλγορίθμους, μετά το «ο άπληστος προηγείται» του L11.
- Τοπολογική διάταξη — πώς βάζεις σε σειρά εργασίες με προαπαιτούμενα, και γιατί αυτό γίνεται αν και μόνο αν δεν υπάρχουν κύκλοι.
Χρονοπρογραμματισμός με ελάχιστη καθυστέρηση
Διατύπωση
Μία μηχανή, που επεξεργάζεται μία εργασία τη φορά.
- Η εργασία απαιτεί μονάδες χρόνου και έχει προθεσμία .
- Αν ξεκινήσει τη στιγμή , τελειώνει τη στιγμή .
- Καθυστέρηση της : — πόσο μετά την προθεσμία της τελείωσε (ή αν πρόλαβε).
Στόχος: προγραμμάτισε όλες τις εργασίες ελαχιστοποιώντας τη μέγιστη καθυστέρηση .
Υποψήφια κριτήρια
Πάλι το ίδιο άπληστο πρότυπο: βάλε τις εργασίες σε κάποια σειρά και τρέξε τες. Όλο το ζήτημα είναι ποια σειρά. Τρεις λογικοφανείς υποψήφιες:
| Κριτήριο | Σειρά εκτέλεσης | Διαίσθηση πίσω του |
|---|---|---|
| Μικρότερος χρόνος επεξεργασίας | αύξουσα | «ξεμπέρδευε πρώτα τα γρήγορα» |
| Μικρότερο χρονικό περιθώριο | αύξουσα | «πιο επείγον = λιγότερος αέρας» |
| Μικρότερη προθεσμία (EDF) | αύξουσα | «ό,τι λήγει πρώτο, πρώτο» |
Δύο από τις τρεις είναι λάθος. Στο εργαλείο παρακάτω κάθε κριτήριο έρχεται με το δικό του στιγμιότυπο: για τα δύο λανθασμένα είναι ένα αντιπαράδειγμα όπου ο κανόνας αποδεδειγμένα αποτυγχάνει· για το σωστό, μια είσοδος που τη λύνει βέλτιστα. Διάλεξε κριτήριο και σάρωσε βήμα-βήμα — πρόσεξε για κάθε εργασία την πορτοκαλί προθεσμία της και το κόκκινο κομμάτι που την ξεπερνά:
Σειρά εκτέλεσης: αύξουσα σειρά χρόνου επεξεργασίας tⱼ. Κάθε γραμμή είναι μία εργασία· η πορτοκαλί διακεκομμένη είναι η προθεσμία της, το κόκκινο η καθυστέρηση.
Γιατί αποτυγχάνουν τα δύο κριτήρια
Ο αλγόριθμος: Earliest Deadline First
- Είσοδος:
- n εργασίες, η καθεμία με χρόνο επεξεργασίας tⱼ και προθεσμία dⱼ
- Έξοδος:
- μια σειρά εκτέλεσης που ελαχιστοποιεί τη μέγιστη καθυστέρηση L
Με λόγια. Ταξινόμησε τις εργασίες ώστε η προθεσμία να αυξάνει. Μετά τρέξε τες με αυτή τη σειρά, η μία αμέσως μετά την άλλη — η μηχανή δεν σταματά ποτέ.
Πολυπλοκότητα. Η ταξινόμηση κατά προθεσμία, · η ανάθεση διαστημάτων, . Σύνολο .
Τον είδες ήδη να τρέχει στην καρτέλα «Earliest Deadline First» του εργαλείου παραπάνω — και να πετυχαίνει την ελάχιστη δυνατή μέγιστη καθυστέρηση. Μένει το δύσκολο: γιατί αυτό συμβαίνει πάντα.
Δύο παρατηρήσεις-κλειδιά
Πριν την απόδειξη, χρειαζόμαστε δύο απλές παρατηρήσεις για κάθε χρονοδιάγραμμα.
Το επιχείρημα ανταλλαγής
Όλη η απόδειξη στηρίζεται σε μία κίνηση: παίρνεις δύο διαδοχικές εργασίες που είναι αντεστραμμένες και τις αντιμεταθέτεις.
Αυτός ο ισχυρισμός είναι, ουσιαστικά, ολόκληρη η απόδειξη — και γίνεται απτός μόνο όταν τον χειριστείς ο ίδιος. Παρακάτω ένα χρονοδιάγραμμα ξεκινά ανακατεμένο, με αρκετές αντιστροφές. Κάθε ⇄ σημαδεύει ένα διαδοχικό αντεστραμμένο ζεύγος· κάνε κλικ και αντιμετάθεσέ το. Παρακολούθησε δύο αριθμούς: τις αντιστροφές (πέφτουν κατά κάθε φορά) και τη μέγιστη καθυστέρηση — που δεν ανεβαίνει ποτέ:
Ο αριθμός κάθε εργασίας είναι η κατάταξή της κατά προθεσμία — στόχος η σειρά 1·2·3·4 (η λύση του EDF). Κάνε κλικ σε ένα ⇄ για να αντιμεταθέσεις δύο διαδοχικές εργασίες εκτός σειράς.
Κάθε ⇄ δείχνει μια αντιστροφή: δύο διαδοχικές εργασίες όπου η πρώτη έχει μεγαλύτερη προθεσμία από τη δεύτερη. Κάνε κλικ σε ένα ⇄ και παρακολούθησε το L — δεν πρόκειται ποτέ να ανέβει.
Απόδειξη του ισχυρισμού. Έστω διαδοχικές με αντιστροφή (, αλλά η πριν την ). Αντιμεταθέτουμέ τες. Συμβολίζουμε με τις παλιές καθυστερήσεις και τις νέες.
- Για κάθε : η εργασία δεν μετακινήθηκε καθόλου, άρα .
- Η μετακινήθηκε νωρίτερα, άρα τελειώνει νωρίτερα: .
- Η μετακινήθηκε αργότερα. Τελειώνει τώρα ακριβώς εκεί όπου τελείωνε πριν η — δηλαδή . Άρα:
όπου η ανισότητα ισχύει επειδή .
Άρα και οι δύο νέες καθυστερήσεις, και , είναι — δηλαδή από κάτι που ήδη μετριόταν στην παλιά μέγιστη. Η μέγιστη καθυστέρηση δεν αυξήθηκε.
Οι τρεις τεχνικές απόδειξης άπληστων αλγορίθμων
Τοπολογική διάταξη
Το πρόβλημα
Πολλές εργασίες με προαπαιτούμενα: η εργασία πρέπει να γίνει πριν την . Τα μοντελοποιούμε με ένα κατευθυνόμενο γράφημα — η ακμή σημαίνει «η προηγείται της ».
Ο ορισμός γίνεται κατανοητός μόνο όταν τον παλέψεις. Παρακάτω οι κορυφές κάθονται σε μια σειρά από θέσεις· κάνε κλικ σε δύο για να ανταλλάξουν θέσεις. Κάθε ακμή χρωματίζεται πράσινη αν δείχνει δεξιά, κόκκινη αν δείχνει αριστερά. Στόχος: όλες πράσινες. Δοκίμασε και τις δύο καρτέλες — το άκυκλο γράφημα και εκείνο με τον κύκλο:
Πράσινο = ακμή που δείχνει εμπρός · κόκκινο = ακμή που δείχνει πίσω.
Δύο πράγματα θα παρατηρήσεις. Στο DAG όχι μόνο πετυχαίνεις το μηδέν, αλλά υπάρχουν πολλές σωστές διατάξεις — πάτα «Ανακάτεψε» και βρες κι άλλη. Στο γράφημα με κύκλο, όσο κι αν προσπαθήσεις, πάντα μένει τουλάχιστον μία κόκκινη ακμή. Αυτή ακριβώς η διαφορά είναι το επόμενο θεώρημα.
Πότε υπάρχει;
Δεν έχουν όλα τα κατευθυνόμενα γραφήματα τοπολογική διάταξη. Αν , ποια μπαίνει πρώτη; Καμία — υπάρχει κύκλος, κι ένας κύκλος δεν χωράει ποτέ σε μία ευθεία γραμμή. Το είδες μόλις στο εργαλείο.
Μέρος 1 — αν έχει τοπολογική διάταξη, τότε είναι DAG. Έστω ότι το έχει τοπολογική διάταξη και έναν κύκλο . Έστω η κορυφή του με τον μικρότερο δείκτη, και η κορυφή ακριβώς πριν την μέσα στον . Τότε η είναι ακμή. Από την επιλογή της ως μικρότερης, · αλλά μια ακμή σε τοπολογική διάταξη πάει εμπρός, άρα . Άτοπο.
Μέρος 2 — κάθε DAG έχει μια «πηγή»: κορυφή χωρίς εισερχόμενες ακμές. Έστω, για άτοπο, ότι κάθε κορυφή έχει εισερχόμενη ακμή. Τότε ξεκίνα από μια οποιαδήποτε κορυφή και ακολούθα ακμές προς τα πίσω — κάθε φορά μπορείς, γιατί καμία κορυφή δεν είναι πηγή. Με κορυφές, μετά από το πολύ βήματα θα συναντήσεις κάποια κορυφή δύο φορές — και το κομμάτι της διαδρομής ανάμεσα στις δύο επισκέψεις είναι κύκλος. Άτοπο, αφού το είναι DAG.
Αυτό το επιχείρημα είναι καθαρό «εις άτοπον» και αξίζει να το δεις να εκτελείται. Διάλεξε μια αφετηρία και ακολούθα ακμές προς τα πίσω. Στην καρτέλα DAG η διαδρομή κολλάει αναγκαστικά σε μια πηγή· στην καρτέλα «Χωρίς πηγή» — όπου κάθε κορυφή έχει εισερχόμενη ακμή — δεν κολλάει ποτέ, και γι' αυτό κλείνει κύκλο:
Κάθε DAG: δες πού σε οδηγεί το περπάτημα προς τα πίσω.
Μέρος 3 — κάθε DAG έχει τοπολογική διάταξη. Επαγωγή στο πλήθος κορυφών. Βάση : προφανές. Βήμα: σε ένα DAG με κορυφές, από το Μέρος 2 υπάρχει πηγή (χωρίς εισερχόμενες ακμές). Το είναι DAG με κορυφές, άρα (επαγωγική υπόθεση) έχει τοπολογική διάταξη. Τοποθετούμε την πρώτη — αφού δεν έχει εισερχόμενες ακμές, κάθε ακμή της δείχνει εμπρός.
Ο αλγόριθμος
Η απόδειξη του Μέρους 3 είναι ο αλγόριθμος: βγάζε επανειλημμένα μια κορυφή χωρίς εισερχόμενες ακμές.
- Είσοδος:
- κατευθυνόμενο γράφημα G
- Έξοδος:
- μια τοπολογική διάταξη — ή ένδειξη ότι το G έχει κύκλο
Με λόγια. Υπολόγισε τον εσώβαθμο (πλήθος εισερχόμενων ακμών) κάθε κορυφής, και κράτα σε ένα σύνολο τις «πηγές» — όσες έχουν εσώβαθμο 0. Επαναλαμβανόμενα: βγάλε μια πηγή, βάλ' τη στο τέλος της διάταξης, και για κάθε εξερχόμενη ακμή της μείωσε τον εσώβαθμο του προορισμού — αν φτάσει 0, εκείνη η κορυφή γίνεται νέα πηγή. Αν στο τέλος μείνουν κορυφές που δεν έγιναν ποτέ πηγές, το γράφημα έχει κύκλο.
Δες τον αλγόριθμο να τρέχει. Πρόσεξε τους εσώβαθμους να πέφτουν, και κάθε φορά που ένας φτάνει στο 0 να εμφανίζεται μια νέα πηγή:
Ο αριθμός σε κάθε κορυφή είναι ο τρέχων εσώβαθμός της. Πηγή = εσώβαθμος 0.
Κλείδωσε τη γνώση
Βάλε στη σειρά τα βήματα της τοπολογικής διάταξης:
Και συμπλήρωσε τα κενά:
Μοτίβο σκέψης
Τι μάθαμε
Τι κρατάμε από αυτή τη διάλεξη
- Ελάχιστη μέγιστη καθυστέρηση — μία μηχανή, εργασίες με , καθυστέρηση . Σωστό κριτήριο: Earliest Deadline First (αύξουσα προθεσμία).
- Αντιστροφή = ζεύγος εργασιών εκτός σειράς προθεσμίας· η λύση του άπληστου δεν έχει καμία.
- Επιχείρημα ανταλλαγής — η αντιμετάθεση μιας διαδοχικής αντιστροφής μειώνει τις αντιστροφές κατά χωρίς να μεγαλώνει το . Άρα κάθε βέλτιστη λύση μετατρέπεται στη λύση του άπληστου.
- Τρεις τεχνικές απόδειξης: greedy stays ahead, exchange argument, structural bound.
- Τοπολογική διάταξη — διάταξη κορυφών ώστε κάθε ακμή να δείχνει εμπρός. Υπάρχει αν και μόνο αν το γράφημα είναι DAG.
- Αλγόριθμος: βγάζε επανειλημμένα κορυφή με εσώβαθμο 0 — με μετρητές
count[]και σύνολο πηγών.
Ασκήσεις από εξετάσεις
Από τη θεωρία στην εξεταστική
3 άσκησεις που χρησιμοποιούν ως τελευταίο εργαλείο αυτή τη διάλεξη. Οι πρόσφατες εξεταστικές (2024/2025) φέρουν badge προτεραιότητας.
Σεπτέμβριος 2025 · Θέμα 2.2 — Κλάσεις όπου δουλεύει η τοπολογική ταξινόμηση
Σε ποιες από τις παρακάτω κλάσεις γραφημάτων ο αλγόριθμος της τοπολογικής ταξινόμησης επιστρέφει ορθά το ζητούμενο αποτέλεσμα για κάθε γράφημα της κλάσης;
(i) Γραφήματα με θετικά βάρη στις ακμές τους · (ii) Άκυκλα κατευθυνόμενα γραφήματα · (iii) Δέντρα · (iv) Διμερή γραφήματα.
Σεπτέμβριος 2025 · Θέμα 4 — Χρονοπρογραμματισμός & χρόνος αναμονής
Έχουμε φοιτητές/τριες· το άτομο καταθέτει ένα αίτημα με χρόνο διεκπεραίωσης . Τοποθετούμε τα αιτήματα σε μια σειρά και τα διεκπεραιώνουμε ένα-ένα. Ο συνολικός χρόνος αναμονής του ατόμου ισούται με τον χρόνο των αιτημάτων που διεκπεραιώθηκαν πριν το δικό του (με βάση τη σειρά ) συν τον δικό του χρόνο .
(α) Με ποιο άπληστο κριτήριο επιλέγουμε τη σειρά ώστε να ελαχιστοποιήσουμε τον χρόνο αναμονής; (β) Απόδειξε τυπικά την ορθότητα του κριτηρίου.
Φροντιστηριακό Σετ #6 · Άσκηση 4 — Χρονοπρογραμματισμός πλυντηρίου (καθαριστήριο)
Ο Γιώργος δουλεύει σε ένα καθαριστήριο ρούχων. Κάθε πρωί πρέπει να ελέγξει τα ρούχα για λεκέδες (για να τα επεξεργαστεί κατάλληλα) και στη συνέχεια να τα τοποθετήσει στο πλυντήριο και στο στεγνωτήριο. Ο Γιώργος μπορεί να επεξεργάζεται ένα ρούχο κάθε φορά για τον έλεγχο των λεκέδων, και κάθε ρούχο απαιτεί διαφορετικό χρόνο ελέγχου. Ωστόσο, τα ρούχα μπορούν να πλένονται και να στεγνώνουν ταυτόχρονα. Ο Γιώργος θέλει να τελειώσει όλη τη δουλειά όσο το δυνατόν γρηγορότερα, οπότε ψάχνει την καλύτερη σειρά ελέγχου των ρούχων.
Ζητείται αποδοτικός αλγόριθμος που δίνει χρονοδιάγραμμα με τον μικρότερο δυνατό χρόνο ολοκλήρωσης.