upologistik€ poluplokìthta · 2016-06-08 ·...

18
Κεφάλαιο 9 Υπολογιστική Πολυπλοκότητα Σύνοψη Πέρα από το ερώτηmα του αν για ένα πρόβληmα υπάρχει Μηχανή Turing, που το επιλύει, mας απασχολεί επίσης και το ερώτηmα του αν ένα πρόβληmα είναι «πρακτικά» επιλύσιmο. Το τελευταίο αυτό ερώτηmα σχετίζεται mε το γεγο- νός ότι τα προγράmmατα, που σχεδιάζουmε, έχουν συγκεκριmένες απαιτήσεις σε πόρους χρόνου και χώρου. Συχνά λοιπόν βρισκόmαστε αντιmέτωποι mε προ- βλήmατα, που είναι «πρακτικά» mη επιλύσιmα, καθώς για mεγάλες εισόδους οι απαιτήσεις τους σε πόρους αυξάνονται τόσο γρήγορα, που γίνονται mη ρεαλι- στικές. Γενικά θεωρούmε ότι αν οι απαιτήσεις σε πόρους αυξάνονται mε ρυθmό, που είναι πολυωνυmική συνάρτηση ως προς το mέγεθος του προβλήmατος, τότε το πρόβληmα είναι «πρακτικά» επιλύσιmο. Αν οι απαιτήσεις αυξάνονται mε mεγα- λύτερο ρυθmό, τότε mπορεί να επιλυθούν mόνο περιπτώσεις του προβλήmατος mε πολύ περιορισmένο mέγεθος εισόδου, ενώ στη γενική περίπτωση το πρόβληmα είναι «πρακτικά» mη επιλύσιmο. Κάποια προβλήmατα είναι εύκολα. Για παράδειγmα, κάθε κανονική γλώσσα αποφασίζεται σε χρόνο, που δίνεται ως γραmmική συνάρτηση, εκτελώντας το αντίστοιχο ΝΠΑ. Κάποια άλλα προβλήmατα είναι πιο δύσκολα. ΄Ετσι, ο κα- λύτερος από τους γνωστούς αλγορίθmους, που αποφασίζει τη γλώσσα mε τις λύσεις στο Πρόβληmα του Πλανώδιου Πωλητή 1 , χρειάζεται χρόνο, που αυξάνε- ται εκθετικά ως προς το mέγεθος της εισόδου. Στο κεφάλαιο αυτό θα ορίσουmε 1 Dοθέντων n πόλεων και των mεταξύ τους αποστάσεων ανά δύο, να βρεθεί η συντοmότερη διαδροmή που επιστρέφει στο αρχικό σηmείο, αφού έχει προηγηθεί επίσκεψη σε κάθε άλλη πόλη ακριβώς mία φορά. 261

Upload: others

Post on 16-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

Κεφάλαιο 9

Υπολογιστική

Πολυπλοκότητα

Σύνοψη

Πέρα από το ερώτημα του αν για ένα πρόβλημα υπάρχει Μηχανή Turing, πουτο επιλύει, μας απασχολεί επίσης και το ερώτημα του αν ένα πρόβλημα είναι

«πρακτικά» επιλύσιμο. Το τελευταίο αυτό ερώτημα σχετίζεται με το γεγο-

νός ότι τα προγράμματα, που σχεδιάζουμε, έχουν συγκεκριμένες απαιτήσεις σε

πόρους χρόνου και χώρου. Συχνά λοιπόν βρισκόμαστε αντιμέτωποι με προ-

βλήματα, που είναι «πρακτικά» μη επιλύσιμα, καθώς για μεγάλες εισόδους οι

απαιτήσεις τους σε πόρους αυξάνονται τόσο γρήγορα, που γίνονται μη ρεαλι-

στικές. Γενικά θεωρούμε ότι αν οι απαιτήσεις σε πόρους αυξάνονται με ρυθμό,

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

το πρόβλημα είναι «πρακτικά» επιλύσιμο. Αν οι απαιτήσεις αυξάνονται με μεγα-

λύτερο ρυθμό, τότε μπορεί να επιλυθούν μόνο περιπτώσεις του προβλήματος με

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

είναι «πρακτικά» μη επιλύσιμο.

Κάποια προβλήματα είναι εύκολα. Για παράδειγμα, κάθε κανονική γλώσσα

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

αντίστοιχο ΝΠΑ. Κάποια άλλα προβλήματα είναι πιο δύσκολα. ΄Ετσι, ο κα-

λύτερος από τους γνωστούς αλγορίθμους, που αποφασίζει τη γλώσσα με τις

λύσεις στο Πρόβλημα του Πλανώδιου Πωλητή1, χρειάζεται χρόνο, που αυξάνε-

ται εκθετικά ως προς το μέγεθος της εισόδου. Στο κεφάλαιο αυτό θα ορίσουμε

1Δοθέντων n πόλεων και των μεταξύ τους αποστάσεων ανά δύο, να βρεθεί η συντομότερη

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

πόλη ακριβώς μία φορά.

261

Page 2: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

262 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

ιεραρχίες κλάσεων γλωσσών με βάση το χρόνο ή το χώρο, που απαιτεί ο κα-

λύτερος γνωστός αλγόριθμος.

Προαπαιτούμενη γνώση

Για την κατανόηση του κεφαλαίου θα πρέπει ο αναγνώστης να έχει αφομοιώσει

τις μαθηματικές έννοιες του Παραρτήματος I, καθώς και τους ορισμούς και τα

αποτελέσματα των Κεφαλαίων 6 και 7.

9.1 Υπολογιστική πολυπλοκότητα προβλημάτων

Κατά την ανάλυση της υπολογιστικής πολυπλοκότητας των διαφόρων προβλη-

μάτων, αυτά θα περιγράφονται ως γλώσσες που αποφασίζονται (βλ. Ενότη-

τα 1.2.3). Θα περιγράψουμε την πολυπλοκότητα με συναρτήσεις, που ορίζονται

μόνο για ΜΤ που αποφασίζουν. Η συγκεκριμένη ανάλυση λοιπόν περιορίζεται

μόνο στις αποφασίσιμες γλώσσες, που σημαίνει ότι δεν μας ενδιαφέρει να δια-

τυπώσουμε ισχυρισμούς σχετικά με την πολυπλοκότητα γλωσσών, όπως η H(βλ. Ενότητα 7.1) και η PCP (βλ. Ενότητα 7.4.2). Αν δεν είχαμε κάνει αυτή

τη διάκριση θα μπορούσαν κάποια προβλήματα να χαρακτηρίζονταν δύσκολα ε-

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

πόρους για την εύρεση της λύσης.

Στην Ενότητα 1.1 αναφερθήκαμε στην έννοια της κωδικοποίησης, αλλά για

την αποφασισιμότητα γλωσσών αρκούσε ο ορισμός μιας οποιασδήποτε κωδικο-

