Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής ΥΠΟΛΟΓΙΣΜΟΥ. (Σηµειώσεις Μαθήµατος) Γ. Μαυροµµάτης Λέκτορας Π.. 407/80

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής ΥΠΟΛΟΓΙΣΜΟΥ. (Σηµειώσεις Μαθήµατος) Γ. Μαυροµµάτης Λέκτορας Π.. 407/80"

Transcript

1 Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ (Σηµειώσεις Μαθήµατος) Γ. Μαυροµµάτης Λέκτορας Π.. 407/80 Πειραιάς, Οκτώβριος 003

2

3 Περιεχόµενα Εισαγωγή 4 Μέρος ο - Αλγόριθµοι και Νόρµες. Από τα Προβλήµατα στους Αλγορίθµους 5. Μετρώντας την Επίδοση των Αλγορίθµων 8.3 Ποιοί είναι οι Αποτελεσµατικοί Αλγόριθµοι; 6.4 Υπολογισµός Πολυπλοκότητας 9.5 Τεχνικές Αλγορίθµων 4 Μέρος ο Πολυπλοκότητα Χρόνου. Υπολογιστικά Μοντέλα & Τάξεις Πολυπλοκότητας 35. Ένα Θεωρητικό Πλαίσιο 37.3 Μετασχηµατισµοί 40.4 Πυρήνας Προβληµάτων 47.5 Ψεύδο-πολυωνυµικός χρόνος και ισχυρά NP-Hard προβλήµατα 5.6 Άλλες Τάξεις Πολυπλοκότητας 56.7 Μέθοδοι Επίλυσης Σκληρών Προβληµάτων 59 Μέρος 3 ο Πολυπλοκότητα Χώρου & Παράλληλη 3. Κριτήρια Πολυπλοκότητας Πολυπλοκότητα Χώρου Παράλληλη Πολυπλοκότητα 7 Ασκήσεις 78 Αναφορές 86 Περιεχόµενο Μαθήµατος Προβλήµατα & Αλγόριθµοι. Νόρµες & Μέτρηση της Επίδοσης των Αλγορίθµων, Αποτελεσµατικοί Αλγόριθµοι. Υπολογισµός Πολυπλοκότητας και Τεχνικές αλγορίθµων. Κριτήρια & Τάξεις Πολυπλοκότητας. Θεωρία Πολυπλοκότητας NP-Completeness, Μετασχηµατισµοί. Προβλήµατα NP-Complete, NP-Hard και µέθοδοι επίλυσης. Αλγόριθµοι ψεύδο-πολυωνυµικού χρόνου. Πολυπλοκότητα Χώρου. Παράλληλη Πολυπλοκότητα. 3

4 Εισαγωγή Ο όρος Πληροφορική εµφανίστηκε στη δεκαετία του 40 και σήµερα σηµαίνει συλλογή και επεξεργασία πληροφοριών µε µηχανές προγραµµατιζόµενες, προκειµένου να επιλυθούν τα καθηµερινά προβλήµατα. Προκειµένου να επιλυθεί ένα πρόβληµα είναι απαραίτητη η ύπαρξη αφενός µεν του Υλικού, αφετέρου δε ενός Αλγορίθµου που θα περιγράφει την διαδικασία επίλυσής του. Η συνολική επίδοση του Υπολογιστικού Συστήµατος εξαρτάται από την επιλογή γρήγορου Υλικού αλλά και από την επιλογή αποτελεσµατικού Αλγορίθµου. Μία σηµαντική ανακάλυψη που έγινε σχετικά νωρίς ήταν ότι τα υπολογιστικά προβλήµατα διαφέρουν µεταξύ τους δραµατικά ως προς τον όγκο υπολογισµών που απαιτούν προκειµένου να επιλυθούν ακριβώς. Η θεωρητική µελέτη και µαθηµατική ανάλυση του τι µπορεί και τι δεν µπορεί να υπολογίσει κανείς, χρησιµοποιώντας περιορισµένους υπολογιστικούς πόρους αποτελεί το αντικείµενο της Θεωρίας Υπολογισµού. Πιο συγκεκριµένα, η Θεωρία Υπολογισµού (αλλοιώς Υπολογιστική Πολυπλοκότητα, Computational Complexity) έχει σαν στόχους: Τη µελέτη της αποτελεσµατικότητας των Αλγορίθµων. Τον εντοπισµό και µέτρηση της εγγενούς δυσκολίας που παρουσιάζουν διάφορα προβλήµατα. Την ταξινόµηση των προβληµάτων σε κατηγορίες ανάλογα µε τον βαθµό δυσκολίας που παρουσιάζουν στην επίλυσή τους. Στην υποστήριξη των κατασκευαστών Αλγορίθµων ώστε να στρέφουν τις προσπάθειές του σε στόχους που µπορούν να υλοποιηθούν αποφεύγοντας προβλήµατα που δεν µπορούν να επιλυθούν (τουλάχιστον από όσα µέχρι σήµερα γνωρίζουµε). Την υποστήριξη των κατασκευαστών Αλγορίθµων ώστε τα προϊόντα τους να είναι βέλτιστα από πλευράς υπολογιστικών νορµών, κύρια χρόνου αλλά και χώρου (µνήµης). 4

5 Αλγόριθµοι και Νόρµες. Από τα Προβλήµατα στους Αλγόριθµους Τα Προβλήµατα που µας απασχολούν εδώ είναι αυτά που µπορούν να µαθηµατικοποιηθούν και η επίλυσή τους να περιγραφεί µέσω ενός Αλγορίθµου που θα υλοποιηθεί σε υπολογιστή. Ένα τέτοιο Πρόβληµα είναι γενικά µία ερώτηση η οποία πρέπει να απαντηθεί. Συνήθως, ένα Πρόβληµα περιέχει διάφορες παραµέτρους ή ελεύθερες µεταβλητές οι τιµές των οποίων είναι αδιευκρίνιστες. Το Πρόβληµα καθορίζεται δίνοντας α) µια γενική περιγραφή όλων των παραµέτρων του, και β) µια δήλωση των ιδιοτήτων που πρέπει να ικανοποιεί η απάντηση (Λύση). Ένα Στιγµιότυπο του Προβλήµατος προκύπτει όταν καθορίζονται συγκεκριµένες τιµές για όλες τις παραµέτρους του. Ορισµός.. Αφηρηµένο Πρόβληµα P (Abstract Problem) ονοµάζεται µία σχέση ανάµεσα σε ένα σύνολο I που αποτελείται από τα Στιγµιότυπα (Instances) του προβλήµατος και ένα σύνολο S που αποτελείται από τις Λύσεις (Solutions) του προβλήµατος, P I S. Παράδειγµα.. Το πρόβληµα MAX-CLIQUE είναι αυτό της εύρεσης της µέγιστης κλίκας σε ένα απροσανατόλιστο γράφηµα. Ένα Στιγµιότυπο του προβλήµατος MAX-CLIQUE, είναι ένα δεδοµένο γράφηµα G = ( V, E), ενώ µία Λύση είναι ένα σύνολο κόµβων S V που αποτελούν κλίκα µε µέγιστο πληθάριθµο. Το πρόβληµα MAX-CLIQUE είναι η σχέση που αντιστοιχίζει κάθε Στιγµιότυπο ενός γραφήµατος µε όλα τα υποσύνολα των κόµβων που έχουν µέγιστο πληθάριθµο και αποτελούν κλίκα του G. Επειδή σε ένα γράφηµα είναι δυνατόν να υπάρχουν περισσότερα από ένα σύνολα που αποτελούν µέγιστη κλίκα, είναι προφανές ότι ένα Στιγµιότυπο ενός προβλήµατος µπορεί να έχει περισσότερες από µία Λύσεις. 5

6 Ορισµός.. Πρόβληµα Απόφασης (Decision Problem) λέγεται αυτό που η διαδικασία επίλυσής του εκφράζεται µε µια ακολουθία διατεταγµένων 0 στοιχείων (ΟΧΙ ΝΑΙ). Ένα Πρόβληµα Aπόφασης είναι µία συνάρτηση που αντιστοιχίζει το σύνολο των Στιγµιότυπων I στο σύνολο Λύσεων S = {0,} Συνδυαστικό πρόβληµα (Combinatorial problem) είναι το πρόβληµα στο οποίο η επιλογή της λύσης γίνεται µέσα από ένα πεπερασµένο σύνολο δυνατών λύσεων, ενώ Βελτιστοποίηση (Optimization) γενικά, είναι η εύρεση του µέγιστου (ή ελάχιστου) µιάς συνάρτησης ορισµένης σε κάποιο σύνολο πεδίο ορισµού (domain). Τα προβλήµατα που µπορούν να αντιµετωπιστούν σαν την επιλογή µιάς βέλτιστης ανάθεσης τιµών σε µία οµάδα παραµέτρων προκειµένου να µεγιστοποιηθεί (ή ελαχιστοποιηθεί) κάποια άλλη ενώ το σύνολο των δυνατών λύσεων αποτελείται από πεπερασµένες το πλήθος διακριτές τιµές, αναφέρονται σαν Προβλήµατα Συνδυαστικής Βελτιστοποίησης (Combinatorial Optimization Problems). Ορισµός..3 Ένα στιγµιότυπο ενός προβλήµατος βελτιστοποίησης είναι ένα ζεύγος ( Fc, ), όπου F είναι οποιοδήποτε σύνολο - χώρος όλων των δυνατών (feasible) λύσεων, c είναι η συνάρτηση κόστους, µία απεικόνηση c : F, οι πραγµατικοί αριθµοί Το πρόβληµα είναι να βρεθεί ένα σηµείο f F για το οποίο ισχύει cf () cy () y F που ονοµάζεται καθολικά (σφαιρικά) βέλτιστη (globally optimal) λύση του δεδοµένου στιγµιότυπου, ή απλά αν δεν υπάρχει περίπτωση σύγχισης, βέλτιστη λύση (optimal solution). Το σύνολο όλων των στιγµιοτύπων Ι ονοµάζεται Πρόβληµα Βελτιστοποίησης (Optimization Problem). 6

7 Ένα πρόβληµα βελτιστοποίησης µπορεί να µετασχηµατιστεί σε πρόβληµα απόφασης, αν θεωρήσουµε µία τιµή-στόχο για την µεταβλητή που θέλουµε να βελτιστοποιήσουµε και το πρόβληµα να τεθεί στο αν η τιµή αυτή στόχος µπορεί να επιτευχθεί ή όχι, θέτοντας δηλαδή ένα φράγµα στην τιµή που πρόκειται να µεγιστοποιηθεί ή ελαχιστοποιηθεί. Παράδειγµα.. Tο πρόβληµα βελτιστοποίησης MAX-CLIQUE: οθέντος ενός γραφήµατος G = ( V, E) να βρεθεί το µεγαλύτερο υποσύνολο S ισχύει ( uv,) E. V τέτοιο ώστε για κάθε διαφορετικά uv, S να µετασχηµατίζεται στο ισοδύναµο πρόβληµα απόφασης CLIQUE-NUMBER: οθέντος ενός γραφήµατος G = ( V, E) και ενός θετικού ακεραίου k, έχει το γράφηµα κλίκα µεγέθους k; Το Μέγεθος Προβλήµατος ή ισοδύναµα Μέγεθος Εισόδου (problem size, input size) µετριέται µε κάποια ή κάποιες από τις παραµέτρους του Προβλήµατος που µπορεί να διαφέρουν ανάλογα µε το είδος του, εξαρτώνται δηλαδή από το ίδιο το πρόβληµα. Για παράδειγµα στην περίπτωση της ταξινόµησης αριθµών, το µέγεθος του προβλήµατος µπορεί να εκφραστεί από το µέγεθος του πίνακα n των αριθµών αυτών, ενώ στην περίπτωση γραφήµατος, το µέγεθός του εκφράζεται από το πλήθος n των κόµβων του ή / και το πλήθος e των ακµών του. Ένα Πρόβληµα επιλύεται µέσω ενός Αλγορίθµου µιάς βήµα προς βήµα διαδικασίας που το επιλύει. Αλγόριθµος (µη φορµαλιστικά) είναι µία καλά ορισµένη υπολογιστική διαδικασία που δέχεται κάποια/ες τιµή/ές σαν είσοδο και παράγει κάποια/ες τιµή/ές σαν έξοδο, πρόκειται δηλαδή για µια σειρά από υπολογιστικά βήµατα που µετατρέπει την είσοδο (input) σε έξοδο (output). Ένας Αλγόριθµος λέγεται ότι επιλύει ένα Πρόβληµα όταν µπορεί να εφαρµοστεί σε κάθε στιγµιότυπο του Προβλήµατος και είναι εξασφαλισµένο ότι θα δόσει λύση για κάθε τέτοιο στιγµιότυπο. 7

