Class Hub
Greedy·Διάλεξη 12·~42 min

L12 · Άπληστοι Αλγόριθμοι II — Ελάχιστη Καθυστέρηση & Τοπολογική Διάταξη

Τι θα δούμε

Δύο θέματα — και μία τεχνική απόδειξης που θα ξαναδείς σε κάθε εξεταστική:

  1. Χρονοπρογραμματισμός με ελάχιστη καθυστέρηση, και μαζί το επιχείρημα ανταλλαγής (exchange argument) — η δεύτερη μεγάλη τεχνική για άπληστους αλγορίθμους, μετά το «ο άπληστος προηγείται» του L11.
  2. Τοπολογική διάταξη — πώς βάζεις σε σειρά εργασίες με προαπαιτούμενα, και γιατί αυτό γίνεται αν και μόνο αν δεν υπάρχουν κύκλοι.

Χρονοπρογραμματισμός με ελάχιστη καθυστέρηση

Διατύπωση

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

  • Η εργασία απαιτεί μονάδες χρόνου και έχει προθεσμία .
  • Αν ξεκινήσει τη στιγμή , τελειώνει τη στιγμή .
  • Καθυστέρηση της : — πόσο μετά την προθεσμία της τελείωσε (ή αν πρόλαβε).

Στόχος: προγραμμάτισε όλες τις εργασίες ελαχιστοποιώντας τη μέγιστη καθυστέρηση .

Υποψήφια κριτήρια

Πάλι το ίδιο άπληστο πρότυπο: βάλε τις εργασίες σε κάποια σειρά και τρέξε τες. Όλο το ζήτημα είναι ποια σειρά. Τρεις λογικοφανείς υποψήφιες:

ΚριτήριοΣειρά εκτέλεσηςΔιαίσθηση πίσω του
Μικρότερος χρόνος επεξεργασίαςαύξουσα «ξεμπέρδευε πρώτα τα γρήγορα»
Μικρότερο χρονικό περιθώριοαύξουσα «πιο επείγον = λιγότερος αέρας»
Μικρότερη προθεσμία (EDF)αύξουσα «ό,τι λήγει πρώτο, πρώτο»

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

Ελάχιστη μέγιστη καθυστέρηση — τρία κριτήρια

Σειρά εκτέλεσης: αύξουσα σειρά χρόνου επεξεργασίας tⱼ. Κάθε γραμμή είναι μία εργασία· η πορτοκαλί διακεκομμένη είναι η προθεσμία της, το κόκκινο η καθυστέρηση.

1.Ad=202.Bd=253.Cd=10024681012141618202224
Μέγιστη καθυστέρηση L0
Κανόνας «μικρότερος χρόνος»: τρέξε πρώτα τις σύντομες εργασίες. Οι A και B είναι σύντομες (tⱼ = 2) με μακρινές προθεσμίες· η C είναι μακρά (tⱼ = 10) και λήγει σχεδόν αμέσως. Δες ποια θα προηγηθεί. Πάτα «Επόμενο».
Βήμα 0 / 3

Γιατί αποτυγχάνουν τα δύο κριτήρια

Ο αλγόριθμος: Earliest Deadline First

ΑλγόριθμοςEarliest Deadline First — ελάχιστη μέγιστη καθυστέρηση
O(n log n)
Ταξινόμησε τις εργασίες κατά αύξουσα προθεσμία και τρέξε τες τη μία μετά την άλλη, χωρίς κενά.
Είσοδος:
n εργασίες, η καθεμία με χρόνο επεξεργασίας tⱼ και προθεσμία dⱼ
Έξοδος:
μια σειρά εκτέλεσης που ελαχιστοποιεί τη μέγιστη καθυστέρηση L

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

Πολυπλοκότητα. Η ταξινόμηση κατά προθεσμία, · η ανάθεση διαστημάτων, . Σύνολο .