ποίησης, χωρίς να μας ενδιαφέρει αν μία συγκεκριμένη θα μπορούσε να είναι

πιο «κατάλληλη» από τις άλλες. Οι χρονικές και οι χωρικές απαιτήσεις ενός

προγράμματος απόφασης περιγράφονται ως μία συνάρτηση της εισόδου του προ-

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

καθώς αυτή επηρεάζει το μέγεθος της εισόδου. Στα περισσότερα προβλήματα

η επιλογή της «κατάλληλης» κωδικοποίησης θα είναι προφανής. Για τους φυσι-

κούς αριθμούς θα θεωρείται κατάλληλη οποιαδήποτε κωδικοποίηση σε σύστημα

αρίθμησης με βάση μεγαλύτερη ή ίση του 2. Αποδεικνύεται ότι η επιλογή της

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

τά ένα σταθερό παράγοντα, αλλά όπως θα δούμε παρακάτω γενικά αγνοούμε

τους σταθερούς παράγοντες στις περισσότερες από τις αναλύσεις μας. Για προ-

βλήματα γράφων θεωρούμε ως κατάλληλες δύο πιθανές κωδικοποιήσεις. Για

ένα γράφο G = (V,E), με V ένα σύνολο κορυφών και E ένα σύνολο ακμών,

ας υποθέσουμε ότι ονομάζουμε τις κορυφές με τους ακέραιους από το 1 έως το

n. Τότε οι δύο πιθανές κωδικοποιήσεις είναι:

Page 3: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.1. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΠΡΟΒΛΗΜΑΤΩΝ 263

• Η αναπαράσταση του γράφου G ως μία λίστα με τις ακμές από τις οποίες

αυτός ορίζεται. Κάθε κορυφή θα αναπαριστάται από τη δυαδική συμβο-

λοσειρά, που κωδικοποιεί το όνομά της. Κάθε ακμή θα ορίζεται από ένα

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

τς ακμής.

• Η αναπαράσταση του γράφου G από έναν πίνακα γειτνίασης. Ο πίνακας

θα έχει n γραμμές και n στήλες και η τιμή στο κελί (i, j) θα είναι 1 αν

στο γράφο ορίζεται ακμή από την κορυφή i στην κορυφή j, ενώ σε διαφο-

ρετική περίπτωση θα είναι 0. Αφού λοιπόν η τιμή σε κάθε κελί μπορεί να

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

κωδικοποιείται από μία συμβολοσειρά μήκους n2.

Σε κάθε μία από τις παραπάνω περιπτώσεις η αναπαράσταση του γράφου G θα

είναι μία πολυωνυμική συνάρτηση του αριθμού των κορυφών του. Το βασικό

ερώτημα που καλούμαστε να απαντήσουμε είναι αν υπάρχει ή δεν υπάρχει αλ-

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

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

όμως σ΄ αυτό το ερώτημα δεν αλλάζει, είτε περιγράφεται το μέγεθος του γράφου

G από τον αριθμό των κορυφών του, είτε από το μήκος κάποιας από τις δύο

κωδικοποιήσεις που ορίσαμε προηγουμένως.

Για να μπορούμε να λέμε ότι ένα πρόγραμμα με μία συγκεκριμένη είσοδο

εκτελεί p βήματα και χρησιμοποιεί m θέσεις μνήμης, θα πρέπει πρώτα να ο-

ρίσουμε το τι ακριβώς προσμετράται ως βήμα εκτέλεσης ή ως θέση μνήμης. Οι

απαντήσεις και για τα δύο βρίσκονται στο μοντέλο υπολογισμού που χρησιμο-

ποιούμε, τις ΜΤ. Η μέτρηση του χρόνου θα γίνεται μέσω της καταμέτρησης

των βημάτων εκτέλεσης και η μέτρηση του χώρου μέσω της καταμέτρησης των

τετραγώνων της ταινίας από τα οποία έχει περάσει η κεφαλή.

Βέβαια αυτό το οποίο βασικά μας ενδιαφέρει δεν είναι η υπολογιστική απο-

δοτικότητα των ΜΤ, αλλά αυτή των πραγματικών ηλεκτρονικών υπολογιστών.

Θυμίζουμε ότι στο Θεώρημα 6.4 δείξαμε ότι ο αριθμός των βημάτων, για την

προσομοίωση μιας απλής αλλά ρεαλιστικής αρχιτεκτονικής υπολογιστή σε μία

ΜΤ μιας ταινίας αυξάνεται το πολύ έως τον αριθμό των βημάτων της ρεαλιστικής

μηχανής εις την έκτη. Σχεδόν σε όλες τις περιπτώσεις ανάλυσης υπολογιστι-

κής πολυπλοκότητας, στις οποίες θα αναφερθούμε τείνουμε να αγνοούμε τους

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

τα προγράμματα με ένα πιο συμβατικό προγραμματιστικό στυλ (όπως στην Ε-

νότητα 6.4) και να καταμετρούμε τον αριθμό των βημάτων εκτέλεσης με τον

προφανή τρόπο.

Δοθείσης μιας συγκεκριμένης ΜΤ M και μιας εισόδου w, επιθυμούμε να

καθορίσουμε ακριβώς τον αριθμό βημάτων που εκτελεί η M όταν αρχίζει τον

Page 4: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

264 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

υπολογισμό με τη συμβολοσειρά w στην ταινία. Η προσέγγιση που θα ακολου-

θήσουμε θα είναι αρκετά γενική, ώστε να δίνει απαντήσεις για μία οποιαδήποτε

συμβολοσειρά εισόδου στην ταινία.

΄Εστω M μία ΜΤ και έστω w μία συμβολοσειρά εισόδου της M . Ορίζουμε

ως χρόνο εκτέλεσης tM (w) της M με είσοδο w ως:

tM (w) := ο αριθμός των βημάτων που εκτελεί η M με είσοδο w

Ως συνήθως, συμβολίζουμε με |w| τον αριθμό των συμβόλων της συμβολοσειράς

w. Συμβολίζουμε επίσης με N0 το σύνολο των μη αρνητικών ακεραίων.

Ορισμός 9.1 (Συνάρτηση χρόνου εκτέλεσης T )΄Εστω Σ ένα αλφάβητο, T : N0 → N0 μία συνάρτηση, L ⊆ Σ?

μία αποφα-

σίσιμη γλώσσα και F : Σ? → Σ?μία υπολογίσιμη συνάρτηση.

• Λέμε ότι μία ΜΤ M αποφασίζει τη γλώσσα L σε χρόνο T , αν

tM(w) ≤ T (|w|)

για όλες τις συμβολοσειρές w του Σ?.

• Λέμε ότι μία ΜΤ M υπολογίζει τη συνάρτηση F σε χρόνο T , αν

tM(w) ≤ T (|w|)

για όλες τις συμβολοσειρές w του Σ?.

Με άλλα λόγια, η «συνάρτηση χρόνου εκτέλεσης» T είναι μία συνάρτηση ως