8 Πρέπει να σηµειωθεί ότι υπάρχουν περιπτώσεις καλά ορισµένων µαθηµατικών προβληµάτων τα οποία έχει αποδειχθεί ότι δεν υπάρχει αλγόριθµος ο οποίος να τα επιλύει. Πρόκειται για µη επιλύσιµα unsolvable ή undecidable εφόσον είναι Προβλήµατα Απόφασης: Το Halting Problem (Α. Turing, 936) που µπορεί να διατυπωθεί ως εξής: «οθέντος ενός προγράµµατος και της εισόδου του (input) υπάρχει αλγόριθµος που να απαντά σε κάθε περίπτωση στο ερώτηµα αν ο υπολογιστής τελικά θα σταµατήσει;» Ο Turing έχει αποδείξει ότι δεν υπάρχει τέτοιος αλγόριθµος, εποµένως το Halting Problem είναι µη επιλύσιµο. Το έκατο πρόβληµα του Hilbert (Hilbert s tenth problem): «οθείσης µιάς τυχαίας πολυωνυµικής εξίσωσης Px (, x,... x n) = 0 µε ακέραιους συντελεστές, υπάρχει Αλγόριθµος που να αποφασίζει αν έχει ή όχι ακέραια λύση;». To 970 αποδείχτηκε ότι τέτοιος αλγόριθµος δεν υπάρχει, εποµένως το 0 ο πρόβληµα του Hilbert είναι µη επιλύσιµο. Ωστόσο αφού παραµερίσει κανείς περιπτώσεις όπως οι παραπάνω, βρίσκεται µπροστά σε ερωτήµατα όπως: πότε ένας Αλγόριθµος είναι άξιος λόγου και χρήσιµος; Μέχρι ποίου µεγέθους προβλήµατα µπορεί να επιλύσει σε «λογικό» χρόνο και γενικότερα µε χρήση «λογικού» αριθµού πόρων; Μεταξύ δύο αλγορίθµων του ιδίου προβλήµατος ποιός είναι καλύτερος; Αυτά και άλλα ερωτήµατα υπάγονται στο καίριο πρόβληµα της αξιολόγησης των Αλγορίθµων.. Μετρώντας την Επίδοση των Αλγορίθµων Ανάλυση ενός Αλγορίθµου, είναι η πρόβλεψη των πόρων που αυτός απαιτεί. Τέτοιοι πόροι είναι ο υπολογιστικός χρόνος η µνήµη (χώρος) το γινόµενο χρόνου - χώρου το εύρος επικοινωνιών κλπ 8

9 Προκειµένου να επιλύσουµε ένα πρόβληµα, ψάχνουµε να βρούµε τον πλέον Αποτελεσµατικό (efficient) αλγόριθµο. Ο όρος Αποτελεσµατικός Αλγόριθµος γενικά αφορά οποιονδήποτε από τους πόρους που αυτός απαιτεί, όµως ο πόρος που ενδιαφέρει στις περισσότερες περιπτώσεις είναι οι απαιτήσεις του σε υπολογιστικό χρόνο (running time). Ο Υπολογιστικός χρόνος µπορεί βέβαια να µετρηθεί µε απόλυτο, φυσικό τρόπο π.χ. χρόνος εκτέλεσης σε sec, προσέγγιση που παρουσιάζει µειονεκτήµατα τα οποία και πρέπει να ξεπεραστούν: A. Οι εξελίξεις της τεχνολογίας των υπολογιστών µεταβάλλουν τις δυνατότητες του Υλικού µε αποτέλεσµα µια µέτρηση που γίνεται σήµερα, σε λίγο χρόνο να µην σηµαίνει τίποτε. Για το λόγο αυτό χρησιµοποιείται το πολύ πιο τυποποιηµένο µέτρο του πλήθους των απλών υπολογιστικών βηµάτων που χρειάζεται να εκτελέσει ο αλγόριθµος. Το πλήθος των υπολογιστικών βηµάτων και εποµένως ο χρόνος εκτέλεσης µεταξύ άλλων εξαρτάται και από το µέγεθος του προβλήµατος. Η ταξινόµηση 00 εκατοµµυρίων αριθµών έχει τελείως διαφορετικές απαιτήσεις σε υπολογιστικούς πόρους από την ταξινόµηση 00 αριθµών. Έτσι στην περίπτωση της ταξινόµησης αριθµών εκφράζουµε το πλήθος των βηµάτων σαν συνάρτηση του πλήθους n των αριθµών που είναι το µέγεθος του προβλήµατος. Θεωρούµε ότι κάθε βήµα i του κώδικα που εκτελείται, απαιτεί χρόνο (αλλά και γενικότερα, κόστος) έστω c i. Παράδειγµα.. Έστω το πρόβληµα ταξινόµησης των n αριθµών a, i=,,..., n. Αναλυτικός Αλγόριθµος Κόστος Επαναλήψεις Read(n); c for i= to n do read(a[i]); c n for i= to n- do (n-)(n-) for j= to n- do if a[j] > a[j+] then swap a[j], a[j+] c 3 for i= to n do write(a[i]); c 4 n i 9

10 Ο υπολογιστικός χρόνος που απαιτεί ο παραπάνω απλοϊκός αλγόριθµος ταξινόµησης είναι το άθροισµα των χρόνων των επιµέρους βηµάτων: Tn ( ) = c + cn+ c ( n )( n ) + cn= 3 4 cn + ( c + c) n+ ( c c) = an + bn + c, abc,, σταθερές. Η οριακή συµπεριφορά του υπολογιστικού χρόνου όταν το n αυξάνει, είναι αυτή που καθορίζει το µέγεθος των προβληµάτων που µπορεί να λύσει ο αλγόριθµος. Έτσι, για µεγάλες τιµές του n, ο όρος an και µάλιστα ο n είναι αυτός που καθορίζει το µέγεθος, τον ρυθµό αύξησης (growth rate) της παραπάνω παράστασης διότι το a είναι σταθερό. Γράφουµε λοιπόν ότι ο αλγόριθµος τρέχει σε χρόνο Tn ( ) = On ( ) που n λέγεται πολυωνυµικός ενώ ένας αλγόριθµος π.χ. O ( ) λέµε ότι τρέχει σε εκθετικό χρόνο. Ο συµβολισµός O (Big Oh) είναι ένας από τους ασυµπτωτικούς συµβολισµούς που χρησιµοποιούνται για να εκφράσουν τον υπολογιστικό χρόνο (γενικότερα, πόρο) που απαιτεί ένας αλγόριθµος. Μια συνάρτηση f ( n ) είναι Ogn ( ( )) εάν η f αυξάνει το πολύ τόσο γρήγορα όσο η g. Ορισµός.. Έστω fg, θετικές συναρτήσεις του n. H gn ( ) είναι ένα ασυµπτωτικά άνω φράγµα για την fn ( ) fn ( ) = Ogn ( ( )) αν και µόνον αν cn, > 0 : fn ( ) cgn ( ) n n 0 0 Παράδειγµα.. n + n = O(3 / n) Απόδειξη Επαγωγικά για c=, n0 = 7. Θα δείξουµε ότι ισχύει n 3 n +, n 7 n 0

11 Για n = 7 ισχύει διότι 8 n+ = = 56 και n n = 7 >. k k 3 Έστω ότι ισχύει για n= k 7, δηλαδή + k. Θα αποδειχθεί ότι ισχύει για n= k+. Πράγµατι k + k + = k 3 k k k+ 3k 3 3 = k+ k k+ Ορισµός Έστω fg, θετικές συναρτήσεις του n. Ορίζονται τα παρακάτω: H gn ( ) είναι ένα ασυµπτωτικά στενό φράγµα για την fn ( ) (..) (..3) (..4) (..5) fn ( ) =Θ ( gn ( )) αν και µόνον αν c, c, n > 0 : c g( n) f( n) c g( n) n n 0 0 H gn ( ) είναι ένα ασυµπτωτικά κάτω φράγµα για την fn ( ) fn ( ) =Ω ( gn ( )) αν και µόνον αν c, n > 0 : cg( n) f( n) n n 0 0 Ο συµβολισµός ο (µικρό όµικρον) χρησιµοποιείται για να δηλώσει ένα άνω φράγµα που δεν είναι ασυµπτωτικά στενό fn ( ) = ο( gn ( )) αν και µόνον αν C > 0 n > 0 : f( n) < Cg( n) n n 0 0 Ο συµβολισµός ω (µικρό ωµέγα) χρησιµοποιείται για να δηλώσει ένα κάτω φράγµα που δεν είναι ασυµπτωτικά στενό fn ( ) = ω( gn ( )) αν και µόνον αν C > 0 n > 0 : f( n) > Cg( n) n n 0 0

12 Λήµµα Εαν f( n) = O( g( n)) και f( n) = O( g( n)) τότε ισχύουν τα παρακάτω: (..) f( n) + f( n) = O( g( n) + g( n)) (..) f( n) + f( n) = O(max{ g( n), g( n)}) (..3) f( n) f( n) = O( g( n) g( n)) Απόδειξη (του..) Ισχύει (ορισµός..) f( n) = O( g( n)) f( n) cg( n), n n και f ( n) = O( g ( n)) f ( n) c g ( n), n n Θέτουµε n0 = max{ n, n} και c 0 = c + c οπότε για κάθε n n0 θα έχουµε f ( n) + f ( n) c g ( n) + c g ( n) ( c + c )(max{ g ( n), g ( n)}) = c (max{ g ( n), g ( n)}). 0 Πρόκειται για τους γνωστούς ως κανόνες αθροίσµατος και γινοµένου του O -συµβολισµού. Λήµµα Έστω fg, θετικές συναρτήσεις του n. Σχετιικά µε τους ασυµπτωτικούς συµβολισµούς ισχύουν τα παρακάτω: (..4) fn ( ) =Θ ( gn ( )) αν και µόνον αν fn ( ) =Ο( gn ( )) fn ( ) =Ω ( gn ( )) (..5) fn ( ) =Θ( gn ( )) gn ( ) =Θ ( fn ( )) (..6) fn ( ) =Ο( gn ( )) gn ( ) =Ω ( fn ( )) (..7) fn ( ) = ο( gn ( )) gn ( ) = ω( fn ( )) (..8) fn ( ) = ( gn ( )) gn ( ) = ( hn ( )) fn ( ) = ( hn ( )) (..9) fn ( ) = ( fn ( )), όπου {" Θ"," Ο"," Ω "," ο"," ω"} (..0) fn () = ο(()) gn fn () = Ο (()) gn, το αντίστροφο δεν ισχύει (..) fn () = ω(()) gn fn () = Ω (()) gn, το αντίστροφο δεν ισχύει (..) fn ( ) fn ( ) = ο( gn ( )) lim = 0 n gn ( )

13 (..3) fn ( ) fn ( ) = ω( gn ( )) lim = n gn ( ) Ένας αλγόριθµος τρέχει σε χρόνο Θ (()) gn αν και µόνο αν τρέχει σε (..4) χρόνο Ο (()) gn στην χειρότερη περίπτωση και Ω (()) gn στην καλύτερη περίπτωση δεδοµένων Παράδειγµα..3 Να υπολογιστεί συναρτήσει του n η τιµή που επιστρέφει η παρακάτω συνάρτηση και να δοθεί ένας O-συµβολισµός της πολυπλοκότητάς της. Λύση και ισοδύναµα Function one(n) r=0 for i= to n- do 3 for j=i+ to n do 4 for k= to j do 5 r=r+ 6 return (r) Ο βρόγχος 4-5 ισοδυναµεί µε r=r+j άρα ο 3-5 γράφεται for j=i+ to n do r=r+j j=+ i n j= j= nn ( ) ii ( ) = r + εποµένως ο βρόγχος -5 ισοδυναµεί µε το άθροισµα n nn ( ) ii ( ) r = r+ ( ) i= nn ( ) = r + 3 n r = r+ j = r+ j j Συνεπώς τα απλά υπολογιστικά βήµατα που εκτελεί είναι συνάρτηση απαιτεί χρόνο 3 On ( ). i nn 3 ( ) και εποµένως η 3

