Συνδυαστική Βελτιστοποίηση Σημειώσεις. Β. Ζησιμόπουλος



Σχετικά έγγραφα
για NP-Δύσκολα Προβλήματα

Αλγόριθμοι Προσέγγισης για NP-Δύσκολα Προβλήματα

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

Chapter 9: NP-Complete Problems

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

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

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

Προηγμένα Θέματα Αλγορίθμων (ΣΗΜΜΥ ΕΜΠ) Αλγόριθμοι Δικτύων και Πολυπλοκότητα (ΕΜΠ - ΑΛΜΑ) Προσεγγιστικοί Αλγόριθμοι.

Αξιολόγηση Ευριστικών Αλγορίθµων

Εξαντλητική Απαρίθµηση

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

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

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

Ακέραιος Γραµµικός Προγραµµατισµός

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

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

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

Ακέραιος Γραµµικός Προγραµµατισµός

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

Branch and Bound. Branch and Bound

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

Ακέραιος Γραμμικός Προγραμματισμός

Ακέραιος Γραμμικός Προγραμματισμός

Αλγόριθµοι Προσέγγισης για NP- ύσκολα Προβλήµατα

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

Προσεγγιστικοί Αλγόριθμοι βασισμένοι σε Γραμμικό Προγραμματισμό

Κεφάλαιο 5ο: Ακέραιος προγραμματισμός

Προσεγγιστικοί Αλγόριθμοι βασισμένοι σε Γραμμικό Προγραμματισμό

ILP-Feasibility conp

Κατανεμημένα Συστήματα Ι

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

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ Λ03Β ΑΛΓΟΡΙΘΜΟΙ ΔΙΚΤΥΩΝ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΦΛΕΒΑΡΗΣ 2004

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

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

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

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

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

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

Μη Ντετερμινισμός και NP-Πληρότητα

Προσεγγιστικοί Αλγόριθμοι βασισμένοι σε Γραμμικό Προγραμματισμό

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

max c 1 x 1 + c 2 x c n x n υπό a 11 x 1 + a 12 x a 1n x n b 1 a 21 x 1 + a 22 x a 2n x n b 2 a m1 x 1 + a m2 x a mn x n b m

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

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

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

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

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

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

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

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

Ακέραιος Γραμμικός Προγραμματισμός

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

Μοντελοποίηση προβληµάτων

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

NP-πληρότητα. Λεωνίδας Παληός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων

Approximation Algorithms for the k-median problem

Λύσεις 4ης Σειράς Ασκήσεων

Κεφάλαιο 6. Μέθοδοι επίλυσης προβλημάτων ακέραιου προγραμματισμού

Προσεγγιστικοί Αλγόριθμοι βασισμένοι σε Γραμμικό Προγραμματισμό

Ευρετικές Μέθοδοι. Ενότητα 1: Εισαγωγή στις ευρετικές μεθόδους. Άγγελος Σιφαλέρας. Μεταπτυχιακό Εφαρμοσμένης Πληροφορικής ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΙ

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

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

Προσεγγιστικοί Αλγόριθμοι βασισμένοι σε Γραμμικό Προγραμματισμό

Κουτσιούμπας Αχιλλέας U. Adamy, C. Ambuehl, R. Anand, T. Erlebach

max 17x x 2 υπό 10x 1 + 7x 2 40 x 1 + x 2 5 x 1, x 2 0.

ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Υπολογιστικά & Διακριτά Μαθηματικά

ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΜΕΘΟΔΟΣ SIMPLEX, διαλ. 3. Ανωτάτη Σχολή Παιδαγωγικής και Τεχνολογικής Εκπαίδευσης 29/4/2017

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ. Κεφάλαιο 3 Μορφοποίηση Προβλημάτων Ακέραιου Προγραμματισμού

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

Θεωρία Αποφάσεων και Βελτιστοποίηση

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

P. Chretienne, E. Coffman, J. Lenstra, Z. Liu Scheduling Theory and its Applications John Wiley & Sons, New York, (1995)

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

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

Γραμμικός Προγραμματισμός Μέθοδος Simplex

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 11: Περιορισμοί της Αλγοριθμικής Ισχύος

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

2 η ΕΝΟΤΗΤΑ ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ. μπλ 2014

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

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

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

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Transcript:

Συνδυαστική Βελτιστοποίηση Σημειώσεις Β. Ζησιμόπουλος Ιανουάριος 2007

Περιεχόμενα 1 Εισαγωγή στη Συνδυαστική Βελτιστοποίηση 3 1.1 Προβλήματα Βελτιστοποίησης.................. 5 1.2 Πρόβλημα Πλανόδιου Πωλητή (TSP)............... 6 1.3 Πρόβλημα Ανάθεσης Εργασιών (Task Assignment)....... 7 1.4 Ανάθεση Εργ ασιών σε Επεξεργ αστές............... 7 1.5 Πολυπλοκότητα.......................... 9 1.6 Γενικός Αλγ όριθμος Βελτιστοποίησης.............. 11 1.7 Μαθηματικός Προγ ραμματισμός................. 11 1.8 Γραμμικός Προγ ραμματισμός.................. 12 2 Ακριβείς Αλγόριθμοι 13 2.1 Branch and Bound....................... 13 2.2 Δυναμικός Προγ ραμματισμός.................. 16 2.2.1 Εφαρμογή στο Πρόβλημα του Σακιδίου......... 18 3 Ακέραιος Προγραμματισμός 21 3.1 Γραμμική Αποδυνάμωση..................... 22 γ 4 Προσεγγιστικοί Αλγόριθμοι 25 4.1 Κλάσεις Προσέγγισης (Approximation Classes)......... 26 4.1.1 Προβλήματα με Προσεγγιστικό Αλγόριθμο Μη Σταθερού Λόγ ου........................... 27 4.1.2 Προβλήματα με Προσεγγιστικό Αλγόριθμο Σταθερού Λόγου 27 4.1.3 Προβλήματα με PTAS................... 27 4.1.4 Προβλήματα με FPTAS.................. 28 4.2 Πρόβλημα Καλύματος Κόμβων (Vertex Cover).......... 28 4.2.1 Ευριστικά ια το Vertex Cover.............. 29 4.2.2 Προσεγγιστικοί Αλγόριθμοι για το Vertex Cover..... 33 4.2.3 Weighted Vertex Cover.................. 34 4.2.4 Πολυωνυμικές Παραλλαγές του Vertex Cover...... 35 4.3 Πρόβλημα Καλύματος Ακμών (Edge Cover)........... 35 1

2 ΠΕΡΙΕΧΟΜΕΝΑ 4.4 Πρόβλημα Τοποθέτησης σε Κάδους (Bin Packing)....... 36 4.5 Πρόβλημα Χρονοπρογραμματισμού (List Scheduling)..... 37 4.6 Πρόβλημα Χρονοπρογραμματισμού σε Γνωστό Πλήθος Επεξεργαστών (M-Processor Scheduling)................ 37 4.6.1 Multifit.......................... 39 4.7 Πρόβλημα Δέντρου Steiner (Steiner Tree)............ 40 4.8 Πρόβλημα Πλανόδιου Πωλητή (Traveling Salesman Problem). 41 4.9 Πρόβλημα Μέγιστου Ανεξάρτητου Υποσυνόλου (Maximum Independent Set).......................... 43 4.9.1 Πολυωνυμικές Παραλλαγές του Maximum Independent Set............................. 44 4.10Πρόβλημα Σακιδίου (Knapsack)................. 45 4.11Πρόβλημα Καλύματος Συνόλου (Set Cover)........... 46 4.12Πρόβλημα Διαμέρισης Συνόλου (Set Partitioning)....... 49 4.13Πρόβλημα Συσκευασίας Συνόλου (Set Packing)......... 50 4.14Απόλυτη Προσέγγιση (Absolute Approximation)........ 50 4.14.1Η απόλυτη προσέγγιση είναι NP-hard.......... 53 4.15Σχήματα Προσέγγισης (Approximation Schemes)........ 53 4.15.1PTAS............................ 54 4.15.2FPTAS........................... 54 4.15.3Δυναμικός Προγ ραμματισμός............... 54 4.16Πρόβλημα Αθροίσματος Υποσυνόλων (Subset Sum)...... 55 4.17Πρόβλημα Μέγ ιστης Τομής (Maximum Cut).......... 59 4.18Πρόβλημα Max-Sat με Τυχαιότητα............... 59 5 Τοπική Αναζήτηση (Local Search) 61 5.1 Εισαγ ωγ ή............................. 61 5.2 Ο Αλγ όριθμος της Τοπικής Αναζήτησης............. 62 5.3 Στρατηγ ικές Αναζήτησης..................... 64 6 Προσομοιωμένη Ανόπτηση (Simulated Annealing) 67 7 Μέθοδοι Νευρωνικών Δικτύων (Neural Network Methods) 69 7.1 Εφαρμογή Τοπικής Αναζήτησης στο Πρόβλημα Μέγιστου Ανεξάρτητου Συνόλου........................... 69 8 PLS Πληρότητα (PLS Completeness) 71