προς το μήκος της εισόδου, που συνήθως το συμβολίζουμε με n. Για οποιο-

δήποτε n, η τιμή T (n) είναι ένα άνω όριο του χρόνου εκτέλεσης της ΜΤ Mγια οποιαδήποτε συμβολοσειρά εισόδου μήκους n.

Ας αναφερθούμε στη ΜΤ του Παραδείγματος 6.1, που αποφασίζει τη γλώσ-

σα των καρκινικών συμβολοσειρών άρτιου μήκους. Η κεφαλή αυτής της ΜΤ

μετακινείται στην ταινία από τα αριστερά προς τα δεξιά, στη συνέχεια επιστρέφει

πάλι στα αριστερά, μετά μετακινείται ξανά στα δεξιά κ.ο.κ. Κάθε φορά που η

κεφαλή προσεγγίζει το αριστερότερο ή το δεξιότερο σύμβολο στη συνέχεια το

αντικαθιστά με �. Η συνάρτηση χρόνου εκτέλεσης αυτής της ΜΤ για οποια-

δήποτε συμβολοσειρά μήκους n είναι

O(1 + 2 + 3 + . . . n) = O(n2)

Στο ερώτημα του αν θα μπορούσαμε να υιοθετήσουμε ως μοντέλο υπολογισμού

για τον ορισμό της συνάρτησης χρόνου εκτέλεσης μία ΜΤ πολλών ταινιών η

απάντηση σχετίζεται με το αποτέλεσμα του Θεωρήματος 6.1: ο αριθμός των

βημάτων που απαιτεί η εκτέλεση μιας ΜΤ μίας ταινίας αυξάνεται το πολύ έως το

τετράγωνο του αριθμού των βημάτων, που απαιτούνται για την εκτέλεση μιας

ΜΤ πολλών ταινιών.

Page 5: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.2. Η ΚΛ΄ΑΣΗ ΠΟΛΥΠΛΟΚ΄ΟΤΗΤΑΣ P 265

9.2 Η κλάση πολυπλοκότητας P

Ορισμός 9.2 (Πολυωνυμικός χρόνος εκτέλεσης)

Λέμε ότι μία ΜΤ M αποφασίζει τη γλώσσα L (αντίστοιχα υπολογίζει τη συ-

νάρτηση F ) σε πολυωνυμικό χρόνο, αν υπάρχει ένας ακέραιος k ≥ 1, τέτοιοςώστε ο χρόνος εκτέλεσης της M είναι O(nk), για οποιαδήποτε συμβολοσειρά

μήκους n.

Από την Ενότητα 9.1 είναι σαφές ότι αυτή η έννοια του «πολυωνυμικού χρόνου

εκτέλεσης» δεν επηρεάζεται από το αν το μοντέλο υπολογισμού στο οποίο

αναφερόμαστε είναι μία ΜΤ (μιας ή πολλών ταινιών) ή μία ρεαλιστική αρχιτε-

κτονική ηλεκτρονικού υπολογιστή. ΄Ετσι, αν μία γλώσσα (ή μία συνάρτηση)

αποφασίζεται (αντίστοιχα υπολογίζεται) σε πολυωνυμικό χρόνο σε κάποιο α-

πό τα προαναφερόμενα μοντέλα υπολογισμού, τότε αποφασίζεται (αντίστοιχα

υπολογίζεται) επίσης σε πολυωνυμικό χρόνο και σε όλα τα άλλα.

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

P = {L : η γλώσσα L είναι αποφασίσιμη σε πολυωνυμικό χρόνο}

και

FP = {F : η συνάρτηση F είναι υπολογίσιμη σε πολυωνυμικό χρόνο}

Παράδειγμα 9.1 (Γλώσσες στην κλάση P )

• Μία κανονική γλώσσα ανήκει στην P , επειδή μπορεί να αποφασιστεί σε

χρόνο που είναι γραμμική συνάρτηση του μήκους της εισόδου.

Δοθείσας μιας κανονικής γλώσσας L υπάρχει κάποιο ΝΠΑM , που κάνει

δεκτή την L. Από το M μπορούμε να κατασκευάσουμε μία ντεντερμινι-

στική ΜΤM ′, που θα προσομοιώνει τα βήματα τουM μετακινώντας την

κεφαλή ανάγνωσης/εγγραφής σε κάθε βήμα ένα τετράγωνο προς τα δεξιά

χωρίς να αλλάζει το περιεχόμενο της ταινίας. ΄Οταν η M ′ διαβάσει �,

τότε τερματίζει και αν εκείνη τη στιγμή βρίσκεται σε κατάσταση αποδοχής,

τότε αποδέχεται τη συμβολοσειρά εισόδου, ενώ σε διαφορετική περίπτωση

την απορρίπτει. Παραλείπουμε τις λεπτομέρειες της κατασκευής της M ′,που θα αποφασίζει την L σε χρόνο που είναι γραμμική συνάρτηση.

• Κάθε γλώσσα χωρίς συμφραζόμενα ανήκει στην κλάση P , αφού υπάρχουν

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

Page 6: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

266 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

υπολογιστή σε χρόνο O(n3) και επομένως ΜΤ μιας ταινίας στις οποίες

εκτελούνται σε χρόνο O(n18). ΄Ενας τέτοιος αλγόριθμος συντακτικής

ανάλυσης με χρόνο εκτέλεσης O(n3) σε συμβατικό υπολογιστή είναι ο

αλγόριθμος των Cocke, Kasami και Younger.

• Μερικές γλώσσες που δεν είναι χωρίς συμφραζόμενα ανήκουν επίσης

στην κλάση P . ΄Ενα τέτοιο παράδειγμα είναι η γλώσσα {anbncn : n ≥0} για την οποία προτείναμε μία ΜΤ στην Ενότητα 6.1. Είναι εύκολο να

δειχθεί ότι η συγκεκριμένη γλώσσα αποφασίζεται σε χρόνο O(n2).

• ΄Ενας γράφος είναι συνδεδεμένος αν και μόνο αν υπάρχει ένα μονοπάτι από

κάθε κορυφή προς κάθε άλλη κορυφή. Ας περιοριστούμε στην περίπτωση

των μη κατευθυνόμενων γράφων. Η γλώσσα

Lcon = {< G >: G ένας μη κατευθυνόμενος γράφος και G είναι

συνδεδεμένος}

ανήκει στην κλάση P . Ας εξετάσουμε τον παρακάτω αλγόριθμο, που

θα μπορούσαμε ασφαλώς να το γράψουμε σε μία γλώσσα προγραμμα-

τισμού υψηλού επιπέδου, ώστε να είναι εκτελέσιμος σε μία ρεαλιστική

αρχιτεκτονική ηλεκτρονικού υπολογιστή σαν αυτή που περιγράψαμε στην

Ενότητα 6.4.

connected(< G : γράφος με κορυφές V και ακμές E >) =