14 Β. Το ίδιο πρόβληµα µπορεί να παρουσιάζει διαφορετική συµπεριφορά και απαιτήσεις σε χρόνο για διαφορετικά στιγµιότυπά του, που µάλιστα να απέχουν πολύ τόσο µεταξύ τους όσο και από το µέσο όρο. Για το λόγο αυτό µελετάται ο αλγόριθµος σε διάφορες περιπτώσεις δεδοµένων. Στο παράδειγµα.. τα υπολογιστικά βήµατα που εκτελεί ο αλγόριθµος ταξινόµησης είναι ανεξάρτητα από τα δεδοµένα για σταθερό n σε κάθε περίπτωαη δεδοµένων Tn ( ) = On ( ) (oblivious algorithm). Ωστόσο πολλοί αλγόριθµοι παρουσιάζουν διαφορετική πολυπλοκότητα ανάλογα µε τα δεδοµένα του Προβλήµατος που πρόκειται να λύσουν. Έτσι για διάφορες περιπτώσεις δεδοµένων του ίδιου προβλήµατος υπάρχει ο αντίστοιχος τύπος ανάλυσης που τυπικά µπορεί να είναι: Kαλύτερη περίπτωση (best case). Ο χρόνος που απαιτείται όταν τα δεδοµένα βρίσκονται στην πλέον επιθυµητή µορφή. Ο χρόνος Tn ( ) είναι ο µικρότερος χρόνος που µετριέται από όλες τις περιπτώσεις στιγµιοτύπων µεγέθους n. Xειρότερη περίπτωση (worst case). Ο χρόνος που απαιτείται όταν σχετικά µε τα δεδοµένα συµβαίνει το χειρότερο που µπορεί να συµβεί. Ο χρόνος Tn ( ) είναι ο µέγιστος χρόνος που µετριέται σε όλες τις περιπτώσεις στιγµιοτύπων µεγέθους n. Mέση περίπτωση (average case). Ο αναµενόµενος υπολογιστικός χρόνος (expected running time) όταν τα δεδοµένα βρίσκονται σε µία µέση, αντιπροσωπευτική κατάσταση (συνήθως παριστάνεται από κάποια οµοιόµορφη κατανοµή). Ο χρόνος Tn ( ) είναι ο µέσος χρόνος που υπολογίζεται από όλες τις περιπτώσεις στιγµιοτύπων µεγέθους n. Πιθανοτική (Probabilistic). Ο αναµενόµενος υπολογιστικός χρόνος για ένα τυχαίο στιγµιότυπο του προβλήµατος. Εδώ εκφράζουµε τον χρόνο και την πιθανότητα να είναι αυτός ο χρόνος που τελικά θα χρειαστεί ο αλγόριθµος. 4

15 Παράδειγµα..4 Έστω ένας Αλγόριθµος που για κάθε είσοδο δεδοµένων µε µέγεθος n bits απαιτεί χρόνο n εκτός από µία περίπτωση που ο χρόνος είναι n Χειρότερη περίπτωση Θ ( n ) Μέση περίπτωση n n n n + ( ) n n Θ ( ) =Θ ( ) n n Πιθανοτική On ( ) µε πιθανότητα / n n n. Παράδειγµα..5 Στην περίπτωση του γνωστού Αλγόριθµου ταξινόµησης insertion sort που φαίνεται στον πίνακα, αποδεικνύονται τα παρακάτω: Algorithm insertionsort for i = n- down to do { temp = x i j = i+ while(j <= n and x j < temp) do { } x j - = x j j=j+ } x j - = temp Ένα παράδειγµα του αλγορίθµου insertion sort παρουσιάζεται στον παρακάτω πίνακα: i = temp = 5 i = temp = i = temp = 6 i = temp = 3 i = temp = 4 i = temp = 5

16 Η καλύτερη περίπτωση προκύπτει όταν τα δεδοµένα είναι ήδη ταξινοµηµένα. Στην περίπτωση αυτή ο αλγόριθµος τρέχει σε γραµµικό (linear) χρόνο Tn ( ) = an+ b=θ ( n) Η χειρότερη περίπτωση είναι όταν ο πίνακας δεδοµένων είναι ταξινοµηµένος αντίστροφα από την επιθυµητή διάταξη, οπότε ο υπολογιστικός χρόνος είναι τετραγωνικός ως προς το n T n an bn c n ( ) = + + =Θ ( ) Η µέση περίπτωση βρίσκεται ανάµεσα στις δύο παραπάνω και αποδεικνύεται ότι και σε αυτήν ο χρόνος είναι Θ ( n )..3 Ποιοί είναι οι Αποτελεσµατικοί Αλγόριθµοι; Όπως έχει ήδη αναφερθεί, ο όρος Αποτελεσµατικός Αλγόριθµος συνήθως αναφέρεται στον υπολογιστικό χρόνο. Με βάση τον χρόνο Αποτελεσµατικοί (feasible, tractable) θεωρούνται οι πολυωνυµικοί αλγόριθµοι. Πρόκειται για τους αλγόριθµους που ο υπολογιστικός τους χρόνος είναι στη k χειρότερη περίπτωση On ( ), πολυώνυµο του µεγέθους της εισόδου n, µε k σταθερό. (Βέβαια τείνει να γίνει παγκόσµια σιωπηρή συµφωνία να ισχύει k 5). Προφανώς αποτελεσµατικός είναι και ένας αλγόριθµος που ο χρόνος του φράσεται άνω από ένα πολυώνυµο. Η άποψη αυτή έχει βρεί την απόλυτη έκφρασή της µέσα από την Feasibility Thesis (Cook, 99): Ένα φυσικό πρόβληµα έχει έναν αποτελεσµατικό αλγόριθµο αν και µόνον αν έχει έναν αλγόριθµο πολυωνυµικού χρόνου. Ήδη από το 953 ο Von Neumann έκανε διαχωρισµό ανάµεσα σε πολυωνυµικούς και εκθετικούς αλγόριθµους, η έννοια όµως του υπολογισµού σε πολυωνυµικό χρόνο δόθηκε στην δεκαετία του 60 από τους Edmonds και Cobham. Από την άλλη πλευρά, οι αλγόριθµοι που τρέχουν σε χρόνο που δεν έχει κανένα πολυώνυµο σαν άνω φράγµα γενικά θεωρούνται δύσχρηστοι (intractable). Οι αλγόριθµοι αυτοί ονοµάζονται εκθετικού χρόνου (exponential), διότι µία αντιπροσωπευτική τους n περίπτωση είναι αυτοί που τρέχουν σε χρόνο O ( ). 6

17 Η παραπάνω θέση προέρχεται κυρίως από την εµπειρία σε συνδυασµό µε κάποιες ιδιότητες που έχουν οι πολυωνυµικού χρόνου αλγόριθµοι: Στα περισσότερα προβλήµατα που έχει ανακαλυφθεί έστω και ένας αλγόριθµος πολυωνυµικού χρόνου, αυτός γρήγορα βελτιώνεται n 6, µε συχνή κατάληξη n 3. Ένα πρόβληµα που λύνεται πολυωνυµικά κάτω από κάποιο µοντέλο επεξεργασίας, λύνεται επίσης πολυωνυµικά κάτω από κάποιο άλλο. Η κατηγορία των πολυωνυµικά επιλυόµενων προβληµάτων έχει την ιδιότητα της κλειστότητας. ύο ή περισσότεροι πολυωνυµικοί αλγόριθµοι µπορούν να συνδυαστούν και το αποτέλεσµα είναι επίσης πολυωνυµικός αλγόριθµος. Εαν ένας πολυωνυµικός αλγόριθµος καλέσει σαν υπορουτίνα σταθερές το πλήθος φορές έναν άλλο πολυωνυµικό αλγόριθµο, αυτός εξακολουθεί να τρέχει σε πολυωνυµικό χρόνο. Οι πολυωνυµικοί αλγόριθµοι εκµεταλλεύονται καλύτερα τις εξελίξεις της τεχνολογίας που παράγει γρηγορότερες µηχανές, αυξάνοντας την απόδοσή τους ταχύτερα από τους άλλους. Όσο το µέγεθος της εισόδου (input size) αυξάνει, τελικά κάθε πολυωνυµικός αλγόριθµος γίνεται αποτελεσµατικότερος από οποιονδήποτε εκθετικό. Από την άλλη πλευρά δεν λείπουν και οι περιπτώσεις που ξεφεύγουν από τον κανόνα Πολυωνυµικός Αλγόριθµος = Αποτελεσµατικός Αλγόριθµος: Προβλήµατα που ενώ επιλύονται σε πολυωνυµικό χρόνο π.χ. 3 On ( ), οι αλγόριθµοι αυτοί δεν είναι αποτελεσµατικοί λόγω των πολύ µεγάλων συντελεστών που κρύβονται από τον ασυµπτωτικό συµβολισµό 3 On ( ). Αλγόριθµοι που ενώ έχει αποδειχτεί ότι δεν είναι πολυωνυµικοί, στην πράξη έχουν πολύ καλή απόδοση και µεγάλη πιθανότητα πολυωνυµικής συµπεριφοράς. Κλασικό παράδειγµα αποτελεί ο Αλγόριθµος Simplex ο οποίος ενώ βρίσκει βέλτιστη λύση σε προβλήµατα Γραµµικού Προγραµµατισµού µε εκατοντάδες µεταβλητές και χιλιάδες περιορισµών είναι αποδεδειγµένα εκθετικός και µη κλειστός στην worst-case. Υπολογιστικά µοντέλα όπως οι Κβαντικοί Υπολογιστές (Quantum computers) που βέβαια βρίσκονται σήµερα κυρίως σε θεωρητικό επίπεδο. 7

18 Παράδειγµα.3. τρέχουν σε χρόνους Θεωρούµε δύο Αλγορίθµους Α και Α του ιδίου Προβλήµατος που n Θ ( n ) και ( ) Θ αντίστοιχα. Έστω επίσης ότι διαθέτουµε έναν 7 υπολογιστή που απαιτεί 0 min/υπολογιστικό βήµα ενώ θέλουµε να επιλύσουµε ένα στιγµιότυπο µεγέθους n = 00. Υπολογιστικός χρόνος που απαιτείται: Αλγόριθµος Α Αλγόριθµος Α T = = = min 0 min 0, 06sec 00 7 T = 0 min > 0 έτη!! Για σύγκριση σηµειώνεται ότι ο αριθµός των πρωτονίων στο γνωστό Σύµπαν έχει 79 ψηφία, ενώ για n = 300 η τιµή του n έχει 9 ψηφία. Παράδειγµα.3. Στον πίνακα που ακολουθεί φαίνεται η συµπεριφορά των Αλγορίθµων στις εξελίξεις της Τεχνολογίας που παράγουν ταχύτερες υπολογιστικές µηχανές: Πολυπλοκότητα Αλγορίθµου n Μέγεθος του µεγαλύτερου προβλήµατος που µπορεί να επιλυθεί µέσα σε h ( ώρα) Σύγχρονος Υπολογιστής Μελλοντικός Υπολογιστής (d sec/υπολογιστικό βήµα) 00 φορές ταχύτερος S 00 S n S 0 S 3 n S 3 4,64 S3 n S 4 S 4 + 6,64 3 n S 5 S 5 + 4,9 8

