Εισαγωγή στους αλγορίθµους



Σχετικά έγγραφα
viii 20 Δένδρα van Emde Boas 543

Εισαγωγή στους αλγορίθµους

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι

περιεχόμενα υπολογιστικό πρόβλημα αλγόριθμοι παράδειγμα ταξινόμησης ταξινόμηση αλγόριθμοι τεχνολογία αλγορίθμων Παύλος Εφραιμίδης

ΑΕΠΠ Ερωτήσεις θεωρίας

Αριθμοθεωρητικοί Αλγόριθμοι

Υπολογιστικό Πρόβληµα

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος στη δεύτερη έκδοση

iii ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος

Περιεχόμενα. Περιεχόμενα

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Η ΤΕΧΝΗ ΤΟΥ ΙΑΒΑΣΜΑΤΟΣ ΜΕΤΑΞΥ ΤΩΝ ΑΡΙΘΜΩΝ (ΠΑΡΕΜΒΟΛΗ ΚΑΙ ΠΡΟΣΕΓΓΙΣΗ)

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Αλγόριθμοι και Πολυπλοκότητα

ΜΕΡΟΣ Ι: ΓΕΩΓΡΑΦΙΚΑ Ε ΟΜΕΝΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Η ΦΥΣΗ ΤΩΝ ΓΕΩΓΡΑΦΙΚΩΝ Ε ΟΜΕΝΩΝ...

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Αλγόριθµοι και Πολυπλοκότητα

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

μαθηματικά β γυμνασίου

Αλγόριθμοι και Πολυπλοκότητα

Βοηθήστε τη ΕΗ. Ένα µικρό νησί απέχει 4 χιλιόµετρα από την ακτή και πρόκειται να συνδεθεί µε τον υποσταθµό της ΕΗ που βλέπετε στην παρακάτω εικόνα.

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

Κεφάλαιο 2. Μέθοδος πεπερασµένων διαφορών προβλήµατα οριακών τιµών µε Σ Ε

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

Ανάπτυξη εφαρµογών σε προγραµµατιστικό περιβάλλον (στοιχεία θεωρίας)

Q 12. c 3 Q 23. h 12 + h 23 + h 31 = 0 (6)

Αλγόριθµοι και Πολυπλοκότητα

Κεφάλαιο 10 ο Υποπρογράµµατα

Μεθοδολογίες παρεµβολής σε DTM.

xvi Προσέγγιση δομεσ δεδομενων και αλγοριθμοι

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9

Χ. Α. Αλεξόπουλος. Τµήµα Μηχ. Η/Υ και Πληροφορικής Πανεπιστήµιο Πατρών

Πρόλογος. Πρόλογος 13. Πώς χρησιμοποείται αυτό το βιβλίο 17

1

Γραµµική Αλγεβρα Ι. Ενότητα: Εισαγωγικές Εννοιες. Ευάγγελος Ράπτης. Τµήµα Μαθηµατικών

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

ΠΑΡΑΡΤΗΜΑ VΙ - Ο ΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΠΡΟΤΑΣΗΣ

τα βιβλία των επιτυχιών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Σχεδίαση τροχιάς. (α) (β) (γ) (δ) Σχήµα 2.5

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΑΝΘΡΩΠΙΣΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΙ ΑΓΩΓΙΚΟ ΤΜΗΜΑ ΗΜΟΤΙΚΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΦΑΚΕΛΟΣ ΜΑΘΗΜΑΤΟΣ

Μαλούτα Θεανώ Σελίδα 1

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών Αριθμητικά σύνολα Ιδιότητες Περισσότερες ιδιότητες...

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

Προσεγγιστικοί Αλγόριθμοι

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Μαθηματικά. Β'Γυμνασίου. Μαρίνος Παπαδόπουλος

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

Κεφάλαιο 4. Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κανόνες παραγώγισης ( )

Προσεγγιστικοί Αλγόριθμοι

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

Γεωλογικοί Χάρτες ΜΕΡΟΣ Α: Βασικές Έννοιες & Στοιχειώδεις Δομές. Χ.Δ. Κράνης. Β.Ε. Αντωνίου. Εθνικό & Καποδιστριακό Πανεπιστήμιο Αθηνών

ΤΕΧΝΙΚΕΣ ΔΕΙΓΜΑΤΟΛΗΨΙΑΣ

Ενότητα: Πράξεις επί Συνόλων και Σώµατα Αριθµών

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών

Μηχανική ΙI Ροή στο χώρο των φάσεων, θεώρηµα Liouville

Σηµειώσεις στις σειρές

Επιµέλεια Θοδωρής Πιερράτος

2 o Καλοκαιρινό σχολείο Μαθηµατικών Νάουσα 2008

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Ε. ΞΕΚΑΛΑΚΗ Καθηγήτριας του Τμήματος Στατιστικής του Οικονομικού Πανεπιστημίου Αθηνών ΜΗ ΠΑΡΑΜΕΤΡΙΚΗ ΣΤΑΤΙΣΤΙΚΗ

Δομές Δεδομένων και Αλγόριθμοι

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Αριθμητική Ανάλυση & Εφαρμογές

Σχεδίαση & Ανάλυση Αλγορίθμων

Α ΤΑΞΗ. 1 η ΕΝΟΤΗΤΑ: Γνωρίζω τον υπολογιστή. Θα παρουσιαστεί µε τρόπο απλό και κατανοητό,

Το βιβλίο αυτό αποτελεί τον πρώτο τόμο των Μαθηματικών Γʹ Λυκείου για τις

Δομές Δεδομένων και Αλγόριθμοι

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

Αλγόριθμοι και Πολυπλοκότητα

Αλγοριθμικές Τεχνικές

4.3. Γραµµικοί ταξινοµητές

ΠΡΟΤΑΣΗ ΝΕΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥ ΩΝ

x=l ηλαδή η ενέργεια είναι µία συνάρτηση της συνάρτησης . Στα µαθηµατικά, η συνάρτηση µίας συνάρτησης ονοµάζεται συναρτησιακό (functional).

Γ Τάξη Γυμνασίου Μ Α Θ Η Μ Α Τ Ι Κ Α. Ι. Διδακτέα ύλη

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Ανάλυση των δραστηριοτήτων κατά γνωστική απαίτηση

Δομές Δεδομένων & Αλγόριθμοι

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

αντισταθµίζονται µε τα πλεονεκτήµατα του άλλου, τρόπου βαθµολόγησης των γραπτών και της ερµηνείας των σχετικών αποτελεσµάτων, και

Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, , 3 ο ΕΞΑΜΗΝΟ ΑΠΑΝΤΗΣΕΙΣ ΕΡΓΑΣΙΑΣ #1: ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟ ΙΑΣΤΟΛΗΣ ΚΑΙ ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: Σ.

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Λυσεις Ασκησεων - Φυλλαδιο 1

Επίλυση Γραµµικών Συστηµάτων

ΝΙΚΟΣ ΤΑΣΟΣ. Θετικής-Τεχνολογικής Κατεύθυνσης

Transcript:

Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein Εισαγωγή στους αλγορίθµους Απόδοση στα ελληνικά: Ιωάννης Παπαδόγγονας Επιστηµονική επιµέλεια: Γεώργιος Φρ. Γεωργακόπουλος (Κεϕ. 1-26) Μετη συνεργασία των: Σταύρου Νικολόπουλου Λεωνίδα Παληού Βιβής Φραγκοπούλου Ιωάννης Παπαδόγγονας (Κεϕ. 27-35) ÓÂappleÈÛÙËÌÈ ÎÂÛ Î ÔÛÂÈÛ ÚËÙËÛ Ιδρυτική ωρεά Παγκρητικής Ενώσεως Αµερικής ΗΡΑΚΛΕΙΟ 2012

