Κλάσεις Πολυπλοκότητας Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr Κλάσεις Πολυπλοκότητας 1
Οι κλάσεις πολυπλοκότητας P και NP P: Polynomial ΗκλάσηP περιλαμβάνει όλα τα υπολογιστικά προβλήματα που μπορούν να λυθούν σε πολυωνυμικό χρόνο. NP: Non-deterministic polynomial ΗκλάσηNP περιλαμβάνει όλα τα προβλήματα τα οποία είναι verifiable (θα συζητηθεί αμέσως παρακάτω) σε πολυωνυμικό χρόνο Κλάσεις Πολυπλοκότητας 2
ΗκλάσηNP Κλάση NP: Όλα τα προβλήματα για οποία η λύση μπορεί να επαληθευτεί σε πολυωνυμικό χρόνο Διαφορετική περιγραφή: Όλα τα προβλήματα τα οποία μπορούν να λυθούν σε πολυωνυμικό χρόνο από μια μη-ντετερμινιστική μηχανή Turing Μη-ντετερμινιστική μηχανή Turing: Μια μηχανή Turing που σε κάθε βήμα μπορεί και μαντεύει σωστά όταν πρέπει να επιλέξει μεταξύ περισσότερων της μιας επιλογών. Κλάσεις Πολυπλοκότητας 3
Πέρα από την κλάση NP Μια μη-ντετερμινιστική μηχανή Turing είναι ένα (μηρεαλιστικό) πολύ ισχυρό υπολογιστικό μοντέλο...... που δίνει την εντύπωση ότι μπορεί να λύσει αποδοτικά οποιοδήποτε υπολογιστικό πρόβλημα. Είναι όμως έτσι; ΟΧΙ. Υπάρχουν υπολογιστικά προβλήματα που (μέχρι στιγμής) ούτε μια μη-ντετερμινιστική μηχανή Turing δεν μπορεί να τα λύσει σε πολυωνυμικό χρόνο και επομένως δεν (φαίνεται να) ανήκουνστηνκλάσηnp. Παραδείγματα προβλημάτων που (πιθανότατα) δεν ανήκοουν στην κλάση NP: Σύνθετα προβλήματα planning ανθρώπινων και υλικών πόρων ΟκύβοςτουRubik ήταπαιχνίδιαfifteen-puzzle Εκφράσεις κατηγορηματικής λογικής: x x x x... xn 1 xnφ( x1, x2, x3, x4,..., xn 1, x 1 2 3 4 n ) Κλάσεις Πολυπλοκότητας 4
Κλάσεις Πολυπλοκότητας PSPACE NP P co-np Κλάσεις Πολυπλοκότητας 5
Έναπαράδειγμαπροβλήματοςστην κλάση NP Έστω η ακόλουθη εκδοχή του προβλήματος του περιοδεύοντος πωλητή: Δίνεται ένα πλήρες γράφημα G με βάρη στις ακμές, και ένας αριθμός B και ζητείται να βρεθεί εάν υπάρχει περιοδεία μήκους B Είναι NP-hard πρόβλημα Εάν δοθεί μια λύση, μπορούμε σε πολυωνυμικό χρόνο να επαληθεύσουμε εάν είναι έγκυρη ή όχι Κλάσεις Πολυπλοκότητας 6
Προβλήματα Απόφασης - Βελτιστοποίησης Απόφαση (Decision): Υπάρχει διαδρομή για τον πλανόδιο πωλητή με το πολύ Β χιλιόμετρα; Βελτιστοποίηση (Optimization): Ποιο είναι μήκος της ελάχιστης διαδρομής για τον πλανόδιο πωλητή; Κλάσεις Πολυπλοκότητας 7
Προβλήματα πλήρη για την κλάση NP NP-πλήρη (NP-Complete) προβλήματα Εάν βρεθεί πολυωνυμικός αλγόριθμος για ένα πολυωνυμικό πρόβλημα τότε αυτό συνεπάγεται πολυωνυμικούς αλγόριθμους για όλα τα προβλήματα της κλάσης NP Κλάσεις Πολυπλοκότητας 8
Ορολογία P: Προβλήματα Πολυωνυμικής Πολυπλοκότητας Χρόνου NP: Πολυωνυμική επιβεβαίωση λύσης ή Μηντετερμινιστική πολυωνυμική πολυπλοκότητα χρόνου NP-hard: Προβλήματα τουλάχιστον τόσο «δύσκολα» όσο οποιοδήποτε πρόβλημα της κλάσης NP NP-Complete: NP-hard πρόβλημα που ανήκει στην κλάση NP Κλάσεις Πολυπλοκότητας 9
SAT (Satisfiability) Το πρώτο NP-Complete πρόβλημα: Satisfiability Δίνονται: N λογικές μεταβλητές και μια λογική έκφραση με τις μεταβλητές αυτές. Ζητούμενο: Υπάρχει ανάθεση τιμών στις μεταβλητές ώστε να είναι αληθής η τιμή όλης της έκφρασης; Κλάσεις Πολυπλοκότητας 10
NP-Complete προβλήματα Clique: Σε γράφημα G = (V,E) υπάρχει κλίκα μεγέθους τουλάχιστον Κ; (Κλίκα: σύνολο κόμβων τέτοιο για κάθε ζεύγος υπάρχει ακμή μεταξύ τους) Hamiltonian Hamiltonian Cycle: Σε γράφημα G = (V,E) να βρεθεί κλειστό μονοπάτι που περνάει από κάθε κορυφή ακριβώς μία φορά Κλάσεις Πολυπλοκότητας 11
Αναγωγές Ο πιο συνηθισμένος τρόπος για να δείξουμε ότι ένα πρόβλημα P είναι NP- Complete είναι να ακολουθήσουμε τα παρακάτω βήματα: 1. Αποδεικνύουμε ότι το P ανήκει στην κλάση NP 2. Ένα πρόβλημα Q που είναι NP-Complete ανάγεται στο πρόβλημα P (Η αναγωγή πρέπει να μπορεί να γίνει σε πολυωνυμικό χρόνο). Κλάσεις Πολυπλοκότητας 12
Παράδειγμα Εάν είναι γνωστό ότι το πρόβλημα του Hamiltonian Circuit είναι NP-Complete να δείξετε ότι το πρόβλημα του πλανόδιου πωλητή TSP είναι επίσης NP-Complete. Κλάσεις Πολυπλοκότητας 13
Δεύτερο Παράδειγμα Subgraph Isomorphism Εάν είναι γνωστό ότι το πρόβλημα της μέγιστης Clique είναι NP-Complete να δειχθεί ότι είναι επίσης NP-Complete τα προβλήματα Independent Set Subgraph Isomorphism Κλάσεις Πολυπλοκότητας 14
Αναφορές-Πηγές Βιβλίο του μαθήματος: Κεφάλαιο 11 Introduction to Algorithms, Κεφάλαιο 34 Algorithm Design, Κεφάλαια 8, 9 Κλάσεις Πολυπλοκότητας 15