19 n Για παράδειγµα, στην περίπτωση του Αλγορίθµου O ( ), εφόσον ο σύγχρονος υπολογιστής χρειάζεται χρόνο d sec/υπολογιστικό βήµα και ο µελλοντικός είναι 00 φορές ταχύτερος, το µέγεθος του προβλήµατος S που θα µπορεί αυτός να επιλύσει υπολογίζεται από τη σχέση: d = d = 00 S4 00 S = + = S = S + 6,64 S4 hr S4 log 00 log log 4 S S.4 Υπολογισµός Πολυπλοκότητας Η ανάλυση της πολυπλοκότητας ενός αλγορίθµου συνήθως σηµαίνει «να δοθεί ένα ασυµπτωτικό µέτρο ( O ή καλύτερα Θ ) του χρόνου εκτέλεσης του». ύο προσεγγίσεις υπάρχουν σ αυτό:. Βρίσκουµε από ένα O -µέτρο για τα µέρη του αλγορίθµου και στη συνέχεια τα συνδυάζουµε χρησιµοποιώντας τις ιδιότητες των ασυµπτωτικών συµβολισµών του Λήµµατος (κανόνες αθροίσµατος γινοµένου) αλλά και , ή. Αρχικά διακρίνουµε τις στοιχειώδεις, βασικές λειτουργίες, π.χ. προσθέσεις, συγκρίσεις κλπ του αλγορίθµου. Πρόκειται για τους x το πλήθος υπολογισµούς που κάνουν την «κύρια» εργασία σε τρόπο ώστε ο υπολογιστικός χρόνος να είναι Ox. ( ) Στην συνέχεια αναλύουµε το πλήθος x των υπολογισµών σαν συνάρτηση του n. Οπωσδήποτε µπορεί να χρησιµοποιηθεί και συνδυασµός των δύο προσεγγίσεων. Το πλεονέκτηµα της δεύτερης είναι ότι δεν απαιτείται ανάλυση της πολυπλοκότητας του αλγορίθµου γραµµή προς γραµµή, ενώ δουλεύουµε µε αριθµούς χωρίς τα ασυµπτωτικά σύµβολα. ιακρίνονται δύο βασικές κατηγορίες αλγορίθµων οι επαναληπτικοί (iterative) και οι αναδροµικοί (recursive), ανάλογα µε το αν περιέχουν επαναληπτικές διαδικασίες και αναδροµή, χωρίς να αποκλείεται βέβαια και συνδυαστική τους. 9

20 Επαναληπτικοί Αλγόριθµοι Η ανάλυση των επαναληπτικών αλγορίθµων συνίσταται στη χρέωση χρόνου O () (=σταθερού) σε κάθε γραµµή κώδικα που δεν περιέχει βρόγχους (και θεωρώντας ότι ο κώδικας δεν κρύβει κάποια πολυπλοκότητα). Στη συνέχεια χρησιµοποιούµε τις προσεγγίσεις ανάλυσης που περιγράψαµε. Παράδειγµα.4. Η πολυπλοκότητα του αλγορίθµου ταξινόµησης φυσαλίδας (bubblesort): Algorithm bubblesort for i = to n - do 3 for j = to n i do 4 if a[j] > a[j+] then 5 swap a[j], a[j+] Η βασική λειτουργία του αλγόριθµου, που είναι επαναληπτική διαδικασία, είναι η σύγκριση της γραµµής 4. Ο υπολογιστικός χρόνος θα είναι συνάρτηση του πλήθους των συγκρίσεων τις οποίες και θα υπολογίσουµε. Η γραµµή 4 κάνει µία σύγκριση Ο βρόγχος for των γραµµών 3-5 κάνει n i συγκρίσεις, ενώ Ο βρόγχος for των γραµµών -5 κάνει n ( n i) συγκρίσεις, οπότε i= n n n ( n i) = n i i= i= i= = ( n ) n n( n )/ = nn ( )/ Εποµένως ο αλγόριθµος απαιτεί χρόνο Tn ( ) On ( ) =. Αναδροµικοί Αλγόριθµοι Στους αναδροµικούς αλγόριθµους πρέπει αρχικά να εξαχθεί η αναδροµική σχέση που διέπει τον υπολογιστικό χρόνο και στη συνέχεια αυτή να επιλυθεί. 0

21 Προκειµένου να ευρεθεί η ζητούµενη αναδροµική σχέση: Ορίζουµε ποιά παράµετρος παριστάνει το µέγεθος του προβλήµατος n Βρίσκουµε την τιµή του n, έστω n 0 που αποτελεί τη βάση της αναδροµικής σχέσης (π.χ n = ). Υπολογίζουµε την τιµή Tn ( 0), τον αντίστοιχο στη βάση της αναδροµής υπολογιστικό χρόνο. Ο γενικός όρος Tn ( ) συνήθως υπολογίζεται ως άθροισµα διαφόρων τιµών Tm ( ) για τις αναδροµικές κλήσεις συν το άθροισµα του χρόνου των υπολοίπων εργασιών του κώδικα. Στην κλασική περίπτωση οι αναδροµικές κλήσεις επιλύουν a το πλήθος υποπροβλήµατα του ίδιου µεγέθους f ( n ), δίνοντας τον όρο at ( f ( n )) στην αναδροµική σχέση. c, αν n= n0 Tn ( ) = at ( f ( n)) + g( n), διαφορετικα Έχοντας την σχέση αναδροµής, προχωρούµε στην επίλυσή της χρησιµοποιώντας επαναλαµβανόµενες αντικαταστάσεις: Στηριζόµενοι στην µορφή που προκύπτει από τις επαναλαµβανόµενες αντικαταστάσεις γράφουµε τη σχέση συναρτήσει του n και του αριθµού i των αντικαταστάσεων. Επιλέγουµε κατάλληλο i ώστε όλες οι αναφορές στο T () να γίνουν της ίδιας µορφής, συνήθως Tn ( 0). Λύνουµε τη σχέση που προκύπτει. Προσοχή, είτε µετά το πρώτο ή µετά το τρίτο βήµα πρέπει να αποδείξουµε επαγωγικά ότι η σχέση ισχύει. Παράδειγµα.4. Πολυπλοκότητα του αλγορίθµου ταξινόµησης mergesort (ταξινόµηση µε συγχώνευση). Έστω ότι έχουµε για ταξινόµηση µια λίστα L από n αριθµούς.

22 Θεωρούµε ότι το n είναι δύναµη του. function mergesort (L,n) if n<= then return (L) 3 else 4 διάσπαση L σε ισοµεγέθεις λίστες L,L 5 return( merge (mergesort(l,n/), mergesort(l,n/))) Στον παραπάνω αλγόριθµο θεωρούµε µία διαδικασία µε όνοµα merge η οποία µπορεί να συνενώσει δύο ταξινοµηµένες λίστες σε χρόνο On ( ). Έστω Tn ( ) ο υπολογιστικός χρόνος για την mergesort (L,n). Θα ισχύει η αναδροµική σχέση (για κάποια cd, ) c, n= Tn ( ) = Tn ( /) + dnn, > Έχουµε Tn ( ) = Tn ( /) + dn = ( T ( n / 4) + dn / ) + dn = 4 T ( n /4) + dn + dn = 8 Tn ( /8) + 3dn Εποµένως θα ισχύει (επαγωγή!) Θέτουµε i = log n οπότε ( ) i i Tn= Tn ( / ) + idn log n log n Tn ( ) = Tn ( / ) + dnlogn = cn + dn log n = On ( log n)

23 Σχετικά µε τις αναδροµικές διαδικασίες ισχύει το ακόλουθο Θεώρηµα.4. είναι Απόδειξη Εαν το n είναι δύναµη του c, η λύση της αναδροµής d n Tn ( ) = at ( n / c) + bn διαφορετικα On ( ) a< c Tn ( ) = On ( log n) a= c > Tn ( ) = atnc ( / ) + bn log On ( c a ) a c = + + aatn ( ( / c) bn/ c) bn = + + a T ( n / c ) abn / c bn = a ( at( n/ c ) bn/ c ) abn/ c bn = a T( n/ c ) a bn/ c abn/ c bn i i i j = at( n/ c) + bn ( a/ c) j= 0 Θέτουµε i = οπότε log c n logc n logc n j ( ) = () + ( / ) Tn a T bn ac j= 0 logc n logc n da bn a c = + j= 0 ( / ) j Ισχύει επίσης ότι a = ( c ) = ( c ) = n log n log a log n log n log a log a c c c c c c άρα logc n logc a j ( ) ( / ) T n = dn + bn a c j= 0 3

24 Εάν a< c τότε logc n j j ( a/ c) < ( a/ c) = c/( c a) (άπειροι όροι φθ. Γ.Π.) j= 0 j= 0 οπότε (αφού a< c log a< 0 ) Εάν a= c τότε Εάν a> c τότε (άθροισµα Γ.Π.) c T n dn bcn c a O n log ( ) < c a + /( ) = ( ) logc n T ( n) = dn + bn = O( n log n) j= 0 log n c j= 0 ( a/ c) j = logc n ( a/ c) ( a/ c) logc a n = ( a/ c) = On logc a ( ) (Ισχύει a a log log log c log log c cn c cn cn c logca ( a/ c) = ( c ) = ( c ) = n ) Οπότε τελικά T n logc ( ) = O( n a ).5 Τεχνικές Αλγορίθµων Η Τεχνολογία των Αλγορίθµων παρέχει µια σειρά από τεχνικές σχεδίασης που έχουν ξεπηδήσει µέσα από χρόνια έρευνας και ανάπτυξης και θεωρούνται πλέον κλασσικές. Στα επόµενα θα γίνει συνοπτική παρουσίαση των τεχνικών αυτών µε γενική περιγραφή και παραδείγµατα. ιαίρει και Βασίλευε (Divide-and-Conquer) Το πρόβληµα Π χωρίζεται σε µικρότερα προβλήµατα τα οποία επιλύονται και στη συνέχεια οι µερικές λύσεις συνδυάζονται προκειµένου να εξαχθεί η καθολική λύση. Η διάσπαση µπορεί να επαναλαµβάνεται στα υποπροβλήµατα µέχρις ότου είτε προκύψει τετριµµένη και άµεσα επιλύσιµη περίπτωση ή νωρίτερα, µέχρις ότου το µέγεθός του γίνει τέτοιο που να µπορεί να λυθεί αποτελεσµατικά από κάποιον αλγόριθµο. Σε πολλές περιπτώσεις οι αλγόριθµοι αυτού του τύπου παριστάνονται µε αναδροµική συνάρτηση. 4

25 Παραδείγµατα εφαρµογής της τεχνικής είναι στους αλγόριθµους ταξινόµησης Mergesort και Quicksort, εύρεση µεγίστου και ελαχίστου από λίστα αριθµών, γινόµενο πινάκων (αλγόριθµος του Strassen), δυαδική αναζήτηση, πολλαπλασιασµός ακεραίων. Παράδειγµα.5. Πολλαπλασιασµός ακεραίων y, z µεγέθους n bits x=0 while z> 0 do { 3 if z mod = then x = x + y; 4 y = y; 5 z = z/ ; } Ο βρόγχος while 3-5 απαιτεί χρόνο On ( ). Οι γραµµές 4 και 5 απαιτούν O (), ενώ η πρόσθεση της γραµµής 3 απαιτεί On ( ) πράξεις ανάµεσα σε bits, εποµένως ο αλγόριθµος απαιτεί On ( ) πράξεις bits (προσοχή στη διαφορά µοντέλου λέξης bit. Στο πρώτο η πρόσθεση απαιτεί χρόνο O () ). Η Divide & Conquer προσέγγιση χωρίζει τους αριθµούς σε µέρη από n/ bits το καθένα (υποθέτουµε ότι ο n είναι δύναµη του ): y a b z c d οπότε θα έχουµε: εποµένως n/ y = a + b n/ z = c + d / n n yz = ac + ( ad + bc) + bd που σηµαίνει ότι ο υπολογισµός του γινοµένου δύο n-bits ακεραίων χωρίζεται στον υπολογισµό τεσσάρων γινοµένων µεταξύ ακεραίων µήκους n/-bits. 5

26 Οι προσθέσεις και οι πολλαπλασιασµοί µε δυνάµεις του (απλή ολίσθηση bits) γίνονται σε γραµµικό χρόνο, και προκύπτει η αναδροµική σχέση T() = c, Tn ( ) = 4 Tn ( / ) + On ( ) που από το Θεώρηµα.4. έχει λύση On ( ). Προκειµένου να υπάρξει βελτίωση σε σχέση µε τον αρχικό αλγόριθµο παρατηρούµε ότι ad + bc = ( a + b)( c + d) ( ac + bd) που απαιτεί περισσότερες προσθέσεις, µειώνει όµως κατά ένα τα υποπροβλήµατα πολλαπλασιαµούς που απαιτούνται: log T( n) = 3 T( n/) + O( n) οπότε Tn ( ) = n n = On ( ). υναµικός Προγραµµατισµός (Dynamic Programming) Πρόκειται για µέθοδο Divide-and-Conquer που όµως αντί να επιλύει αναδροµικά όλα τα υποπροβλήµατα, τα επιλύει σειριακά και κρατά τις λύσεις σε έναν πίνακα. Τα υποπροβλήµατα λύνονται µε τέτοια σειρά (από το µικρότερο στο µεγαλύτερο) ώστε κάθε φορά που χρειάζεται η λύση κάποιου να ανασύρεται από τον πίνακα αντί να επιλύεται εκ νέου. Είναι ιδιαίτερα χρήσιµος στις περιπτώσεις που η Divide-and-Conquer τακτική φαίνεται να παράγει εκθετικό πλήθος υποπροβληµάτων που στην πραγµατικότητα προκαλείται από ένα µικρό αριθµό υποπροβληµάτων τα οποία εµφανίζονται µε εκθετική συχνότητα. Στην περίπτωση αυτή, αντικαθιστούµε τις αναδροµικές κλήσεις µε έρευνα στοιχείων πίνακα ενώ αντί να επιστρέφεται τιµή αυτή καταγράφεται σε µία θέση πίνακα. Παράδειγµα.5. Υπολογισµός του πλήθους συνδυασµών n αντικειµένων ανά r. Με βάση τη σχέση n n n = + r r r κατασκευάζουµε τον (απλοϊκό) divide and conquer αλγόριθµο που περιγράφεται µε την αναδροµική συνάρτηση που ακολουθεί: 6