Τον είδες ήδη να τρέχει στην καρτέλα «Earliest Deadline First» του εργαλείου παραπάνω — και να πετυχαίνει την ελάχιστη δυνατή μέγιστη καθυστέρηση. Μένει το δύσκολο: γιατί αυτό συμβαίνει πάντα.

Δύο παρατηρήσεις-κλειδιά

Πριν την απόδειξη, χρειαζόμαστε δύο απλές παρατηρήσεις για κάθε χρονοδιάγραμμα.

Το επιχείρημα ανταλλαγής

Όλη η απόδειξη στηρίζεται σε μία κίνηση: παίρνεις δύο διαδοχικές εργασίες που είναι αντεστραμμένες και τις αντιμεταθέτεις.

Αυτός ο ισχυρισμός είναι, ουσιαστικά, ολόκληρη η απόδειξη — και γίνεται απτός μόνο όταν τον χειριστείς ο ίδιος. Παρακάτω ένα χρονοδιάγραμμα ξεκινά ανακατεμένο, με αρκετές αντιστροφές. Κάθε ⇄ σημαδεύει ένα διαδοχικό αντεστραμμένο ζεύγος· κάνε κλικ και αντιμετάθεσέ το. Παρακολούθησε δύο αριθμούς: τις αντιστροφές (πέφτουν κατά κάθε φορά) και τη μέγιστη καθυστέρηση — που δεν ανεβαίνει ποτέ:

Επιχείρημα ανταλλαγής — αντιμετάθεσε τις αντιστροφές
3 αντιστροφές

Ο αριθμός κάθε εργασίας είναι η κατάταξή της κατά προθεσμία — στόχος η σειρά 1·2·3·4 (η λύση του EDF). Κάνε κλικ σε ένα για να αντιμεταθέσεις δύο διαδοχικές εργασίες εκτός σειράς.

3d=6ℓ=01d=3ℓ=14d=8ℓ=02d=5ℓ=5012345678910
Μέγιστη καθυστέρηση L5· αντιστροφές: 3

Κάθε δείχνει μια αντιστροφή: δύο διαδοχικές εργασίες όπου η πρώτη έχει μεγαλύτερη προθεσμία από τη δεύτερη. Κάνε κλικ σε ένα ⇄ και παρακολούθησε το L — δεν πρόκειται ποτέ να ανέβει.

Κάνε κλικ σε ένα ⇄ στο διάγραμμα.

Απόδειξη του ισχυρισμού. Έστω διαδοχικές με αντιστροφή (, αλλά η πριν την ). Αντιμεταθέτουμέ τες. Συμβολίζουμε με τις παλιές καθυστερήσεις και τις νέες.

  • Για κάθε : η εργασία δεν μετακινήθηκε καθόλου, άρα .
  • Η μετακινήθηκε νωρίτερα, άρα τελειώνει νωρίτερα: .
  • Η μετακινήθηκε αργότερα. Τελειώνει τώρα ακριβώς εκεί όπου τελείωνε πριν η — δηλαδή . Άρα:

όπου η ανισότητα ισχύει επειδή .

Άρα και οι δύο νέες καθυστερήσεις, και , είναι — δηλαδή από κάτι που ήδη μετριόταν στην παλιά μέγιστη. Η μέγιστη καθυστέρηση δεν αυξήθηκε.

Κάρτα μνήμηςEarliest Deadline First
Λέξεις-κλειδιά
ελάχιστη μέγιστη καθυστέρησηκριτήριο: αύξουσα προθεσμία dⱼκαμία αντιστροφήχωρίς αδρανή χρόνοεπιχείρημα ανταλλαγής
Τα βήματα στο μυαλό σου
1Ταξινόμησε τις εργασίες κατά αύξουσα προθεσμία dⱼ.
2Τρέξε τες με αυτή τη σειρά, η μία αμέσως μετά την άλλη — καμία παύση, κανένας αδρανής χρόνος.
3Η απόδειξη: κάθε αντιστροφή αντιμετατίθεται χωρίς να μεγαλώσει το L, άρα κάθε βέλτιστη λύση γίνεται η λύση του άπληστου.
Πολυπλοκότητα
O(n log n) — κυριαρχεί η ταξινόμηση κατά προθεσμία
Κλασική παγίδα
Τα κριτήρια «μικρότερος χρόνος» και «μικρότερο περιθώριο» μοιάζουν λογικά αλλά είναι ΛΑΘΟΣ — μετράει μόνο η προθεσμία. Και η απόδειξη γίνεται με επιχείρημα ανταλλαγής, όχι με «ο άπληστος προηγείται».