π ªπ π ƒ Ι ΡΥΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΡΕΥΝΑΣ Αθήνα: Κλεισόβης 3, 106 77, Αθήνα. Τηλ. 210 3849020-22, Fax: 210 3301583 Ηράκλειο: Νικ. Πλαστήρα 100, Βασιλικά Βουτών 700 13, Ηράκλειο Κρήτης. Τηλ. 2810 391097, Fax: 2810 391085 e-mail: info@cup.gr www.cup.gr ΣΕΙΡΑ: ΠΑΝΕΠΙΣΤΗΜΙΑΚΗ ΒΙΒΛΙΟΘΗΚΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ / ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ È ı ÓÙÂÛ ÂÈÚ Û: ˆÚÁÈÔÛ ºÚ. ˆÚÁ ÎÔappleÔ ÏÔÛ, πˆ ÓÓËÛ apple ÔÁÁÔÓ Û Τίτλος πρωτοτύπου: Introduction to Algorithms, 2nd edition c 1990, 2001: The Massachusetts Institute of Technology - MIT Press c για την ελληνική γλώσσα: 2003, Πανεπιστηµιακές Εκδόσεις Κρήτης Πρώτη έκδοση: εκέµβριος 2006 Πρώτη έκδοση σε ενιαίο τόµο: Σεπτέµβριος 2012 Απόδοση στα ελληνικά: Ιωάννης Παπαδόγγονας (ΠΕΚ) Επιστηµονική επιµέλεια: Γεώργιος Φρ. Γεωργακόπουλος (Κεϕ. 1-26) Μετη συνεργασία των: Σταύρου Νικολόπουλου Λεωνίδα Παληού Βιβής Φραγκοπούλου Ιωάννης Παπαδόγγονας (Κεϕ. 27-35) Τελική ανάγνωση (Κεϕ. 27-35): Γεώργιος Φρ. Γεωργακόπουλος Στοιχειοθεσία, σελιδοποίηση, επιµέλεια έκδοσης: Ιωάννης Παπαδόγγονας (ΠΕΚ) Μακέτα εξωϕύλλου: Βάσω Αβραµοπούλου ISBN 978-960-524-224-4

Περιεχόµενα Πρόλογος xiii I Θεµελιώδεις έννοιες Εισαγωγή 3 1 Ο ρόλος των αλγορίθµων στις υπολογιστικές διαδικασίες 5 1.1 Αλγόριθµοι 5 1.2 Οι αλγόριθµοι ως τεχνολογία 10 2 Προκαταρκτικές έννοιες και παρατηρήσεις 15 2.1 Ενθετική ταξινόµηση 15 2.2 Ανάλυση αλγορίθµων 21 2.3 Σχεδίαση αλγορίθµων 28 3 Ρυθµός αύξησης συναρτήσεων 42 3.1 Ασυµπτωτικός συµβολισµός 42 3.2 Καθιερωµένοι συµβολισµοί και συνήθεις συναρτήσεις 52 4 Αναδροµικές σχέσεις 62 4.1 Η µέθοδος της αντικατάστασης 63 4.2 Η µέθοδος του δένδρου αναδροµής 67 4.3 Η κεντρική µέθοδος 72 4.4 Απόδειξη του κεντρικού θεωρήµατος 75 5 Πιθανοτική ανάλυση και τυχαιοκρατικοί αλγόριθµοι 90 5.1 Το πρόβληµα της πρόσληψης 90 5.2 είκτριες τυχαίες µεταβλητές 93 5.3 Τυχαιοκρατικοί αλγόριθµοι 97 5.4 Πιθανοτική ανάλυση και άλλες χρήσεις των δεικτριών τυχαίων µεταβλητών 104

vi Περιεχόµενα II Ταξινόµηση και διατακτικές στατιστικές Εισαγωγή 121 6 Ταξινόµηση σωρού 125 6.1 Σωροί 125 6.2 ιατήρηση της ιδιότητας σωρού 128 6.3 Κατασκευή σωρού 130 6.4 Ο αλγόριθµος της ταξινόµησης σωρού 134 6.5 Ουρές προτεραιότητας 136 7 Ταχυταξ ινόµηση 143 7.1 Περιγραϕή της ταχυταξινόµησης 143 7.2 Επίδοση της ταχυταξινόµησης 147 7.3 Μια τυχαιοκρατική εκδοχή της ταχυταξινόµησης 151 7.4 Ανάλυση της ταχυταξινόµησης 152 8 Ταξινόµηση σε γραµµικό χρόνο 162 8.1 Κάτω ϕράγµατα για αλγορίθµους ταξινόµησης 162 8.2 Απαριθµητική ταξινόµηση 165 8.3 Αριθµοτακτική ταξινόµηση 168 8.4 Ταξινόµηση µεδοχεία 171 9 ιάµεσοι και διατακτικές στατιστικές 180 9.1 Ελάχιστο και µέγιστο 181 9.2 Επιλογή σε γραµµικό αναµενόµενο χρόνο 182 9.3 Επιλογή σε γραµµικό χρόνο χειρότερης περίπτωσης 186 III οµές δεδοµένων Εισαγωγή 195 10 Στοιχειώδεις δοµές δεδοµένων 199 10.1 Στοίβες και ουρές 199 10.2 Αλυσίδες 203 10.3 Υλοποίηση δεικτών και αντικειµένων 207 10.4 Αναπαράσταση έρριζων δένδρων 212 11 Πίνακες διασποράς 220 11.1 Πίνακες σταθερών διευθύνσεων 221 11.2 Πίνακες διασποράς 223 11.3 Συναρτήσεις διασποράς 228 11.4 Η µέθοδος των µεταβλητών διευθύνσεων 236 11.5 Πλήρης διασπορά 244 12 υαδικά δένδρα αναζήτησης 253 12.1 Τι είναι ένα δυαδικό δένδρο αναζήτησης; 253 12.2 Άντληση πληροϕοριών από δυαδικό δένδρο αναζήτησης 256 12.3 Εισαγωγή και διαγραϕή 260 12.4 Τυχαία κατασκευασµένα δυαδικά δέντρα αναζήτησης 264

Περιεχόµενα vii 13 Μελανέρυθρα δένδρα 273 13.1 Ιδιότητες των µελανέρυθρων δένδρων 273 13.2 Περιστροϕές 277 13.3 Εισαγωγή 279 13.4 ιαγραϕή 288 14 Επαύξηση δοµών δεδοµένων 302 14.1 υναµικές διατακτικές στατιστικές 302 14.2 Ηεπαύξησηδοµώνδεδοµένωνστηνπράξη 308 14.3 ένδρα διαστηµάτων 311 IV Ανώτερες τεχνικές σχεδίασης και ανάλυσης Εισαγωγή 321 15 υναµικός προγραµµατισµός 323 15.1 Χρονοπρογραµµατισµός γραµµής παραγωγής 324 15.2 Πολλαπλασιασµός αλληλουχίας πινάκων 331 15.3 Στοιχεία δυναµικού προγραµµατισµού 339 15.4 Μέγιστη κοινή υπακολουθία 351 15.5 Βέλτιστα (στατικά) δυαδικά δένδρα αναζήτησης 357 16 Άπληστοι αλγόριθµοι 371 16.1 Ένα πρόβληµα επιλογής δραστηριοτήτων 372 16.2 Στοιχεία της άπληστης στρατηγικής 381 16.3 Κώδικες Huffman 386 16.4 Θεωρητική θεµελίωση της άπληστης µεθοδολογίας 395 16.5 Ένα πρόβληµα χρονοπρογραµµατισµού εργασιών 401 17 Αντισταθµιστική ανάλυση 408 17.1 Η αθροιστική µέθοδος 409 17.2 Η χρεωπιστωτική µέθοδος 413 17.3 Η ενεργειακή µέθοδος 416 17.4 υναµικοί πίνακες 420 V οµές δεδοµένων προηγµένης σχεδίασης Εισαγωγή 435 18 ένδρα Β 438 18.1 Ορισµός των δένδρων Β 442 18.2 Βασικές πράξεις σε δένδρα Β 445 18.3 ιαγραϕή κλειδιού από δένδρο Β 453 19 ιωνυµικοί σωροί 459 19.1 ιωνυµικά δένδρα και διωνυµικοί σωροί 461 19.2 Πράξεις σε διωνυµικούς σωρούς 465