1. Αρχικά ορίζουμε όλες οι κορυφές να μην έχουν σημάδι.

2. Θέσε ένα σημάδι στην κορυφή 1.

3. Η λίσταL περιέχει τις σημαδεμένες κορυφές για τις οποίες δεν έχουν

εξεταστεί ακόμη οι κορυφές με τις οποίες συνδέονται. Αρχικοποιήσε

την L ώστε να περιέχει μόνο την κορυφή 1.

4. Αρχικοποιήσε τον μετρητή mvc των σημαδεμένων κορυφών με

την τιμή 1.

5. Μέχρι να αδειάσει η λίστα L εκτέλεσε:

5.1 Αφαίρεσε το πρώτο στοιχείο της L, που ας το ονομάσουμε cv.

5.2 Για κάθε ακμή e που συνδέει την κορυφή cv εκτέλεσε:

΄Εστω nv η κορυφή του άλλου άκρου της e. Αν η nv δεν έχει

ήδη σημαδευτεί εκτέλεσε:

Σημάδεψε την nv.

Πρόσθεσε την nv στην L.

Αύξησε τον μετρητή mvc κατά 1.

Page 7: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.2. Η ΚΛΑΣΗ ΓΛΩΣΣΩΝ P 267

6. Αν mvc = |V | ο γράφος G γίνεται δεκτός, αλλιώς απορρίπτεται.

Ο αλγόριθμος connected σημαδεύει και καταμετρά τις κορυφές, που εί-

ναι προσεγγίσιμες από την κορυφή 1. Αφού ο γράφοςG είναι μη κατευθυ-

νόμενος, αν υπάρχει ένα μονοπάτι από την κορυφή 1 σε κάποια κορυφή n,τότε θα υπάρχει και ένα μονοπάτι από την n στην 1. Κατά συνέπεια, αν

υπάρχει ένα μονοπάτι από την κορυφή 1 προς κάθε άλλη κορυφή, τότε θα

υπάρχει ένα μονοπάτι από κάθε άλλη κορυφή πίσω στην κορυφή 1 και από

κει προς κάθε άλλη κορυφή. ΄Αρα ο γράφος G θα είναι συνδεδεμένος. Αν

από την άλλη μεριά υπάρχει κάποια κορυφή, που δεν είναι προσεγγίσιμη

από την κορυφή 1, τότε ο G δεν είναι συνδεδεμένος.

Απομένει να δείξουμε ότι ο χρόνος εκτέλεσης του connected είναι μία

πολυωνυμική συνάρτηση ως προς το | < G > |:

– Για το βήμα 1 ο χρόνος εκτέλεσης είναι O(|V |).– Για τα βήματα 2, 3 και 4 χρειάζεται σε όλες τις περιπτώσεις μία

σταθερή ποσότητα χρόνου.

– Ο εξωτερικός βρόγχος του βήματος 5 μπορεί να εκτελεστεί το πο-

λύ |V | φορές, αφού καμία κορυφή δε μπορεί να μπει στη λίστα Lπερισσότερες από μία φορές.

◦ Το βήμα 5.1 εκτελείται σε σταθερή ποσότητα χρόνου.

◦ Ο βρόγχος στο βήμα 5.2 μπορεί να εκτελεστεί το πολύ |E| φορέςκαι για κάθε φορά απαιτείται το πολύ O(|V |) χρόνος (εξαρτάται

από το πώς γίνεται η αναπαράσταση και το σημάδεμα των κο-

ρυφών).

– Το βήμα 6 εκτελείται σε σταθερή ποσότητα χρόνου.

Ο συνολικός χρόνος που απαιτείται για την εκτέλεση του αλγορίθμου

connected είναι |V | · O(|E|) · O(|V |) = O(|V |2|E|). Παρατη-

ρούμε όμως ότι |E| ≤ |V |2 και έτσι ο συνολικός χρόνος που απαιτείται

για την εκτέλεση του αλγορίθμου είναι O(|V |4).

Παράδειγμα 9.2 (Συναρτήσεις στην κλάση FP )

Οι παρακάτω συναρτήσεις ανήκουν στην κλάση FP :

• F1 : N0 → N0, F1(x) := x+ 1,

Page 8: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

268 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

• F2 : N20 → N0, F2(x, y) := x+ y,

• F2 : N20 → N0, F3(x, y) := xy.

9.3 Η κλάση πολυπλοκότητας NP

Πριν δώσουμε τον ορισμό της κλάσης πολυπλοκότητας NP , ας εξετάσουμε

κάποιες χαρακτηριστικές περιπτώσεις προβλημάτων.

Παράδειγμα 9.3 (Κύκλος Hamilton σε γράφο)

΄Εστω ότι G είναι ένας γράφος με σύνολο κορυφών το V = {1, 2, . . . ,m}και σύνολο ακμών E. ΄Ενας κύκλος Hamilton είναι ένας κύκλος στο γράφο

G, που διέρχεται από κάθε κορυφή ακριβώς μία φορά. Τυπικά ορίζεται ως μία

ακολουθία κορυφών v1, v2, . . . , vm τέτοια ώστε:

1. {v1, v2, . . . , vm} = V και

2. {(v1, v2), (v2, v3), . . . , (vm−1, vm), (vm, v1)} ⊆ E

Ορίζουμε λοιπόν τη γλώσσα:

LHC = {< G >: ο γράφος G περιέχει ένα κύκλο Hamilton }

Δεν είναι γνωστό αν η γλώσσα LHC ανήκει στην κλάση P ή όχι.

Παράδειγμα 9.4 (΄Αθροισμα υποσυνόλου)

Η γλώσσα του αθροίσματος υποσυνόλου ορίζεται ως εξής:

LSOS = {< a1, a2, . . . , am, b >: m,a1, a2, . . . , am, b ∈ N0 και

∃I ⊆ {1, 2, . . . ,m},∑i∈I ai = b}

Γι΄ αυτή την περίπτωση γλώσσας επίσης, δεν υπάρχει γνωστός αλγόριθμος

πολυωνυμικού χρόνου, δηλαδή δεν είναι γνωστό αν η γλώσσα LSOS ανήκει

στην κλάση P .

Page 9: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.3. Η ΚΛΑΣΗ ΓΛΩΣΣΩΝ NP 269

Παράδειγμα 9.5 (Μη πρώτοι αριθμοί)

΄Ενας ακέραιος x ≥ 2 είναι πρώτος, αν δεν υπάρχουν a, b ∈ N τέτοια ώστε

a 6= x, b 6= x και x = ab. Επομένως, η γλώσσα όλων των μη πρώτων, που

είναι μεγαλύτεροι ή ίσοι του δύο είναι:

LNPrim = {< x >: x ≥ 2 και ο x δεν είναι ένας πρώτος αριθμός}

Δεν είναι καθόλου προφανές αν η γλώσσα LNPrim ανήκει στην κλάση P .

Στην πραγματικότητα, μόλις το 2002 κατορθώθηκε να δειχθεί ότι η LNPrimανήκει στην P .

Το κοινό χαρακτηριστικό των τριών γλωσσών, που περιγράψαμε στα παραδείγ-

ματα 9.3, 9.4 και 9.6 είναι ότι αν έχουμε μία «λύση» για οποιαδήποτε δοθείσα

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

«λύση» είναι ή δεν είναι μία ορθή λύση. Επιπλέον, για οποιαδήποτε είσοδο σε

καθένα από τα τρία προβλήματα, υπάρχει μία «λύση», που το μήκος της δίνεται

ως πολυωνυμική συνάρτηση του μήκους της εισόδου.

Για το πρόβλημα του κύκλου Hamilton, οποιαδήποτε λύση δίνεται ως μία

ακολουθία κορυφών v1, v2, . . . , vm. Αυτή η ακολουθία είναι ορθή αν και μόνο

αν:

1. {v1, v2, . . . , vm} = {1, 2, . . . ,m} και

2. {(v1, v2), (v2, v3), . . . , (vm−1, vm), (vm, v1)} ⊆ E

Αυτές οι δύο συνθήκες μπορούν να επαληθευτούν σε πολυωνυμικό χρόνο. Ε-

πιπλέον, το μήκος της λύσης δίνεται ως πολυωνυμική συνάρτηση του μήκους

του γράφου της εισόδου.

Ας δούμε τώρα το πρόβλημα του αθροίσματος υποσυνόλου. Μία οποιαδήπο-

τε λύση δίνεται ως μία ακολουθία c1, c2, . . . , cm. Μία τέτοια λύση θα είναι ορθή

αν και μόνο αν:

1. ci ∈ {0, 1} για όλα τα i με 1 ≥ i ≥ m και

2.∑m

i=1 ciai = b.

Επομένως, το σύνολο I ⊆ {1, 2, . . . ,m} στον ορισμό της LSOS είναι το σύνολο

των δεικτών i για τους οποίους ci = 1. Σ΄ αυτή την περίπτωση επίσης οι δύο

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

και το μήκος της λύσης είναι πολυωνυμική συνάρτηση του μήκους της εισόδου.

Τέλος, ας εξετάσουμε τη γλώσσα LNPrim. ΄Εστω x ≥ 2 ένας ακέραιος. Οι

ακέραιοι a και b σχηματίζουν μία «λύση» για το x αν και μόνο αν:

Page 10: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

270 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

1. 2 ≤ a < x,

2. 2 ≤ b < x και

3. x = ab

Είναι ξεκάθαρο ότι οι τρεις αυτές συνθήκες μπορούν να επαληθευτούν σε πο-

λυωνυμικό χρόνο. Επιπλέον, το μήκος αυτής της λύσης, δηλαδή ο συνολικός

αριθμός των bits στη δυαδική αναπαράσταση των a και b είναι πολυωνυμική

συνάρτηση του αριθμού των bits στη δυαδική αναπαράσταση του x.Οι γλώσσες, που έχουν την ιδιότητα ότι η ορθότητα μιας προτεινόμενης

«λύσης» μπορεί να επαληθευτεί σε πολυωνυμικό χρόνο, ανήκουν στην κλάση

πολυπλοκότητας NP :

Ορισμός 9.3 (Κλάση πολυπλοκότητας NP )

Μία γλώσσα L ανήκει στην κλάση NP , αν υπάρχει ένα πολυώνυμο p και μία

γλώσσα N ∈ P τέτοια ώστε για κάθε συμβολοσειρά w,

w ∈ L⇔ ∃s : |s| ≤ p(|w|) και < w, s >∈ N

Δηλαδή, μία γλώσσα L ανήκει στην κλάση NP , αν για κάθε συμβολοσειρά w,

w ∈ N αν και μόνο αν ικανοποιούνται οι εξής δύο συνθήκες:

1. Υπάρχει μία «λύση» s, που το μήκος της |s| είναι πολυωνυμική συνάρτηση

του μήκους της w (αυτό γράφεται ως |s| ≤ p(|w|), όπου p είναι ένα

πολυώνυμο).

2. Μπορούμε να επαληθεύσουμε σε πολυωνυμικό χρόνο αν η s είναι μία ορθή

«λύση» για την w (αυτό γράφεται ως < w, s >∈ N και N ∈ P ).

Επομένως, η γλώσσαN μπορεί να θεωρηθεί ότι είναι η «γλώσσα επαλήθευσης»:

N = {< w, s >: η s είναι μία ορθή «λύση» για την w}

΄Εχουμε ήδη δώσει άτυπες αποδείξεις για το γεγονός ότι οι γλώσσες LHC ,LSOS , LNPrim ανήκουν όλες στην κλάση NP . Στη συνέχεια θα δώσουμε

μία τυπική απόδειξη για το ότι LNPrim ∈ NP . Για να αποδειχθεί αυτός ο

ισχυρισμός θα πρέπει να ορίσουμε ένα πολυώνυμο p και τη γλώσσα N ∈ P .

Αρχικά παρατηρούμε ότι:

LNPrim = {< x >: υπάρχουν a και b στο N τέτοια ώστε

Page 11: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.3. Η ΚΛΑΣΗ ΓΛΩΣΣΩΝ NP 271

2 ≤ a < x, 2 ≤ b < x και x = ab} (9.1)

Ορίζουμε το πολυώνυμο p ως p(n) := n+ 2 και τη γλώσσα N ως

N = {< x, a, b >: x ≥ 2, 2 ≤ a < x, 2 ≤ b < x και x = ab}

Είναι προφανές ότι N ∈ P : για κάθε τρεις θετικούς ακέραιους μπορούμε να

επαληθεύσουμε σε πολυωνυμικό χρόνο αν < x, a, b >∈ N ή όχι. Για να γίνει

αυτό, πρέπει μόνο να ελεγχθεί αν ισχύουν οι σχέσεις x ≥ 2, 2 ≤ a < x,2 ≤ b < x και x = ab ή όχι. Αν ισχύουν ταυτόχρονα οι τέσσερις αυτές

συνθήκες, τότε < x, a, b >∈ N . Αν τουλάχιστο μία απ΄ αυτές δεν ικανοποιείται,

τότε < x, a, b >/∈ N .

Απομένει τώρα να δείξουμε ότι για όλα τα x ∈ N:

< x >∈ LNPrim ⇔∃a, b : | < a, b > | ≤ | < x > |+ 2

και < x, a, b >∈ N (9.2)

όπου | < x > | συμβολίζει τον αριθμό των bits στη δυαδική αναπαράσταση του

x και | < a, b > | = | < a > |+ | < b > |.΄Εστω ότι x ∈ LNPrim. Από την (9.1) προκύπτει ότι υπάρχουν a και b στο

N, τέτοια ώστε 2 ≤ a < x, 2 ≤ b < x και x = ab. Αφού x = ab ≥ 2·2 = 4 ≥ 2,προκύπτει ότι < x, a, b >∈ N . Απομένει να δείξουμε ότι:

| < a, b > | ≤ | < x > |+ 2

Η δυαδική αναπαράσταση του x περιέχει blog xc + 1 bits, δηλαδή | < x > | =blog xc+ 1. Κατά συνέπεια έχουμε:

| < a, b > | = | < a > |+ | < b > |= (blog ac+ 1) + (blog bc+ 1)

≤ log a+ log b+ 2

= log ab+ 2

= log x+ 2

≤ blog xc+ 3

= | < x > |+ 2

΄Ετσι, έχει αποδειχθεί η μία κατεύθυνση της (9.2).

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

ακέραιοι a και b τέτοιοι ώστε | < a, b > | ≤ | < x > |+ 2 και < x, a, b >∈ N .

Τότε, προκύπτει άμεσα από την (9.1) και από τον ορισμό της γλώσσας N ότι

Page 12: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

272 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

x ∈ LNPrim και έτσι έχει αποδειχθεί και η άλλη κατεύθυνση της (9.2). Μ΄

αυτό το αποτέλεσμα ολοκληρώνεται η απόδειξη του ισχυρισμού ότι

LNPrim ∈ NP

Παράδειγμα 9.6 (Ικανοποιησιμότητα λογικού τύπου με 3 το

πολύ ατομικές προτάσεις - 3SAT )Στο παράδειγμα αυτό αναφερόμαστε σε Boolean λογικούς τύπους φ με μετα-

βλητές x1, x2, . . . , xm, που είναι της μορφής:

φ = C1 ∧ C2 ∧ . . . ∧ Ck (9.3)

όπου κάθε Ci, 1 ≤ i ≤ k είναι της μορφής

Ci = li1 ∨ li2 ∨ l

i3

Κάθε lia μπορεί να είναι μία μεταβλητή ή η άρνηση μιας μεταβλητής. ΄Ενα

παράδειγμα τέτοιου τύπου είναι το εξής:

φ = (x1 ∨ ¬x1 ∨ ¬x2) ∧ (x3 ∨ x2 ∨ x4) ∧ (¬x1 ∨ ¬x3 ∨ ¬x4)

΄Ενας τύπος φ της μορφής (9.3) λέμε ότι είναι ικανοποιήσιμος, αν υπάρχει μία

τιμή αληθείας στο {0, 1} για κάθε μία από τις μεταβλητές x1, x2, . . . , xm,

τέτοια ώστε ο τύπος φ να είναι αληθής. Σε ότι αφορά τον τύπο του παραδείγ-

ματος, αυτός είναι ικανοποιήσιμος: αν θεωρήσουμε x1 = 0 και x2 = 1 και

δώσουμε στις x3 και x4 μία οποιαδήποτε τιμή, τότε

φ = (0 ∨ 1 ∨ 0) ∧ (x3 ∨ 1 ∨ x4) ∧ (1 ∨ ¬x3 ∨ ¬x4) = 1

Ορίζουμε την παρακάτω γλώσσα:

L3SAT = {< φ >: ο φ είναι της μορφής (9.3) και είναι ικανοποιήσιμος}

Μπορεί να αποδειχθεί ότι

L3SAT ∈ NP

Διαισθητικά, είναι ξεκάθαρο ότι P ⊆ NP , επειδή μία γλώσσα:

• ανήκει στην P , αν για κάθε συμβολοσειρά w είναι δυνατό να υπολογιστεί

μία «λύση» s σε πολυωνυμικό χρόνο,

Page 13: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.3. Η ΚΛΑΣΗ ΓΛΩΣΣΩΝ NP 273

• ανήκει στην NP , αν για κάθε συμβολοσειρά w και για οποιαδήποτε δοθε-

ίσα «λύση» s, μπορεί να επαληθευτεί σε πολυωνυμικό χρόνο αν η s είναι

μία ορθή λύση ή όχι για τη w.

Στη δεύτερη περίπτωση δε χρειάζεται να υπολογιστεί η λύση s, αλλά μόνο να

επαληθευτεί.

Θεώρημα 9.1 (Κλάσεις πολυπλοκότητας P και NP )

Ισχύει ότι

P ⊆ NP

Απόδειξη: ΄Εστω μία γλώσσα L ∈ P . Θα αποδείξουμε ότι L ∈ NP . Ο-

ρίζουμε το πολυώνυμο p ως p(n) := 0 για όλα τα n ∈ N0 και τη γλώσσα

N = {< w, ε >: w ∈ L}

Αφού L ∈ P , η γλώσσαN ανήκει επίσης στην κλάση P . Εύκολα διαπιστώνουμε

ότι

w ∈ L⇔ ∃s : |s| ≤ p(|w|) = 0 και < w, s >∈ N

΄Ετσι ολοκληρώνεται η απόδειξη.

Ας επιστρέψουμε τώρα στο πρόβλημα του αθροίσματος υποσυνόλου (Παράδειγ-

μα 9.4), που είναι εύκολο να επαληθευτεί, αλλά δύσκολο να υπολογιστεί μια

λύση. Δοθέντος ενός συνόλου ακεραίων, υπάρχει ένα μη κενό υποσύνολο αυ-

τών που άθροισμα σε 0; Για παράδειγμα, υπάρχει ένα υποσύνολο του συνόλου

{−2,−3, 15, 14, 7,−10} που το άθροισμα των στοιχείων του είναι 0; Η απά-

ντηση είναι καταφατική, επειδή εύκολα επαληθεύεται με τρεις προσθέσεις ότι τα

στοιχεία του υποσυνόλου {−2,−3,−10, 15} αθροίζουν σε 0. Δε γνωρίζουμε

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

χρόνο, αλλά αν ισχύει ότι P = NP , τότε θα ξέραμε ότι υπάρχει ένας τέτοιος

αλγόριθμος. Επομένως, αυτό το πρόβλημα ανήκει στην κλάση NP (εύκολα

επαληθεύσιμο), αλλά όχι απαραίτητα στην κλάση P (εύκολα επιλύσιμο).

Μία απάντηση στο ερώτημα αν ισχύει ότι P = NP θα μας διαφώτιζε στο

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

το πρόβλημα του αθροίσματος υποσυνόλου, μπορούν επίσης και να επιλυθούν

σε πολυωνυμικό χρόνο. Αν τελικά προέκυπτε ότι P 6= NP , αυτό θα σήμαινε

ότι υπάρχουν προβλήματα στην κλάση NP που είναι πιο δύσκολο να υπολογι-

στεί η λύση τους, από το να επαληθευτεί: δε θα μπορούσαν να επιλυθούν σε

Page 14: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

274 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

πολυωνυμικό χρόνο, αλλά η λύση θα μπορούσε να επαληθευτεί σε πολυωνυμικό

χρόνο.

Ο ακριβής ορισμός του προβλήματος της σχέσης μεταξύ των κλάσεων Pκαι NP δόθηκε το 1971 από τον Stephen Cook [1] και το πρόβλημα θεωρεί-

ται σήμερα από πολλούς ως το πιο σημαντικό ανοικτό πρόβλημα στο χώρο [2].

Είναι ένα από τα επτά προβλήματα για το Millennium Prize, που επιλέχθηκαν

από το Clay Mathematics Institute για το οποίο η πρώτη ορθή λύση αποφέρει

βραβείο αξίας 1.000.000 δολαρίων. Οι περισσότεροι επιστήμονες πιστεύουν ότι

πράγματι η κλάση P είναι ένα γνήσιο υποσύνολο της NP . Μία απόδειξη όμως,

πέρα από τη σημαντικότητα της για τη Θεωρία Υπολογισμού, θα είχε προφα-

νείς επιπτώσεις στα μαθηματικά, στην κρυπτογραφία, στην αλγοριθμκή, στην

τεχνητή νοημοσύνη, στη θεωρία παιγνίων, στην επεξεργασία πολυμέσων, στη

φιλοσοφία, στην οικονομική επιστήμη και σε πολλούς άλλους χώρους.

΄Εστω τώρα L μία γλώσσα στην NP . Θα υπάρχει τότε ένα πολυώνυμο pκαι μία γλώσσα N ∈ P , τέτοια ώστε για όλες τις συμβολοσειρές w,

w ∈ L⇔ ∃s : |s| ≤ p(|w|) και < w, s >∈ N (9.4)

Πώς αποφασίζεται αν μία οποιαδήποτε δοθείσα συμβολοσειρά w ανήκει στη

γλώσσα L; Αν μπορούμε να βρούμε μία συμβολοσειρά s, που ικανοποιεί το δεξί

μέρος της (9.4), τότε γνωρίζουμε ότι w ∈ L. Αν από την άλλη μεριά, δεν

υπάρχει μία τέτοια συμβολοσειρά s, τότε w /∈ L. Πόσος χρόνος χρειάζεται για

να αποφασιστεί αν υπάρχει μία τέτοια συμβολοσειρά s ή όχι;Για παράδειγμα, έστω ότι όπου L αναφερόμαστε στη γλώσσα LNPrim και

έστω x ∈ N. Ο παρακάτω αλγόριθμος αποφασίζει αν < x >∈ LNPrim ή όχι.

NonPrime(< x >: x ∈ N) =

1. Αν x = 0 ή x = 1 ή x = 2 τότε ο x απορρίπτεται

2. διαφορετικά:

2.1 a := 2

2.2 ΄Οσο a < x εκτέλεσε

2.2.1 Αν xmod a = 0 τότε ο x γίνεται δεκτός

2.2.2 διαφορετικά a := a+ 1

3. Ο x απορρίπτεται.

Είναι σαφές ότι ο αλγόριθμος NonPrime είναι σωστός. ΄Εστω n το μήκος

της δυαδικής αναπαράστασης του x, δηλαδή n = blog xc+ 1. Αν x > 2 και ο xείναι ένας πρώτος αριθμός, τότε στον επαναληπτικό βρόγχο του βήματος 2.2 θα

Page 15: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.3. Η ΚΛΑΣΗ ΓΛΩΣΣΩΝ NP 275

έχουμε συνολικά x − 2 επαναλήψεις. Γι΄ αυτό, αφού n − 1 = blog xc ≤ log x,ο χρόνος εκτέλεσης αυτού του αλγορίθμου είναι τουλάχιστο

x− 2 ≥ 2n−1 − 2

δηλαδή είναι τουλάχιστο μία εκθετική συνάρτηση του μήκους της εισόδου.

Θεώρημα 9.2 (Κλάσεις πολυπλοκότητας NP και EXP )

Ορίζουμε την κλάση πολυπλοκότητας EXP ως

EXP = {L :υπάρχει ένα πολυώνυμο p, τέτοιο ώστε η L να μπορεί να

αποφασιστεί σε χρόνο 2p(n)}

Αποδεικνύεται ότι

NP ⊆ EXP

Απόδειξη: ΄Εστω L μία οποιαδήποτε γλώσσα στην NP . ΄Εστω p ένα πο-

λυώνυμο και N ∈ P μία γλώσσα, τέτοια ώστε για όλες τις συμβολοσειρές

w,

w ∈ L⇔ ∃s : |s| ≤ p(|w|) και < w, s >∈ N (9.5)

Ο παρακάτω αλγόριθμος αποφασίζει, για οποιαδήποτε δοθείσα είσοδο w αν

w ∈ L ή όχι. Αυτό γίνεται εξετάζοντας όλες τις πιθανές συμβολοσειρές s για

τις οποίες |s| ≤ p(|w|):

Για όλα τα s με |s| ≤ p(|w|):

αν < w, s >∈ N , τότε η w αποδεκτή

Η w απορρίπτεται.

Η ορθότητα του αλγορίθμου είναι συνέπεια της (9.5). Για να βρούμε το χρόνο

εκτέλεσής του υποθέτουμε ότι οι w και s αναπαριστώνται από δυαδικές συμβο-

λοσειρές. ΄Εστω ότι το μήκος της εισόδου είναι n, δηλαδή n = |w|.Μας ενδιαφέρει να βρούμε πόσες δυαδικές συμβολοσειρές s υπάρχουν με

μήκος το πολύ p(|w|). Κάθε τέτοια s μπορεί να περιγραφεί από μία ακολουθία

μήκους p(|w|) = p(n) αποτελούμενη από 0, 1 και το σύμβολο του κενού.

Επομένως, υπάρχουν το πολύ 3p(n)δυαδικές συμβολοσειρές s με |s| ≤ p(n)

και γι΄ αυτό ο επαναληπτικός βρόγχος του αλγορίθμου εκτελείται το πολύ 3p(n)

φορές.

Page 16: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

276 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

Αφού N ∈ P , υπάρχει ένας αλγόριθμος και ένα πολυώνυμο q, τέτοιο ώστε

αυτός ο αλγόριθμος, όταν εκτελείται για τη συμβολοσειρά εισόδου z να αποφα-

σίζει σε χρόνο q(|z|) αν z ∈ N ή όχι. Αυτή η είσοδος z έχει τη μορφή < w, s >και έτσι έχουμε:

|z| = |w|+ |s| ≤ |w|+ p(|w|) = n+ p(n)

Προκύπτει λοιπόν ότι ο συνολικός χρόνος εκτέλεσης του αλγόριθμου που α-

ποφασίζει αν w ∈ L φράσσεται άνω από την έκφραση:

3p(n) · q(n+ p(n)) ≤ 22p(n) · q(n+ p(n))

≤ 22p(n) · 2q(n+p(n))

= 2p′(n)

όπου p′ είναι το πολυώνυμο, που ορίζεται ως p′ = 2p(n) + q(n+ p(n)).΄Ετσι ολοκληρώνεται η απόδειξη του θεωρήματος.

