Κεφάλαιο 10 NP -πληρότητα Σύνοψη Οι γλώσσες στην κλάση πολυπλοκότητας P μπορούν να αποφασίζονται σε πολωνυμικό χρόνο. Οι επιστήμονες πιστεύουν, αν και δε μπορούν να το αποδείξουν ότι η P είναι ένα γνήσιο υποσύνολο της NP. Αν αυτό αληθεύει, τότε υπάρχουν γλώσσες στην κλάση NP, που δεν μπορούν να αποφασιστούν σε πολυωνυμικό χρόνο. Η διαίσθησή μας λέει ότι αν P NP, τότε οι πιο «δύσκολες» γλώσσες στην κλάση N P δεν περιέχονται στην P. Αυτές οι γλώσσες ονομάζονται N P-πλήρεις. Επικεντρωνόμαστε αρχικά σε μία τεχνική ανάλυσης αντίστοιχη με τις α- ναγωγές, που χρησιμοποιήσαμε στη μελέτη της επιλυσιμότητας προβλημάτων. Στο Κεφάλαιο 7 είδαμε ότι όλες οι ημιποφασίσιμες γλώσσες ανάγονται τελικά στο Πρόβλημα του Τερματισμού (Ενότητα 7.1). Αντίστοιχα, στο κεφάλαιο αυτό δείχνουμε ότι όλα τα προβλήματα στην κλάση πολυπλοκότητας N P (αποφασίσιμα από μη ντετερμινιστική Μηχανή Turing σε πολυωνυμικό χρόνο) μετασχηματίζονται μέσω μιας τεχνικής, που ονομάζουμε αναγωγές πολυωνυμικού χρόνου, σε κάποια θεμελιώδη προβλήματα πολυπλοκότητας. Θα ορίσουμε τυπικά την N P-πληρότητα ως την ιδιότητα που έχουν κάποια προβλήματα να μετασχηματίζονται μέσω διαδοχικών αναγωγών πολυωνυμικού χρόνου σε κάποια θεμελιώδη προβλήματα πολυπλοκότητας. Προαπαιτούμενη γνώση Για την κατανόηση του κεφαλαίου θα πρέπει ο αναγνώστης να έχει αφομοιώσει τις μαθηματικές έννοιες του Παραρτήματος I, καθώς και τους ορισμούς και τα αποτελέσματα των Κεφαλαίων 6, 7 και 9. 279
280 ΚΕΦΑΛΑΙΟ 10. NP -ΠΛΗΡΟΤΗΤΑ 10.1 Αναγωγές πολυωνυμικού χρόνου Αν θέλουμε να επικεντρωθούμε και να μελετήσουμε τις «πιο δύσκολες» από τις γλώσσες της κλάσης NP, τότε θα πρέπει να είμαστε σε θέση να συγκρίνουμε δύο γλώσσες ως προς το πόσο «δύσκολες» είναι. Θα λέμε ότι η γλώσσα L B είναι «τουλάχιστο τόσο δύσκολη» όσο μία γλώσσα L A αν ισχύει το εξής: αν η L B μπορεί να αποφασιστεί σε πολυωνυμικό χρόνο, τότε η L A μπορεί επίσης να αποφασιστεί σε πολυωνυμικό χρόνο. Ορισμός 10.1 (Αναγωγή πολυωνυμικού χρόνου) Εστω δύο γλώσσες L A {0, 1} και L B {0, 1}. Λέμε ότι L A P L B, αν υπάρχει μία συνάρτηση τέτοια ώστε: 1. f F P και f : {0, 1} {0, 1} 2. για όλες τις συμβολοσειρές w στο {0, 1}, w L A f(w) L B Αν L A P L B, τότε λέμε ότι «η L B είναι τουλάχιστο τόσο δύσκολη όσο είναι η L A» ή ότι «η L A μπορεί να αναχθεί σε πολυωνυμικό χρόνο στη γλώσσα L B». Με το θεώρημα που ακολουθεί αποδεικνύουμε ότι ο τυπικός Ορισμός 10.1 ταιριάζει με τη διαισθητική ερμηνεία που μόλις αναφέρθηκε. Θεώρημα 10.1 Εστω L A και L B δύο γλώσσες τέτοιες ώστε L B P και L A P L B. Τότε L A P. Απόδειξη: την οποία Εστω f : {0, 1} {0, 1} μία συνάρτηση στην κλάση F P για w L A f(w) L B (10.1) Ο παρακάτω αλγόριθμος αποφασίζει αν οποιαδήποτε δοθείσα δυαδική συμβολοσειρά w ανήκει στην L A : u := f(w)
10.1. ΑΝΑΓΩΓΕΣ ΠΟΛΥΩΝΥΜΙΚΟΥ ΧΡΟΝΟΥ 281 Αν u L B, τότε η w αποδεκτή διαφορετικά η w απορρίπτεται. Η ορθότητα του παραπάνω αλγορίθμου είναι άμεση συνέπεια της (10.1). Ετσι απομένει να δειχθεί ότι ο χρόνος εκτέλεσης είναι πολυωνυμικός ως προς το μήκος της συμβολοσειράς εισόδου w. Αφού f F P, υπάρχει ένα πολυώνυμο p τέτοιο ώστε η συνάρτηση f να μπορεί να υπολογιστεί σε χρόνο p. Ομοίως, επειδή L B P, υπάρχει ένα πολυώνυμο q τέτοιο ώστε η γλώσσα L B να μπορεί να αποφασιστεί σε χρόνο q. Εστω ότι το μήκος της συμβολοσειράς εισόδου w είναι n, δηλαδή n = w. Τότε, το μήκος της συμβολοσειράς u είναι μικρότερο ή ίσο από p( w ) = p(n). Γι αυτό, ο χρόνος εκτέλεσης του αλγορίθμου μας φράσσεται άνω από την έκφραση: p( w ) + q( u ) p(n) + q(p(n)) Αφού λοιπόν η συνάρτηση p που ορίζεται από την p (n) = p(n) + q(p(n)) είναι ένα πολυώνυμο, μ αυτό αποδεικνύεται ότι L A P. Το παρακάτω θεώρημα λέει ότι η σχέση P είναι ανακλαστική και μεταβατική. Η απόδειξη του θεωρήματος αφήνεται ως άσκηση. Θεώρημα 10.2 (Ανακλαστικότητα και μεταβατικότητα της P ) Εστω τρεις γλώσσες L A, L B και L C. Τότε: 1. L A P L A 2. αν L A P L B και L B P L C, τότε L A P L C. Στη συνέχεια δείχνουμε ότι οι γλώσσες της κλάσης P είναι οι πιο «εύκολες» γλώσσες της NP. Θεώρημα 10.3 Εστω ότι η L A είναι μία γλώσσα της κλάσης P και έστω ότι η L B είναι μια οποιαδήποτε γλώσσα τέτοια ώστε L B και L B {0, 1}. Τότε L A P L B. Απόδειξη: Είναι δυνατό να επιλέξουμε δύο συμβολοσειρές u και v του {0, 1}, τέτοιες ώστε u L B και v / L B. Ορίζουμε τη συνάρτηση f : {0, 1} {0, 1} ως εξής: { u αν w LA f(w) = v αν w / L A
282 ΚΕΦΑΛΑΙΟ 10. NP -ΠΛΗΡΟΤΗΤΑ Τότε, είναι ξεκάθαρο ότι για οποιαδήποτε δυαδική συμβολοσειρά w, w L A f(w) L B Αφού L A P, η συνάρτηση f μπορεί να υπολογιστεί σε πολυωνυμικό χρόνο, δηλαδή f F P. Παράδειγμα 10.1 (Προβλήματα αθροίσματος υποσυνόλων και σακιδίου) Ας συγκρίνουμε τη γλώσσα, L SOS = { < a 1, a 2,..., a m, b >: m, a 1, a 2,..., a m, b N 0 και υπάρχουν c 1, c 2,..., c m {0, 1}, τέτοια ώστε c i a i = b} με τη γλώσσα, L KS = { < w 1,..., w m, k 1,..., k m, W, K >: m, w 1,..., w m, k 1,..., k m, W, K N 0 και υπάρχουν c 1, c 2,..., c m {0, 1}, τέτοια ώστε c i w i W και c i k i K} Το πρόβλημα του σακιδίου (γλώσσα L KS ) περιγράφεται ως εξής: Εχουμε m τρόφιμα. Το i-οστό τρόφιμο έχει βάρος w i και περιέχει k i θερμίδες. Θέλουμε να αποφασίσουμε αν μπορούμε να γεμίσουμε το σακίδιο μας ή όχι με ένα υποσύνολο τροφίμων, τέτοιο ώστε το συνολικό βάρος να είναι το πολύ W και η συνολική ποσότητα θερμίδων να είναι τουλάχιστο K. Θα αποδείξουμε ότι L SOS P L KS. Σύμφωνα με τον Ορισμό 10.1 χρειαζόμαστε μία συνάρτηση f F P, που αντιστοιχίζει συμβολοσειρές εισόδου για την L SOS σε συμβολοσειρές εισόδου για την L KS, με τέτοιο τρόπο που: < a 1,..., a m, b > L SOS f(< a 1,..., a m, b >) L KS Για να είναι η f(< a 1,..., a m, b >) μία συμβολοσειρά εισόδου για την L KS θα πρέπει αυτή η τιμή της συνάρτησης να έχει τη μορφή: f(< a 1,..., a m, b >) =< w 1,..., w m, k 1,..., k m, W, K >
10.2. N P -ΠΛΗΡ ΟΤΗΤΑ 283 Ορίζουμε f(< a 1,..., a m, b >) :=< a 1,..., a m, a 1,..., a m, b, b > Είναι ξεκάθαρο ότι f F P. Εχουμε: < a 1,..., a m, b > L SOS υπάρχουν c 1, c 2,..., c m {0, 1} : υπάρχουν c 1, c 2,..., c m {0, 1} : < a 1,..., a m, b, b > L KS c i a i = b c i a i b και c i a i b f(< a 1,..., a m, b >) L KS 10.2 N P -πληρότητα Οι αναγωγές πολυωνυμικού χρόνου, όπως ορίστηκαν στον Ορισμό 10.1, επιτρέπουν τη σύγκριση δύο γλωσσών ως προς τη δυσκολία τους. Μία γλώσσα L B στο NP ονομάζεται NP -πλήρης, αν η L B ανήκει στις πιο δύσκολες γλώσσες του NP, δηλαδή η L B θα πρέπει να είναι τουλάχιστο τόσο δύσκολη, όσο οποιαδήποτε άλλη γλώσσα στην κλάση NP. Ορισμός 10.2 (N P -πληρότητα) Εστω μία γλώσσα L B {0, 1}. Λέμε ότι η L B είναι NP -πλήρης, αν 1. L B NP και 2. L A P L B για κάθε άλλη γλώσσα L A στην κλάση NP. Θεώρημα 10.4 Εστω L B μία NP -πλήρης γλώσσα. Τότε: L B P P = NP
284 ΚΕΦΑΛΑΙΟ 10. NP -ΠΛΗΡΟΤΗΤΑ Απόδειξη: Διαισθητικά, το θεώρημα πρέπει να αληθεύει επειδή αν η γλώσσα L B είναι στην κλάση P, τότε θα έπρεπε να είναι μία εύκολη γλώσσα. Από την άλλη μεριά, εφόσον η L B είναι NP -πλήρης, ανήκει στις πιο δύσκολες γλώσσες της κλάσης NP. Επομένως, οι πιο δύσκολες γλώσσες της κλάσης NP είναι εύκολες! Ομως τότε θα έπρεπε όλες οι γλώσσες της κλάσης N P να είναι εύκολες, δηλαδή να ισχύει P = NP. Επιχειρούμε τώρα μία τυπική απόδειξη του θεωρήματος. Ας υποθέσουμε ότι L B P. Γνωρίζουμε ήδη από το Θεώρημα 9.1 ότι P NP. Επομένως, απομένει να δείξουμε ότι NP P. Εστω L A μία οποιαδήποτε γλώσσα της κλάσης NP. Αφού η L B είναι NP -πλήρης, θα έχουμε L A P L B. Τότε, από το Θεώρημα 10.1 θα έχουμε L A P. Για να αποδειχθεί το αντίστροφο, υποθέτουμε ότι P = NP. Αφού L B NP, προκύπτει άμεσα ότι L B P. Θεώρημα 10.5 Εστω δύο γλώσσες L B και L C, τέτοιες ώστε L C NP και L B P L C. Αν η L B είναι NP -πλήρης, τότε η L C είναι επίσης NP -πλήρης. Απόδειξη: Πρώτα δίνουμε μία διαισθητική ερμηνεία του ισχυρισμού. Από την υπόθεση, η L B ανήκει στις πιο δύσκολες γλώσσες της κλάσης NP και η L C είναι τουλάχιστο τόσο δύσκολη όσο η L B. Αφού L C NP προκύπτει ότι η L C ανήκει στις πιο δύσκολες γλώσσες της κλάσης NP. Επομένως, η L C είναι NP -πλήρης. Για να δώσουμε μία τυπική απόδειξη, θα πρέπει να δείξουμε ότι L A P L C για όλες τις γλώσσες L A της κλάσης NP. Εστω ότι η L A είναι μία οποιαδήποτε γλώσσα της NP. Αφού η L B είναι NP -πλήρης, θα έχουμε L A P L B. Επειδή όμως L B P L C, προκύπτει από το Θεώρημα 10.2 ότι L A P L C. Επομένως η γλώσσα L C είναι NP -πλήρης. Το Θεώρημα 10.5 μπορεί να χρησιμοποιηθεί στην απόδειξη της NP -πληρότητας των γλωσσών. Εστω μία γλώσσα L C για την οποία θέλουμε να αποδείξουμε ότι είναι NP -πλήρης. Αυτό επιτυγχάνεται με τον εξής τρόπο: 1. Αρχικά αποδεικνύουμε ότι L C NP. 2. Στη συνέχεια βρίσκουμε μία γλώσσα L B που φαίνεται «παρόμοια» με την L C και για την οποία ήδη γνωρίζουμε ότι είναι NP -πλήρης.
ΒΙΒΛΙΟΓΡΑΦ ΙΑ - ΑΝΑΦΟΡ ΕΣ 285 3. Τέλος, αποδεικνύουμε ότι L B P L C. 4. Αν γίνουν τα παραπάνω βήματα, τότε το Θεώρημα 10.5 μας λέει ότι η γλώσσα L C είναι NP -πλήρης. Φυσικά γεννάται το ερώτημα του πώς ξέρουμε ότι η γλώσσα L B είναι NP - πλήρης. Για να μπορούμε να εφαρμόσουμε το Θεώρημα 10.5 χρειαζόμαστε μία «αρχική» γλώσσα, που είναι NP -πλήρης και αυτό θα πρέπει να έχει αποδειχθεί με βάση τον Ορισμό 10.2. Παρατηρήστε ότι δεν είναι ξεκάθαρο αν τελικά υπάρχουν N P -πλήρεις γλώσσες. Ας εξετάσουμε την περίπτωση της γλώσσας L 3SAT, που ορίσαμε στο Παράδειγμα 9.6. Αν θέλουμε να χρησιμοποιήσουμε τον Ορισμό 10.2 για να δείξουμε ότι αυτή η γλώσσα είναι NP -πλήρης, θα πρέπει να αποδείξουμε ότι: L 3SAT NP, που ισχύει όπως ήδη αναφέραμε στο Παράδειγμα 9.6. L A P L 3SAT, για κάθε γλώσσα L A NP. Επομένως, πρέπει να δειχθεί αυτό για γλώσσες L A, όπως οι L HC, L SOS, L NP rim, L KS και για άπειρα πολλές άλλες γλώσσες. Με τον τρόπο που περιγράψαμε αποδείχθηκε στις εργασίες των Steven Cook [1] και Leonid Levin (μετάφραση στα Αγγλικά [3]) η N P -πληρότητα της γλώσσας SAT, που ορίσαμε στην Ενότητα 7.6.2. Αυτή ήταν και η πρώτη γλώσσα για την οποία αποδείχθηκε κάτι τέτοιο. Στην εργασία [2] του Richard Karp παρουσιάστηκε μία λίστα με 21 N P -πλήρη προβλήματα. Γι αυτές τις συνεισφορές απονεμήθηκε στους Cook και Karp η υψηλότερη διάκριση στην Επιστήμη των Υπολογιστών, το ACM Turing Award. Η γλώσσα L 3SAT στην οποία αναφερθήκαμε είναι μία από τις γνωστές NP - πλήρεις γλώσσες, αφού αυτό μπορεί να αποδειχθεί με μία παραλλαγή της απόδειξης του Cook για τη γλώσσα SAT (θα μπορούσε επίσης το ίδιο αποτέλεσμα να προκύψει και με μία αναγωγή πολυωνυμικού χρόνου από τη γλώσσα SAT στη γλώσσα L 3SAT ). Βιβλιογραφία - Αναφορές [1] Stephen A. Cook. The complexity of theorem-proving procedures. In Proceedings of the Third Annual ACM Symposium on Theory of Computing, STOC 71, pages 151 158, New York, NY, USA, 1971. ACM. doi: 10.1145/800157.805047. URL http://doi.acm.org/10.1145/800157. 805047.
286 ΚΕΦΑΛΑΙΟ 10. NP -ΠΛΗΡΟΤΗΤΑ [2] RichardM. Karp. Reducibility among combinatorial problems. In RaymondE. Miller, JamesW. Thatcher, and JeanD. Bohlinger, editors, Complexity of Computer Computations, The IBM Research Symposia Series, pages 85 103. Springer US, 1972. ISBN 978-1-4684-2003-6. doi: 10.1007/978-1-4684-2001-2 9. URL http://dx.doi.org/10.1007/ 978-1-4684-2001-2_9. [3] B.A. Trakhtenbrot. A survey of russian approaches to perebor (bruteforce searches) algorithms. Annals of the History of Computing, 6(4): 384 400, Oct 1984. ISSN 0164-1239. doi: 10.1109/MAHC.1984.10036.