viii Περιεχόµενα 20 Σωροί Fibonacci 479 20.1 οµή των σωρών Fibonacci 480 20.2 Πράξεις συγχωνεύσιµου σωρού 482 20.3 Μείωση κλειδιού και διαγραϕή κόµβου 491 20.4 Φραγή του µέγιστου βαθµού 495 21 οµές δεδοµένων για παράσταση ξένων συνόλων 501 21.1 Πράξεις ξένων συνόλων 501 21.2 Αναπαράσταση ξένων συνόλων µέσω αλυσίδων 504 21.3 άση ξένων συνόλων 508 21.4 Ανάλυση της ένωσης κατά τάξη µεσυµπίεση κλάδου 512 VI Αλγόριθµοι γραϕηµάτων Εισαγωγή 527 22 Στοιχειώδεις αλγόριθµοι γραϕηµάτων 529 22.1 Αναπαραστάσεις γραϕηµάτων 529 22.2 Οριζόντια διερεύνηση 533 22.3 Καθοδική διερεύνηση 542 22.4 Τοπολογική ταξινόµηση 551 22.5 Ισχυρά συνδεδεµένες συνιστώσες 554 23 Ελαϕρύτατα συνδετικά δένδρα 563 23.1 Επέκταση ελαϕρύτατου συνδετικού δένδρου 564 23.2 Οι αλγόριθµοι των Kruskal και Prim 570 24 Οµοαϕετηριακές ελαϕρύτατες διαδροµές 582 24.1 Ο αλγόριθµος των Bellman-Ford 590 24.2 Οµοαϕετηριακές ελαϕρύτατες διαδροµές σε κατευθυντά άκυκλα γραϕήµατα 594 24.3 Αλγόριθµος του Dijkstra 597 24.4 Περιορισµοί διαϕοράς και ελαϕρύτατες διαδροµές 603 24.5 Αποδείξεις των ιδιοτήτων ελαϕρύτατων διαδροµών 609 25 Πανζευκτικές ελαϕρύτατες διαδροµές 623 25.1 Ελαϕρύτατες διαδροµές και πολλαπλασιασµός πινάκων 625 25.2 Ο αλγόριθµος των Floyd-Warshall 631 25.3 Αλγόριθµος του Johnson για αραιά γραϕήµατα 638 26 Μέγιστη ροή 646 26.1 ίκτυα ροής 647 26.2 Η µέθοδος των Ford-Fulkerson 654 26.3 Μέγιστη διµερής αντιστοίχιση 667 26.4 Αλγόριθµοι διοχέτευσης-αναβάθµισης 671 26.5 Ο αλγόριθµος της προτακτικής αναβάθµισης 684

Περιεχόµενα ix VII Επιλεγµένα θέµατα Εισαγωγή 703 27 Ταξινοµητικά δίκτυα 706 27.1 Συγκριτικά δίκτυα 706 27.2 Η αρχή µηδέν-ένα 711 27.3 Ένα διτονικό ταξινοµητικό δίκτυο 714 27.4 Ένα συγχωνευτικό δίκτυο 718 27.5 Ένα ταξινοµητικό δίκτυο 720 28 Πράξειςσεπίνακες 726 28.1 Ιδιότητες πινάκων 726 28.2 Ο αλγόριθµος του Strassen για πολλαπλασιασµό πινάκων 735 28.3 Επίλυση συστηµάτων γραµµικών εξισώσεων 742 28.4 Αντιστροϕή πινάκων 754 28.5 Συµµετρικοί θετικά ορισµένοι πίνακες και προσέγγιση ελαχίστων τετραγώνων 759 29 Γραµµικός προγραµµατισµός 769 29.1 Τυπική και αποκλιτική µορϕή 776 29.2 ιατύπωση προβληµάτων µετη µορϕή γραµµικών προγραµµάτων 784 29.3 Ο πολυτοπικός αλγόριθµος 789 29.4 υϊκότητα 803 29.5 Η αρχική βασική εϕικτή λύση 809 30 Πολυώνυµα και FFT 820 30.1 Αναπαράσταση πολυωνύµων 822 30.2 Οι µετασχηµατισµοί DFT και FFT 828 30.3 ραστικές υλοποιήσεις FFT 836 31 Αριθµοθεωρητικοί αλγόριθµοι 846 31.1 Στοιχειώδεις έννοιες της θεωρίας αριθµών 847 31.2 Μέγιστος κοινός διαιρέτης 853 31.3 Υπολοιπική αριθµητική 858 31.4 Επίλυση υπολοιπικών γραµµικών εξισώσεων 865 31.5 Το κινεζικό θεώρηµα του υπολοίπου 869 31.6 υνάµεις ενός στοιχείου 872 31.7 Το κρυπτοσύστηµα δηµόσιου κλειδιού RSA 876 31.8 Έλεγχος πρώτευσης 883 31.9 Ακέραιη παραγοντοποίηση 892 32 Ταύτιση συµβολοσειρών 902 32.1 Ο απλοϊκός αλγόριθµος ταύτισης συµβολοσειρών 904 32.2 Ο αλγόριθµος Rabin-Karp 907 32.3 Ταύτιση συµβολοσειρών µε πεπερασµένα αυτόµατα 912 32.4 Ο αλγόριθµος Knuth-Morris-Pratt 918

x Περιεχόµενα 33 Υπολογιστική γεωµετρία 928 33.1 Ιδιότητες ευθύγραµµων τµηµάτων 929 33.2 Πώς προσδιορίζεται εάν υπάρχει ζεύγος τεµνόµενων τµηµάτων 935 33.3 Εύρεση του κυρτού καλύµµατος 942 33.4 Εύρεση του ζεύγους εγγύτατων σηµείων 952 34 NP-πληρότητα 961 34.1 Πολυωνυµικός χρόνος 966 34.2 Επαλήθευση πολυωνυµικού χρόνου 974 34.3 NP-πληρότητα και αναγωγιµότητα 979 34.4 Αποδείξεις NP-πληρότητας 990 34.5 NP-πλήρη προβλήµατα 998 35 Προσεγγιστικοί αλγόριθµοι 1018 35.1 Το πρόβληµα του κοµβικού καλύµµατος 1020 35.2 Το πρόβληµα του περιοδεύοντος πωλητή 1023 35.3 Το πρόβληµα της κάλυψης συνόλου 1029 35.4 Τυχαιότητα και γραµµικός προγραµµατισµός 1034 35.5 Το πρόβληµα του αθροίσµατος υποσυνόλου 1039 VIII Παράρτηµα: Μαθηµατικό υπόβαθρο Εισαγωγή Π 1 Αʹ Αθροίσµατα Π 2 Αʹ.1 Τύποι και ιδιότητες αθροισµάτων Π 2 Αʹ.2 Φραγή αθροισµάτων Π 6 Βʹ Σύνολα, σχέσεις, γραϕήµατα και άλλα Π 14 Βʹ.1 Σύνολα Π 14 Βʹ.2 Σχέσεις Π 19 Βʹ.3 Συναρτήσεις Π 21 Βʹ.4 Γραϕήµατα Π 23 Βʹ.5 ένδρα Π 28 Γʹ Απαρίθµηση και πιθανότητες Π 37 Γʹ.1 Απαρίθµηση Π 37 Γʹ.2 Πιθανότητες Π 42 Γʹ.3 ιακριτές τυχαίες µεταβλητές Π 49 Γʹ.4 Η γεωµετρική και η διωνυµική κατανοµή Π 54 Γʹ.5 Οι ουρές της διωνυµικής κατανοµής Π 59 Γλωσσάριο (Ελληνοαγγλικό - Αγγλοελληνικό) Γ 1 Βιβλιογραϕία Β 1 Ευρετήριο Ε 1