Σήμερα δεν είναι ακόμη γνωστό αν η κλάση NP είναι γνήσιο υποσύνολο της

EXP . Από τις P ⊆ NP και NP ⊆ EXP προκύπτει ότι P ⊆ EXP . ΄Εχει

αποδειχθεί ότι η κλάση P είναι ένα γνήσιο υποσύνολο της EXP , δηλαδή υ-

πάρχουν γλώσσες που μπορούν να αποφασιστούν σε εκθετικό χρόνο, αλλά δεν

είναι δυνατό να αποφασιστούν σε πολυωνυμικό χρόνο.

Η συντόμευσηNP αναφέρεται σε χρόνο εκτέλεσης που είναι μη ντεντερμινι-

στικά πολυωνυμικός (Non-deterministic Polynomial). Μέχρι στιγμής αναφερ-

θήκαμε μόνο σε ντεντερμινιστικούς αλγορίθμους, που σημαίνει ότι οποιαδήποτε

στιγμή κατά τον υπολογισμό το επόμενο βήμα καθορίζεται με μοναδικό τρόπο.

Στην Ενότητα 1.6 είδαμε ότι σε ένα μη ντεντερμινιστικό αλγόριθμο υπάρχουν

περισσότερες από μία δυνατότητες για το επόμενο βήμα στον υπολογισμό και ο

αλγόριθμος επιλέγει κάθε φορά μία απ΄ αυτές.

Για να δώσουμε ένα παράδειγμα, ας εξετάσουμε τη γλώσσα LSOS του Πα-

ραδείγματος 9.4. ΄Εστω ότι τα m, a1, a2, . . . , am και b είναι στοιχεία του N0.

Τότε,

< a1, a2, . . . , am, b >∈ LSOS ⇔ υπάρχουν c1, c2, . . . , cm ∈ {0, 1}

τέτοια ώστε

m∑i=1

ciai = b

Ο παρακάτω μη ντεντερμινιστικός αλγόριθμος αποφασίζει τη γλώσσα LSOS :

SOS(m, a1, a2, . . . , am, b) =

Page 17: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

9.3. Η ΚΛΑΣΗ ΓΛΩΣΣΩΝ NP 277

1. s := 0

2. Για i := 1 έως m εκτέλεσε:

2.1 s := s | s := s+ ai

3. Αν s = b τότε η είσοδος είναι αποδεκτή

4. διαφορετικά απορρίπτεται.

Η γραμμή

s := s | s := s+ ai

σημαίνει ότι είτε εκτελείται η εντολή s := s είτε η s := s+ ai.Ας υποθέσουμε ότι < a1, a2, . . . , am, b >∈ LSOS . Τότε υπάρχουν c1, c2,

. . ., cm ∈ {0, 1} τέτοια ώστε∑m

i=1 ciai = b. Ας υποθέσουμε ότι ο αλγόριθμός

μας κάνει το παρακάτω για κάθε i με 1 ≤ i ≤ m:

Στην i επανάληψη,

• αν ci = 0, τότε εκτελείται η εντολή s := s,

• αν ci = 1, τότε εκτελείται η εντολή s := s+ ai.

Τότε, μετά από τον επαναλητπικό βρόγχο έχουμε s = b και ο αλγόριθμος

αποδέχεται την είσοδο, επομένως ο αλγόριθμος ορθά βρίσκει ότι < a1, a2, . . .,am, b >∈ LSOS . Με άλλα λόγια, σ΄ αυτή την περίπτωση, υπάρχει τουλάχιστο

ένας υπολογισμός αποδοχής.

Από την άλλη μεριά, αν < a1, a2, . . . , am, b >/∈ LSOS , τότε ο αλγόριθμος

πάντα απορρίπτει την είσοδο ανεξάρτητα από το ποια από τις δύο εντολές εκτε-

λείται σε κάθε επανάληψη του βρόγχου. Σ΄ αυτή την περίπτωση, δεν υπάρχει

υπολογισμός αποδοχής.

Ορισμός 9.4 (Μη ντεντερμινιστική απόφαση σε χρόνο T )Λέμε ότι ένας μη ντεντερμινιστικός αλγόριθμος M αποφασίζει μία γλώσσα Lσε χρόνο T , αν για κάθε συμβολοσειρά w ισχύει το εξής: w ∈ L αν και μόνο

αν υπάρχει τουλάχιστον ένας υπολογισμός, που με είσοδο w αποδέχεται την

είσοδο μέσα σε το πολύ T (|w|) χρόνο.

Ο μη ντεντερμινιστικός αλγόριθμος, που είδαμε, αποφασίζει τη γλώσσα LSOSσε χρόνο που είναι γραμμική συνάρτηση του μήκους της εισόδου. ΄Εστω < a1,

a2, . . ., am, b >∈ LSOS και έστω ότι το μήκος της εισόδου είναι n. Τότε,

n = | < a1 > |+ | < a2 > |+ . . .+ | < am > |+ | < b > | ≥ m

Page 18: Upologistik€ Poluplokìthta · 2016-06-08 · hepilog€thc{kat‹llhlhc}kwdikopo—hshcjae—naiprofan€c. Giatoucfusi-koÔcarijmoÔcjajewre—taikat‹llhlhopoiad€potekwdikopo—hshsesÔsthma

278 ΚΕΦ�ΑΛΑΙΟ 9. ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

Γι΄ αυτή την είσοδο, υπάρχει ένας υπολογισμός που κάνει δεκτή την είσοδο και

παίρνει O(m) = O(n) χρόνο.

Η έννοια του πολυωνυμικού χρόνου εκτέλεσης ορίζεται και στην περίπτωση

των μη ντεντερμινιστικών αλγορίθμων με ανάλογο τρόπο ως προς τον Ορι-

σμό 9.2. Το παρακάτω θεώρημα, η απόδειξη του οποίου παραλείπεται, συσχε-

τίζει την έννοια του πολυωνυμικού χρόνου εκτέλεσης με την κλάση NP , που

ορίστηκε στον Ορισμό 9.3.

Θεώρημα 9.3 (Απόφαση γλώσσας NP σε πολυωνυμικό χρόνο)

Μία γλώσσα L ανήκει στην κλάση πολυπλοκότητας NP αν και μόνο αν υπάρχει

μία μη ντεντερμινιστική ΜΤ, που αποφασίζει την L σε πολυωνυμινό χρόνο.

9.4 Κλάσεις Χωρικής Πολυπλοκότητας

Βιβλιογραφία - Αναφορές

[1] Stephen A. Cook. The complexity of theorem-proving procedures. InProceedings of the Third Annual ACM Symposium on Theory of Com-puting, 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.

[2] Lance Fortnow. The status of the p versus np problem. Commun. ACM,52(9):78–86, September 2009. ISSN 0001-0782. doi: 10.1145/1562164.1562186. URL http://doi.acm.org/10.1145/1562164.1562186.