Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. http://xkcd.com/287/
Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. Πως μπορούμε να αντιμετωπίσουμε το γεγονός ότι είναι απίθανη(;) η ανακάλυψη πολυωνυμικών αλγορίθμων για αυτά τα προβλήματα; Αλγόριθμοι εκθετικού χρόνου μπορεί να είναι αποδεκτοί για εισόδους μικρού μεγέθους Είναι πιθανό να υπάρχουν πολυωνυμικοί αλγόριθμοι για σημαντικές ειδικές περιπτώσεις Είναι πιθανό να μπορούμε να βρούμε σχεδόν βέλτιστες λύσεις σε πολυωνυμικό χρόνο
Σε πολλές περιπτώσεις μας ικανοποιεί μια προσεγγιστική λύση Ένας προσεγγιστικός αλγόριθμος υπολογίζει σε πολυωνυμικό χρόνο μία λύση η οποία είναι εγγυημένα «κοντά» στη βέλτιστη λύση Λόγος προσέγγισης Έστω τιμή της λύσης του προσεγγιστικού αλγορίθμου για είσοδο τιμή της βέλτιστης λύσης για είσοδο Πρόβλημα μεγιστοποίησης: Ο αλγόριθμος έχει λόγο προσέγγισης αν για κάθε είσοδο μεγέθους ( -προσεγγιστικός αλγόριθμος)
Σε πολλές περιπτώσεις μας ικανοποιεί μια προσεγγιστική λύση Ένας προσεγγιστικός αλγόριθμος υπολογίζει σε πολυωνυμικό χρόνο μία λύση η οποία είναι εγγυημένα «κοντά» στη βέλτιστη λύση Λόγος προσέγγισης Έστω τιμή της λύσης του προσεγγιστικού αλγορίθμου για είσοδο τιμή της βέλτιστης λύσης για είσοδο Πρόβλημα ελαχιστοποίησης: Ο αλγόριθμος έχει λόγο προσέγγισης αν για κάθε είσοδο μεγέθους ( -προσεγγιστικός αλγόριθμος)
Προσεγγιστικό σύστημα Προσεγγιστικός αλγόριθμος που δέχεται στην είσοδο στιγμιότυπο επιπλέον μια τιμή και Για οποιοδήποτε συγκεκριμένο -προσεγγιστικό αλγόριθμο. το προσεγγιστικό σύστημα αποτελεί Ο χρόνος εκτέλεσης αυξάνει όσο μειώνεται το. Είναι πολυωνυμικός ως προς το μέγεθος του στιγμιότυπου αλλά όχι απαραίτητα ως προς το π.χ. Πλήρως πολυωνυμικό προσεγγιστικό σύστημα Προσεγγιστικό σύστημα στο οποίο ο χρόνος εκτέλεσης είναι πολυωνυμικός τόσο ως προς το μέγεθος του στιγμιότυπου όσο και ως προς το π.χ.
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων Απλός αλγόριθμος Αρχικοποίηση : Όσο επιλέγουμε μια ακμή θέτουμε αφαιρούμε από το κάθε ακμή και
Κομβικό κάλυμμα Γράφημα Ένα υποσύνολο κορυφών είναι κομβικό κάλυμμα αν για κάθε ακμή έχουμε ή (ή και τα δύο) Πρόβλημα βελτιστοποίησης : Θέλουμε κομβικό κάλυμμα με το ελάχιστο αριθμό κόμβων βέλτιστη λύση
Κομβικό κάλυμμα Ο απλός αλγόριθμος είναι 2-προσεγγιστικός αλγόριθμος πολυωνυμικού χρόνου Έστω το σύνολο των ακμών που επέλεξε ο αλγόριθμος: Το κομβικό κάλυμμα αποτελείται από τους κόμβους που είναι άκρα των ακμών του επομένως Κάθε ακμή του καλύπτεται από έναν τουλάχιστον κόμβο του βέλτιστου καλύμματος. Επιπλέον στο δεν υπάρχουν ακμές με κάποιο κοινό άκρο. Επομένως
Το πρόβλημα του περιοδεύοντος πωλητή Ένας πωλητής πρέπει να επισκεφτεί πόλεις και να καταλήξει στην πόλη όπου ξεκίνησε την περιοδεία του, ελαχιστοποιώντας το συνολικό κόστος μετακίνησης Θεσσαλονίκη 13 2 Ιωάννινα Κοζάνη 4 4 5 Λάρισα 16 7 12 5 8 3 Βόλος 8 4 19 Πάτρα 16 Αθήνα 11 Ηράκλειο
Το πρόβλημα του περιοδεύοντος πωλητή Πλήρες γράφημα Συνάρτηση κόστους 2 1 4 5 5 2 Περιοδεία (κύκλος Hamilton): Κύκλος που επισκέπτεται κάθε κόμβο ακριβώς μια φορά Πρόβλημα βελτιστοποίησης : Θέλουμε μια περιοδεία ελάχιστου συνολικού κόστους Για ένα σύνολο ακμών ορίζουμε το κόστος του ως
Το πρόβλημα του περιοδεύοντος πωλητή Πλήρες γράφημα Συνάρτηση κόστους 2 1 4 5 5 2 Μπορούμε να βρούμε μια σχεδόν βέλτιστη περιοδεία αν η συνάρτηση κόστους ικανοποιεί την τριγωνική ανισότητα: Τριγωνική ανισότητα: Για κάθε τριάδα κόμβων Η τριγωνική ανισότητα ισχύει σε πολλές πρακτικές εφαρμογές, π.χ. όταν το κόστος αντιστοιχεί στην απόσταση δύο σημείων στο επίπεδο
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας Ελαφρύτατο συνδετικό δένδρο Γράφημα Συνάρτηση βάρους (εδώ ) Ζητούμενο: δένδρο a 8 4 11 b 7 8 c 7 d 2 i 4 14 6 9 10 e με ελάχιστο κόστος h 1 g 2 f
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας Ελαφρύτατο συνδετικό δένδρο Γράφημα Συνάρτηση βάρους (εδώ ) Ζητούμενο: δένδρο a 8 4 11 b 7 8 c 7 d 2 i 4 14 6 9 10 e με ελάχιστο κόστος h 1 g 2 f Μπορεί να υπολογιστεί σε σχεδόν γραμμικό χρόνο
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας Προσεγγιστικός αλγόριθμος 1. Υπολογίζουμε ένα ελαφρύτατο συνδετικό δένδρο του 2. Επιλέγουμε αυθαίρετα ένα κόμβο ως ρίζα και εκτελούμε καθοδική διερεύνηση του με αφετηρία το 3. Επιστρέφουμε την περιοδεία που σχηματίζεται από την διάταξη των κόμβων ως προς τους χρόνους ανακάλυψης της καθοδικής διερεύνησης
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας [1,16] [2,7] [3,4] [5,6] [8,15] [9,14] ελαφρύτατο συνδετικό δένδρο διάταξη [10,11] [12,13]
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας [1,16] [2,7] [3,4] [5,6] [8,15] [9,14] περιοδεία [10,11] [12,13] διάταξη
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Κεντρική ιδέα: Το βάρος (κόστος) ενός ελαφρύτατου συνδετικού δένδρου του γραφήματος αποτελεί κάτω φράγμα του κόστους της βέλτιστης περιοδείας [1,16] [2,7] [3,4] [5,6] [8,15] [9,14] βέλτιστη περιοδεία περιοδεία [10,11] [12,13] διάταξη
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Ο αλγόριθμος είναι 2-προσεγγιστικός πολυωνυμικού χρόνου Έστω μια βέλτιστη περιοδεία και μια οποιαδήποτε ακμή της Τότε το είναι συνδετικό δένδρο, άρα βέλτιστη περιοδεία συνδετικό δένδρο ελαφρύτατο συνδετικό δένδρο
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Ο αλγόριθμος είναι 2-προσεγγιστικός πολυωνυμικού χρόνου Πλήρης διάνυση του : καταγράφει τη σειρά όλων των επισκέψεων στους κόμβους κατά την καθοδική διερεύνηση Μια πλήρης διάνυση διατρέχει κάθε ακμή του δύο φορές [1,16] [2,7] [3,4] [5,6] [8,15] [9,14] ελαφρύτατο συνδετικό δένδρο [10,11] [12,13] πλήρης διάνυση του :
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Ο αλγόριθμος είναι 2-προσεγγιστικός πολυωνυμικού χρόνου Πλήρης διάνυση του : καταγράφει τη σειρά όλων των επισκέψεων στους κόμβους κατά την καθοδική διερεύνηση Μια πλήρης διάνυση διατρέχει κάθε ακμή του δύο φορές Λόγω της τριγωνικής ανισότητας: [1,16] [2,7] [3,4] [5,6] [8,15] [9,14] π.χ. [10,11] [12,13] πλήρης διάνυση του :
Το πρόβλημα του περιοδεύοντος πωλητή με τριγωνική ανισότητα Ο αλγόριθμος είναι 2-προσεγγιστικός πολυωνυμικού χρόνου Πλήρης διάνυση του : καταγράφει τη σειρά όλων των επισκέψεων στους κόμβους κατά την καθοδική διερεύνηση Μια πλήρης διάνυση διατρέχει κάθε ακμή του δύο φορές Λόγω της τριγωνικής ανισότητας: [1,16] [2,7] [3,4] [5,6] [8,15] [9,14] ελαφρύτατο συνδετικό δένδρο [10,11] [12,13] πλήρης διάνυση του : περιοδεία
Το γενικό πρόβλημα του περιοδεύοντος πωλητή Αν η συνάρτηση κόστους δεν ικανοποιεί την τριγωνική ανισότητα τότε είναι αδύνατο να βρούμε σε πολυωνυμικό χρόνο μια -προσεγγιστική περιοδεία, για οποιαδήποτε σταθερά, εκτός εάν Η ύπαρξη ενός -προσεγγιστικού αλγόριθμου πολυωνυμικού χρόνου συνεπάγεται πολυωνυμικό αλγόριθμο για το παρακάτω NP-πλήρες πρόβλημα Κύκλος Hamilton Μας δίνεται γράφημα : υπάρχει κύκλος που επισκέπτεται κάθε (ενδιάμεσο) κόμβο ακριβώς μία φορά;
Το γενικό πρόβλημα του περιοδεύοντος πωλητή Ας υποθέσουμε ότι υπάρχει -προσεγγιστικός αλγόριθμος πολυωνυμικού χρόνου για το γενικό πρόβλημα του περιοδεύοντος πωλητή, όπου ακέραια σταθερά. Μπορούμε να χρησιμοποιήσουμε τον για να βρούμε σε πολυωνυμικό χρόνο αν υπάρχει κύκλος Hamilton σε ένα γράφημα Έστω το πλήρες γράφημα με σύνολο κόμβων Ορίζουμε τη συνάρτηση κόστους των ακμών του ως Αν το έχει κύκλο Hamilton τότε η βέλτιστη περιοδεία του έχει κόστος Διαφορετικά η περιέχει τουλάχιστον μια ακμή εκτός, άρα
Το γενικό πρόβλημα του περιοδεύοντος πωλητή Ας υποθέσουμε ότι υπάρχει -προσεγγιστικός αλγόριθμος πολυωνυμικού χρόνου για το γενικό πρόβλημα του περιοδεύοντος πωλητή, όπου ακέραια σταθερά. Μπορούμε να χρησιμοποιήσουμε τον για να βρούμε σε πολυωνυμικό χρόνο αν υπάρχει κύκλος Hamilton σε ένα γράφημα Έστω το πλήρες γράφημα με σύνολο κόμβων Έστω η περιοδεία του που επιστρέφει ο. Ισχύει Αν το έχει κύκλο Hamilton τότε Διαφορετικά. Επομένως μπορούμε να αποφασίσουμε σε πολυωνυμικό χρόνο αν το περιέχει κύκλο Hamilton!
Κάλυψη συνόλου σύνολο αντικειμένων οικογένεια υποσυνόλων του Το σύνολο καλύπτει το αν Πρόβλημα βελτιστοποίησης : Θέλουμε ένα υποσύνολο ελάχιστου μεγέθους που να καλύπτει το
Κάλυψη συνόλου Άπληστος αλγόριθμος 1. αρχικοποίηση: 2. ενόσω 3. επιλέγουμε που μεγιστοποιεί το 4.
Κάλυψη συνόλου Άπληστος αλγόριθμος 1. αρχικοποίηση: 2. ενόσω 3. επιλέγουμε που μεγιστοποιεί το 4.
Κάλυψη συνόλου Άπληστος αλγόριθμος 1. αρχικοποίηση: 2. ενόσω 3. επιλέγουμε που μεγιστοποιεί το 4.
Κάλυψη συνόλου Άπληστος αλγόριθμος 1. αρχικοποίηση: 2. ενόσω 3. επιλέγουμε που μεγιστοποιεί το 4.
Κάλυψη συνόλου Άπληστος αλγόριθμος 1. αρχικοποίηση: 2. ενόσω 3. επιλέγουμε που μεγιστοποιεί το 4.
Κάλυψη συνόλου Άπληστος αλγόριθμος 1. αρχικοποίηση: 2. ενόσω 3. επιλέγουμε που μεγιστοποιεί το 4. βέλτιστη κάλυψη
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και Έστω το -οστό σύνολο που επιλέγει ο αλγόριθμος Η προσθήκη του έχει κόστος 1 αφού αυξάνει το κατά μια μονάδα στοιχεία του που καλύπτονται για πρώτη φορά Κόστος ανά νέο στοιχείο Επομένως έχουμε
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και Έστω το -οστό σύνολο που επιλέγει ο αλγόριθμος Η προσθήκη του έχει κόστος 1 αφού αυξάνει το κατά μια μονάδα στοιχεία του που καλύπτονται για πρώτη φορά Κόστος ανά νέο στοιχείο Επομένως έχουμε Αποδίδουμε στο βέλτιστο κάλυμμα κόστος
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και Θα δείξουμε ότι για οποιοδήποτε Με δεδομένο το παραπάνω έχουμε
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και Θα δείξουμε ότι για οποιοδήποτε στοιχεία του που δεν έχουν καλυφθεί ακόμα Θέτουμε για και Έστω και, δηλαδή ο αλγόριθμος επιλέγει Λόγω απληστίας ισχύει πλήθος στοιχείων που καλύπτονται για πρώτη φορά από το
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και Θα δείξουμε ότι για οποιοδήποτε Επομένως έχουμε
Κάλυψη συνόλου Ο άπληστος αλγόριθμος είναι όπου -προσεγγιστικός πολυωνυμικού χρόνου, και Θα δείξουμε ότι για οποιοδήποτε Επομένως έχουμε