27 function count (n, r) if r = 0 or n = r then return () else return (count (n-, r-) + count (n-, r)) Η αναδροµική σχέση είναι (c, d σταθερές) c n= Tn ( ) = Tn ( ) + d διαφορετικα Ο αναµενόµενος υπολογιστικός χρόνος στη χειρότερη περίπτωση για κάθε τιµή του r είναι Tn ( ) = Tn ( ) + d = ( Tn ( ) + d) + d = 4 Tn ( ) + d+ d = 4( Tn ( 3) + d) + d + d = 8 Tn ( 3) + 4d+ d+ d Θέτοντας i = n έχουµε i i = Tn ( i) + d j= 0 n n j ( ) = () + Tn T d j j= 0 n = c + d = ( + ) n n c d d n Εποµένως θα είναι Tn=Θ ( ) ( ) που είναι εκθετικός. Ο λόγος που συµβαίνει αυτό είναι ότι ο αλγόριθµος που περιγράφτηκε επιλύει συνεχώς τα ίδια υποπροβλήµατα. Για 6 παράδειγµα, προκειµένου να υπολογίσουµε το γίνονται αναδροµικές κλήσεις που 4 φαίνονται στην παρακάτω δοµή δένδρου (Σχήµα.5.): 7

28 Σχήµα.5. Υλοποιώντας τις αρχές του υναµικού Προγραµµατισµού προκύπτει ένας πολύ καλύτερος αλγόριθµος για το πρόβληµα αυτό. Πρόκειται για το τρίγωνο του Pascal που i χρησιµοποιεί πίνακα T[0.. n,0.. r ] µε Ti [, j] = j. function count (n, r) for i=0 to n r do T[i, 0] = for i=0 to r do T[i, i] = for j= to r do for i=j + to n r + j do T[i, j]= T[i, j ] + T[i, j] return (T[n, r]) Υπολογισµός του 6 4 :

29 Προκειµένου να υπολογίσουµε το στοιχείο Ti [, j ] πρέπει να γνωρίζουµε τα Ti [, j ] και Ti [, j] : 0 r 0 n-r Οι θέσεις του πίνακα που συνολικά γεµίζουµε είναι ( n r+ )( r+ ) = nr+ n r + n( r+ ) + και επειδή κάθε γέµισµα απαιτεί χρόνο O () έχουµε συνολικό χρόνο Πολυπλοκότητα χώρου Onr ( ) που µπορεί να γίνει Or (). On ( ). Άπληστοι Αλγόριθµοι (Greedy Algorithms) Ένας άπληστος αλγόριθµος ξεκινά µε τη λύση ενός πολύ µικρού υποπροβλήµατος και την βελτιώνει σταδιακά σε λύση του µεγάλου, αρχικού προβλήµατος. Η βελτίωση γίνεται µε τρόπο που λέγεται άπληστος διότι κοιτά σε βραχυπρόθεσµο άµεσο ή τοπικό κέρδος χωρίς να λαµβάνει υπόψιν αν θα οδηγήσει µακροπρόθεσµα σε καλή ή καθολικά βέλτιστη λύση. Οι αλγόριθµοι αυτού του τύπου δεν δίνουν πάντα βέλτιστη λύση. Οι άπληστοι αλγόριθµοι, όποτε δουλεύουν σωστά είναι γρήγοροι και εύκολοι στην υλοποίηση. 9

30 Παράδειγµα.5.3 Βέλτιστη αποθήκευση αρχείων σε µονάδα ταινίας: ίνονται n αρχεία µήκους m, m, m 3, m n και ζητείται να βρεθεί ποιά είναι η καλύτερη σειρά αποθήκευσής τους σε ταινία θεωρώντας δεδοµένο ότι: Πρόκειται να ανακτηθούν όλα τα αρχεία Κάθε ανάκτηση γίνεται µε την ταινία γυρισµένη στην αρχή Κάθε ανάκτηση απαιτεί χρόνο που ισούται µε το µήκος των αρχείων που προηγούνται συν το µήκος του αρχείου προς ανάκτηση. Greedy algorithm for i= to n do { επιλογή του επόµενου πιο µικρού αρχείου εγγραφή του αρχείου στην ταινία } Έστω ότι έχουµε τα αρχεία f, f,..., f n µε αντίστοιχα µήκη m, m,... m n. Έστω επίσης ότι από όλες τις πιθανές λύσεις (που είναι οι µεταθέσεις των n αρχείων) επιλέγουµε την fi, f,..., i f i. Προκειµένου να ανακτήσουµε το αρχείο n ik f απαιτείται κόστος k j= m i j εποµένως το συνολικό κόστος της ανάκτησης θα είναι n k k= j= m i j. Θα έχουµε τα εξής κόστη σχετικά µε κάθε αρχείο: µε άθροισµα f i i i i... f m + m +...m i i i n n f m + m m + m i i i n m f m + m i n n nm + ( n ) m + ( n ) m m + m = ( n k + ) m k i i i3 in in i k = i i n i 30