Οι τρεις τεχνικές απόδειξης άπληστων αλγορίθμων

Τοπολογική διάταξη

Το πρόβλημα

Πολλές εργασίες με προαπαιτούμενα: η εργασία πρέπει να γίνει πριν την . Τα μοντελοποιούμε με ένα κατευθυνόμενο γράφημα — η ακμή σημαίνει «η προηγείται της ».

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

Τοπολογική διάταξη — βάλε κάθε βέλος να δείχνει δεξιά

Πράσινο = ακμή που δείχνει εμπρός · κόκκινο = ακμή που δείχνει πίσω.

Fθέση 1Eθέση 2Dθέση 3Cθέση 4Bθέση 5Aθέση 6
Ακμές προς τα πίσω6
Κάνε κλικ σε μια κορυφή για να τη διαλέξεις, μετά σε μια δεύτερη για να ανταλλάξουν θέσεις. Στόχος: όλες οι ακμές πράσινες.

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

Πότε υπάρχει;

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

Μέρος 1 — αν έχει τοπολογική διάταξη, τότε είναι DAG. Έστω ότι το έχει τοπολογική διάταξη και έναν κύκλο . Έστω η κορυφή του με τον μικρότερο δείκτη, και η κορυφή ακριβώς πριν την μέσα στον . Τότε η είναι ακμή. Από την επιλογή της ως μικρότερης, · αλλά μια ακμή σε τοπολογική διάταξη πάει εμπρός, άρα . Άτοπο.

Μέρος 2 — κάθε DAG έχει μια «πηγή»: κορυφή χωρίς εισερχόμενες ακμές. Έστω, για άτοπο, ότι κάθε κορυφή έχει εισερχόμενη ακμή. Τότε ξεκίνα από μια οποιαδήποτε κορυφή και ακολούθα ακμές προς τα πίσω — κάθε φορά μπορείς, γιατί καμία κορυφή δεν είναι πηγή. Με κορυφές, μετά από το πολύ βήματα θα συναντήσεις κάποια κορυφή δύο φορές — και το κομμάτι της διαδρομής ανάμεσα στις δύο επισκέψεις είναι κύκλος. Άτοπο, αφού το είναι DAG.

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

Αναζήτηση πηγής — ακολούθα ακμές προς τα πίσω

Κάθε DAG: δες πού σε οδηγεί το περπάτημα προς τα πίσω.

ABCDEF
Διαδρομή— (διάλεξε αφετηρία)
Διάλεξε μια κορυφή για αφετηρία — οποιαδήποτε. Από εκεί θα ακολουθήσουμε ακμές ΠΡΟΣ ΤΑ ΠΙΣΩ, πηγαίνοντας κάθε φορά σε έναν προκάτοχο.
Σε DAG: το περπάτημα πίσω σταματά σε πηγή.

Μέρος 3 — κάθε DAG έχει τοπολογική διάταξη. Επαγωγή στο πλήθος κορυφών. Βάση : προφανές. Βήμα: σε ένα DAG με κορυφές, από το Μέρος 2 υπάρχει πηγή (χωρίς εισερχόμενες ακμές). Το είναι DAG με κορυφές, άρα (επαγωγική υπόθεση) έχει τοπολογική διάταξη. Τοποθετούμε την πρώτη — αφού δεν έχει εισερχόμενες ακμές, κάθε ακμή της δείχνει εμπρός.

Ο αλγόριθμος