Πρόλογος Το βιβλίο αυτό αποτελεί µια εκτενή εισαγωγή στη σύγχρονη µελέτη των υπολογιστικών αλγορίθµων. Πραγµατεύεται ένα µεγάλο πλήθος αλγορίθµων, τους οποίους καλύπτει σε αρκετά µεγάλο βάθος, διατηρώντας ταυτόχρονα τη σχεδίαση και την ανάλυσή τους προσιτή σε όλους τους αναγνώστες. Έχουµε προσπαθήσει να διατηρήσουµε τη µελέτη των αλγορίθµων σε στοιχειώδες επίπεδο, χωρίς να θυσιάσουµε την εµβάθυνση ή τη µαθηµατική αυστηρότητα. Σε κάθε κεϕάλαιο παρουσιάζεται ένας αλγόριθµος, µια τεχνική σχεδίασης, µια περιοχή εϕαρµογών ή ένα σχετικό θέµα. Οι αλγόριθµοι περιγράϕονται σε ϕυσική γλώσσα και µέσω ενός «ψευδοκώδικα» σχεδιασµένου ώστε να είναι κατανοητός από οποιονδήποτε έχει έστω και ελάχιστη εµπειρία στον προγραµµατισµό. Το βιβλίο περιλαµβάνει περισσότερα από 230 σχήµατα τα οποία αποσαϕηνίζουν τη λειτουργία των αλγορίθµων. εδοµένου ότι δίνουµε έµϕαση στη δραστικότητα ως κριτήριο σχεδίασης, έχουµε συµπεριλάβει διεξοδικές αναλύσεις των χρόνων εκτέλεσης των αλγορίθµων µας. Σκοπός του βιβλίου είναι να χρησιµοποιηθεί ως διδακτικό εγχειρίδιο σε προπτυχιακά ή µεταπτυχιακά µαθήµατα αλγορίθµων ή δοµών δεδοµένων. εδοµένου ότι εκτός από τις µαθηµατικές πλευρές της σχεδίασης αλγορίθµων πραγµατεύεται και τα σχετικά τεχνικά ζητήµατα, προσϕέρεται εξίσου και για κατ ιδίαν µελέτη από επαγγελµατίες µε τεχνικό προσανατολισµό. Σε αυτή τη δεύτερη έκδοση, το βιβλίο έχει αναθεωρηθεί στο σύνολό του. Οι αλλαγέςεκτείνονταιαπότηνπροσθήκηνέωνκεϕαλαίωνµέχριτηναναδιατύπωση µεµονωµένων προτάσεων. Προς τον διδάσκοντα Το βιβλίο αυτό έχει σχεδιαστεί έτσι ώστε να είναι αϕ ενός προσαρµόσιµο στις ανάγκες των αναγνωστών και αϕ ετέρου πλήρες. Μπορεί να χρησιµοποιηθεί στη διδασκαλία διαϕόρων µαθηµάτων, από ένα προπτυχιακό µάθηµα δοµών δεδοµένων µέχρι και ένα µεταπτυχιακό µάθηµα αλγορίθµων. εδοµένου ότι η ύλη που περιλαµβάνει υπερβαίνει σηµαντικά αυτήν που µπορεί να καλυϕθεί σε ένα τυπικό εξα- µηνιαίο µάθηµα, µπορεί να θεωρηθεί ως ένα είδος «εκθετηρίου» από το οποίο έχετε τη δυνατότητα να επιλέξετε την ύλη που ταιριάζει περισσότερο στο µάθηµα που επιθυµείτε να διδάξετε. Ευελπιστούµε ότι η δοµή του βιβλίου θα σας επιτρέψει να οργανώσετε το µάθηµά σας µόνο µε βάση τα κεϕάλαια που θα θεωρήσετε αναγκαία. Έχουµε ϕροντίσει τα διάϕορα κεϕάλαια να είναι σχετικά αυτοτελή, ώστε να µη χρειάζεται να ανησυχείτε για αναπάντεχες και περιττές αλλελεξαρτήσεις µεταξύ τους. Σε κάθε κεϕάλαιο,

xii Πρόλογος παρατίθενται πρώτα τα πιο βατά τµήµατα της ύλης και ακολουθούν τα πιο απαιτητικά, ενώ τα όρια µεταξύ των ενοτήτων σηµατοδοτούν ϕυσιολογικά σηµεία τερµατισµού. Σεένα προπτυχιακό µάθηµα, θα µπορούσαν να χρησιµοποιηθούν µόνο οι αρχικές ενότητες των κεϕαλαίων που θα επιλεγούν. σε ένα µεταπτυχιακό µάθηµα, θα µπορούσε κανείς να καλύψει στο σύνολό τους τα κεϕάλαια που θα επιλέξει. Το βιβλίο περιλαµβάνει περισσότερες από 920 ασκήσεις και περισσότερα από 140 προβλήµατα. Κάθε ενότητα ολοκληρώνεται µε τις αντίστοιχες ασκήσεις, και κάθε κεϕάλαιο µε τα αντίστοιχα προβλήµατα. Οι ασκήσεις συνίστανται εν γένει σε σύντοµα ερωτήµατα που ελέγχουν την αϕοµοίωση της ύλης σε βασικό επίπεδο. Ορισµένες από τις ασκήσεις αποτελούν απλές νοητικές δοκιµασίες αυτοελέγχου, ενώ άλλες είναι περισσότερο ουσιώδεις και προσϕέρονται για ανάθεση κατ οίκον εργασιών. Τα προβλήµατα συνιστούν πιο σύνθετες µελέτες περιπτώσεων στις οποίες συχνά παρουσιάζονται και κάποια συµπληρώµατα της θεωρίας, και αποτελούνται κατά κανόνα από διάϕορα ερωτήµατα τα οποία καθοδηγούν τον σπουδαστή στα βήµατα που θα πρέπει να ακολουθήσει για να ϕτάσει στη λύση. Οι ενότητες και οι ασκήσεις που είναι περισσότερο κατάλληλες για µεταπτυχιακούς παρά για προπτυχιακούς ϕοιτητές επισηµαίνονται µε έναν αστερίσκο ( ). Οι επισηµασµένες ενότητες δεν είναι κατ ανάγκη δυσκολότερες από τις µη επισηµασµένες, αλλά ενδέχεται να απαιτούν υψηλότερο µαθηµατικό υπόβαθρο. Οµοίως, οι επισηµασµένες ασκήσεις ενδέχεται να απαιτούν υψηλότερο υπόβαθρο ή αυξηµένη επινοητικότητα. Προς τον σπουδαστή Ελπίζουµε το βιβλίο αυτό να αποτελέσει για εσάς µια ευχάριστη εισαγωγή στο πεδίο των αλγορίθµων. Έχουµεπροσπαθήσει να παρουσιάσουµεόλους τους αλγορίθµους µε τρόπο βατό και ενδιαϕέροντα. Για να διευκολύνουµε την κατανόηση µη οικείων ή δύσκολων αλγορίθµων, έχουµεακολουθήσει µια βήµα προς βήµα περιγραϕή. Παραθέτουµε επίσης λεπτοµερείς αναϕορές στα µαθηµατικά που απαιτούνται για την κατανόηση της ανάλυσης των αλγορίθµων. Εάν είστε ήδη εξοικειµένοι µε κάποιο γνωστικό αντικείµενο, θα διαπιστώσετε ότι τα κεϕάλαια είναι δοµηµένα έτσι ώστε να µπορείτε να διατρέξετε επί τροχάδην τις εισαγωγικές ενότητες και να προχωρήσετε γρήγορα στα πιο απαιτητικά τµήµατα της ύλης. εδοµένου του µεγάλου όγκου του βιβλίου, το µάθηµά σας θα καλύψει πιθανότητα µόνο ένα τµήµα της συνολικής ύλης του. Ωστόσο, έχουµεκαταβάλει κάθε προσπάθεια ώστε το βιβλίο αυτό, πέραν της χρήσης του ως διδακτικού εγχειριδίου, να αποτελέσει επίσης χρήσιµο βοήθηµα στη µελλοντική σας καριέρα τόσο ως βιβλίο αναϕοράς για µαθηµατικά ζητήµατα όσο και ως τεχνικό εγχειρίδιο. Ποια είναι τα προαπαιτούµενα για τη µελέτη αυτού του βιβλίου; Θα πρέπει να έχετε κάποια εµπειρία στον προγραµµατισµό. Συγκεκριµένα, θα πρέπει να έχετε κατανοήσει τις αναδροµικές διαδικασίες και τις απλές δοµές δεδοµένων, όπως οι συστοιχίες και οι αλυσίδες. Θα πρέπει να έχετε κάποια ευχέρεια στις αποδείξεις µέσω µαθηµατικής επαγωγής. Λίγα τµήµατα του βιβλίου προϋποθέτουν στοιχειώδεις γνώσεις απειροστικού λογισµού. Πέραν αυτών, όλες οι µαθηµατικές τεχνικές που θα χρειαστείτε αναπτύσσονται στα Μέρη I και VIII.