31 Θα αποδείξουµε ότι ο αλγόριθµος αυτός που επιλέγει κάποια µη φθίνουσα µετάθεση των αρχείων, έχει ελάχιστο κόστος. Έστω Π= ( i, i,... i n ) µετάθεση που να µην ακολουθεί µη φθίνουσα διάταξη των η ακολουθία i i n m i. Θα δείξουµε ότι δεν µπορεί να έχει ελάχιστο κόστος. Εφόσον m, m,...m i δεν είναι σε αύξουσα τάξη j < n: mi > m j ij + Θεωρούµε τη µετάθεση Π ' που προκύπτει από την Π µε µετάθεση των ij, i j + οπότε τα κόστη θα είναι αντίστοιχα: j ik ij+ ij i και k C( Π ') = ( n k+ ) m + ( n j+ ) m + ( n j) m + ( n k+ ) m k= k= j+ j C( Π ) = ( n k+ ) m + ( n j+ ) m + ( n j) m + ( n k+ ) m i i i i k= k= j+ k j j+ k n n οπότε C( Π) C( Π ') = ( n j+ )( m m ) + ( n j)( m m ) = m m > 0 i j i j+ i i i i j j+ j+ j που σηµαίνει ότι το κόστος της µετάθεσης Π δεν µπορεί να είναι ελάχιστο. Στην περίπτωση που περιγράφηκε ο Άπληστος Αλγόριθµος οδηγεί σε optimality (βέλτιστη λύση) πράγµα που όπως έχει ήδη ειπωθεί δεν συµβαίνει πάντα. Το κόστος σε χρόνο της µεθόδου είναι On ( log n ) για την ταξινόµηση και On ( ) για τα υπόλοιπα. Εξαντλητική Αναζήτηση (Exhaustive Search) Συχνά η καλύτερη µέθοδος προκειµένου να λυθεί κάποιο πρόβληµα φαίνεται πως είναι η δοκιµή (σχεδόν) όλων των δυνατών λύσεών του, προσέγγιση που ονοµάζεται εξαντλητική αναζήτηση. Πρόκειται για συνήθως αργή µέθοδο που έχει κάποια αξία όταν έχουµε µικρά µεγέθη προβληµάτων. Χρησιµοποιείται συχνά σε συνδυασµό µε divide and conquer µεθόδους. Τα περισσότερα τέτοιου τύπου προβλήµατα µπορούν να µετασχηµατιστούν σε απλούστερα συνδυαστικά προβλήµατα όπως είναι η δηµιουργία δυαδικών και άλλων συµβολοσειρών, η δηµιουργία συνδυασµών και µεταθέσεων. 3

32 Στις περιπτώσεις αυτές υπάρχουν τυποποιηµένα εργαλεία που δίνουν αντικείµενα όπως n δυαδικές συµβολοσειρές µήκους n k n k-ary συµβολοσειρές µήκους n n! µεταθέσεις n!/r!(n-r)! συνδυασµούς των n ανά r Παράδειγµα. 5.4 ηµιουργία όλων των συµβολοσειρών µε n bits. Ο αλγόριθµος µε χρήση Divide and Conquer παράγει όλες τα δυαδικές συµβολοσειρές µε n bits διαδοχικά σε έναν πίνακα n θέσεων Α[..n]. Καλεί την συνάρτηση process (A) κάθε φορά που παράγεται το επόµενο string. H διαδικασία εκτελείται µε κλήση της binary (n). Procedure binary(m) if m = 0 then process(a) else { A[m] = 0 binary(m ) A[m] = binary(m - ) } Θεωρούµε ότι η συνάρτηση process(a) απαιτεί χρόνο O () οπότε θα έχουµε την αναδροµή c n= Tn ( ) = Tn ( ) + d διαφορετικα που µε διαδοχική αντικατάσταση δίνει n n Tn ( ) = ( c+ d) d= O( ) Η ανάλυση αυτή δείχνει ότι ο αλγόριθµος δηµιουργίας συµβολοσειρών από bits που περιγράφτηκε είναι βέλτιστος. 3

33 Όµοιος είναι ο αλγόριθµος δηµιουργίας k-δικών συµβολοσειρών µήκους n, αυτών δηλαδή που παράγονται από τους αριθµούς 0,.., k-. Γίνεται κλήση της string (n): Procedure string (m) if m = 0 then process (A) else { for j = 0 to k do { A[m] = j string (m ) } } Backtracking Αποτελεί είδος εξαντλητικής αναζήτησης όπου το συνδυαστικό αντικείµενο (ο χώρος έρευνας που περιέχει τις δυνατές λύσεις) κατασκευάζεται αναδροµικά και το δένδρο της αναδροµής κλαδεύεται (pruning), πράγµα που σηµαίνει ότι όταν το µέρος του αντικειµένου που έχει ήδη κατασκευαστεί δεν µπορεί να οδηγήσει σε έγκυρη ή βέλτιστη λύση τότε δεν γίνονται περαιτέρω αναδροµικές κλήσεις. Η µέθοδος αυτή δηµιουργεί µία δενδροειδή δοµή στο χώρο των λύσεων (Σχήµα.5.).?????0???00?0?0? Σχήµα.5. 33

34 Στο παραπάνω δένδρο φαίνεται η διαδικασία κατασκευής όλων των 3-ψήφιων δυαδικών συµβολοσειρών. Ο αλγόριθµος string (m) που νωρίτερα περιγράφηκε γίνεται µε χρήση backtracking: Procedure B_string (m) if m = 0 then process (A) else { for j = 0 to k do { if j is a valid choice for A[m] then { A[m] = 0 string (m ) } } } Για παράδειγµα, αν ζητάµε οι συµβολοσειρές που παράγονται να µην καταλήγουν σε ίδια σύµβολα 0 ή, τότε οι δύο ακραίοι κλάδοι που φαίνονται µε γκρί στο σχήµα θα κλαδευτούν και δεν θα κληθεί η αναδροµή για τη δηµιουργία τους. 34

35 Πολυπλοκότητα Χρόνου. Υπολογιστικά Μοντέλα & Τάξεις Πολυπλοκότητας Όπως έχει ήδη αναφερθεί, κεντρικός στόχος της Θεωρίας Πολυπλοκότητας Υπολογισµού (Υπολογιστική Πολυπλοκότητα Computational Complexity) είναι η ταξινόµιση των προβληµάτων ανάλογα µε τον βαθµό «σκληρότητάς» τους, ανάλογα δηλαδή µε το «πόσο δύσκολα είναι» να επιλυθούν. Τα προβλήµατα, σύµφωνα µε την σηµερινή γνώση, χωρίζονται στις παρακάτω κύριες (και όχι πάντα ξένες µεταξύ τους) κατηγορίες: P: Προβλήµατα επιλύσιµα σε πολυωνυµικό χρόνο NP: Προβλήµατα που η ορθότητα της λύσης τους (εφόσον την γνωρίζουµε) µπορεί να επαληθευτεί σε πολυωνυµικό χρόνο. Τα NP-Complete προβλήµατα περιέχονται σ αυτήν την κλάση. PSPACE: Προβλήµατα πολυωνυµικά ως προς το µέγεθος της εισόδου, που χρησιµοποιούν δηλαδή σχετικά µικρό µέγεθος µνήµης προκειµένου να επιλυθούν, ανεξάρτητα από το χρόνο που απαιτείται. EXPTIME: Προβλήµατα που µπορούν να λυθούν σε εκθετικό χρόνο. Undecidable: Προβλήµατα που αποδεδειγµένα δεν υπάρχει αλγόριθµος που να τα λύνει σε κάθε περίπτωση, ανεξάρτητα από το χρόνο ή το χώρο που διατίθεται. Η θεωρία NP-Completeness αφορά στην διάκριση ανάµεσα στα προβλήµατα P και NP. Έτσι, η κατηγορία NP-Complete περιέχει τα προβλήµατα για τα οποία οι υπάρχοντες αλγόριθµοι επίλυσης είναι εκθετικού χρόνου, δεν έχει δηλαδή βρεθεί µέχρι σήµερα πολυωνυµικός αλγόριθµος που να τα επιλύει, ούτε όµως έχει αποδειχτεί ότι αυτά είναι εκθετικού χρόνου, ότι δηλαδή ο χρόνος επίλυσής τους φράσσεται κάτω από ένα υπερ-πολυωνυµικό φράγµα. Στις εργασίες των Cook (97) και Karp (97) τέθηκαν τα θεµέλια της θεωρίας NP-Completeness. όθηκε έµφαση στην έννοια του µετασχηµατισµού πολυωνυµικού χρόνου polynomial time reducibility, εστιάστηκε το ενδιαφέρον στα Προβλήµατα Απόφασης και δόθηκε καθαρά η σχέση των NP-Complete Προβληµάτων µε το πεδίο της Συνδυαστικής Βελτιστοποίησης (Combinatorial Opitimization).

36 Η φορµαλιστική προσέγγιση της θεωρίας των αλγορίθµων στηρίζεται σε µοντέλα επεξεργασίας όπως η Deterministic Turing Machine (DTM), η k-tape Deterministic Turing Machine, η Random Access Machine. Πρόκειτα για τα λεγόµενα Ρεαλιστικά µοντέλα που έχουν υλοποιηθεί σε αληθινές υπολογιστικές µηχανές. Όλα αυτά τα µοντέλα έχουν την ιδιότητα ότι αν ένα πρόβληµα λύνεται σε πολυωνυµικό χρόνο σε κάποιο από αυτά, τότε παραµένει πολυωνυµικό και σε κάθε άλλο. Στα Μη-Ρεαλιστικά µοντέλα περιλαµβάνεται η Nondeterministic Turing Machine (NDTM) και η Oracle Turing Machine (OTM). Τα Μη-Ρεαλιστικά µοντέλα θεωρούνται ότι µπορούν να εκτελέσουν απεριόριστο αριθµό υπολογισµών στη µονάδα του χρόνου. Σε µία µη ντετερµινιστικού τύπου µηχανή, επιτρέπεται στο διάγραµµα ροής της να έχει πεπερασµένου πλήθους διακλαδώσεις επιλογών (Σχ...). Όποτε η µηχανή φθάσει σε τέτοια διακλάδωση, επιλέγει τυχαία και η διαδικασία συνεχίζεται. Είναι προφανές ότι το µοντέλο αυτό, που συναντάται σε διάφορες παραλλαγές, δεν υπάρχει στην πραγµατικότητα, αλλά χρησιµoποιείται για τον ορισµό Σχήµα.. των NP προβληµάτων. Έτσι, µπορούµε να ορίσουµε ότι η κλάση P περιλαµβάνει όλα εκείνα τα προβλήµατα απόφασης που λύνονται σε πολυωνυµικό χρόνο από µια DTM (δηλαδή από έναν υπαρκτό υπολογιστή), ενώ η κλάση NP αποτελείται από όλα εκείνα τα προβλήµατα απόφασης που λύνονται σε πολυωνυµικό χρόνο από µια NDTM. Εδώ επίλυση σηµαίνει, ότι δοθέντος ενός στιγµιοτύπου του προβλήµατος, η NDTM είτε εκτελεί όλες τις δυνατές ακολουθίες κινήσεων παράλληλα µέχρι να βρεί τη λύση ή µέχρι να µην υπάρχει άλλη ακολουθία, είτε «µαντεύει» την ακολουθία των κινήσεων και στη συνέχεια επαληθεύει ότι αποτελεί λύση. Από τον ορισµό αυτό, εξηγείται και ο συµβολισµός NP: προέρχεται από τον όρο nodeterministic polynomial time λόγω του ορισµού της κλάσης σαν το σύνολο των προβληµάτων που επιλύονται σε πολυωνυµικό χρόνο από ένα µη ντετερµινιστικού τύπου υπολογιστικό µοντέλο. 36

37 Στην επόµενη παράγραφο θα δούµε ένα θεωρητικό πλαίσιο ορισµού των κλάσεων P, NP που αποφεύγοντας την έννοια του nondeterminism και της µηχανής Turing, χρησιµοποιεί την ιδέα του certificate verification (επαλήθευση πιστοποιητικού) προκειµένου να ορίσει την κλάση NP, πρακτική που είναι συνήθης στη σύγχρονη βιβλιογραφία.. Ένα Θεωρητικό Πλαίσιο Ένα Αλφάβητο Σ είναι ένα πεπερασµένο σύνολο από σύµβολα. Μια Γλώσσα L πάνω από το Σ είναι οποιοδήποτε σύνολο από σειρές στοιχείων του Σ (συµβολοσειρές - strings). Η Γλώσσα που περιέχει όλες τις συµβολοσειρές πάνω από το Σ συµβολίζεται µε Σ*. Iσχύει προφανώς ότι * L Σ για κάθε γλώσσα L πάνω από το Σ. Στην περίπτωση του δυαδικού αλφάβητου Σ= {0,} είναι * Σ = { ε,0,, 00, 0,0,,000,...}, ε η κενή συµβολοσειρά. Προκειµένου µία Υπολογιστική Μηχανή να επιλύσει ένα πρόβληµα µέσω ενός Αλγορίθµου που έχει µετατραπεί σε Πρόγραµµα, πρέπει το Στιγµιότυπο του Προβλήµατος να είναι κωδικοποιηµένο σε µορφή αναγνωρίσιµη από τη µηχανή. Έτσι, µια γλώσσα µπορεί να χρησιµοποιηθεί για να περιγράψει την είσοδο (input) ενός αλγοριθµικού προβλήµατος. Ορισµός.. Κωδικοποίηση ενός συνόλου P από αφηρηµένα αντικείµενα, * * λέγεται µία απεικόνιση e : P Σ όπου Σ είναι το σύνολο όλων των δυαδικών λέξεων. Όπως είδαµε στο προηγούµενο κεφάλαιο (ορισµός..) σε ένα πρόβληµα απόφασης ο αλγόριθµος επίλυσης πρέπει να δέχεται σαν είσοδο ένα κωδικοποιηµένο στιγµιότυπο του προβλήµατος και επιστρέφει σαν λύση (ΝΑΙ) ή 0 (ΟΧΙ). 37

38 Έστω µια δυαδική συµβολοσειρά x {0,} *. Ένας αλγόριθµος Α λέµε ότι αποδέχεται (accepts) τη δυαδική συµβολοσειρά x εάν δοθέντος του x σαν είσοδο, ο αλγόριθµος δίνει έξοδο Ax ( ) =, ενώ απορρίπτει (rejects) το x εάν Ax ( ) = 0. Μία γλώσσα L είναι Αποδεκτή από έναν αλγόριθµο Α όταν περιέχει όλες τις συµβολοσειρές που ο αλγόριθµος αποδέχεται (Α αποδέχεται κάθε συµβολοσειρά της L): Προσοχή, εάν x L = { x {0,} : A( x) = } * L τότε δεν σηµαίνει υποχρεωτικά ότι ο αλγόριθµος θα επιστρέψει Ax ( ) = 0, για παράδειγµα µπορεί να µην τερµατίζει ποτέ. Ένας αλγόριθµος αποφασίζει (decides) µία γλώσσα L, εάν κάθε δυαδική λέξη είτε γίνεται αποδεκτή, είτε απορρίπτεται από τον Αλγόριθµο, επιστρέφει δηλαδή σαν έξοδο είτε Ax ( ) = είτε Ax ( ) = 0 για κάθε x {0,} * (o A αποδέχεται κάθε συµβολοσειρά της L και απορρίπτει κάθε συµβολοσειρά που δεν ανήκει στην L). Ορισµός.. Μία γλώσσα L λέγεται αποδεκτή σε πολυωνυµικό χρόνο από έναν αλγόριθµο Α, εάν για κάθε δυαδική λέξη x µήκους n που ανήκει στην L, ο k αλγόριθµος αποδέχεται το x σε χρόνο On ( ), k σταθερό. Ορισµός..3 Μία γλώσσα L λέγεται ότι αποφασίζεται σε πολυωνυµικό χρόνο από έναν αλγόριθµο Α, εάν για κάθε δυαδική λέξη x {0,} * µήκους n, ο k αλγόριθµος αποφασίζει το x σε χρόνο On ( ), k σταθερό. Ορισµός..4 Τάξη πολυπλοκότητας P, ορίζεται το σύνολο P * = { L {0,} : υπάρχει αλγόριθµος Α που αποφασίζει την L σε πολυωνυµικό χρόνο} Θεώρηµα.. Ισχύει το παρακάτω: P = { L : L γίνεται αποδεκτή από έναν αλγόριθµο σε πολυωνυµικό χρόνο} 38

39 Ορισµός..5 Έστω µία γλώσσα * L Σ. Ένας αλγόριθµος του οποίου η είσοδος δίνεται από το * * Σ {0,} λέγεται αλγόριθµος επαλήθευσης (verification algorithm, verifier) της L, εάν L * = { w Σ ο Α αποδέχεται το ζευγάρι ( wc, ) για κάποιο * c {0,} } Εάν ο Α αποδέχεται το * * ( wc, ) Σ {,0} τότε το c λέγεται πιστοποιητικό (certificate) του γεγονότος ότι w L. Ορισµός..6 Τάξη Πολυπλοκότητας NP ορίζεται το σύνολο NP = { L : αλγόριθµος επαλήθευσης Α και σταθερά c τέτοια ώστε L * = { x {0,} : υπάρχει πιστοποιητικό y µε y = O( x c) ώστε Ax (, y ) = }} Συνοψίζοντας έχουµε: Τάξη πολυπλοκότητας P είναι το σύνολο των γλωσσών για τις οποίες υπάρχει αλγόριθµος που τις αποφασίζει σε πολυωνυµικό χρόνο. Τάξη πολυπλοκότητας NP είναι το σύνολο των γλωσσών που µπορούν να επαληθευτούν από έναν πολυωνυµικού χρόνου αλγόριθµο. Περιέχει δηλαδή τα προβλήµατα απόφασης για τα οποία, αν η απάντηση σε κάποιο στιγµιότυπο είναι ΝΑΙ τότε υπάρχει ένα πιστοποιητικό το οποίο: o Είναι σύντοµο, έχει µήκος πολυωνυµικής τάξης σε σχέση µε την είσοδο. o Πιστοποιεί, υπάρχει δηλαδή ένας πολυωνυµικός αλγόριθµος επαλήθευσης που δέχεται την είσοδο και το πιστοποιητικό και ελέγχει την εγκυρότητά του. Παράδειγµα.. Τα παρακάτω προβλήµατα ανήκουν στο σύνολο NP: Composite. οθέντος ενός φυσικού αριθµού, είναι αυτός σύνθετος; Aν δοθεί κάποιος φυσικός n, µπορεί να ελεγχθεί σε πολυωνυµικό χρόνο αν ένας m (, n) διαιρεί ακριβώς τον n. Euler Tour. οθέντος προσανατολισµένου γραφήµατος G=(V,E) υπάρχει κλειστό µονοπάτι που επισκέφτεται κάθε ακµή ακριβώς µία φορά; (επιτρέπεται να επισκεφθεί έναν κόµβο περισσότερες από µια φορές). Αν έχει βρίσκεται σε χρόνο Ο(Ε), εποµένως το Euler Tour ανήκει και στην P. 39

40 Hamiltonian Cycle. οθέντος προσανατολισµένου γραφήµατος G=(V,E) υπάρχει κλειστό µονοπάτι που επισκέφτεται κάθε κόµβο ακριβώς µία φορά; Ισχύει P NP : Κάθε πρόβληµα που ανήκει στην κλάση P ανήκει και στην NP, δεδοµένου ότι εφόσον ένα πρόβληµα λύνεται σε πολυωνυµικό χρόνο, εύκολα µπορεί να επαληθευτεί η λύση του σε επίσης πολυωνυµικό χρόνο. Το ερώτηµα αν ισχύει και NP P (οπότε P = NP) παραµένει ανοικτό µέχρι σήµερα, µε τους περισσότερους επιστήµονες να θεωρούν ότι δεν ισχύει για τους εξής, µεταξύ άλλων, λόγους: Είναι γενικά αποδεκτό ότι είναι πολύ δυσκολότερο να λυθεί ένα πρόβληµα εξαρχής από το να επαληθευτεί µία προτεινόµενη λύση του. Η κλάση NP περιέχει ένα υποσύνολο, τα NP-Complete προβλήµατα (γλώσσες) που έχουν την ιδιότητα ότι αν υπάρχει (βρεθεί) ένας πολυωνυµικός αλγόριθµος για ένα από αυτά, τότε υπάρχουν πολυωνυµικοί αλγόριθµοι για όλα. Αυτό οφείλεται στην έννοια του Μετασχηµατισµού σε Πολυωνυµικό Χρόνο..3 Μετασχηµατισµοί Η έννοια του µετασχηµατισµού σε πολυωνυµικό χρόνο µπορεί να περιγραφεί µε τους παρακάτω τρείς άξονες: Ένα πρόβληµα Α µετασχηµατίζεται (reduces) σε ένα πρόβληµα Β, εάν υπάρχει αλγόριθµος R µέσω του οποίου κάθε στιγµιότυπο του Α µετατρέπεται σε ένα στιγµιότυπο του Β (Σχ..3.). Εάν ο αλγόριθµος είναι πολυωνυµικού χρόνου, τότε λέµε ότι το πρόβληµα Α µετασχηµατίζεται σε πολυωνυµικό χρόνο στο πρόβληµα Β. Απαντώντας σε ένα στιγµιότυπο του Προβλήµατος Β έχουµε απαντήσει στο αντίστοιχο στιγµιότυπο του Α. 40

41 ΝΑΙ X Είσοδος για A Reduction R R(X) Είσοδος για Β Αλγόριθµος για Β ΟΧΙ Αλγόριθµος για το Πρόβληµα Α Σχήµα.3. Ισχύουν τα παρακάτω: (A µετασχηµατίζεται σε B) AND (B εύκολο ) A εύκολο (A µετασχηµατίζεται σε B) AND (A σκληρό ) B σκληρό (A µετασχηµατίζεται σε B) AND (B σκληρό ) κανένα συµπέρασµα για το A * * Ορισµός.3. Έστω L Σ και L Σ δύο γλώσσες. Λέµε ότι η L µετασχηµατίζεται σε πολυωνυµικό χρόνο στην L (polynomial-time reducible), L L αν υπάρχει ένας αλγόριθµος Α πολυωνυµικού χρόνου που υπολογίζει µία p απεικόνιση από το * Σ στο * Σ έτσι ώστε x * Σ να ισχύει x L A( x) L Ο Α λέγεται µετασχηµατισµός πολυωνυµικού χρόνου από την L στην L (polynomialtime reduction). Ορισµός.3. Μία γλώσσα L λέγεται NP-Hard αν U NP, U p L, ενώ µια γλώσσα L λέγεται NP-Complete αν i) L NP και ii) η L είναι NP-Hard 4