Η απόδειξη του Μέρους 3 είναι ο αλγόριθμος: βγάζε επανειλημμένα μια κορυφή χωρίς εισερχόμενες ακμές.

ΑλγόριθμοςΤοπολογική διάταξη
O(m + n)
Βγάλε επανειλημμένα μια κορυφή με εσώβαθμο 0 (μια «πηγή»)· διατήρησε τους εσώβαθμους σε μετρητές για να μην ψάχνεις κάθε φορά.
Είσοδος:
κατευθυνόμενο γράφημα G
Έξοδος:
μια τοπολογική διάταξη — ή ένδειξη ότι το G έχει κύκλο

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

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

Τοπολογική διάταξη — βγάζε επανειλημμένα μια πηγή
Βήμα 0/7

Ο αριθμός σε κάθε κορυφή είναι ο τρέχων εσώβαθμός της. Πηγή = εσώβαθμος 0.

A0B0C2D1E1F3G1
Τοπολογική διάταξη
·
·
·
·
·
·
·
Υπολογίζουμε τον εσώβαθμο κάθε κορυφής (πλήθος εισερχόμενων ακμών). Πηγές — εσώβαθμος 0 — είναι οι: A, B. Πάτα «Επόμενο».
Κάρτα μνήμηςΤοπολογική διάταξη
Λέξεις-κλειδιά
διάταξη: κάθε ακμή δείχνει εμπρόςυπάρχει ⇔ DAGεσώβαθμος 0 = πηγήβγάζε επανειλημμένα πηγέςcount[] + σύνολο πηγών
Τα βήματα στο μυαλό σου
1Υπολόγισε τον εσώβαθμο κάθε κορυφής· κράτα σε σύνολο τις πηγές (εσώβαθμος 0).
2Βγάλε μια πηγή, βάλ’ τη στο τέλος της διάταξης.
3Μείωσε τον εσώβαθμο των γειτόνων της· όποιος φτάσει 0 γίνεται νέα πηγή. Επανάλαβε.
Πολυπλοκότητα
O(m + n) — με μετρητές count[] και σύνολο πηγών
Κλασική παγίδα
Αν στο τέλος μείνουν κορυφές που δεν έγιναν ποτέ πηγές, το γράφημα έχει κύκλο — δεν υπάρχει τοπολογική διάταξη. Η αφελής «ψάξε πηγή από την αρχή» κοστίζει O(n²).

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

Βάλε στη σειρά τα βήματα της τοπολογικής διάταξης:

Βάλε τα βήματα στη σειρά
Ο αλγόριθμος τοπολογικής διάταξης, από την πρώτη ενέργεια στην τελευταία.
Σύρε τις γραμμές για αναδιάταξη — ή χρησιμοποίησε τα βελάκια.
1.Υπολόγισε τον εσώβαθμο κάθε κορυφής.
2.Επανάλαβε ώσπου να μπουν όλες οι κορυφές στη διάταξη.
3.Αν κάποιος εσώβαθμος έπεσε στο 0, βάλε εκείνη την κορυφή στο σύνολο πηγών.
4.Για κάθε εξερχόμενη ακμή της, μείωσε τον εσώβαθμο του προορισμού.
5.Βάλε σε ένα σύνολο όλες τις κορυφές με εσώβαθμο 0 — τις πηγές.
6.Βγάλε μια πηγή και τοποθέτησέ τη στο τέλος της τοπολογικής διάταξης.

Και συμπλήρωσε τα κενά:

Συμπλήρωσε τα κενά
Τα δύο μισά της διάλεξης σε τέσσερις λέξεις-κλειδιά.
Ο άπληστος για την ελάχιστη μέγιστη καθυστέρηση ταξινομεί τις εργασίες κατά . Η απόδειξη ορθότητάς του χρησιμοποιεί επιχείρημα : αντιμεταθέτει διαδοχικές αντιστροφές χωρίς να μεγαλώσει η μέγιστη καθυστέρηση. Η τοπολογική διάταξη υπάρχει αν και μόνο αν το γράφημα είναι , και ο αλγόριθμος βγάζει επανειλημμένα μια κορυφή με εσώβαθμο .

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

Τι μάθαμε

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

  1. Ελάχιστη μέγιστη καθυστέρηση — μία μηχανή, εργασίες με , καθυστέρηση . Σωστό κριτήριο: Earliest Deadline First (αύξουσα προθεσμία).
  2. Αντιστροφή = ζεύγος εργασιών εκτός σειράς προθεσμίας· η λύση του άπληστου δεν έχει καμία.
  3. Επιχείρημα ανταλλαγής — η αντιμετάθεση μιας διαδοχικής αντιστροφής μειώνει τις αντιστροφές κατά χωρίς να μεγαλώνει το . Άρα κάθε βέλτιστη λύση μετατρέπεται στη λύση του άπληστου.
  4. Τρεις τεχνικές απόδειξης: greedy stays ahead, exchange argument, structural bound.
  5. Τοπολογική διάταξη — διάταξη κορυφών ώστε κάθε ακμή να δείχνει εμπρός. Υπάρχει αν και μόνο αν το γράφημα είναι DAG.
  6. Αλγόριθμος: βγάζε επανειλημμένα κορυφή με εσώβαθμο 0 — με μετρητές count[] και σύνολο πηγών.
Επόμενο
L13 · Άπληστοι III

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

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

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

Παλαιό θέμαΣεπτέμβριος 2025Θέμα Εξετάσεων 2025Θέμα 2.25%Άπληστοι αλγόριθμοιΕύκολο

Σεπτέμβριος 2025 · Θέμα 2.2 — Κλάσεις όπου δουλεύει η τοπολογική ταξινόμηση

Σε ποιες από τις παρακάτω κλάσεις γραφημάτων ο αλγόριθμος της τοπολογικής ταξινόμησης επιστρέφει ορθά το ζητούμενο αποτέλεσμα για κάθε γράφημα της κλάσης;

(i) Γραφήματα με θετικά βάρη στις ακμές τους · (ii) Άκυκλα κατευθυνόμενα γραφήματα · (iii) Δέντρα · (iv) Διμερή γραφήματα.

Παλαιό θέμαΣεπτέμβριος 2025Θέμα Εξετάσεων 2025Θέμα 425%Άπληστοι αλγόριθμοιΔύσκολο

Σεπτέμβριος 2025 · Θέμα 4 — Χρονοπρογραμματισμός & χρόνος αναμονής

Έχουμε φοιτητές/τριες· το άτομο καταθέτει ένα αίτημα με χρόνο διεκπεραίωσης . Τοποθετούμε τα αιτήματα σε μια σειρά και τα διεκπεραιώνουμε ένα-ένα. Ο συνολικός χρόνος αναμονής του ατόμου ισούται με τον χρόνο των αιτημάτων που διεκπεραιώθηκαν πριν το δικό του (με βάση τη σειρά ) συν τον δικό του χρόνο .

(α) Με ποιο άπληστο κριτήριο επιλέγουμε τη σειρά ώστε να ελαχιστοποιήσουμε τον χρόνο αναμονής; (β) Απόδειξε τυπικά την ορθότητα του κριτηρίου.

Από φροντιστήριοΦροντιστήριο 2023–24Άσκηση 4Άπληστοι αλγόριθμοιΜέτριο

Φροντιστηριακό Σετ #6 · Άσκηση 4 — Χρονοπρογραμματισμός πλυντηρίου (καθαριστήριο)

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

Ζητείται αποδοτικός αλγόριθμος που δίνει χρονοδιάγραμμα με τον μικρότερο δυνατό χρόνο ολοκλήρωσης.

Φόρτωση σχολίων…
L12 · Άπληστοι Αλγόριθμοι II — Ελάχιστη Καθυστέρηση & Τοπολογική Διάταξη · Algorithms Class Hub