Κεφάλαιο 1 Εισαγωγή στη Συνδυαστική Βελτιστοποίηση Πολύ συχνά τα πρακτικά προβλήματα που συναντάμε είναι προβλήματα της κλάσης NP-complete. Η κλάση αυτή περιλαμβάνει προβλήματα με την ιδιότητα ότι αν υπάρχει αλγόριθμος πολυωνυμικού χρόνου για κάποιο από αυτά, τότε υπάρχει τέτοιος αλγόριθμος και για όλα τα υπόλοιπα. Μέχρι στιγμής δεν έχει ϐρεθεί πολυωνυμικός αλγόριθμος για κανένα και εικάζεται ότι κάτι τέτοιο δεν πρόκειται να συμβεί. Λόγω όμως της κρισιμότητας των εφαρμογών στις οποίες εμφανίζονται, πρέπει να είμαστε σε ϑέση να ϐρίσκουμε λύσεις γι αυτά, παρ όλη τηνέμφυτη δυσκολία επίλυσής τους. Αυτό μπορούμε να το κάνουμε με διάφορους τρόπους, οι σημαντικότεροι από τους οποίους είναι : Να επιταχύνουμε τους υπάρχοντες ακριβείς αλγόριθμους. Για τα περισσότερα από τα προβλήματα που μας ενδιαφέρουν υπάρχουν ακριβείς αλγόριθμοι εξαντλητικής αναζήτησης. Μπορούμε να τους επιταχύνουμε με τις τεχνικές : { διακλάδωσε και ϕράξε (branch and bound), που επιτρέπει να αποκόψουμε τμήμα του δέντρου αναζήτησης υπολογίζοντας ϕράγματα για τη ϐέλτιστη τιμή σε κάθε κόμβο, { δυναμικό προγραμματισμό (dynamic programming), που κάποιες ϕορές δίνει ψευδοπολυωνυμικούς αλγόριθμους. Να περιορίσουμε τις εισόδους. Στις αποδείξεις για την NP-πληρότητα (NP-completeness) λαμβάνουμε υπόψη τη χειρότερη περίπτωση των εισόδων ενός προβλήματος. Συχνά όμως οι είσοδοι που εμφανίζονται στην πράξη είναι πιο καλές, επιτρέποντάς μας να λύσουμε το πρόβλημα πιο εύκολα. Για παράδειγμα, παρόλο που το πρόβλημα SAT είναι 3

4 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ δύσκολο, για το 2SAT, που είναι εξειδίκευση του προηγούμενου, υπάρχει απλός αλγόριθμος πολυωνυμικού χρόνου. Να ϐρούμε προσεγγιστικές λύσεις. Συχνά συναντάμε NP-complete προβλήματα επειδή ϑέλουμε ακριβείς λύσεις. Αν χαλαρώσουμε κάποιο πρόβλημα ώστε να Ϲητάμε απλώς μια καλή λύση, ενδέχεται να μπορούμε να το λύσουμε με αλγόριθμο πολυωνυμικού χρόνου. Για παράδειγμα, υπάρχει greedy αλγόριθμος που δίνει μια προσεγγιστική λύση του προβλήματος SET COVER. Να χρησιμοποιήσουμε ευριστικές μεθόδους. Κάποιες ϕορές δε μπορούμε να κάνουμε απόλυτες προσεγγίσεις, μπορούμε όμως να σχεδιάσουμε αλγόριθμους που ϕαίνεται να δουλεύουν καλά στην πράξη και να δικαιολογήσουμε το γιατί δουλεύουν καλά. Οι πιο συνηθισμένες ευριστικές μέ- ϑοδοι κάνουν τοπική αναζήτηση στο χώρο των λύσεων του προβλήματος, καταλήγοντας σε μια τοπικά ϐέλτιστη λύση. Το μειονέκτημά τους είναι ότι δε μπορούν εύκολα να συγκριθούν. Για το λόγο αυτό έχουν προταθεί διάφορα είδη ανάλυσης : η εμπειρική, η ανάλυση στη μέση και στη χειρότερη περίπτωση. Ο αλγόριθμος γραμμικού προγραμματισμού Simplex για παράδειγμα είναι εκθετικός στη χειρότερη περίπτωση, στην πράξη όμως δουλεύει καλά και έχει επικρατήσει. Να χρησιμοποιήσουμε τυχαιότητα. Το πρόβλημα με τους ακριβείς αλγόριθμους για NP-complete προβλήματα είναι ότι πρέπει κάθε ϕορά να εξετάσουν εκθετικό (ως προς το μέγεθος της εισόδου τους) πλήθος περιπτώσεων πριν καταλήξουν στη λύση, κάτι που οδηγεί σε εκθετική πολυπλοκότητα. Αυτό μπορούμε να το αποφύγουμε αν τους επιτρέψουμε να κάνουν κάποια πράγματα τυχαία. Οι αλγόριθμοι που προκύπτουν λέγονται πιθανοτικοί (randomized ή probabilistic). Μέχρι στιγμής δεν έχουμε καταφέρει να λύσουμε NP-complete προβλήματα χρησιμοποιώντας τυχαιότητα και αυτό μάλλον δεν πρόκειται να γίνει ποτέ. Ομως η τυχαιότητα είναι χρήσιμη όταν σχεδιάζουμε προσεγγιστικούς αλγόριθμους και ευριστικά. Επίσης, αν υποθέσουμε ότι η είσοδος ενός προβλήματος προέρχεται από κατάλληλη τυχαία κατανομή, μπορούμε να σχεδιάσουμε αλγόριθμο που να δουλεύει καλά στη μέση περίπτωση. Στο κεφάλαιο 4 ϑα μελετήσουμε προσεγγιστικούς αλγόριθμους για διάφο- ϱα NP-complete προβλήματα. Στα κεφάλαια 5, 6 και 7 ϑα εξετάσουμε κάποιες ευριστικές μεθόδους : την τοπική αναζήτηση (local search), την προσομοιωμένη ανόπτηση (simulated annealing) και τις μεθόδους νευρωνικών δικτύων (neural network methods) αντίστοιχα. Μέρχι στιγμής, λίγα πράγματα μπορούμε να αποδείξουμε γι αυτές. Ωστόσο έχουν αποδειχθεί καλές στην πράξη και ϕαίνονται λογικές για κάποια προβλήματα.

1.1. ΠΡΟΒΛΗΜΑΤΑ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ 5 1.1 Προβλήματα Βελτιστοποίησης Ενα στιγμιότυπο ενός προβλήματος συνδυαστικής ϐελτιστοποίησης είναι ένα Ϲεύγος < S,f >, όπου S είναι ένα πεπερασμένο σύνολο λύσεων και f : S R μια συνάρτηση κόστους των λύσεων (που πρέπει να μεγιστοποιηθεί ή να ελαχιστοποιηθεί). Ζητάμε μια λύση s S τέτοια ώστε f(s ) f(s), s S αν πρόκειται για πρόβλημα ελαχιστοποίησης ή f(s ) f(s), s S αν πρόκειται για πρόβλημα μεγιστοποίησης. Αντικείμενο της Συνδυαστικής Βελτιστοποίησης είναι να ϐρίσκει την καλύτερη λύση ανάμεσα σε ένα σύνολο λύσεων. Μέχρι στιγμής έχουν προταθεί διάφοροι τρόποι τυποποίησης αυτής της διαδικασίας : η ϕυσική γλώσσα, οι λογικές συνεπαγωγές, οι γράφοι και ο μαθηματικός προγραμματισμός. Συνήθως μας ενδιαφέρουν οι ακέραιες λύσεις. Ασχολούμαστε με NP-hard προβλήματα όπως της περιήγησης οχημάτων, της εγκατάστασης (facility location), της επένδυσης, της ανάθεσης (assignment), του χρονοπρογραμματισμού (scheduling) και της κοπής-τεμαχισμού (cut). Για την επίλυση των NP-πλήρων (NP-complete) προβλημάτων έχουμε στη διάθεσή μας γενικές μεθόδους, που μπορούν να εφαρμοστούν σε οποιοδήποτε πρόβλημα, αλλά και ειδικές, που εξαρτώνται άμεσα από το πρόβλημα για του οποίου την επίλυση σχεδιάζονται. Οι γενικές μέθοδοι συμπεριλαμ- ϐάνουν τους ακριβείς (exact) αλγόριθμους και την τοπική αναζήτηση (local search) με τις επεκτάσεις και τα μεταευριστικά της (meta-heuristics). Σ- τις ειδικές περιλαμβάνονται τα ευριστικά (heuristics) και οι προσεγγιστικοί (approximation) αλγόριθμοι. Στην κλάση NP ανήκουν πολλά ϑεμελιώδη προβλήματα της Συνδυαστικής Βελτιστοποίησης : τα γραφοθεωρητικά προβλήματα ϐελτιστοποίησης, τα προβλήματα σχετικά με τη ϐέλτιστη τοποθέτηση εργασιών σε παράλληλες αρχιτεκτονικές, το πρόβλημα της τετραγωνικής ανάθεσης (quadratic assignment) και τα προβλήματα που έχουν να κάνουν με δίκτυα διασύνδεσης. Οι ακριβείς αλγόριθμοι μπορούν να χρησιμοποιηθούν για την επίλυση στιγμιοτύπων περιορισμένου μεγέθους (που εξαρτάται από το πρόβλημα). Ο χρόνος εκτέλεσής τους ενδέχεται να είναι πολύ μεγάλος. Γενικά δεν είναι εύκολο να παραλληλοποιηθούν. Τα ευριστικά έχουν αποδεκτό χρόνο εκτέλεσης για στιγμιότυπα μεγαλύτερου μεγέθους. Δίνουν μια προσέγγιση της Ϲητούμενης λύσης και είναι συγκεκριμένα για το πρόβλημα για το οποίο ϕτιάχνονται. Και αυτά δεν είναι εύκολο να παραλληλοποιηθούν.

6 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Οι προσεγγιστικοί αλγόριθμοι δίνουν μια εγγύηση της ποιότητας των λύσεων που ϐρίσκουν. Μπορούμε να ορίσουμε και πλήρως πολυωνυμικά προσεγγιστικά σχήματα (fully polynomial-time approximation schemes), τα οποία ϐρίσκουν μια ɛ-προσεγγιστική λύση σε χρόνο πολυωνυμικό ως προς το μέγεθος της εισόδου και το 1/ɛ. Οι μέθοδοι τοπικής αναζήτησης είναι γενικές. Το ϐέλτιστο που ϐρίσκουν είναι τοπικό (και ενδέχεται να απέχει πολύ από το ολικό). Προκειμένου να τις εφαρμόσουμε χρειάζεται να έχουμε στη διάθεσή μας μια αρχική εφικτή λύση, που δεν είναι πάντα το ίδιο εύκολο να υπολογιστεί. Η δομή της γειτονιάς καθώς και ο τρόπος με τον οποίο γίνεται η αναζήτηση εξαρτώνται από το πρόβλημα. Η αρχική λύση επηρεάζει την ποιότητα του ϐέλτιστου. Ηπροσομοιωμένη ανόπτηση (simulatedannealing) είναι επίσης μια γενική τεχνική. Συγκρινόμενη με την τοπική αναζήτηση πλεονεκτεί στο ότι έχει τη δυνατότητα να μην παγιδεύεται σε τοπικά ϐέλτιστα. Δίνει λύσεις καλής ποιότητας και έχει μικρό χρόνο εκτέλεσης. Είναι ασυμπτωτικά ϐέλτιστη, δηλαδή αν την αφήσουμε να εκτελείται επ άπειρον ϑα ϐρει τη ϐέλτιστη λύση. Κατά συνέπεια η προσέγγιση που ϑα πετύχουμε εξαρτάται και από το χρόνο εκτέλεσης. Οι μέθοδοι των νευρωνικών δικτύων είναι επίσης γενικές και έχουν τη δυνατότητα να ξεφεύγουν από τοπικά ϐέλτιστα. Είναι μέθοδοι μαζικά παράλληλες. Είναι ευέλικτες, δηλαδή είναι εύκολο να προστεθούν σ αυτές νέοι πε- ϱιορισμοί. Δεν είναι απαραίτητο να διαθέτουμε αρχικά μια εφικτή λύση. Παράγουν καλές λύσεις. 1.2 Πρόβλημα Πλανόδιου Πωλητή (TSP) Πρόβλημα 1 (TSP). Δίνονται n +1πόλεις. Ζητείται ο συντομότερος κύκλος Hamilton. Πρέπει να εξεταστούν όλες οι μεταθέσεις των n +1πόλεων. Μπορούμε να μοντελοποιήσουμε το πρόβλημα αυτό σαν γραμμικό πρόγραμμα ως εξής : min n i=0 n d ij x ij j=0 n x ij =1, i=0 n x ij =1, j=0 j =0,...,n i =0,...,n

1.3. ΠΡΟΒΛΗΜΑ ΑΝΑΘΕΣΗΣ ΕΡΓΑΣΙΩΝ (TASK ASSIGNMENT) 7 { 1 αν υπάρχει ακμή από την πόλη i στη j, x ij = 0 διαφορετικά. 1.3 Πρόβλημα Ανάθεσης Εργασιών (Task Assignment) Μαςενδιαφέρει ηανάθεσηεργασιώνμετρόπο τέτοιο ώστε να ελαχιστοποιούνται ανάλογα με το πρόβλημα τα κόστη επικοινωνίας, τα κόστη υπολογισμού ή ο συνολικός χρόνος διάρκειας της εκτέλεσής τους. Μπορούμε να ϑέσουμε περιορισμούς στο χρόνο αποπεράτωσης της εκτέλεσης, στην ποσότητα της χρησιμοποιούμενης μνήμης, στο κατά πόσο επιτρέπεται σε όλες τις εργασίες να εκτελεστούν σε οποιοδήποτε επεξεργαστή και στο αν μπορούμε να διπλασιάσουμε κάποιες εργασίες ή όχι. 1.4 Ανάθεση Εργασιών σε Επεξεργαστές Οι περιορισμοί του προβλήματος αυτού είναι οι συνδέσεις ανάμεσα στους επεξεργαστές, η σειρά των εργασιών και το αν μπορούμε να διπλασιάσουμε κάποιες εργασίες ή όχι. Διακρίνουμε δύο οικογένειες προβλημάτων στην περίπτωση αυτή. Στη μία μας ενδιαφέρει να ελαχιστοποιήσουμε το άθροισμα των κοστών επικοινωνίας και υπολογισμού και στην άλλη το χρόνο τερματισμού της εκτέλεσης. Για τη μοντελοποίηση του προβλήματος ορίζουμε τις μεταβλητές { 1 αν η Mi ανατίθεται στον P x ik = k, 0 διαφορετικά. Η αντικειμενική συνάρτηση εκφράζει το κόστος εκτέλεσης και επικοινωνίας ή το χρόνο αποπεράτωσης που απαιτείται για τις εργασίες αντίστοιχα. Ορίζουμε το κόστος εκτέλεσης ως εξής : q ik = κόστος της M i στον P k, i =1,...,m, k =1,...,n. Εστω C ijkl το κόστος επικοινωνίας ανάμεσα στις εργασίες i και j όταν η i είναι στον επεξεργαστή P k και η j στον P l.ανοιp k και P l δεν είναι συνδεδεμένοι, τότε C ijkl =. Επίσης ισχύουν C iikl =0, i και C ijkk =0, k. Το κόστος για έναν επεξεργαστή k είναι το άθροισμα του κόστους εκτέλεσης και του κόστους επικοινωνίας των εργασιών που του έχουν ανατεθεί. Το κόστος εκτέλεσης ορίζεται ως m cp k (x) = x ik q ik. i=1

8 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Το κόστος επικοινωνίας ορίζεται ως cc k (x) = m x ik κόστος επικ. μεταξύ i και όλων των άλλων = i=1 m x ik cc ki (x) i=1 cc ki (x) = m κόστος για k μεταξύ i και j = j=1 j i m m n cc k (x) = x ik ( ( c ijkl x jl )) = i=1 j=1 j i l=1 l k m i=1 Τότε η αντικειμενική συνάρτηση παίρνει τη μορφή : m n ( c ijkl x jl ) j=1 j i m j=1 j i l=1 l k n c ijkl x ik x jl. l=1 l k min k (cp k (x)+cc k (x)) και οι περιορισμοί που ϑέτουμε στις εργασίες είναι : n x ik =1, k=1 i =1,...,m. Εστω s k ο χώρος μνήμης και t k ο συνολικός χρόνος που είναι διαθέσιμα στον επεξεργαστή P k. Εστωεπίσηςs ik ο χώρος μνήμης και t ik οχρόνοςπου απαιτούνται για την εκτέλεση της εργασίας M i στον P k. Τότε οι περιορισμοί στη μνήμη και το διαθέσιμο χρόνο είναι : m s ik x ik s k, k =1,...,n και i=1 m t ik x ik t k, i=1 k =1,...,n. Μπορούμε να εκφράσουμε και άλλους περιορισμούς, όπως το αν μπορούν δυο εργασίες να εκτελεστούν στον ίδιο επεξεργαστή (περιορισμοί εξαίρεσης): e ij (x ik + x jk ) 1 { 1 αν Mi και M με e ij = j μπορούν να εκτελούνται στον P k, k 0 διαφορετικά και το αν μπορεί μια συγκεκριμένη εργασία να εκτελεστεί σε ένα συγκεκριμένο επεξεργαστή (περιορισμοί απαγόρευσης): x ik b ik

1.5. ΠΟΛΥΠΛΟΚΟΤΗΤΑ 9 { 1 αν Mi μπορεί να εκτελείται στον P με b ik = k 0 διαφορετικά. Λαμβάνοντας υπόψη τους περιορισμούς αυτούς, μπορούμε να διαγράψουμε μεταβλητές. Το πρόβλημα στη γενική του μορφή γράφεται ως εξής : min k [ m x ik q ik + i=1 m i=1 m j=1 j i n ] c ijkl x ik x jl l=1 l k έτσι ώστε n k=1 x ik = 1, i =1,...,m m i=1 s ikx ik s k, k =1,...,n m i=1 t ikx ik t k, k =1,...,n e ij (x ik + x jk ) 1, i, j, k x ik = 0 ή 1 Για την ανάθεση εργασιών μπορούμε να χρησιμοποιήσουμε μεθόδους γνωστές από προβλήματα της ϑεωρίας γράφων όπως το ταίριασμα (matching), η ϱοή (flow), η επικάλυψη (covering) και η διαμέριση (partitioning). Μπορούμε επίσης να χρησιμοποιήσουμε τον ακέραιο προγραμματισμό ή τη διάδοση πε- ϱιορισμών. Οι διάφορες προσεγγίσεις γίνονται είτε από την πλευρά της τεχνητής νοημοσύνης ή από την πλευρά της επιχειρησιακής έρευνας ή ακόμα συνδυάζοντας στοιχεία και από τις δύο αυτές περιοχές. 1.5 Πολυπλοκότητα Στα προβλήματα αυτά παρουσιάζει ενδιαφέρον η μελέτη τόσο της εμπειρικής, όσο και της ϑεωρητικής πολυπλοκότητας. Για τη ϑεωρητική πολυπλοκότητα μπορούμε να μελετήσουμε τη ϐέλτιστη, τη μέση ή τη χείριστη περίπτωση. Για την επίλυση των προβλημάτων συνδυαστικής ϐελτιστοποίησης χρησιμοποιούμε τη μέθοδο Simplex, που δημιούργησε ο μαθηματικός George Dantzig το 1947 ή τον αλγόριθμο του Khachiyan (1979). Στο σημείο αυτό ϑα ϑυμηθούμε μερικές έννοιες της ϑεωρίας πολυπλοκότητας. Οταν ένας αλγόριθμος όταν δέχεται είσοδο μεγέθους n εκτελείται σε χρόνο f(n) =n 2 +2 28 n +2 30, λέμε ότι είναι τάξης O(n 2 ). Εστωδυομηχανές M 1 και M 2 τέτοιες ώστε η M 2 είναι 16 ϕορές γρηγορότερη από τη M 1. Τότε για αλγόριθμους διαφορετικής πολυπλοκότητας στον ίδιο χρόνο μπορούμε να επιλύσουμε στιγμιότυπα προβλημάτων με μέγεθος εισόδου που ϕαίνεται στον παρακάτω πίνακα.

10 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Πολυπλοκότητα M 1 M 2 O(2 n ) 10 10 + 4 O(n 2 ) 32 32 4 O(n) 1024 1024 16 O(log n) 2 1024 (2 1024 ) 16 Το πρόβλημα του σακιδίου (Knapsack) διατυπώνεται ως εξής : max n c j x j j=1 n a j x j b j=1 { 1 αν το αντικείμενο j περιέχεται στο σακίδιο, x j = 0 διαφορετικά. Αν ϑέλουμε να λύσουμε το πρόβλημα αυτό εξαντλητικά, πρέπει να ελέγξουμε 2 n διαφορετικές λύσεις. Υποθέτοντας ότι μια πρόσθεση χρειάζεται χρόνο 250 10 9 δευτερόλεπτα και ότι ένας πολλαπλασιασμός διαρκεί όσο περίπου 3 προσθέσεις, στον ακόλουθο πίνακα ϐλέπουμε το χρόνο που απαιτείται για την εκτέλεση στιγμιοτύπων του προβλήματος με διαφορετικά μεγέθη εισόδου. Μέγεθος εισόδου (n) Χρόνος εκτέλεσης (δευτερόλεπτα) 10 10 2 20 20 50 5 10 10 1000... Στον πίνακα που ακολουθεί ϐλέπουμε την εξέλιξη στο χρόνο επίλυσης του προβλήματος σακιδίου για 1000 μεταβλητές : Ετος Χρόνος Greenberry, Hegerich 1970 4990 Fayard, Plateau 1971 4502 Horowitz, Sahni 1974 2770 Lauriere 1976 860 Martello, Toth 1978 203 Fayard, Plateau 1979 82 83 Balas, Zemel 1980 105 Martello, Toth 1981 100 Metairie, Polian, Fayard 1988 36

1.6. ΓΕΝΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ 11 1.6 Γενικός Αλγόριθμος Βελτιστοποίησης Εστω ένα πρόβλημα B, V (B) ηϐέλτιστητιμήτουκαιd οχώροςτων λύσεών του. Ζητείται να ϐρεθεί x τέτοιο ώστε V (B) =cx =max{cx x D}. Εκτελούμε τα ακόλουθα ϐήματα : 1. Αρχικοποίηση : ϐρίσκουμε το κάτω ϕράγμα της V (B), ϐρίσκουμε το άνω ϕράγμα της V (B), V(B) =cx V (B) =cx. 2. Ελάττωση του χώρου των λύσεων D με : διαγραφή μεταβλητών, διαγραφή περιορισμών, προσθήκη περιορισμών. 3. Επίλυση του μειωμένου προβλήματος με : αλγεβρικές μεθόδους, δυναμικό προγραμματισμό, μεθόδους απαρίθμησης. 1.7 Μαθηματικός Προγραμματισμός Ενα πρόβλημα μεγιστοποίησης διατυπώνεται με τη ϐοήθεια του γραμμικού προγραμματισμού ως εξής : max cx Ax b x 0 x {0, 1} A =(a ij ) 1 i m 1 j n Αν x R και η αντικειμενική συνάρτηση και οι περιορισμοί είναι γραμμικά, τότε το πρόγραμμα αυτό λύνεται με τους αλγόριθμους των Dantzig (1947), Kachiyan (1979) και Karmarkar (1984). Ομως ενδέχεται να έχουμε μη γραμμική αντικειμενική συνάρτηση και περιορισμούς, ή και να ενδιαφερόμαστε για ακέραιες μόνο λύσεις.

12 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ I A X = b I _ I _ I Σχήμα 1.1: Ο υπολογισμός της λύσης του συστήματος Ax = b. 1.8 Γραμμικός Προγραμματισμός Θεωρούμε το γραμμικό σύστημα : Ax = b Αυτό, σύμφωνα με το σχήμα 1.1, γράφεται ισοδύναμα : A I x I + A I x I = b A I x I = b A I x I x I =(A I ) 1 b (A I ) 1 A I x I. Η τιμή της αντικειμενικής συνάρτησης γίνεται : cx = c I x I +c I x I = c I (A I ) 1 b c I (A I ) 1 A I x I +c I x I = c I (A I ) 1 b+[c I c I (A I ) 1 A I ]x I.

Κεφάλαιο 2 Ακριβείς Αλγόριθμοι Στο κεφάλαιο αυτό παρουσιάζουμε μερικές από τις πιο συχνά χρησιμοποιούμενες ακριβείς (exact) μεθόδους επίλυσης προβλημάτων συνδυαστικής ϐελτιστοποίησης. 2.1 Branch and Bound Η μέθοδος Branch and Bound αποτελείται από επαναλαμβανόμενες ε- ϕαρμογές διαχώρισης και εκτίμησης στο χώρο των λύσεων του προβλήματος. Κατά τη διαχώριση γίνεται διαμέριση του χώρου αναζήτησης σε μικρότεραυποσύνολα,ενώηεκτίμησηαφοράτηνεύρεσητουπάνωϕράγματοςτης ϐέλτιστης λύσης, δηλαδή μιας υπερεκτίμησης της ϐέλτιστης τιμής της αντικειμενικής συνάρτησης μέσα στο υποδένδρο. Κύριο ϱόλο παίζουν οι στρατηγικές που ακολουθούμε για τη διαχώριση και τη διάσχιση του χώρου αναζήτησης κατά την εφαρμογή της μεθόδου. Για τη διαχώριση έχουμε να αποφασίσουμε ποια υποσύνολα του χώρου αναζήτησης ϑα σχηματίζουμε ενώ για τη διάσχιση πρέπει να καθορίσουμε τη σειρά με την οποίαϑαεξετάζουμεταυποσύνολααυτά. Εναπαράδειγμαδιαχώρισηςενός χώρου με 3 μεταβλητές παρουσιάζεται στο σχήμα 2.1. Το σύνολο S στη ϱίζα του δέντρου περιλαμβάνει όλες τις συμβολοσειρές που αποτελούνται από 0 και 1 (S = {0, 1} n ). Στο S i ανήκουν αυτές στις οποίες x i =0,ενώστοS i αυτές στις οποίες x i =1. Αντίστοιχα, στο S ij ανήκουν οι συμβολοσειρές στις οποίες x i =0και x j =1. Προφανώς για στα σύνολα αυτά ισχύουν σχέσεις της μορφής : S ijk S ij S i S. Η επιλογή της μεταβλητής ϐάσει της οποίας ϑα γίνει η διαχώριση μ- πορεί να γίνει στην τύχη, συστηματικά, ϐάσει της εμπειρίας του παρελθόντος ή επιλύοντας ένα υποπρόβλημα. Η επιλογή της μεταβλητής διαχώρισης επηρεάζει το χρόνο εύρεσης της λύσης και το πλήθος των κόμβων που χρειάζε- 13

14 ΚΕΦΑΛΑΙΟ 2. ΑΚΡΙΒΕΙΣ ΑΛΓΟΡΙΘΜΟΙ x =0 1 S x =1 1 x =0 2 S _ 1 x =1 2 x =0 2 S 1 x =1 2 S 12 S _ 12 S _ 12 S 12 x =0 3 x =1 3 x =0 3 x =1 3 x =0 3 x =1 x =0 3 x =1 3 3 S 123 S 123 S 123 S _ 123 S 123 S _ 123 S _ 123 S 123 Σχήμα 2.1: ται να ανιχνευθούν για να ϐρεθεί η λύση. Η εκτίμηση για ένα πρόβλημα ελαχιστοποίησης (αντίστοιχα και για πρόβλημα μεγιστοποίησης) γίνεται ως εξής : Εστω S i ένας κόμβος στο δέντρο. Θεω- ϱούμε μια εκτίμηση f(s i ) γι αυτόν, δηλαδή ένα κάτω ϕράγμα της καλύτερης λύσης στο υποδέντρο που ϐρίσκεται κάτω από αυτόν, τέτοια ώστε : f(s i ) min x S i {cx}. Εστω x μια προσεγγιστική ακέραια λύση με z = cx, τέτοιαώστε: { > z, δε συνεχίζουμε τη διαχώριση του Si αν f(s i ) z, συνεχίζουμε. Η ποιότητα της λύσης που παίρνουμε εξαρτάται από το χρόνο που δίνουμε στη μέθοδο για να εκτελεστεί. Προφανώς για μια πολύ καλή εκτίμηση απαιτείται περισσότερος χρόνος από ότι για μια χονδρική εκτίμηση. Συνήθως κάνουμε ένα συμβιβασμό σε αυτή τη ϐάση. Οι πιο συνηθισμένες στρατηγικές διάσχισης είναι η κατά πλάτος, η κατά ϐάθος, η πρώτα ο καλύτερος και η πρώτα ο χειρότερος. Η ϑεωρητική πολυπλοκότητα της μεθόδου είναι εκθετική. Πρακτικά μπορεί να μετρηθεί με ϐάση τον απαιτούμενο χρόνο ή το χώρο μνήμης (πλήθος επισκεπτόμενων κόμβων). Στο σχήμα 2.2 ϐλέπουμε ένα παράδειγμα εφαρμογής της διάσχισης με ϐάση την καλύτερη εκτίμηση. Παράδειγμα 1. Εστω ότι ϑέλουμε να ελαχιστοποιήσουμε την αντικειμενική συνάρτηση min z = 20x 1 16x 2 11x 3 9x 4 7x 5 x 6

2.1. BRANCH AND BOUND 15 x =0 1 S x =1 1 (-23, 3) S _ S (-26) 1 1 x =0 x =1 2 2 S 12 S _ 12 S _ 12 (-25, 5) 0/ (+oo) S 123 0/ (+oo) Σχήμα 2.2: έτσι ώστε 9x 1 +8x 2 +6x 3 +5x 4 +4x 5 + x 6 12 x j {0, 1}. Εστω C ji ο συντελεστής του x i στην αντικειμενική συνάρτηση z και α ji ο συντελεστής του στον περιορισμό. Παρατηρούμε ότι ισχύει C j1 α j1 C j2 α j2... C jn α jn. Η συνεχής λύση του προβλήματος είναι η x 1 =1,x 2 = 3 που δίνει z = 8 26. Χρησιμοποιώντας greedy (άπληστο) αλγόριθμο, ϐρίσκουμε την ακέραια λύση : x 1 =1,x 2 =1που δίνει z = 21. Διαχωρίζοντας το χώρο των λύσεων με ϐάση τη μεταβλητή x 1,έχουμε: { 8x2 +6x 1, S 1 : 3 +5x 4 +4x 5 + x 6 3 x 1 = { min 20 16x 2 11x 3 9x 4 7x 5 x 6 8x2 +6x 0, S 1 : 3 +5x 4 +4x 5 + x 6 12 min 16x 2 11x 3 9x 4 7x 5 x 6 ΗσυνεχήςλύσητουS 1 είναι η x 2 = 3, που δίνει z = 26. Η συνεχής λύση 8 του S 1 είναι η x 2 =1,x 3 = 2 3, που δίνει z = 70 3 23.3.

16 ΚΕΦΑΛΑΙΟ 2. ΑΚΡΙΒΕΙΣ ΑΛΓΟΡΙΘΜΟΙ Στο σχήμα 2.3 ϐλέπουμε ένα παράδειγμα διαχωρισμού του χώρου των λύσεων ξεκινώντας από το σύνολο S 1 (πρώτα κατά πλάτος αναζήτηση). Στην περίπτωση αυτή, για να ϐρούμε τη λύση αρκεί να εξετάσουμε μόνο 17 κόμ- ϐους από τους 2 7 1 που είναι συνολικά. 2.2 Δυναμικός Προγραμματισμός Στο δυναμικό προγραμματισμό η επίλυση ενός προβλήματος γίνεται μέσω της επίλυσης επιμέρους αλληλοεπικαλυπτόμενων υποπροβλημάτων. Καθένα από τα υποπροβλήματα λύνεται μία μόνο ϕορά και η ϐέλτιστη λύση απο- ϑηκεύεται και ανακαλείται όταν χρειάζεται. Η ϐασική αρχή του δυναμικού προγραμματισμού είναι το ότι κάθε υποστρατηγική μιας ϐέλτιστης στρατηγικής είναι η ίδια ϐέλτιστη. Για να επιλύσουμε ένα πρόβλημα με δυναμικό προγραμματισμό, το εντάσσουμε σε μια οικογένεια προβλημάτων της ίδιας ϕύσης και συνδέουμε τις ϐέλτιστες λύσεις τους με μια αναδρομική σχέση. Παράδειγμα 2. Εστω το γραμμικό πρόγραμμα : max n c j x j j=1 n α j x j b j=1 x j {0, 1}. Μπορούμε να το εντάξουμε στην οικογένεια προβλημάτων : k f k (y) =max{ c j x j j=1 n α j x j y, x j {0, 1}, j =1,...,k} j=1 που αναδρομικά γράφεται ως εξής : { fk 1 (y), αν y α f k (y) = k max{f k 1 (y), c k + f k 1 (y α k )}, διαφορετικά. Δεδομένου ότι 0 y b, 1 k n και f k (0) = 0, η ϐέλτιστη λύση του προβλήματος είναι ίση με f n (b). Για την εύρεση της λύσης δίνουμε στα x k (y) τιμές ως εξής : { 0, αν fk (y) =f x k (y) = k 1 (y) 1, διαφορετικά.

2.2. ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 17 x =0 1 S x =1 1 (-23, 3) S _ (-26) S 1 1 x =0 2 x =1 2 S 12 S _ 12 (-23, 3) S _ 12 (-25, 5) 0/ (-27, 7) (-25, 4) (+oo) (-23, 2) S 123 S _ 123 S 123 0/ (+oo) (-25, 2) (+oo) S 1234 S 1234 S 1234 0/ (-23) (+oo) (+oo) S 12345 0/ (-21) (+oo) Σχήμα 2.3:

18 ΚΕΦΑΛΑΙΟ 2. ΑΚΡΙΒΕΙΣ ΑΛΓΟΡΙΘΜΟΙ Η πολυπλοκότητα της μεθόδου του δυναμικού προγραμματισμού είναι τάξης O(nb) ως προς το χρόνο και τάξης O(b) ως προς τη μνήμη. Πρόκειται δηλαδή για ψευδοπολυωνυμικό αλγόριθμο. Παράδειγμα 3. Εστω η οικογένεια προβλημάτων : k n g k (z) =min{ a j x j c j x j z, x j {0, 1}, j =1,...,k} με Τότε j=1 j=1 k {1,...,n}, z {1,..., n c j }. j=1 g k (z) =min{g k 1 (z), α k + g k 1 (z c k )}. Εστω V (B) η ϐέλτιστη τιμή του προβλήματος. Τότε V (B) = min{z N g n (z +1)>b}. Ισχύουν { +, αν z>c1 g 1 (z) = α 1, διαφορετικά. και z {1,..., V (B) }, όπουv (B) η ϐέλτιστη λύση του συνεχούς προβλήματος. Η πολυπλοκότητα της μεθόδου είναι O(n V (B)),δηλαδή O(n min{b, V (B)}), οπότε ο αλγόριθμος είναι ψευδοπολυωνυμικός. 2.2.1 Εφαρμογή στο Πρόβλημα του Σακιδίου Θεωρούμε ένα στιγμιότυπο του προβλήματος του σακιδίου (knapsack), που περιγράφεται από το ακόλουθο γραμμικό πρόγραμμα : έτσι ώστε max z =20x 1 +16x 2 +11x 3 +9x 4 +7x 5 + x 6 9x 1 +8x 2 +6x 3 +5x 4 +4x 5 + x 6 12 x j {0, 1}. Φτιάχνουμε τον παρακάτω πίνακα. 0 1 2 3 4 5 6 7 8 9 10 11 12 1 0 0 0 0 0 0 0 0 0 20 20 20 20 2 0 0 0 0 0 0 0 0 16 20 20 20 20 3 0 0 0 0 0 11 11 11 16 20 20 20 20 4 0 0 0 0 9 11 11 11 16 20 20 20 20 5 0 0 0 0 9 11 11 11 16 20 20 20 23 6 0 1 1 1 7 9 11 12 16 20 21 21 23

2.2. ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 19 Για να ϐρούμε τη λύση, κάνουμε τα ϐήματα που ϕαίνονται στον ακόλουθο πίνακα. 0 1 2 3 4 5 6 7 8 9 10 11 12 1 0 0 0 0 0 0 0 0 0 20 1 20 1 20 1 20 1 2 0 0 0 0 0 0 0 0 16 1 20 0 20 0 20 0 20 0 3 0 0 0 0 0 0 11 1 11 1 16 0 20 0 20 0 20 0 20 0 4 0 0 0 0 0 9 11 11 16 0 20 20 20 20 5 0 0 0 0 7 9 11 11 16 0 20 0 20 0 20 0 23 1 6 0 1 1 1 1 1 1 7 0 9 0 11 0 12 1 16 0 20 0 21 1 21 23 0 Είναι x 6 (12) = 0 x 5 (12) = 1, 12 x 5 (12) a 5 =8 x 4 (8) = 0 x 2 (8) = 1, 8 8=0 και αυτό τον υπολογισμό τον κάνουμε n ϕορές. Η χρονική πολυπλοκότητα της εύρεσης της λύσης είναι τάξης O(n(b +1)) O(nb). Η απαιτούμενη μνήμη είναι τάξης O(b).

20 ΚΕΦΑΛΑΙΟ 2. ΑΚΡΙΒΕΙΣ ΑΛΓΟΡΙΘΜΟΙ

Κεφάλαιο 3 Ακέραιος Προγραμματισμός Θεωρούμε το γραμμικό πρόγραμμα : έτσι ώστε min Z = cx Ax = b x 0 1 i m 1 j n a ij,b i,c j N, i, j. Τα x που ικανοποιούν τους περιορισμούς ανήκουν στο σύνολο : P = {x x R n, Ax = b, x 0} που είναι ϕραγμένο και μη κενό. Αν μια μεταβλητή x j παίρνει k διαφορετικές ακέραιες τιμές, μπορούμε να τηνεκφράσουμεμετηϐοήθειαp δυαδικών μεταβλητών (μεταβλητών με τιμές από το {0, 1}). Πιο συγκεκριμένα, μπορούμε να γράψουμε το x j στη μορφή x j = y 0 +2y 1 +4y 2 +...+2 i y i +...+2 p 1 y p 1 με p = log 2 k και y i {0, 1}, i =0,...,p 1. Παράδειγμα 4. Για να μετατρέψουμε το γραμμικό πρόγραμμα min Z =3x 1 4x 2 x 1 +2x 2 6 2 x 1 4 1 x 2 3 x 1,x 2 N 21

22 ΚΕΦΑΛΑΙΟ 3. ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ σε ένα αντίστοιχο με δυαδικές μόνο μεταβλητές, χρειαζόμαστε 5 τέτοιες μεταβλητές. Αν x 1 = 2+y 1 +2y 2 +4y 3 x 2 = 1+y 4 +2y 5 το παραπάνω γραμμικό πρόγραμμα γράφεται ισοδύναμα : min Z = 10 + 3y 1 +6y 2 +12y 3 4y 4 8y 5 y 1 +2y 2 +4y 3 +2y 4 +4y 5 6 y 1 +2y 2 +4y 3 6 y 4 +2y 5 2 y i {0, 1} Ενα γραμμικό πρόγραμμα στο οποίο οι μεταβλητές μπορούν να έχουν μόνο ακέραιες τιμές, για παράδειγμα ένα πρόγραμμα της μορφής : min Z = cx Ax = b x 0 1 j n x j N j ονομάζεται ακέραιο γραμμικό πρόγραμμα (integer linear program). Θεωρούμε το ακέραιο γραμμικό πρόγραμμα min Z = 10x 1 11x 2 10x 1 +12x 2 59 x 1,x 2 N. Στο αντίστοιχο συνεχές πρόβλημα, η ϐέλτιστη τιμή της αντικειμενικήςς συνάρτησης είναι η Z = 59 που προκύπτει για (x 1,x 2 )=(5.9, 0). Αν στρογγυλοποιήσουμε τις τιμές των x 1,x 2 στις πλησιέστερες ακέραιες, που είναι οι (x 1,x 2 )= (6, 0), η αντικειμενική συνάρτηση ϑα πάρει τιμή Z = 60, που όμως δεν είναι ϐέλτιστη. Πράγματι, η ϐέλτιστη τιμή του ακέραιου προγράμματος επιτυγχάνεται για (x 1,x 2)=(1, 4) και είναι η Z = 54. 3.1 Γραμμική Αποδυνάμωση Θεωρούμε το ακέραιο γραμμικό πρόγραμμα min 15x 1 +2x 2 4x 3 +10x 4 x 3 x 4 0 x 1 +2x 2 +4x 3 +8x 4 =20 x 2 + x 4 1 x 1,x 2,x 3,x 4 {0, 1}.

3.1. ΓΡΑΜΜΙΚΗ ΑΠΟΔΥΝΑΜΩΣΗ 23 optimum solution integer program s feasible solutions linear relaxation s feasible solutions Σχήμα 3.1: Η ϐέλτιστη λύση ενός ακέραιου προγράμματος ϕράσσεται από τη ϐέλτιστη λύση της γραμμικής αποδυνάμωσής του. Αν επιτρέψουμε στις μεταβλητές x j,j=1, 2, 3, 4, να παίρνουν όλες τις τιμές στο διάστημα [0, 1], το γραμμικό πρόγραμμα που προκύπτει ονομάζεται γραμμική αποδυνάμωση (linear relaxation) του αρχικού. Οι γραμμικές αποδυναμώσεις μας δίνουν ϕράγματα για τις λύσεις των ακέραιων προγραμμάτων. Η σχέση μεταξύ των λύσεων ακέραιων προγραμμάτων και των αποδυναμώσεών τους είναι σχέση υποσυνόλου-υπερσυνόλου και απεικονίζεται στο σχήμα 3.1. Αν V (P ) είναι η ϐέλτιστη λύση ενός προβλήματος P και V (R) η ϐέλτιστη λύση της γραμμικής του αποδυνάμωσης R, τότε αν πρόκειται για πρόβλημα μεγιστοποίησης ισχύει V (R) V (P ), ενώ αν πρόκειται για πρόβλημα ελαχιστοποίησης ισχύει V (R) V (P ). Παράδειγμα 5 (Πρόβλημα Μεγιστοποίησης). Θεωρούμε το ακέραιο γραμμικό πρόγραμμα P : max x 1 + x 2 + x 3 x 1 + x 2 1 x 1 + x 3 1 x 2 + x 3 1 x i {0, 1}, i=1, 2, 3. Η ϐέλτιστη τιμή του είναι η V (P )=1, που προκύπτει για τη λύση x = (1, 0, 0). Η ϐέλτιστη τιμή της γραμμικής του αποδυνάμωσης R είναι η V (R) = 3 2, που προκύπτει για τη λύση x =(1 2, 1 2, 1 2 ). Παράδειγμα 6 (Πρόβλημα Ελαχιστοποίησης). Θεωρούμε το ακέραιο γραμμικό πρόγραμμα P : min 20x 1 +9x 2 +7x 3 10x 1 +4x 2 +3x 3 7 x i {0, 1}, i=1, 2, 3.

24 ΚΕΦΑΛΑΙΟ 3. ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η ϐέλτιστη τιμή του είναι η V (P )=16, που προκύπτει για τη λύση x = (0, 1, 1). Η ϐέλτιστη τιμή της γραμμικής του αποδυνάμωσης R είναι η V (R) = 14, που προκύπτει για τη λύση x =( 7, 0, 0). 10 Και στα δύο προηγούμενα παραδείγματα, αν η λύση x (της γραμμικής αποδυνάμωσης) είναι εφικτή για το P, τότε είναι ϐέλτιστη για το P.

Κεφάλαιο 4 Προσεγγιστικοί Αλγόριθμοι Τα ευριστικά μπορεί να είναι χρήσιμα στην πράξη, συνήθως όμως ϑέλουμε να έχουμε εγγυήσεις για την ποιότητα των λύσεων. Τέτοιες εγγυήσεις μας παρέχουν οι προσεγγιστικοί αλγόριθμοι. Σημειώνεται εδώ ότι οι προσεγγιστικοί αλγόριθμοι δε συμπεριφέρονται πάντα το ίδιο καλά με τα ευριστικά. Άλλες ϕορές συμβάλλουν στην κατανόηση του προβλήματος, ϐοηθώντας μας να ορίσουμε καλά ευριστικά. Οταν μιλάμε για κάποιον προσεγγιστικό αλγόριθμο, δίνουμε και έναν λόγο προσέγγισης. Ο λόγος προσέγγισης είναι ο λόγος του κόστους της λύσης του συγκεκριμένου προσεγγιστικού αλγορίθμου προς το κόστος της ϐέλτιστης λύσης. Προσπαθούμε να σχεδιάζουμε προσεγγιστικούς αλγόριθμους με λόγο όσο το δυνατό κοντά στο 1. Αν πρόκειται για πρόβλημα ελαχιστοποίησης, ο λόγος αυτός είναι μεγαλύτερος του 1 για πρόβλημα μεγιστοποίησης είναι μικρότερος του 1. Εστω ένας προσεγγιστικός αλγόριθμος A που αντιστοιχεί ένα στιγμιότυπο I κάποιου προβλήματος σε μια τιμή f A (I). Εστωεπίσηςˆf(I) ηϐέλτιστηλύση για το στιγμιότυπο I. Ορίζουμε τα ακόλουθα μέτρα ποιότητας των λύσεων του αλγορίθμου A: απόλυτο λάθος : ε α = ˆf(I) f A (I) σχετικό λάθος : ε r = ˆf(I) f A (I). ˆf(I) Ο λόγος προσέγγισης 1 (approximation ratio) του αλγορίθμου A ορίζεται ως : ρ = f A(I) ˆf(I) =1+εr, για πρόβλημα ελαχιστοποίησης και 1 λέγεται και συντελεστής απόδοσης 25

26 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ρ = ˆf(I) f A (I) = 1, για πρόβλημα μεγιστοποίησης. 1 εr Σημειώνεται ότι ρ 1. Επίσης ορίζουμε το διαφορικό λόγο (differential ratio) του αλγορίθμου A ως εξής : ε d = worst(i) f A(I) worst(i) ˆf(I) Τα προβλήματα που προσεγγίζονται με σταθερό λόγο προσέγγισης ρ λέμε ότι ανήκουν στην κλάση APX. 4.1 Κλάσεις Προσέγγισης (Approximation Classes) Οταν δείξουμε ότι ένα πρόβλημα ϐελτιστοποίησης είναι NP-complete, το ενδιαφέρον μας μετατοπίζεται στο αν υπάρχουν ɛ-προσεγγιστικοί αλγόριθμοι γι αυτό. Και αν ναι, πόσο μικρό μπορεί να είναι το ɛ; Η κλάση των NP-complete προβλημάτων ϐελτιστοποίησης μπορεί να χωριστεί περαιτέρω σύμφωνα με το πόσο καλά μπορεί να προσεγγιστεί κάθε πρόβλημα που περιέχει. Ετσι διακρίνουμε τρεις μεγάλες κατηγορίες : Μη προσεγγίσιμα προβλήματα, για τα οποία δεν υπάρχει 2 ɛ-προσεγγιστικός αλγόριθμος για σταθερό ɛ, οσοδήποτε μεγάλο. Τα TSP, Clique, Maximum Independent Set, Set Cover ανήκουν σε αυτή την κατηγορία, που παρουσιάζουμε αναλυτικότερα στην ενότητα 4.1.1. Μερικώς προσεγγίσιμα προβλήματα, για τα οποία υπάρχουν ɛ-προσεγγιστικοί αλγόριθμοι πολυωνυμικού χρόνου για κάποιες σταθερές τιμές του ɛ> 0, αλλά 3 οι τιμές αυτές δεν μπορούν να γίνουν οσοδήποτε μικρές ϑέλουμε. Παραδείγματα προβλημάτων που ανήκουν στην κλάση αυτή είναι το Vertex Cover και το Max SAT. Οι κατηγορίες προβλημάτων που περιλαμβάνονται εδώ παρουσιάζονται στις ενότητες 4.1.2 και 4.1.3. Πλήρως προσεγγίσιμα προβλήματα, για τα οποία υπάρχει ɛ-προσεγγιστικός αλγόριθμος πολυωνυμικού χρόνου για κάθε ɛ>0, οσοδήποτε μικρό. Το πρόβλημα Two-Machine Scheduling, στο οποίο πρέπει να αναθέσουμε ένα σύνολο εργασιών σε δύο μηχανές έτσι ώστε να ελαχιστοποιήσουμε το χρόνο περάτωσης της εκτέλεσής τους, ανήκει σε αυτή την κατηγορία. Παρουσιάζουμε την κατηγορία αυτή στην ενότητα 4.1.4. Οι παραπάνω κατηγορίες παριστάνονται σχηματικά στο σχήμα 4.1. 2 εκτός εάν P=NP 3 εκτός αν P=NP

4.1. ΚΛΑΣΕΙΣ ΠΡΟΣΕΓΓΙΣΗΣ (APPROXIMATION CLASSES) 27 TSP Clique MIS Set Cover non constant p Vertex Cover Max Cut ÄTSP Multiway Cut Multiprocessor Scheduling Bin Packing Fixed Processor Scheduling Subset Sum Knapsack constant p PTAS FPTAS Σχήμα 4.1: Οι κλάσεις προσέγγισης. 4.1.1 Προβλήματα με Προσεγγιστικό Αλγόριθμο Μη Στα- ϑερού Λόγου Σε αυτή την κλάση προσεγγισιμότητας ανήκουν τα προβλήματα για τα οποία υπάρχει προσεγγιστικός αλγόριθμος, ο λόγος όμως προσέγγισης του εξαρτάται από το μέγεθος του προβλήματος. Τέτοια προβλήματα είναι αυτά του πλανόδιου πωλητή (TSP), του μέγιστου ανεξάρτητου συνόλου (MIS), της κλίκας (Clique) και του καλύματος συνόλου (Set Cover). 4.1.2 Προβλήματα με Προσεγγιστικό Αλγόριθμο Σταθερού Λόγου Σε αυτή την κλάση προσεγγισιμότητας ανήκουν τα προβλήματα για τα οποία υπάρχει προσεγγιστικός αλγόριθμος με σταθερό λόγο προσέγγισης. Τέτοια προβλήματα είναι αυτά του καλύματος κόμβων (Vertex Cover), της μετρικής περίπτωσης του πλανόδιου πωλητή (ΔTSP), το Max Cut και το Multiway Cut. 4.1.3 Προβλήματα με PTAS Σε αυτή την κλάση προσεγγισιμότητας ανήκουν τα προβλήματα για τα οποία υπάρχει PTAS. Τέτοια προβλήματα είναι αυτά του χρονοπρογραμ-

28 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ v 1 v 2 v 1 v 2 v 1 v 2 v 6 v 3 v 6 v 3 v 6 v 3 v 5 v 4 v 5 v 4 v 5 v 4 (a) (b) (c) Σχήμα 4.2: Ενα παράδειγμα για το Vertex Cover. (a) Ο γράφος του πα- ϱαδείγματος, (b) Ενα vertex cover του γράφου, (c) Το ελάχιστο vertex cover. ματισμού πολλών επεξεργαστών (Multiprocessor Scheduling) και της τοπο- ϑέτησης σε κάδους (Bin Packing). 4.1.4 Προβλήματα με FPTAS Σε αυτή την κλάση προσεγγισιμότητας ανήκουν τα προβλήματα για τα οποία υπάρχει FPTAS. Τέτοια προβλήματα είναι αυτά του αθροίσματος υποσυνόλων (Subset Sum), του σακιδίου (Knapsack) και του χρονοπρογραμματισμού σταθερού πλήθους επεξεργαστών (Fixed Processor Scheduling). 4.2 Πρόβλημα Καλύματος Κόμβων (Vertex Cover) Θεωρούμε το ακόλουθο πρόβλημα. Πρόβλημα 2 (Vertex Cover). Δοθέντος ενός μη κατευθυνόμενου γράφου G = (V,E), ναϐρεθείτοελάχιστοv V τέτοιο ώστε [u, v] E u V ή v V. Ζητάμε δηλαδή το ελάχιστο δυνατό υποσύνολο των κόμβων του γράφου, από το οποίο ϕαίνονται όλες οι πλευρές του. Το σύνολο αυτό λέγεται κάλυμα κόμβων (vertex cover) του γράφου. Ενα κάλυμα κόμβων του γράφου του σχήματος 4.1(a), το V = {v 1,v 2,v 4,v 5,v 6 }, ϕαίνεται στο 4.1(b). Ενα minimal κάλυμά του, το V = {v 1,v 2,v 4,v 5 }, ϕαίνεται στο 4.1(c). Το πρόβλημα αυτό το συναντάμε όταν για παράδειγμα ϑέλουμε να ϐρούμε σε ποιες διασταυρώσεις των διαδρόμων ενός μουσείου χρειάζεται να τοποθετήσουμε κάμερες έτσι ώστε να ελέγχουμε όλους τους διαδρόμους. Είναι ειδική

4.2. ΠΡΟΒΛΗΜΑ ΚΑΛΥΜΑΤΟΣ ΚΟΜΒΩΝ (VERTEX COVER) 29 περίπτωση του προβλήματος καλύματος συνόλου που ϑα μελετήσουμε στην ενότητα 4.11. Το πρόβλημα του Καλύματος Κόμβων είναι NP-complete. Μπορούμε όμως να ϐρούμε κάποιες καλές λύσεις του (που ίσως να μην είναι οι ϐέλτιστες) χρησιμοποιώντας κατάλληλα ευριστικά (heuristics). Στην ενότητα που ακολου- ϑεί ϑα εξετάσουμε την ποιότητα αυτών των λύσεων. 4.2.1 Ευριστικά για το Vertex Cover Το πρώτο ευριστικό που ϑα μελετήσουμε ϐασίζεται στην ιδέα ότι το κάλυμα ϑα περιέχει λίγους κόμβους αν καθένας από αυτούς καλύπτει πολλές ακμές. Ετσι, αφού Ϲητάμε το ελάχιστο δυνατό κάλυμα, εισάγουμε σε αυτό κάθε ϕορά τον κόμβο που καλύπτει τις περισσότερες από τις ακμές του γράφου από αυτές που δεν έχουν καλυφθεί ακόμα. Το greedy αυτό ευριστικό είναι το 4.1. Αλγόριθμος 4.1 Ευριστικό για το Vertex Cover V όσο E Επίλεξε v V με μέγιστο ϐαθμό V V {v} διάγραψε τις προσκείμενες στο v πλευρές επέστρεψε το V Ας δούμε ένα παράδειγμα εφαρμογής του. Το ελάχιστο δυνατό Κάλυμα Κόμβων του γράφου του σχήματος 4.3(a) ϕαίνεται στο σχήμα 4.3(b). Χρησιμοποιώντας το ευριστικό, εισάγουμε στο κάλυμα αρχικά τον κόμβο v 1 (σχήμα 4.3(c)) και στη συνέχεια τους κόμβους v 2,v 3,v 4 και v 5, οπότε προκύπτει το κάλυμα του σχήματος 4.3(d) (το οποίο προφανώς δεν είναι ϐέλτιστο). Ο λόγος προσέγγισης σε αυτή την περίπτωση είναι ρ = 5 και το σχετικό σφάλμα 4 ε r = 25%. Ομως το σφάλμα ενδέχεται να είναιπιο μεγάλο. Ας δούμε για παράδειγμα το γράφο του σχήματος 4.4. Ο γράφος αυτός αποτελείται από n a-κόμβους ϐαθμού n +2, n +2 b- κόμβους ϐαθμού n +1και n +2 c-κόμβους ϐαθμού 1 (εδώ n =3). Το ϐέλτιστο κάλυμα αποτελείται από τους n +2 b-κόμβους. Χρησιμοποιώντας το ευριστικό ϑα εισάγουμε αρχικά στο κάλυμα τους n a-κόμβους και εν συνεχεία τους n +2 b-κόμβους, καταλήγοντας σε ένα κάλυμα 2n +2κόμβων. Ο λόγος προσέγγισης στην περίπτωση αυτή είναι ρ = 2n+2 2, οπότε n+2 το σχετικό σφάλμα είναι ε r = 100%, δηλαδήηλύσηπουϑαϐρούμεέχει διπλάσιο μέγεθος από τη ϐέλτιστη.

30 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ (a) (b) (c) (d) Σχήμα 4.3: Ενα ευριστικό για το Vertex Cover. (a) Ο γράφος του παραδείγματος, (b) Το ϐέλτιστο vertex cover του γράφου, (c) Το vertex cover μετά την πρώτη εφαρμογή του ευριστικού, (d) Το vertex cover που δίνει το ευριστικό. c 1 c 2 c 3 c 4 c 5 b 1 b 2 b 3 b 4 b 5 a 1 a 2 a 3 Σχήμα4.4:Οισκιασμένοικόμβοιαποτελούν το vertex cover του γράφου.

4.2. ΠΡΟΒΛΗΜΑ ΚΑΛΥΜΑΤΟΣ ΚΟΜΒΩΝ (VERTEX COVER) 31 c 1 c 2 c 3 c 4 c 5 c 6 b 1 b 2 b 3 b 4 b 5 b 6 a a 2 a 3 a 1 4 a 5 a 6 a 7 Σχήμα 4.5: Οι σκιασμένοι κόμβοι αποτελούν το vertex cover του γράφου. Μπορεί το σφάλμα να ξεπεράσει το 100%; Θεωρούμε το γράφο του σχήματος 4.5. Ο γράφος αυτός περιέχει nc-κόμβους, nb-κόμβους (εδώ n =6) και έναν a-κόμβο για κάθε σύνολο σε κάθε διαμέριση των b-κόμβων, ο οποίος συνδέεται με όλους τους κόμβους του συνόλου στο οποίο αντιστοιχεί. Στο συγκεκριμένο παράδειγμα, οι b-κόμβοι μπορούν να διαμεριστούν σχηματ ιζοντας 3 Ϲεύγη ή 2 τριάδες ή 1 τετράδα ή 1 πεντάδα. Το ϐέλτιστο κάλυμα αποτελείται και πάλι από τους nb-κόμβους. Χρησιμοποιώντας το ευριστικό, εισάγουμε αρχικά στο κάλυμα όλους τους a-κόμβους και εν συνεχεία τους nb-κόμβους, καταλήγοντας σε ένα κάλυμα 13 κόμβων. Ο λόγος προσέγγισης στην περίπτωση αυτή είναι ρ =1+ 7, οπότε το σχετικό σφάλμα είναι 6 ε r > 100%, δηλαδή ϑα ϐρούμε λύση με μέγεθος μεγαλύτερο του διπλάσιου της ϐέλτιστης. Προφανώς, αυξάνοντας το n μπορούμε να πετύχουμε σφάλμα οσοδήποτε μεγάλο. Στους γράφους αυτής της μορφής, ο τελευταίος a-κόμβος έχει πάντα το μεγαλύτερο ϐαθμό. Άρα η λύση του ευριστικού έχει μέγεθος {a-κόμβοι} + n = L(n) +n, ενώ η ϐέλτιστη λύση έχει μέγεθος {b-κόμβοι} = n. Ετσι ο λόγος προσέγγισης του ευριστικού είναι ρ = L(n)+n n =1+ L(n) n 1 n, με L(n) = n j, j=2 οπότε το σχετικό σφάλμα είναι ε r = L(n). Στον ακόλουθο πίνακα ϕαίνεται το n

32 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ v 1 v 1 v 2 v 3 v 4 v 2 v 3 v 4 v 5 v 6 v 7 v 5 v 6 v 7 (a) (b) Σχήμα 4.6: Ενα άλλο ευριστικό για το Vertex Cover. (a) Το vertex cover μετά την πρώτη εφαρμογή του ευριστικού, (b) Το vertex cover που δίνει το ευριστικό. σχετικό σφάλμα συναρτήσει του n για την περίπτωση αυτή : L(n) n n 6 10 30 100 1000... (%) 117 160 267 380 600... Παρατηρούμε ότι το σφάλμα αυξάνει όπως το ln(n). Μια άλλη ιδέα είναι να εξετάζουμε μία-μία τις ακμές του γράφου που έχουν μείνει ακάλυπτες και να εισάγουμε στο κάλυμα τους κόμβους στους οποίους προσπίπτουν. Αυτό το ευριστικό είναι το 4.2. Αλγόριθμος 4.2 Ευριστικό για το Vertex Cover (2) C όσο E Επίλεξε [u, v] E τυχαία C C {u, v} διάγραψε u, v από το γράφο επέστρεψε το C Ας δούμε ένα παράδειγμα εφαρμογής του, στο σχήμα 4.6. Χρησιμοποιώντας το ευριστικό, εξετάζουμε αρχικά την ακμή [v 1,v 2 ] και εισάγουμε στο Κάλυμα τους κόμβους v 1 και v 2 (σχήμα 4.6(a)). Στη συνέχεια εισάγουμε τους κόμβους v 3 και v 6 για να καλύψουμε τη [v 3,v 6 ] καιτέλοςτουςκόμβους v 4 και v 7 για να καλύψουμε τη [v 4,v 7 ] (σχήμα 4.6(b)).

4.2. ΠΡΟΒΛΗΜΑ ΚΑΛΥΜΑΤΟΣ ΚΟΜΒΩΝ (VERTEX COVER) 33 Παρατηρούμε ότι κάθε κάλυμα C που δίνει το ευριστικό περιέχει τουλάχιστον έναν κόμβο από κάθε επιλεγμένη πλευρά. Ομως κανένα κάλυμα δε μπορεί να είναι μικρότερο από 1 2 C. Ο λόγος προσέγγισης σε αυτή την περίπτωση είναι ρ = Heur Opt C 1 =2, C οπότε το σχετικό σφάλμα είναι το πολύ 100%! Ερώτημα : Επιτυγχάνεται το μέγιστο σφάλμα για κάποιο στιγμιότυπο ; 2 4.2.2 Προσεγγιστικοί Αλγόριθμοι για το Vertex Cover Για να μοντελοποιήσουμε το Vertex Cover, ορίζουμε για κάθε i =1,...,n τις μεταβλητές { 1 αν ο vi ανήκει στο cover, x i = 0 διαφορετικά. Τότε το γραμμικό πρόγραμμα για το Vertex Cover είναι το n min έτσι ώστε x i i=1 x i + x j 1, [v i,v j ] E x i {0, 1} v i V Η λύση του προγράμματος αυτού είναι δύσκολο πρόβλημα. Μπορούμε όμως να λύσουμε πιο εύκολα τη γραμμική χαλάρωσή του (linear relaxation) που προκύπτει αν επιτρέψουμε στα x i να παίρνουν τιμές στο διάστημα [0, 1]. Ενας προσεγγιστικός αλγόριθμος για τον υπολογισμό του Vertex Cover είναι ο 4.3. Αλγόριθμος 4.3 Vertex Cover με Rounding C Λύσε το χαλαρωμένο γραμμικό πρόγραμμα για το Vertex Cover έστω x η λύση του για i =1ως n αν x i 1 2 τότε C C {v i } επέστρεψε το C Θεώρημα 1. Ο αλγόριθμος 4.3 είναι 2-προσεγγιστικός για το Vertex Cover.

34 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ Αλγόριθμος 4.4 Vertex Cover με Matching Βρες ένα maximal matching M του G με οποιαδήποτε μέθοδο //π.χ. με greedy αλγόριθμο για κάθε κόμβο v V που πρόσκειται σε ακμή του M V V {v} επέστρεψε το V Ενας άλλος προσεγγιστικός αλγόριθμος για το Vertex Cover είναι ο 4.4. Το σύνολο V που προκύπτει είναι πράγματι ένα κάλυμα κόμβων του γράφου. Πράγματι, κάθε ακμή του γράφου είτε ανήκει στο M, οπότε προσπίπτει σε κόμβους που έχουν εισαχθεί στο V,ήδενανήκειστοM, οπότε έχει μία τουλάχιστον γειτονική ακμή που ανήκει στο M και άρα προσπίπτει σε ένα τουλάχιστον κόμβο του V. Θεώρημα 2. Ο αλγόριθμος 4.4 είναι 2-προσεγγιστικός για το Vertex Cover. Απόδειξη. Το V είναι εφικτή λύση (γιατί ;). M OPT. SOL = V =2 M =2 OPT. 4.2.3 Weighted Vertex Cover Στην εκδοχή του προβλήματος Vertex Cover με ϐάρη, ϑεωρούμε ότι οι κόμβοι του γράφου έχουν ϐάρη και Ϲητάμε το κάλυμα V να είναι ελάχιστου ϐάρους. Εστω w η τρέχουσα συνάρτηση ϐάρους των κόμβων. Το γραμμικό πρόγραμμα για το Weighted Vertex Cover είναι όπως αυτό του Vertex Cover στην προηγούμενη ενότητα, με τη διαφορά ότι εδώ η αντικειμενική συνάρτηση είναι : min n w i x i. i=1 Θεώρημα 3. Ο αλγόριθμος 4.3 είναι 2-προσεγγιστικός για το Weighted Vertex Cover. Απόδειξη. Εστω C το κάλυμα που επιστρέφει ο αλγόριθμος και C το ϐέλτιστο κάλυμα. Συμβολίζουμε με w(c) και w(c ) τα αντίστοιχα κόστη. Εστω επίσης

4.3. ΠΡΟΒΛΗΜΑ ΚΑΛΥΜΑΤΟΣ ΑΚΜΩΝ (EDGE COVER) 35 z το κόστος της λύσης του χαλαρωμένου γραμμικού προγράμματος για το Vertex Cover. Είναι z = n w i x i w i x i i=1 i xi 1 2 i xi 1 2 w i 1 2 = 1 2 w(c). Άρα z 1 2 w(c) w(c) 2z 2w(C ) w(c) w(c ) 2. Ενας άλλος προσεγγιστικός αλγόριθμος για το Weighted Vertex Cover είναι ο 4.5. Αλγόριθμος 4.5 Weighted Vertex Cover όσο υπάρχουν κόμβοι στο γράφο αφαίρεσε όλους τους κόμβους μηδενικού ϐαθμού ϐρες μέγιστο c : v Vc deg(v) w(v) για κάθε v V w(v) :=w(v) c deg(v) πρόσθεσε τους κόμβους μηδενικού ϐάρους στο κάλυμα και αφαίρεσέ τουςαπότογράφο Θεώρημα 4. Ο παραπάνω αλγόριθμος είναι 2-προσεγγιστικός. 4.2.4 Πολυωνυμικές Παραλλαγές του Vertex Cover Οι ακόλουθες κατηγορίες γράφων δίνουν παραλλαγές του Vertex Cover που λύνονται σε πολυωνυμικό χρόνο. Δέντρα/Δάση (Trees/Forests) Γράφοι Διαστημάτων (Interval Graphs) Χορδικοί Γράφοι (Chordal Graphs) Διμερείς Γράφοι (Bipartite Graphs) 4.3 Πρόβλημα Καλύματος Ακμών (Edge Cover) Πρόβλημα 3 (Edge Cover). Δοθέντος ενός μη κατευθυνόμενου γράφου G = (V,E), ναϐρεθείτοελάχιστοe E τέτοιο ώστε v V u V :[u, v] E.

36 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ Ζητάμε δηλαδή το ελάχιστο δυνατό υποσύνολο των ακμών του γράφου, απότοοποίο ϕαίνονται όλοιοικόμβοιτου. Τοσύνολοαυτόλέγεταικάλυμα ακμών (edge cover) του γράφου. Το πρόβλημα αυτό λύνεται σε πολυωνυμικό χρόνο. Θεωρούμε το γραμμικό πρόγραμμα στο οποίο οι μεταβλητές x ij έχουν τιμή : { 1 αν ο κόμβος i πρόσκειται στην ακμή j x ij = 0 στην αντίθετη περίπτωση Η εύρεση του minimum edge cover του G ανάγεται στην ελαχιστοποίηση της αντικειμενικής συνάρτησης : υπό τους περιορισμούς E j=1 V E z = i=1 j=1 x ij x ij 1, i V. Το edge cover που υπολογίζεται ϐρίσκοντας το maximum matching του γράφου κι ενώνοντας κάθε κόμβο εκτός του matching με κάποιο κόμβο εντός του matching με μία ακμή του γράφου, είναι το ελάχιστο. Αυτό εξασφαλίζεται από το γεγονός ότι το maximum matching είναι το minimum edge cover των κόμβων μέσα στο matching. Για τους υπόλοιπους κόμβους δεν μπορούμε να κάνουμε κάτι καλύτερο από το να ενώσουμε τον καθένα μέσω μίας ακμής του γράφου με έναν κόμβο του matching. 4.4 Πρόβλημα Τοποθέτησης σε Κάδους (Bin Packing) Πρόβλημα 4 (Minimum Bin Packing). Εστω n αντικείμενα μεγέθους a 1,a 2,...,a n N και κάδοι χωρητικότητας B. Να ϐρεθεί η τοποθέτηση των αντικειμένων σε κάδους που ελαχιστοποιεί το πλήθος των χρησιμοποιούμενων κάδων. Το πρόβλημα αυτό σχετίζεται με το πρόβλημα stock cutting, στο οποίο ϑέλουμε από δεδομένες πλάκες (ϕύλλα) να κόψουμε πλάκες ορισμένων διαστάσεων έτσι ώστε τα κομμάτια που ϑα περισσέψουν να είναι εύκολο να χρησιμοποιηθούν στο μέλλον. Το να αποφασίσουμε κατά πόσο k κάδοι αρκούν είναι NP-complete. Για την ακρίβεια, δεν υπάρχει α-προσεγγιστικός αλγόριθμος για το Minimum Bin

4.5. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ (LIST SCHEDULING) 37 Packing για α<3/2. Για να το δούμε αυτό, ϑεωρούμε το ακόλουθο πρόβλημα διαμέρισης : Δεδομένων των αντικειμένων μεγέθους a 1,a 2,...,a n [0,S] των οποίων το ολικό άθροισμα είναι 2S, υπάρχει διαμέριση των αντικειμένων σε δύο σύνολα τέτοια ώστε το ολικό μέγεθος κάθε συνόλου να είναι S; Το πρόβλημα αυτό είναι ισοδύναμο με το Αρκούν δύο κάδοι όταν καθένας έχει χωρητικότητα S; Αν είχαμε έναν α-προσεγγιστικό αλγόριθμο (για α<3/2), ϑα μπορούσαμε να λύσουμε το πρόβλημα Partition. Στην πολυωνυμική εκδοχή του Bin Packing, αν έχουμε n αντικείμενα P 1,P 2,...,P n, άπειρο πλήθος κάδων χωρητικότητας B και ισχύει P i > B, i =1,...,n, τότε σε κάθε κάδο χωρούν δύο το πολύ αντικείμενα. Άρα 3 ουσιαστικά Ϲητάμε το μέγιστο πλήθος Ϲευγών αντικειμένων που μπορούμε να σχηματίσουμε. Για παράδειγμα, στο σχήμα... 4.5 Πρόβλημα Χρονοπρογραμματισμού (List Scheduling) 4.6 Πρόβλημα Χρονοπρογραμματισμού σε Γνωστό Πλήθος Επεξεργαστών (M-Processor Scheduling) Πρόβλημα 5 (M-Processor Scheduling). Εστω m πανομοιότυποι επεξεργαστές P 1,P 2,...,P m και n ανεξάρτητες εργασίες με n > m και χρόνους εκτέλεσης t 1,t 2,...,t n αντίστοιχα. Να ϐρεθεί ο ελάχιστος χρόνος περάτωσης της εκτέλεσης των εργασιών, χωρίς προεκχώρηση (preemption). Η μοντελοποίση του προβλήματος, υποθέτοντας ότι οι μηχανές είναι πανομοιότυπες, έχει ως εξής. Για εργασίες i =1,...,n και επεξεργαστές p =1,...,m ορίζουμε τις μεταβλητές { 1 αν η i ανατίθεται στον p, x ip = 0 διαφορετικά. Άρα το πρόβλημα που έχουμε να λύσουμε είναι το min c max έτσι ώστε n i=1 t ix ip c max, p =1,...,m m p=1 x ip = 1, i =1,...,n x ip {0, 1} i =1,...,nκαι p =1,...,m

38 ΚΕΦΑΛΑΙΟ 4. ΠΡΟΣΕΓΓΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ Το παραπάνω πρόβλημα είναι NP-complete, ακόμα και για m =2επεξεργαστές. Ο αλγόριθμος 4.6 είναι ένας προσεγγιστικός αλγόριθμος για το πρόβλημα list scheduling. Αλγόριθμος 4.6 List Scheduling για i =1ως n ανάθεσε την εργασία i στον επεξεργαστή με το μικρότερο ϕόρτο επέστρεψε τα σύνολα εργασιών που ανατέθηκαν σε κάθε επεξεργαστή Παράδειγμα 7 (Εφαρμογή του Αλγορίθμου 4.6). Εστω n =12εργασίες και m =4επεξεργαστές. Η ανάθεση γίνεται όπως ϕαίνεται στο σχήμα... Θεώρημα 5. Ο αλγόριθμος 4.6 είναι 2 1 -προσεγγιστικός για το List Scheduling. m Απόδειξη. Θεωρούμε ένα στιγμιότυπο I του List Scheduling. Εστω ότι ο αλγόριθμος αναθέτει το μεγαλύτερο ϕόρτο στον επεξεργαστή P 1 και ότι ο P 1 ολοκληρώνει την εκτέλεση των εργασιών αυτών σε χρόνο L. Εστω ότι η τελευταία εργασία που ανατίθεται στον P 1 είναι η j (εδώ j =8). Τότε κάθε επεξεργαστής P k,μεk 1έχει συνολικό ϕόρτο L t j, και ο ϕόρτος του P 1 πριν την ανάθεση της j σε αυτόν είναι L t j. Η συνολική διάρκεια εκτέλεσης των n εργασιών είναι n t i m(l t j )+t j (4.1) i=1 και ο ϐέλτιστος χρόνος στον οποίο μπορούμε να πετύχουμε την εκτέλεσή τους είναι n i=1 OPT(I) t i m. (4.2) Από τις (4.1) και (4.2) προκύπτει : OPT(I) (L t j )+ t j m = A(I) (1 1 m )t j (4.3) όπου A(I) είναι ο χρόνος περάτωσης των εργασιών που προκύπτει από την ανάθεσή τους με τον αλγόριθμο 4.6. Επειδή OPT(I) t j, η (4.3) δίνει A(I) OPT(I) 2 1 m.

4.6. ΠΡΟΒΛΗΜΑ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΕ ΓΝΩΣΤΟ ΠΛΗΘΟΣ ΕΠΕΞΕΡΓΑΣΤΩΝ (M-PROCESSO Ο παραπάνω λόγος προσέγγισης είναι tight. Πράγματι, αν ϑεωρήσουμε ένα στιγμιότυπο I του προβλήματος με n = m(m 1) + 1, t 1 = t 2 =...= t n 1 =1και t n = m, τότεopt(i) =m και A(I) =2m 1, οπότε ισχύει A(I) OPT(I) =2 1 m. Η περίπτωση αυτή ϕαίνεται στο σχήμα... Πρόβλημα 6 (Minimum M-Processor Scheduling). Δοθέντων n εργασιών e 1,e 2,...,e n και m επεξεργαστών P 1,P 2,...,P m με m σταθερό, να ϐρεθεί η ανάθεση των εργασιών που ελαχιστοποιεί το makespan (διάρκεια εκτέλεσης χωρίς προεκχώρηση). Για το πρόβλημα αυτό υπάρχει FPTAS. 4.6.1 Multifit Ο προσεγγιστικός αυτός αλγόριθμος (4.7) προτάθηκε από τους Coffman, Garey και Johnson. Αλγόριθμος 4.7 M-Processor Scheduling Διάταξε τις εργασίες σε ϕθίνουσα σειρά του χρόνου εκτέλεσης Υπολόγισε τα κάτω και άνω ϕράγματα c min και c max επανέλαβε c = cmin+cmax 2 για i =1ως n ανάθεσε την i στον πρώτο διαθέσιμο επεξεργαστή αν πλήθος χρησιμοποιούμενων επεξεργαστών >mτότε c min = c αλλιώς c max = c μέχρι c min == c max ή να γίνει ορισμένο πλήθος επαναλήψεων επέστρεψε τα σύνολα εργασιών που ανατέθηκαν σε κάθε επεξεργαστή Θεωρούμε τώρα την περίπτωση που οι εργασίες επικοινωνούν μεταξύ τους και για τη μοντελοποίηση ορίζουμε τις μεταβλητές { 1 αν η Ti επικοινωνεί με την T c ij = j, 0 διαφορετικά. Το πρόβλημα που έχουμε να λύσουμε είναι το min c max