42 Θεώρηµα (.3.) Εάν, {0,} * L L γλώσσες τέτοιες ώστε L p L. Τότε, L P L P. (.3.) A B p B A p p C C (.3.3) Εάν, {0,} * L L γλώσσες τέτοιες ώστε L p L. Τότε, εάν L είναι NP-Hard, θα είναι και L NP-Hard. (.3.4) Εάν L είναι NP-Hard και L P τότε P = NP. Εάν οποιοδήποτε πρόβληµα του NP δεν επιλύεται σε πολυωνυµικό χρόνο, τότε κανένα πρόβληµα NP-Complete δεν λύνεται σε πολυωνυµικό χρόνο. Απόδειξη (.3.) Ισχύει ότι L p L εποµένως υπάρχει αλγόριθµος Α που µπορεί να υπολογιστεί σε c πολυωνυµικό χρόνο On ( ) έτσι ώστε x L A( x) L. Εφόσον L d έστω On ( ). P υπάρχει αλγόριθµος Β που την αποφασίζει σε πολυωνυµικό χρόνο, Έστω τώρα ότι δίνεται η είσοδος x µε x = n. Αρχικά υπολογίζουµε το Α(x) και είναι c προφανές ότι θα ισχύει Ax ( ) = On ( ). Η Α(x) γίνεται είσοδος για τον αλγόριθµο Β. Η συνολική αυτή διαδικασία αποφασίζει την L σε χρόνο που είναι πολυωνυµικός και εποµένως L (.3.3). d c d cd O( A( x) ) = O(( n ) ) = O( n ) P. Με όµοιο τρόπο αποδεικνύεται και το 4

43 Με βάση τα παραπάνω, προκειµένου να αποδείξουµε ότι ένα Πρόβληµα Γλώσσα L είναι NP-Complete, ακολουθούµε την εξής µεθοδολογία (Σχήµα.3.:. Αποδεικνύουµε ότι L NP.. Επιλέγουµε µία γνωστή NP-Complete γλώσσα, έστω 3. Περιγράφουµε έναν αλγόριθµο Α που αντιστοιχίζει κάθε στιγµιότυπο του ένα στιγµιότυπο του L. ' L. 4. Αποδεικνύουµε ότι ο αλγόριθµος ικανοποιεί την ιδιότητα x L A( x) L, x {0,} ' * ' L σε 5. Αποδεικνύουµε ότι ο αλγόριθµος Α τρέχει σε πολυωνυµικό χρόνο. NP-completeness NP-Complete Πρόβληµα Π Μετασχηµατισµός Πολυωνυµικού χρόνου NP Πρόβληµα Π Π p Π Το Π είναι NP-Complete Σχήµα.3. Το πρώτο πρόβληµα που αποδείχτηκε να ανήκει στα NP-Complete είναι το Satisfiability (SAT). 43

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 15 Ιουνίου 2009 1 / 26 Εισαγωγή Η ϑεωρία

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών 1 Συναρτήσεις και ο υπολογισµός τους 2 Μηχανές Turing 3 Καθολικές γλώσσες προγραµµατισµού 4 Μια µη υπολογίσιµη συνάρτηση 5 Πολυπλοκότητα προβληµάτων 1 Συναρτήσεις Μία συνάρτηση

Διαβάστε περισσότερα

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

Υπολογιστικό Πρόβληµα Υπολογιστικό Πρόβληµα Μετασχηµατισµός δεδοµένων εισόδου σε δεδοµένα εξόδου. Δοµή δεδοµένων εισόδου (έγκυρο στιγµιότυπο). Δοµή και ιδιότητες δεδοµένων εξόδου (απάντηση ή λύση). Τυπικά: διµελής σχέση στις

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2 Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Εµπειρική ανάλυση αλγορίθµων Μαθηµατική ανάλυση αλγορίθµων Αύξηση συναρτήσεων Συµβολισµός µεγάλου όµικρον Παραδείγµατα

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ανάλυση Αλγορίθμων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανάλυση Αλγορίθμων Η ανάλυση αλγορίθμων περιλαμβάνει τη διερεύνηση του τρόπου

Διαβάστε περισσότερα

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας Εισαγωγή στους Αλγόριθμους Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr 1 Περιεχόμενα Μαθήματος Εισαγωγή στου Αλγόριθμους Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Ανάλυση Θεωρία Γράφων Κλάσεις Πολυπλοκότητας

Διαβάστε περισσότερα

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

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Παύλος Εφραιµίδης pefraimi@ee.duth.gr Ορισµένες γενικές αρχές για τον σχεδιασµό αλγορίθµων είναι: ιαίρει και Βασίλευε (Divide and Conquer) υναµικός Προγραµµατισµός

Διαβάστε περισσότερα

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε: Συµβολισµός Ω( ) Τάξη των Συναρτήσεων () Εκτίµηση Πολυπλοκότητας Αλγορίθµων Ορέστης Τελέλης telelis@unipi.gr Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η f(n) είναι Ω( g(n) ) αν υπάρχουν σταθερές C

Διαβάστε περισσότερα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιµότητα Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβληµα αναζήτησης (search problem) Ένα πρόβληµα αναζήτησης είναι ένα πρόβληµα στο

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 1 / 45 Εισαγωγή Ο δυναµικός

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Ασυμπτωτικός Συμβολισμός Ασυμπτωτικός Συμβολισμός Επιμέλεια διαφανειών: Δημήτρης Φωτάκης (λίγες προσθήκες: Άρης Παγουρτζής) Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Υπολογιστική Πολυπλοκότητα

Διαβάστε περισσότερα

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

Κλάσεις Πολυπλοκότητας Κλάσεις Πολυπλοκότητας Παύλος Εφραιμίδης pefraimi ee.duth.gr Κλάσεις Πολυπλοκότητας 1 Οι κλάσεις πολυπλοκότητας P και NP P: Polynomial ΗκλάσηP περιλαμβάνει όλα τα υπολογιστικά προβλήματα που μπορούν

Διαβάστε περισσότερα

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1, Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιμότητα Παύλος Εφραιμίδης V1.1, 2015-01-19 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβλημα αναζήτησης (search problem) Ένα πρόβλημα

Διαβάστε περισσότερα

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

Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και

Διαβάστε περισσότερα

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

Διαβάστε περισσότερα

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών ΚΕΦΑΛΑΙΟ : Θεωρία υπολογισµών. Συναρτήσεις και ο υπολογισµός τους. Μηχανές Turig.3 Καθολικές γλώσσες προγραµµατισµού.4 Μια µη υπολογίσιµη συνάρτηση.5 Πολυπλοκότητα προβληµάτων.6 Κρυπτογραφία δηµόσιου κλειδιού.

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

Διαβάστε περισσότερα

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

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Ενότητα 4 Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας

Διαβάστε περισσότερα

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

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

Διαβάστε περισσότερα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιμότητα Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβλημα αναζήτησης (search problem) Ένα πρόβλημα αναζήτησης είναι ένα πρόβλημα στο

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

Διαβάστε περισσότερα

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E. Οι γλώσσες των Μηχανών Turing Αποφασισιµότητα / Αναγνωρισιµότητα Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L Αποδέχεται όταν (η είσοδος στην TM) w L. Ορέστης Τελέλης telelis@unipi.gr Τµήµα

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) 3.1 Ασυμπτωτικός συμβολισμός (Ι) Οι ορισμοί που ακολουθούν μας επιτρέπουν να επιχειρηματολογούμε με ακρίβεια για την ασυμπτωτική συμπεριφορά. Οι f(n) και g(n) συμβολίζουν

Διαβάστε περισσότερα

Θεωρία Υπολογισµού Theory of Computation

