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



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

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

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

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

viii 20 Δένδρα van Emde Boas 543

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

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

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

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Ορισμένες Κατηγορίες Αλγορίθμων

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

Θέματα Προγραμματισμού Η/Υ

4 Μέρος I Θεμελιώδεις έννοιες τμήματος δεν είναι τόσο η παρουσίαση νέων μαθηματικών εννοιών, αλλά κυρίως η αποσαϕήνιση των συμβολιστικών συμβάσεων που

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Άπληστοι Αλγόριθμοι. Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Κλάσεις Πολυπλοκότητας

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Ασυμπτωτικός Συμβολισμός

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

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

1 Ο Λύκειο Ρόδου. Β ΓΕΛ ΕισΑρχΕπ Η/Υ. Γεωργαλλίδης Δημήτρης

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

Άπληστοι Αλγόριθµοι. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Άπληστοι Αλγόριθµοι 1

υναμικός Προγραμματισμός

Δυναμικός Προγραμματισμός

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

ρυθιμός αύξησης συναρτήσεων

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

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

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

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

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

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος

ΑΛΓΟΡΙΘΜΟΙ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία:

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

υναμικός Προγραμματισμός

Δυναμικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 1

υναμικός Προγραμματισμός

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

Επιστημονικοί Υπολογισμοί (ή Υπολογιστική Επιστήμη)

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

Δομές Δεδομένων Ενότητα 2

Πληροφορική ΙΙ Ενότητα 1

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Βασικές Αρχές Προγραμματισμού

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

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

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

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Πρόβλημα 37 / σελίδα 207

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 10: ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΓΙΑ ΠΡΟΒΛΗΜΑΤΑ ΜΕ ΑΠΑΓΟΡΕΥΤΙΚΟ ΑΡΙΘΜΟ ΠΕΡΙΠΤΩΣΕΩΝ

Μη γράφετε στο πίσω μέρος της σελίδας

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ

Συστήματα Παραγωγής ΠΑΡΑΔΕΙΓΜΑ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Πληροφορική 2. Αλγόριθμοι

Δυναμικός Προγραμματισμός

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 1: Εισαγωγή

ΠΑΡΑΔΕΙΓΜΑΤΑ ΘΕΜΑ Β. Να βρείτε τις ασύμπτωτες της γραφικής παράστασης της συνάρτησης f με τύπο

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΓΕ0170 -Αλγόριθμοι και Προηγμένες Προγραμματικές Τεχνικές. Εισαγωγή. Νίκος Αθανάσης.

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

Εισαγωγή Στις Αρχές Της Επιστήμης Των Η/Υ. Η έννοια του Προβλήματος - ΚΕΦΑΛΑΙΟ 2

Υπολογιστική Πολυπλοκότητα

Transcript:

Παύλος Εφραιμίδης 1

περιεχόμενα αλγόριθμοι τεχνολογία αλγορίθμων 2

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

υπολογιστικό πρόβλημα ένας αλγόριθμος μπορεί να θεωρηθεί ως ένα εργαλείο για την επίλυση ενός καλά καθορισμένου υπολογιστικού προβλήματος παράδειγμα ενός υπολογιστικού προβλήματος: ταξινόμηση μιας ακολουθίας αριθμών 4

ταξινόμηση είσοδος: μια ακολουθία n αριθμών α 1,α 2,..,α n έξοδος: μια μετάθεση (αναδιάταξη) α 1,α 2,..,α n τέτοια ώστε α 1 α 2.. α n 5

παράδειγμα ταξινόμησης είσοδος: 31, 41, 59, 26, 41, 58 έξοδος: 26, 31, 41, 41, 58, 59 Η ταξινόμηση της ακολουθίας 31, 41, 59, 26, 41, 58 είναι ένα στιγμιότυπο του προβλήματος της ταξινόμησης 6

πρόβλημα και στιγμιότυπο προβλήματος ταξινόμηση ακολουθίας αριθμών: το πρόβλημα η ταξινόμηση της ακολουθίας 31, 41, 59, 26, 41, 58 είναι ένα στιγμιότυπο του προβλήματος της ταξινόμησης 7

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

προβλήματα που επιλύονται με αλγορίθμους 9

αλγοριθμικά προβλήματα Παραδείγματα: πρόγραμμα ανθρώπινου γονιδιώματος: απαιτεί περίτεχνους αλγορίθμους για πλήθος προβλημάτων διαδίκτυο: η διαχείριση του τεράστιου όγκου δεδομένων που μας παρέχει απαιτεί έξυπνους αλγορίθμους ηλεκτρονικό εμπόριο βιομηχανική παραγωγή και άλλες εμπορικές δραστηριότητες 10

προβλήματα που εξετάζονται στο βιβλίο περιοδεύων πωλητής βέλτιστη ακολουθία πολλαπλασιασμού πινάκων επίλυση εξισώσεων υπολοιπικής αριθμητικής (θεωρία αριθμών) εύρεση κυρτού καλύμματος για n σημεία στο επίπεδο 11

χαρακτηριστικά ορισμένων αλγορίθμων υπάρχουν πολλές υποψήφιες λύσεις, οι περισσότερες από τις οποίες δεν ανταποκρίνονται στις απαιτήσεις μας υπάρχουν πρακτικές εφαρμογές 12

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

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

δραστικοί αλγόριθμοι (efficient algorithms) θα ασχοληθούμε με δραστικούς αλγορίθμους το συνηθέστερο μέτρο της δραστικότητας ενός αλγορίθμου είναι η ταχύτητά του, δηλαδή πόσο χρόνο απαιτεί για να παραγάγει την έξοδό του υπάρχουν υπολογιστικά προβλήματα για τα οποία δε γνωρίζουμε κανέναν δραστικό αλγόριθμο 15

δύσκολα προβλήματα (hard problems) ένα ενδιαφέρον υποσύνολο των δύσκολων προβλημάτων είναι τα NP-πλήρη (NP-Complete) προβλήματα Μέχρι σήμερα: δεν έχει βρεθεί κανένας δραστικός αλγόριθμος για κανένα NPπλήρες πρόβλημα δεν έχει αποδειχθεί ότι δεν μπορεί να υπάρξει δραστικός αλγόριθμος για NP-πλήρη προβλήματα (ανκαιηεκτίμησηείναιότιδενμπορείναυπάρξει) τα NP-πλήρη προβλήματα σχετίζονται με τέτοιο τρόπο ώστε: εάν υπάρξει δραστικός αλγόριθμος για οποιοδήποτε από τα NPπλήρη προβλήματα, τότε θα προκύψουν δραστήριοι αλγόριθμοι για όλα τα NP-πλήρη προβλήματα 16

οι αλγόριθμοι ως τεχνολογία 17

υπολογιστικοί πόροι εάν υπήρχαν υπολογιστές με άπειρη ταχύτητα δωρεάν (άπειρη) μνήμη ο μόνος λόγος για την μελέτη αλγορίθμων θα ήταν η ορθότητα αλγορίθμων στην πράξη οι υπολογιστικοί πόροι είναι πεπερασμένοι και ανεπαρκείς για πολλές πρακτικές εφαρμογές επομένως προσπαθούμε να εφαρμόσουμε τις καλύτερες αλγοριθμικές λύσεις 18

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

σύγκριση δύο αλγόριθμοι: ενθετική ταξινόμηση: c 1 n 2 συγχωνευτική ταξινόμηση: c 2 n log 2 n ισχύεί ότι συνήθως c1 < c2 Παρόλα αυτά η συγχωνευτικής ταξινόμηση υπερέχει έναντι της ενθετικής ταξινόμησης 20

ταξινόμηση 1000000 αριθμών Έστω υπολογιστής Α που εκτελεί 1 δις εντολές το δευτερόλεπτο Α με ενθετική ταξινόμηση: περίπου 2000 δευτερόλεπτα Α με συγχωνευτική ταξινόμηση: περίπου 100 δευτερόλεπτα 21

οι αλγόριθμοι ως τεχνολογία οι αλγόριθμοι είναι ένα είδος τεχνολογίας όπως πχ. το υλισμικό (hardware) του υπολογιστή 22

αλγόριθμοι και άλλες τεχνολογίες είναι οι αλγόριθμοι σημαντικοί όσο άλλες τεχνολογίες; πχ. υλισμικό υψηλών επιδόσεων γραφικές διεπαφές (GUI graphical user interfaces) αντικειμενοστρεφή συστήματα τοπικά δίκτυα και δίκτυα ευρείας περιοχής ηαπάντησηείναιναι(αν δεν παινέψεις το σπίτι σου...) 23

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

Αναφορές/Πηγές Εισαγωγή στους αλγόριθμους, Κεφάλαιο 1 25