Πρόλογος xiii Προς τον επαγγελµατία Το µεγάλο εύρος των ζητηµάτων που καλύπτει το βιβλίο αυτό το καθιστούν ιδανικό εγχειρίδιο αναϕοράς για αλγορίθµους. Το γεγονός ότι όλα τα κεϕάλαια είναι σχετικά αυτοτελή σας επιτρέπει να εστιάσετε στα ζητήµατα που σας ενδιαϕέρουν περισσότερο. Οι περισσότεροι από τους αλγορίθµους που πραγµατευόµαστε στο βιβλίο αυτό έχουν µεγάλη πρακτική χρησιµότητα. Για τον λόγο αυτό, η µελέτη τους επεκτείνεται και σεζητήµατα υλοποίησης, καθώς και σετεχνικά θέµατα. Για τους λίγους αλγορίθµους που έχουν πρωτίστως θεωρητικό ενδιαϕέρον, συχνά παραθέτουµε πρακτικές εναλλακτικές λύσεις. Εάν θελήσετε να υλοποιήσετε κάποιους από τους αλγορίθµους, θα διαπιστώσετεότι η µετάϕρασή τους απο τον ψευδοκώδικα που χρησιµοποιούµεστην γλώσσα προγραµµατισµού της επιλογής σας είναι αρκετά απλή διαδικασία. Ο ψευδοκώδικας είναι σχεδιασµένος έτσι ώστε η παρουσίαση όλων των αλγορίθµων να χαρακτηρίζεται από σαϕήνεια και λιτότητα. Ως εκ τούτου, δεν ασχολούµαστε µε ζητήµατα διαχείρισης σϕαλµάτων και τεχνολογίας λογισµικού τα οποία βασίζονται σε συγκεκριµένες παραδοχές για το εκάστοτε προγραµµατιστικό περιβάλλον. Στόχος µας είναι να παρουσιάσουµεκάθεαλγόριθµο µεαπλό και άµεσο τρόπο, και να αποϕύγουµετη συσκότιση των βασικών του χαρακτηριστικών από τις ιδιοµορϕίες της κάθεγλώσσας προγραµµατισµού. Προς τους συναδέλϕους µας Έχουµε ϕροντίσει να παραθέσουµε µια εκτενή βιβλιογραϕία καθώς και παραποµπές στη σύγχρονη αρθρογραϕία. Στο τέλος κάθε κεϕαλαίου, παρατίθενται κάποιες «σηµειώσεις» οι οποίες αναϕέρονται σε ζητήµατα ιστορικού ενδιαϕέροντος καθώς και σε βιβλιογραϕικές πηγές. Εντούτοις, οι σηµειώσεις αυτές δεν εξαντλούν τις βιβλιογραϕικές αναϕορές στο πεδίο των αλγορίθµων. Αν και, κρίνοντας από τον όγκο του βιβλίου, θα ήταν µάλλον δύσκολο να το πιστέψει κανείς, πολλοί ενδιαϕέροντες αλγόριθµοι δεν στάθηκε δυνατόν να συµπεριληϕθούν λόγω έλλειψης χώρου. Παρά τα αναρίθµητα αιτήµατα που δεχθήκαµε από σπουδαστές για να συµπεριλάβουµε τις λύσεις των προβληµάτων και των ασκήσεων, επιλέξαµε να µην παραθέσουµε αναλυτικές υποδείξεις για τα προβλήµατα και τις ασκήσεις, προκειµένου οι σπουδαστές να αποϕύγουν τον πειρασµό να ανατρέξουν απλώς στη λύση αντί νατηβρουνοιίδιοι. Αλλαγές στη δεύτερη έκδοση Τι έχει αλλάξει µεταξύ της πρώτης και της δεύτερης έκδοσης αυτού του βιβλίου; Ανάλογα µε το πώς το εξετάζει κανείς, είτε ελάχιστα πράγµατα είτε πάρα πολλά. Όπως µπορεί να διαπιστώσει κανείς µε µια σύντοµη µατιά στον πίνακα περιεχο- µένων, τα κεϕάλαια και οι ενότητες της πρώτης έκδοσης υπάρχουν στην πλειονότητά τους και στη δεύτερη. Έχουµε αϕαιρέσει δύο κεϕάλαια και λίγες ενότητες, και έχουµε προσθέσει τρία νέα κεϕάλαια και τέσσερεις νέες ενότητες, πέραν των νέων αυτών κεϕαλαίων. Εάν προσπαθήσει κανείς να εκτιµήσει το εύρος των αλλαγών µε βάση τον πίνακα των περιεχοµένων, θα συµπεράνει µάλλον ότι δεν υπάρχουν σηµαντικές µεταβολές.

xiv Πρόλογος Εντούτοις, οι αλλαγές στη δεύτερη έκδοση εκτείνονται πολύ πέραν αυτών που ϕαίνονται στον πίνακα των περιεχοµένων. Οι πιο σηµαντικές από αυτές, µε αυθαίρετη σειρά, είναι οι εξής: Στην οµάδα των συγγραϕέων έχει προστεθεί και ο Cliff Stein. Έχουν διορθωθεί κάποια λάθη. Πόσα; Ας πούµε απλώς αρκετά. Υπάρχουν τρία νέα κεϕάλαια: Το Κεϕάλαιο 1 πραγµατεύεται τον ρόλο των αλγορίθµων στις υπολογιστικές διαδικασίες. Το Κεϕάλαιο 5 καλύπτει την πιθανοτική ανάλυση και τους τυχαιοκρατικούς αλγορίθµους. Όπως και στην πρώτη έκδοση, τα αντικείµενα αυτά απαντούν σεδιάϕορα σηµεία του βιβλίου. Το Κεϕάλαιο 29 είναι αϕιερωµένο στον γραµµικό προγραµµατισµό. Σε κεϕάλαια που υπήρχαν και στην πρώτη έκδοση, έχουν προστεθεί νέες ενότητες στα εξής αντικείµενα: στην πλήρη διασπορά (Ενότητα 11.5), σε δύο εϕαρµογές δυναµικού προγραµµατισµού (Ενότητες 15.1 και 15.5), και σεπροσεγγιστικούς αλγορίθµους οι οποίοι βασίζονται σετυχαιοκρατικές διαδικασίες και σε γραµµικό προγραµµατισµό (Ενότητα 35.4). Προκειµένου να εισαγάγουµε τον αναγνώστη στην καθαυτό µελέτη των αλγορίθµων νωρίτερα, έχουµε µετακινήσει τρία από τα κεϕάλαια που αϕορούν το µαθηµατικό υπόβαθρο από το Μέρος I στο Παράρτηµα, το οποίο αποτελεί το Μέρος VIII. Υπάρχουν περισσότερα από 40 νέα προβλήµατα και περισσότερες από 185 νέες ασκήσεις. Έχουµε καθιερώσει την απευθείας χρήση των αναλλοίωτων συνθηκών για την απόδειξη της ορθότητας αλγορίθµων. Η πρώτη αναλλοίωτη συνθήκη εµϕανίζεται στο Κεϕάλαιο 2, ενώ η µέθοδος χρησιµοποιείται συνολικά µερικές δεκάδες ϕορέςσεόλοτοβιβλίο. Πολλές από τις πιθανοτικές αναλύσεις έχουν αναθεωρηθεί. Συγκεκριµένα, χρησιµοποιούµε σε περίπου δέκα περιπτώσεις την τεχνική των «δεικτριών τυχαίων µεταβλητών», η οποία απλοποιεί την πιθανοτική ανάλυση, ιδιαίτερα όταν οι δείκτριες µεταβλητές είναι εξαρτηµένες. Έχουµε επεκτείνει και ανανεώσει τις σηµειώσεις των κεϕαλαίων και τη βιβλιογραϕία. Η βιβλιογραϕία έχει αυξηθεί κατά περίπου 50%, και έχουµεπροσθέσει αναϕορές σε πολλά νέα αποτελέσµατα τα οποία δηµοσιεύθηκαν µετά την κυκλοϕορία της πρώτης έκδοσης. Έχουµε προχωρήσει επίσης στις ακόλουθες αλλαγές: Από το κεϕάλαιο που αϕορά την επίλυση αναδροµικών σχέσεων έχει απαλει- ϕθεί η επαναληπτική µέθοδος. Αντ αυτής, στην Ενότητα 4.2, έχουµε «προαγάγει» τα δένδρα αναδροµής σε καθαυτό µέθοδο επίλυσης. Έχουµε διαπιστώσει ότι η µέθοδος της σχεδίασης δένδρων αναδροµής είναι λιγότερο ευάλωτη σε

Πρόλογος xv σϕάλµατα απ ό,τι η επαναληπτική επίλυση αναδροµικών σχέσεων. Επισηµαίνουµε, ωστόσο, ότι τα δένδρα αναδροµής είναι καλύτερο να χρησιµοποιούνται για τη διατύπωση εικασιών οι οποίες στη συνέχεια επιβεβαιώνονται µέσω της µεθόδου της αντικατάστασης. Η µέθοδος διαµέρισης που χρησιµοποιείται στην ταχυταξινόµηση (Ενότητα 7.1) και ο αλγόριθµος διατακτικών στατιστικών γραµµικού αναµενόµενου χρόνου (Ενότητα 9.2) διαϕέρουν σεσχέση µετην πρώτη έκδοση. Στην έκδοση αυτή, χρησιµοποιούµε τη µέθοδο που έχει αναπτυχθεί από τον Lomuto, η οποία, σε συνδυασµό µε τις δείκτριες τυχαίες µεταβλητές, απλοποιεί κάπως την ανάλυση. Η µέθοδος της πρώτης έκδοσης, η οποία οϕείλεται στον Hoare, παρατίθεται ως πρόβληµα στο Κεϕάλαιο 7. Έχουµετροποποιήσει την περιγραϕή της καθολικής διασποράς (Ενότητα 11.3.3) έτσι ώστε να εντάσσεται στη µελέτη της πλήρους διασποράς. Η ανάλυση του ύψους ενός τυχαία κατασκευασµένου δυαδικού δένδρου αναζήτησης (Ενότητα 12.4) έχει απλοποιηθεί σηµαντικά. Η µελέτη των στοιχείων δυναµικού προγραµµατισµού (Ενότητα 15.3) έχει επεκταθεί σηµαντικά, όπως και η µελέτη των στοιχείων των άπληστων αλγορίθµων (Ενότητα 16.2). Η διερεύνηση του προβλήµατος της επιλογής δραστηριοτήτων, µε το οποίο ξεκινά το κεϕάλαιο των άπληστων αλγορίθµων, διευκολύνει την αποσαϕήνιση της σχέσης µεταξύ δυναµικού προγραµµατισµού και άπληστων αλγορίθµων. Η απόδειξη του χρόνου εκτέλεσης της δοµής δεδοµένων της ένωσης ξένων συνόλων στην Ενότητα 21.4 έχει αντικατασταθεί. Η νέα απόδειξη βασίζεται στην ενεργειακή µέθοδο για τον προσδιορισµό ενός αυστηρού ϕράγµατος. Η απόδειξη της ορθότητας του αλγορίθµου για τις ισχυρά συνδεδεµένες συνιστώσες στην Ενότητα 22.5 έχει γίνει απλούστερη, σαϕέστερη και πιο άµεση. Το Κεϕάλαιο 24, που αναϕέρεται στις οµοαϕετηριακές ελαϕρύτατες διαδροµές, έχει ανασυγκροτηθεί έτσι ώστε οι αποδείξεις των βασικών ιδιοτήτων να ενταχθούν σε µια ξεχωριστή ενότητα. Η νέα δοµή του κεϕαλαίου µας επιτρέπει να εισαγάγουµε νωρίτερα τους σχετικούς αλγορίθµους. Η Ενότητα 34.5 περιλαµβάνει µια διευρυµένη επισκόπηση της NP-πληρότητας καθώς και νέες αποδείξεις της NP-πληρότητας για τα προβλήµατα του χαµιλτονιανού κύκλου και του αθροίσµατος υποσυνόλων. Τέλος, σχεδόν όλες οι ενότητες έχουν τροποποιηθεί προκειµένου να διορθωθούν, να απλοποιηθούν και να αποσαϕηνιστούν οι διάϕορες εξηγήσεις και αποδείξεις. ικτυότοπος Μιαάλληαλλαγήσεσχέσηµετηνπρώτηέκδοσηείναιότιτοβιβλίοδιαθέτειπλέον τον δικό του δικτυότοπο: http://mitpress.mit.edu/algorithms/.μέσω αυτού, µπορείτε να αναϕέρετε σϕάλµατα, να προµηθευτείτε έναν κατάλογο των γνωστών σϕαλµάτων, ή να κάνετε υποδείξεις. τα σχόλιά σας είναι ευπρόσδεκτα. Θα εκτιµούσαµε ιδιαίτερα τις ιδέες σας για νέες ασκήσεις και προβλήµατα, που θα θέλαµε όµως να συνοδεύονται από τις λύσεις τους. υστυχώς, δεν είναι δυνατόν να απαντήσουµε προσωπικά σε όλα τα σχόλια.

xvi Πρόλογος Ευχαριστίες για την πρώτη έκδοση Πολλοί ϕίλοι και συνάδελϕοι έχουν συµβάλει σηµαντικά στην ποιότητα αυτού του βιβλίου. Τους ευχαριστούµε όλους για τη συνδροµή τους και την εποικοδοµητική τους κριτική. Το Εργαστήριο Επιστήµης Υπολογιστών του MIT µας εξασϕάλισε ένα ιδανικό περιβάλλον εργασίας. Οι συνάδελϕοί µας από την Οµάδα Θεωρίας Υπολογισµού του εργαστηρίου προσέϕεραν σηµαντική υποστήριξη και επέδειξαν εξαιρετική υπο- µονή στις συνεχείς παρακλήσεις µας για κριτική αξιολόγηση των διαϕόρων κε- ϕαλαίων. Θα θέλαµενα ευχαριστήσουµειδιαίτερα τους Baruch Awerbuch, Shafi Goldwasser, Λεωνίδα Γκίµπα, Tom Leighton, Albert Meyer, David Shmoys, και Éva Tardos. Ευχαριστούµεεπίσης τους William Ang, Sally Bemus, Ray Hirschfeld, και Mark Reinhold για την εύρυθµη λειτουργία των υπολογιστών µας (DEC Microvax, Apple Macintosh, και Sun Sparcstation) και την επαναµεταγλώττιση του TEX κάθε ϕορά που υπερβαίναµε κάποιο χρονικό όριο µεταγλώττισης. Η Thinking Machines Corporation προσέϕερε την υποστήριξή της στον Charles Leiserson για να ασχοληθεί µε αυτό το βιβλίο κατά τη διάρκεια µιας εκπαιδευτικής άδειας από το MIT. Πολλοί συνάδελϕοι οι οποίοι χρησιµοποίησαν προσχέδια του κειµένου αυτού στη διδασκαλία µαθηµάτων σε άλλες σχολές µας υπέδειξαν αρκετές διορθώσεις και αναθεωρήσεις. Θα θέλαµε να ευχαριστήσουµε ιδιαίτερα τους Richard Beigel, Andrew Goldberg, Joan Lucas, Mark Overmars, Alan Sherman, και Diane Souvaine. Πολλοί βοηθοί καθηγητού στα µαθήµατά µας συνεισέϕεραν σηµαντικά στην ανάπτυξη του υλικού αυτού. Ευχαριστούµειδιαίτερα τους Alan Baratz, Bonnie Berger, Aditi Dhagat, Burt Kaliski, Arthur Lent, Andrew Moulton, Μάριο Παπαευθυµίου, Cindy Phillips, Mark Reinhold, Phil Rogaway, Flavio Rose, Arie Rudich, Alan Sherman, Cliff Stein, Susmita Sur, Gregory Troxel, και Margaret Tuttle. Πολλοί άλλοι προσέϕεραν πολύτιµη τεχνική υποστήριξη. Η Denise Sergent αϕιέρωσε πολλές ώρες στις βιβλιοθήκες του MIT αναζητώντας βιβλιογραϕικές πηγές. Η Maria Sensale, η βιβλιοθηκονόµος του αναγνωστηρίου µας, ήταν πάντοτε προσηνής και εξυπηρετική. Η πρόσβαση που είχαµε στην προσωπική βιβλιοθήκη του Albert Meyer µας απάλλαξεαπό πολλές ώρες απασχόλησης στη βιβλιοθήκη για την προετοιµασία των σηµειώσεων των κεϕαλαίων. Οι Shlomo Kipnis, Bill Niehaus, και David Wilson διόρθωσαν παλιές ασκήσεις, ανέπτυξαν νέες, και προσέθεσαν ση- µειώσεις στις λύσεις τους. Οι Μάριος Παπαευθυµίου και Gregory Troxel βοήθησαν στην ευρετηρίαση των όρων. Επί πολλά χρόνια, οι γραµµατείς µας Inna Radzihovsky, Denise Sergent, Gayle Sherman, και ιδιαιτέρως η Be Blackburn παρείχαν απεριόριστη υποστήριξη στην προσπάθεια αυτή. Τις ευχαριστούµε. Πολλοί ϕοιτητές µάς ανέϕεραν σϕάλµατα στα αρχικά προσχέδια του βιβλίου. Ευχαριστούµειδιαίτερα τους Bobby Blumofe, Bonnie Eisenberg, Raymond Johnson, John Keen, Richard Lethin, Mark Lillibridge, Ιωάννη Πεζάρη, Steve Ponzio, και Margaret Tuttle για την προσεκτική τους ανάγνωση. Επίσης, πολλοί συνάδελϕοι συνέταξαν κριτικές ανασκοπήσεις για συγκεκριµένα κεϕάλαια, ή προσέϕεραν πληροϕορίες για συγκεκριµένους αλγορίθµους, και τους ευχαριστούµεθερµά. Ιδιαίτερα θα θέλαµενα ευχαριστήσουµετους Bill Aiello, Alok Aggarwal, Eric Bach, Vašek Chvátal, Richard Cole, Johan Hastad, Alex Ishii, David Johnson, Joe Kilian, Dina Kravets, Bruce Maggs, Jim Orlin, James Park, Thane Plambeck, Hershel Safer, Jeff Shallit, Cliff Stein, Gil Strang, Bob Tarjan, και Paul Wang. ιάϕοροι συνάδελϕοί µας είχαν επίσης την καλοσύνη να µας προµηθεύ-

Πρόλογος xvii σουν προβλήµατα. ευχαριστούµε ιδιαίτερα τους Andrew Goldberg, Danny Sleator, και Umesh Vazirani. Ήταν χαρά για µας η συνεργασία µε την MIT Press και την McGraw-Hill για τη διαµόρϕωση του κειµένου αυτού. Ευχαριστούµε ιδιαιτέρως τους Frank Satlow, Terry Ehling, Larry Cohen, και Lorrie Lejeune της MIT Press και τον David Shapiro της McGraw-Hill για την ενθάρρυνση, την υποστήριξη και την υποµονή τους, καθώς και τον Larry Cohen για την εξαιρετική επιµέλεια της έκδοσης. Ευχαριστίες για τη δεύτερη έκδοση Όταν ζητήσαµε από την Julie Sussman, P.P.A., να αναλάβει την τεχνική επιµέλεια της δεύτερης έκδοσης, δεν µπορούσαµε να ϕανταστούµε πόσο εύστοχη ήταν η επιλογή µας. Εκτός από την επιµέλεια του κειµένου ως προς το τεχνικό σκέλος, η Julie ανέλαβε επίσης µε ιδιαίτερο ζήλο και τη ϕιλολογική επιµέλεια. Αισθανόµαστε πολύ πιο ταπεινοί όταν σκεπτόµαστε πόσα λάθη εντόπισε η Julie στα αρχικά µας δοκί- µια, παρ ότι αυτό δεν προκαλεί καµία έκπληξη αν αναλογιστούµε πόσα εντόπισε στην πρώτη έκδοση (δυστυχώς, αϕότου είχε εκτυπωθεί). Επιπλέον, η Julie υπερέβη το δικό της χρονοδιάγραµµα προκειµένου να προσαρµοστεί στις δικές µας υποχρεώσεις ϕτάνοντας στο σηµείο να επιµεληθεί κάποια κεϕάλαια ακόµη και σε ένα ταξίδι της στις Παρθένους Νήσους! Julie, όσο και αν σεευχαριστήσουµεγια την καταπληκτική σου δουλειά, δεν θα είναι αρκετό. Η προετοιµασία της δεύτερης έκδοσης πραγµατοποιήθηκε ενόσω οι συγγραϕείς ήταν µέλη του Τµήµατος Επιστήµης Υπολογιστών του Dartmouth College και του Εργαστηρίου Επιστήµης Υπολογιστών του MIT. Και στα δύο αυτά ιδρύµατα, το περιβάλλον εργασίας ήταν ιδιαίτερα ενθαρρυντικό, και θα θέλαµε να ευχαριστήσουµε όλους τους συναδέλϕους µας για την υποστήριξή τους. ιάϕοροι ϕίλοι και συνάδελϕοι ανά την υϕήλιο διατύπωσαν υποδείξεις και απόψεις οι οποίες µας καθοδήγησαν στη συγγραϕή του κειµένου. Ευχαριστούµε πολύ τους Sanjeev Arora, Javed Aslam, Guy Blelloch, Avrim Blum, Scot Drysdale, Hany Farid, Hal Gabow, Andrew Goldberg, David Johnson, Yanlin Liu, Nicolas Schabanel, Alexander Schrijver, Sasha Shen, David Shmoys, Dan Spielman, Gerald Jay Sussman, Bob Tarjan, Mikkel Thorup, και Vijay Vazirani. Πολλοί δάσκαλοι και συνάδελϕοι µας δίδαξαν πολλά σχετικά µε τους αλγορίθ- µους. Θα θέλαµενα ευχαριστήσουµειδιαίτερα τους δασκάλους µας Jon L. Bentley, Bob Floyd, Don Knuth, Harold Kuhn, H. T. Kung, Richard Lipton, Arnold Ross, Larry Snyder, Michael I. Shamos, David Shmoys, Ken Steiglitz, Tom Szymanski, Éva Tardos, Bob Tarjan, και Jeffrey Ullman. Θα πρέπει επίσης να ευχαριστήσουµε πολλούς από τους τους βοηθούς καθηγητού στα µαθήµατα της θεωρίας αλγορίθµων στο MIT και το Dartmouth, µεταξύ των οποίων τους Joseph Adler, Craig Barrack, Bobby Blumofe, Roberto De Prisco, Matteo Frigo, Igal Galperin, David Gupta, Raj D. Iyer, Nabil Kahale, Sarfraz Khurshid, Σταύρο Κολλιόπουλο, Alain Leblanc, Yuan Ma, Maria Minkoff, ηµήτρη Μήτσουρα, Alin Popescu, Harald Prokop, Sudipta Sengupta, Donna Slonim, Joshua A. Tauber, Sivan Toledo, Elisheva Werner-Reiss, Lea Wittie, Qiang Wu, και Michael Zhang. Οι William Ang, Scott Blomquist, και Greg Shomo στο MIT και οι Wayne Cripps, John Konkle, και Tim Tregubov στο Dartmouth µας προσέϕεραν υπολογιστική υποστήριξη. Ευχαριστούµεεπίσης τους Be Blackburn, Don Dailey, Leigh Deacon,

xviii Πρόλογος Irene Sebeda, και Cheryl Patton Wu του MIT και τους Phyllis Bellmore, Kelly Clark, Delia Mauceli, Sammie Travis, Deb Whiting, και Beth Young του Dartmouth για τη διοικητική υποστήριξη. Οι Michael Fromberger, Brian Campbell, Amanda Eubanks, Sung Hoon Kim, και Neha Narula µας προσέϕεραν επίσης σηµαντική βοήθεια στο Dartmouth. Πολλοί αναγνώστες είχαν την καλοσύνη να µας αναϕέρουν σϕάλµατα στην πρώτη έκδοση. Θα θέλαµενα ευχαριστήσουµετους παρακάτω αναγνώστες, καθένας από τους οποίους ανέϕερε πρώτος κάποιο σϕάλµα στην πρώτη έκδοση: Len Adleman, Selim Akl, Richard Anderson, Juan Andrade-Cetto, Gregory Bachelis, David Barrington, Paul Beame, Richard Beigel, Margrit Betke, Alex Blakemore, Bobby Blumofe, Alexander Brown, Xavier Cazin, Jack Chan, Richard Chang, Chienhua Chen, Ien Cheng, Hoon Choi, Drue Coles, Christian Collberg, George Collins, Eric Conrad, Peter Csaszar, Paul Dietz, Martin Dietzfelbinger, Scot Drysdale, Patricia Ealy, Yaakov Eisenberg, Michael Ernst, Michael Formann, Nedim Fresko, Hal Gabow, Marek Galecki, Igal Galperin, Luisa Gargano, John Gately, Rosario Genario, Mihaly Gereb, Ronald Greenberg, Jerry Grossman, Stephen Guattery, Alexander Hartemik, Anthony Hill, Thomas Hofmeister, Mathew Hostetter, Yih-Chun Hu, Dick Johnsonbaugh, Marcin Jurdzinki, Nabil Kahale, Fumiaki Kamiya, Anand Kanagala, Mark Kantrowitz, Scott Karlin, Dean Kelley, Sanjay Khanna, Haluk Konuk, Dina Kravets, Jon Kroger, Bradley Kuszmaul, Tim Lambert, Hang Lau, Thomas Lengauer, George Madrid, Bruce Maggs, Victor Miller, Joseph Muskat, Tung Nguyen, Michael Orlov, James Park, Seongbin Park, Ιωάννης Πασχαλίδης, Boaz Patt-Shamir, Leonid Peshkin, Patricio Poblete, Ira Pohl, Stephen Ponzio, Kjell Post, Todd Poynor, Colin Prepscius, Sholom Rosen, Dale Russell, Hershel Safer, Karen Seidel, Joel Seiferas, Erik Seligman, Stanley Selkow, Jeffrey Shallit, Greg Shannon, Micha Sharir, Sasha Shen, Norman Shulman, Andrew Singer, Daniel Sleator, Bob Sloan, Michael Sofka, Volker Strumpen, Lon Sunshine, Julie Sussman, Asterio Tanaka, Clark Thomborson, Nils Thommesen, Homer Tilton, Martin Tompa, Andrei Toom, Felzer Torsten, Hirendu Vaishnav, M. Veldhorst, Luca Venuti, Jian Wang, Michael Wellman, Gerry Wiener, Ronald Williams, David Wolfe, Jeff Wong, Richard Woundy, Neal Young, Huaiyuan Yu, Tian Yuxing, Joe Zachary, Steve Zhang, FlorianZschoke,καιUriZwick. Πολλοί από τους συναδέλϕους µας προσέϕεραν ενδελεχείς ανασκοπήσεις ή συµπλήρωσαν µακροσκελή ερωτηµατολόγια. Ευχαριστούµε τους Nancy Amato, Jim Aspnes, Kevin Compton, William Evans, Peter Gacs, Michael Goldwasser, Andrzej Proskurowski, Vijaya Ramachandran, και John Reif για την κριτική ανάγνωση κε- ϕαλαίων. Ευχαριστούµεεπίσης τους κάτωθι, για τη συµπλήρωση του ερωτηµατολογίου: James Abello, Josh Benaloh, Bryan Beresford-Smith, Kenneth Blaha, Hans Bodlaender, Richard Borie, Ted Brown, Domenico Cantone, M. Chen, Robert Cimikowski, William Clocksin, Paul Cull, Rick Decker, Matthew Dickerson, Robert Douglas, Margaret Fleck, Michael Goodrich, Susanne Hambrusch, Dean Hendrix, Richard Johnsonbaugh, Κυριάκο Καλορκώτη, Srinivas Kankanahalli, Hikyoo Koh, Steven Lindell, Errol Lloyd, Andy Lopez, Dian Rae Lopez, George Lucker, David Maier, Charles Martel, Xiannong Meng, David Mount, Alberto Policriti, Andrzej Proskurowski, Kirk Pruhs, Yves Robert, Guna Seetharaman, Stanley Selkow, Robert Sloan, Charles Steele, Gerard Tel, Murali Varanasi, Bernd Walter, και Alden Wright. Θα ήµασταν ευτυχείς εάν µπορούσαµε να υλοποιήσουµε όλες τις υποδεί-

Πρόλογος xix ξεις τους. Το µόνο πρόβληµα είναι ότι εάν το κάναµε, η δεύτερη έκδοση θα είχε έκταση περίπου 3000 σελίδες! Η δεύτερη έκδοση συντάχθηκε στο LATEX 2ε. Ο Michael Downes µετέτρεψε τις µακροεντολές του LATEX από το «κλασικό» LATEXστοLATEX2ε, και προσάρµοσεεπίσης τα αρχεία κειµένου προκειµένου να χρησιµοποιούν αυτές τις µακροεντολές. Επίσης, προσέϕερετη βοήθειά του και σεγενικότερα ζητήµατα του L A TEX 2ε. Τα σχήµατα της δεύτερης έκδοσης σχεδιάστηκαν από τους συγγραϕείς µε το πρόγραµ- µα MacDraw Pro. Όπως και στην πρώτη έκδοση, για τη σύνταξη του ευρετηρίου χρησιµοποιήθηκετο Windex, ένα πρόγραµµα σεc το οποίο έχουν κατασκευάσει οι συγγραϕείς, ενώ η βιβλιογραϕία συντάχθηκε µέσω του προγράµµατος µè TEX. Οι Ayorkor Mills-Tettey και Rob Leathern βοήθησαν στη µετατροπή των σχηµάτων στο πρόγραµµα MacDraw Pro, ενώ ο Ayorkor έλεγξε επίσης τη βιβλιογραϕία. Όπως και στην πρώτη έκδοση, η συνεργασία µε την MIT Press και την McGraw- Hill ήταν ιδιαίτερα ευχάριστη. Οι επιµελητές µας, Bob Prior από την MIT Press και Betsy Jones από την McGraw-Hill, ανέχθηκαν τις ιδιορρυθµίες µας και µας παρότρυναν µε«καρότο και µαστίγιο». Τέλος, θα θέλαµενα ευχαριστήσουµετις συζύγους µας Nicole Cormen, Gail Rivest, και Rebecca Ivry τα παιδιά µας Ricky, William, και Debby Leiserson. Alex και Christopher Rivest. και Molly, Noah, και Benjamin Stein και τους γονείς µας Renee και Perry Cormen, Jean και Mark Leiserson, Shirley και Lloyd Rivest, και Irene και Ira Stein για την αγάπη και συµπαράστασή τους κατά τη διάρκεια της συγγραϕής αυτού του βιβλίου. Η ευόδωση της προσπάθειας αυτής οϕείλεται στην υποµονή και την ενθάρρυνση των οικογενειών µας. Τους αϕιερώνουµε το βιβλίο αυτό µεστοργή. Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein Hanover, New Hampshire Cambridge, Massachusetts Cambridge, Massachusetts Hanover, New Hampshire Μάιος2001

I Θεµελιώδεις έννοιες