Θεωρία Υπολογισµού Theory of Computation 1 ο µέρος Θεωρία Υπολογισµού Theory of Computation 1 Υπολογισιµότητα - Computability o Υπολογισιµότητα (Computability) n Τι µπορεί να υπολογιστεί και τι όχι; o Υπολογιστική πολυπλοκότητα (Computational

Διαβάστε περισσότερα

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε Άπληστους Αλγόριθµους Στοιχεία άπληστων αλγορίθµων Το πρόβληµα επιλογής εργασιών ΕΠΛ 232

Διαβάστε περισσότερα

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι έχουµε δει µέχρι τώρα. Υπογράφηµα Γράφοι

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι έχουµε δει µέχρι τώρα. Υπογράφηµα Γράφοι HY118- ιακριτά Μαθηµατικά Θεωρία γράφων / γραφήµατα Πέµπτη, 19/05/2016 Αντώνης Α. Αργυρός e-mail: argyros@csd.uoc.gr 5/22/2016 1 1 5/22/2016 2 2 Τι έχουµε δει µέχρι τώρα Κατευθυνόµενοι µη κατευθυνόµενοι

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ 1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #10: Αλγόριθμοι Διαίρει & Βασίλευε: Master Theorem, Αλγόριθμοι Ταξινόμησης, Πιθανοτικός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διαίρει-και-Βασίλευε Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική

Διαβάστε περισσότερα

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

Γ. Κορίλη Αλγόριθµοι ροµολόγησης - Γ. Κορίλη Αλγόριθµοι ροµολόγησης http://www.seas.upenn.edu/~tcom50/lectures/lecture.pdf ροµολόγηση σε ίκτυα εδοµένων Αναπαράσταση ικτύου µε Γράφο Μη Κατευθυνόµενοι Γράφοι Εκτεταµένα έντρα Κατευθυνόµενοι

Διαβάστε περισσότερα

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

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 5: Αναδρομικές σχέσεις - Υπολογισμός Αθροισμάτων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,... KΕΦΑΛΑΙΟ ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ Βασικές έννοιες διαιρετότητας Θα συµβολίζουµε µε, τα σύνολα των φυσικών αριθµών και των ακεραίων αντιστοίχως: {,,3,,, } { 0,,,,, } = = ± ± ± Ορισµός Ένας φυσικός αριθµός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier Ταχύς Μετασχηµατισµός Fourier CLR, κεφάλαιο 3 Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier Ταχύς Μετασχηµατισµός Fourier

Διαβάστε περισσότερα

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική και τη συµµετρική ιδιότητα του Θ. Λύση Μεταβατική Ιδιότητα (ορισµός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)). Για

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Chapter 7, 8 : Time, Space Complexity

Chapter 7, 8 : Time, Space Complexity CSC 314: Switching Theory Chapter 7, 8 : Time, Space Complexity 12 December 2008 1 1 Υπολογίσιμα και Εφικτά Υπολογίσιμα Προβλήματα Είδαμε ότι 1. Οτιδήποτεμπορούμεναπεριγράψουμεμεένααλγόριθμο μπορεί να

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 18: Χρονική και Χωρική Πολυπλοκότητα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 18: Χρονική και Χωρική Πολυπλοκότητα ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 18: Χρονική και Χωρική Πολυπλοκότητα Τι θα κάνουμε σήμερα Εισαγωγικά Χρονική Πολυπλοκότητα (7) Κλάση P (7.2) Κλάση ΝΡ (7.3) ΝΡ-πληρότητα (7.4) Χωρική

Διαβάστε περισσότερα

Κεφάλαιο 7 Βάσεις και ιάσταση

Κεφάλαιο 7 Βάσεις και ιάσταση Κεφάλαιο 7: Βάσεις και ιάσταση Σελίδα από 9 Κεφάλαιο 7 Βάσεις και ιάσταση n Στο Κεφάλαιο 5 είδαµε την έννοια της βάσης στο και στο Κεφάλαιο 6 µελετήσαµε διανυσµατικούς χώρους. Στο παρόν κεφάλαιο θα ασχοληθούµε

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θεωρία Υπολογισμού και Πολυπλοκότητα Θεωρία Υπολογισμού και Πολυπλοκότητα Κλάσεις P, NP NP-πληρότητα 15 Απριλίου 2008 Δρ. Παπαδοπούλου Βίκη 1 Υπολογίσιμα και Εφικτά Υπολογίσιμα Προβλήματα Είδαμε ότι 1. Οτιδήποτε μπορούμε να περιγράψουμε με

Διαβάστε περισσότερα

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1 ιαίρει και Βασίλευε Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Η Μέθοδος Σχεδιασµού Αλγορίθµων ιαίρει και Βασίλευε Επίλυση Αναδροµικών Εξισώσεων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα - ιαίρει και Βασίλευε

Διαβάστε περισσότερα

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

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Ηλίας Κ. Σάββας Επίκουρος Καθηγητής Τμήμα: Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Email: savvas@teilar teilar.gr Αλγόριθµοι

Διαβάστε περισσότερα

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις Γενικό πλάνο Μαθηµατικά για Πληροφορική 6ο Μάθηµα 1 Ανάλυση αλγορίθµων Ηλίας Κουτσουπιάς, Γιάννης Εµίρης 2 Συµβολισµοί O, Ω και Θ Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 27/11/2008 3

Διαβάστε περισσότερα

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος Περιγραφή μαθήματος Θεωρία Υπολογισμού Άρτιοι ΑΜ Σκοπός του μαθήματος είναι η εισαγωγή στη Θεωρία Υπολογισμού και στη Θεωρία Υπολογιστικής Πολυπλοκότητας (Θεωρία Αλγορίθμων). Διδάσκων: Σταύρος Κολλιόπουλος

Διαβάστε περισσότερα

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr Θεωρία Υπολογισμού Άρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr Περιγραφή μαθήματος Σκοπός του μαθήματος είναι η εισαγωγή στη Θεωρία Υπολογισμού και στη Θεωρία Υπολογιστικής Πολυπλοκότητας

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035). Ανάλυση Αλγορίθµων Σύντοµη επανάληψη (ΕΠΛ 035). Περίληψη Ανάλυση αλγορίθµων Ο, Θ, Ω Ανάλυση µη αναδροµικών αλγόριθµων Ανάλυση αναδροµικών αλγόριθµων Εµπειρική Ανάλυση Visualization Απόδοση Αλγορίθµων Απόδοση

Διαβάστε περισσότερα

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία.

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία. Αλγόριθμοι Μάρθα Σιδέρη epl333 lect 011 1 ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 0% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία. Οι πρόοδοι είναι προαιρετικές και το ποσοστό μετράει

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ ΕΝΟΤΗΤΑ 1 ΕΙΣΑΓΩΓΗ 1 εδοµένα Σύνολο από πληροφορίες που πρέπει να αποθηκευτούν σε έναν υπολογιστή Υπολογιστικό Μοντέλο ένας επεξεργαστής και µεγάλος

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 23 Μαρτίου 2017 1 / 20 Επιλογή Το πρόβληµα

Διαβάστε περισσότερα

Μαθηµατικά για Πληροφορική

Μαθηµατικά για Πληροφορική Μαθηµατικά για Πληροφορική 6ο Μάθηµα Ηλίας Κουτσουπιάς, Γιάννης Εµίρης Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 27/11/2008 27/11/2008 1 / 55 Γενικό πλάνο 1 Ανάλυση αλγορίθµων 2 Συµβολισµοί

Διαβάστε περισσότερα

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Αλγόριθμοι Ρυθμός αύξησης συναρτήσεων [Rosen 3.2] Αριθμητικές συναρτήσεις Τάξη αριθμητικών συναρτήσεων

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

Διαβάστε περισσότερα

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

Αριθµητική Ανάλυση 1 εκεµβρίου / 43 Αριθµητική Ανάλυση 1 εκεµβρίου 2014 Αριθµητική Ανάλυση 1 εκεµβρίου 2014 1 / 43 Κεφ.5. Αριθµητικός Υπολογισµός Ιδιοτιµών και Ιδιοδιανυσµάτων ίνεται ένας πίνακας A C n n και Ϲητούνται να προσδιορισθούν οι

Διαβάστε περισσότερα

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Ανάλυση Αλγορίθμων Θέματα Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα Προσεγγίσεις: Θεωρητική ανάλυση Εμπειρική ανάλυση Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Θεωρητική

Διαβάστε περισσότερα

Ανω Φράγµα στην Τάξη των Συναρτήσεων. Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων. Παράδειγµα (1/2) O( g(n) ) είναι σύνολο συναρτήσεων:

Ανω Φράγµα στην Τάξη των Συναρτήσεων. Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων. Παράδειγµα (1/2) O( g(n) ) είναι σύνολο συναρτήσεων: Ανω Φράγµα στην Τάξη των Συναρτήσεων Ορισµός. Εστω συναρτήσεις: f : N R και g : N R Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων Ορέστης Τελέλης η (τάξη της) f(n) είναι O( g(n) ) αν υπάρχουν σταθερές C και n

Διαβάστε περισσότερα

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

Διαβάστε περισσότερα

4.3. Γραµµικοί ταξινοµητές

4.3. Γραµµικοί ταξινοµητές Γραµµικοί ταξινοµητές Γραµµικός ταξινοµητής είναι ένα σύστηµα ταξινόµησης που χρησιµοποιεί γραµµικές διακριτικές συναρτήσεις Οι ταξινοµητές αυτοί αναπαρίστανται συχνά µε οµάδες κόµβων εντός των οποίων

Διαβάστε περισσότερα

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

Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις /προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διωνυμικοί Συντελεστές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 4: Αναδρομικές σχέσεις και ανάλυση αλγορίθμων Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 5η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Η Μέθοδος «Διαίρει & Βασίλευε» Η Μέθοδος

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 5 υναµικός Προγραµµατισµός Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 5 1 / 49 Εισαγωγή

Διαβάστε περισσότερα

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

Δυναμικός Προγραμματισμός Τρίγωνο του Pascal Δυναμικός Προγραμματισμός Διωνυμικοί συντελεστές Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο

Διαβάστε περισσότερα

n ίδια n διαφορετικά n n 0 n n n 1 n n n n 0 4

n ίδια n διαφορετικά n n 0 n n n 1 n n n n 0 4 Διακριτά Μαθηματικά Ι Επαναληπτικό Μάθημα 1 Συνδυαστική 2 Μεταξύ 2n αντικειμένων, τα n είναι ίδια. Βρείτε τον αριθμό των επιλογών n αντικειμένων από αυτά τα 2n αντικείμενα. Μεταξύ 3n + 1 αντικειμένων τα

Διαβάστε περισσότερα

Chapter 7, 8 : Time, Space Complexity

Chapter 7, 8 : Time, Space Complexity CSC 314: Switching Theory Chapter 7, 8 : Time, Space Complexity 19 December 2008 1 1 Κλάση NP 2 Μη-Ντετερμινιστικές Μηχανές Turing: Eίναι δυνατόν σε μια συνολική κατάσταση να υπάρχουν πολλές δυνατές επόμενες

Διαβάστε περισσότερα

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 3ο μέρος σημειώσεων: Μέθοδος της Επίλυσης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Πολλαπλασιασμός μεγάλων ακεραίων (1) Για να πολλαπλασιάσουμε δύο ακεραίους με n 1 και n 2 ψηφία με το χέρι, θα εκτελέσουμε n 1 n 2 πράξεις πολλαπλασιασμού Πρόβλημα ρβημ όταν έχουμε πολλά ψηφία: A = 12345678901357986429

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θεωρία Υπολογισμού και Πολυπλοκότητα Θεωρία Υπολογισμού και Πολυπλοκότητα Κεφάλαιο 14. Χρονική Πολυπλοκότητα 17, 20, 24 Απριλίου 2007 Δρ. Παπαδοπούλου Βίκη 1 Υπολογίσιμα και Εφικτά Υπολογίσιμα Προβλήματα Είδαμε ότι 1. Οτιδήποτε μπορούμε να

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14 Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων

Διαβάστε περισσότερα

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή.

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή. Μη ντετερµινιστικές Μηχανές Turing - NTMs (1/6) Μηχανές Turing: Μη ντετερµινισµός, Επιλύσιµα Προβλήµατα Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς 10 εκεµβρίου 2016

Διαβάστε περισσότερα

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3 ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3 ιδασκοντες: Α. Μπεληγιάννης - Σ. Παπαδάκης Ιστοσελιδα Μαθηµατος : http://users.uoi.gr/abeligia/numbertheory/nt.html Τετάρτη 13 Μαρτίου 2013 Ασκηση 1. Αφού ϐρείτε την

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 2.0 Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Πολυπλοκότητα Αναδρομικές Σχέσεις Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων

Διαβάστε περισσότερα

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Αλγόριθμοι Επιλογής Γνωρίζουμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 25 Φεβρουαρίου 2015 1 / 53 Περιεχόµενα

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 1: Εισαγωγή Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη 0. Εισαγωγή Αντικείμενο μαθήματος: Η θεωρητική μελέτη ανάλυσης των αλγορίθμων. Στόχος: επιδόσεις των επαναληπτικών και αναδρομικών αλγορίθμων.

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

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

Ασυμπτωτικός Συμβολισμός Ασυμπτωτικός Συμβολισμός ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i. Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα