Εισαγωγή στην Επιστήμη των Υπολογιστών

Σχετικά έγγραφα
Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών

Επιτυχίες της Αλγοριθμικής. Εισαγωγή στην Επιστήμη των Υπολογιστών. Περιεχόμενα. Εισαγωγή. Εισαγωγή. Κεντρικό ερώτημα Επιστήμης Υπολογιστών

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

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Θεµελιώδη Θέµατα. 5ο εξάµηνο ΣΕΜΦΕ. Αλγοριθµικές τεχνικές, αριθµητικοί υπολογισµοί. 3η ενότητα:

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Webster s 50 χρόνια πριν: ανύπαρκτος όρος Oxford s, 1971: «erroneous refashioning of algorism: calculation with Arabic numerals»

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνο ΣHMΜY

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών 5ο εξάμηνο ΣΕΜΦΕ

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Κρυπτογραφία. Έλεγχος πρώτων αριθών-παραγοντοποίηση. Διαφάνειες: Άρης Παγουρτζής Πέτρος Ποτίκας

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

Finite Field Problems: Solutions

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

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

Κρυπτοσύστημα RSA (Rivest, Shamir, Adlemann, 1977) Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Στοιχεία Θεωρίας Αριθμών & Εφαρμογές στην Κρυπτογραφία

Homework 3 Solutions

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

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

Models for Probabilistic Programs with an Adversary

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Αριθμοθεωρητικοί Αλγόριθμοι

Exercises 10. Find a fundamental matrix of the given system of equations. Also find the fundamental matrix Φ(t) satisfying Φ(0) = I. 1.

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

Εισαγωγή. Κεφάλαιο 1. είναι Μάγκας σκύλος ζώο έχει ξύλινο σπιτάκι. Σχήμα 1.1: Γράφος για την αναπαράσταση γνώσης.

derivation of the Laplacian from rectangular to spherical coordinates

Στοιχεία Θεωρίας Αριθμών & Εφαρμογές στην Κρυπτογραφία

Εθνικό Μετσόβιο Πολυτεχνείο

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

Κρυπτογραφία Δημοσίου Κλειδιού

C.S. 430 Assignment 6, Sample Solutions

Σελίδα μαθήματος με ημερολόγιο, υλικό, βιβλιογραφία, ββ, ανακοινώσεις

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

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

k A = [k, k]( )[a 1, a 2 ] = [ka 1,ka 2 ] 4For the division of two intervals of confidence in R +

ANSWERSHEET (TOPIC = DIFFERENTIAL CALCULUS) COLLECTION #2. h 0 h h 0 h h 0 ( ) g k = g 0 + g 1 + g g 2009 =?

Επιστήμη των Υπολογιστών

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

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

The Simply Typed Lambda Calculus

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

2 Composition. Invertible Mappings

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

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

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

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

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

Κεφάλαιο 4. Δυναµικός Προγραµµατισµός (Dynamic Programming) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

GPU. CUDA GPU GeForce GTX 580 GPU 2.67GHz Intel Core 2 Duo CPU E7300 CUDA. Parallelizing the Number Partitioning Problem for GPUs

Section 8.3 Trigonometric Equations

2.1 Διαιρετότητα, ισοϋπόλοιποι αριθμοί. q Z, a = b q + r.

1η Σειρά Γραπτών Ασκήσεων

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Statistical Inference I Locally most powerful tests

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Abstract Storage Devices

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

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

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA

Study of In-vehicle Sound Field Creation by Simultaneous Equation Method

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ. «Θεσμικό Πλαίσιο Φωτοβολταïκών Συστημάτων- Βέλτιστη Απόδοση Μέσω Τρόπων Στήριξης»

Προγραμματισμός Αναδρομή

Προγραμματισμός Αναδρομή

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

Αλγόριθμοι. Κεφάλαιο Αλγόριθμοι και Πολυπλοκότητα Τι είναι αλγόριθμος

Cryptography and Network Security Chapter 9. Fifth Edition by William Stallings

Πρόβληµα 2 (12 µονάδες)

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΟΙΝΟΥ ΔΙΑΙΡΕΤΗ

Αναδρομικοί Αλγόριθμοι

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

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

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

Lecture 2. Soundness and completeness of propositional logic

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

ΕΥΧΑΡΙΣΤΙΕΣ. Θεσσαλονίκη, Δεκέμβριος Κώστας Δόσιος

ST5224: Advanced Statistical Theory II

Concrete Mathematics Exercises from 30 September 2016

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

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

Transcript:

Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνο Σ.H.M.Μ.Y. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 1η ενότητα: Εισαγωγή, Αλγόριθμοι Επιμέλεια: Πάνος Χείλαρης, Βαγγέλης Μπαμπάς, Γεωργία Καούρη Ευχαριστίες: Ηλίας Κουτσουπιάς (ΕΚΠΑ) 1

Περιεχόμενα 1. 2. 3. 4. 5. 6. 8. 9. 10. 11. 12. 13. Εισαγωγή Αλγόριθμοι Αλγόριθμοι Γράφων Αυτόματα και Τυπικές Γλώσσες Λογική στην Επιστήμη των Υπολογιστών Υπολογιστικά Μοντέλα Υπολογισιμότητα (Computability) Υπολογιστική Πολυπλοκότητα Λογικός Προγραμματισμός Συναρτησιακός Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Συστήματα Αρίθμησης Δυαδική Παράσταση Αριθμών Δομή και Λειτουργία ενός Απλού Υπολογιστή Συμβολική Γλώσσα (ASSEMBLY) του ΕΚΥ 2

Εισαγωγή Κλάδοι της Επιστήμης των Υπολογιστών Τι είναι Επιστήμη των Υπολογιστών; Πρόγραμμα και γλώσσα προγραμματισμού Αλγόριθμος Υπολογισιμότητα Πολυπλοκότητα Επανάληψη, επαγωγή, αναδρομή, ορθότητα Δομημένος προγραμματισμός Παράλληλες, ταυτόχρονες, κατανεμημένες διεργασίες Παράδειγμα: πύργοι Hanoi, ταξινόμηση treesort με binary search tree Το Θεώρημα τεσσάρων χρωμάτων (four color theorem) 3

Introduction The 21st century has been called the Computer Era. Computers are used not only as a professional tool, but as communication and entertainment media. Young students already have a lot of experience in using computers and the Internet. Their natural fascination can be used in order to boost their interest in mathematics and science. Algorithmics (algorithmic methodology) is a new way for solving problems. Proposal for high school: replace computer literacy with an elementary programming language that prompts students to concentrate on the design and precise formulation of solutions for problems. 4

Κεντρικό ερώτημα Επιστήμης Υπολογιστών Τι μπορεί να μηχανοποιηθεί και μάλιστα αποδοτικά ; Ποια προβλήματα μπορούμε να λύσουμε με υπολογιστή και πόσο καλά ; Υπολογιστές: ταχύτητα - ακρίβεια 5

What is Computer Science? The scientific and engineering discipline that studies representation, storage and transfer of information by computers and networks, algorithmic solutions and their efficiency, computational complexity. What can be automated, and even better automated efficiently. Computer Science vs. Informatics vs. Computing Science Στάθης Ζάχος Εθνικό Μετσόβιο Πολυτεχνείο 6 Dijkstra (astronomy telescope)

Computer Science Informatics Computing Science Dijkstra 7

Κλάδοι Επιστήμης Υπολογιστών 8

Different aspects of CS Networks and Internet. Information flow (ordering Chinese food, movie theaters, holidays in Togo, poets of Sakhalin, Pursuit of trivia). Business applications (online financial transactions, e-commerce, e-banking, e-anything). Modern technology (AI, multimedia,...). Administration (big brother, encryption, security, e-voting, digital warfare). Change in every aspect of everyday life. Futurology... 9

Our view. The value of a new mathematical methodology: Algorithmic problem solution. Algorithmic problems may arise in: Internet (routing, congestion, game theory, cost allocation) Biology (protein folding, genome, evolution). 10

Disorientations The question of whether a computer can think is no more interesting than the question of whether a submarine can swim. Computer science is no more about computers than astronomy is about telescopes. [Dijkstra] The world doesn t need more than five computers [Tom Watson, IBM, 1945] 11

Hardware exponential growth Gordon Moore, Intel, 1965 Hardware density in integrated circuits doubles every 18 months http://www.intel.com/research/silicon/mooreslaw.htm 12

But do not forget: To err is human. To mess everything up, you need a computer. 13

Mathematical formalization of engineering methodology Problem requirements Specifications Design Implementation Testing - Verification Optimization Complexity (cost of resources) Documentation Maintenance Concepts that had been used by engineers, were formalized in CS, obtained a mathematical form; and thus we can argue about them using proofs. 14

Program Program Precise description of an algorithm in a formal language that is called programming language Actions are applied to data 15

Formulation in a language Natural language No strict syntactic rules Great density and semantic capability Formal language Strict syntax and semantics Programming language Formal language in which computations can be described Executable by an electronic computer 16

Knowledge representation Modeling Abstraction: (Directed) Graphs (Formal) Logic Data Models Data Structures Algorithms 17

Αλγόριθμοι (not in Webster s 50 years ago, in 1971 in Oxford s: erroneous refashioning of algorism: calculation with Arabic numerals) Abu Jaffar Mohammed Ibn Musa AlKhowarizmi, 9, محمد بن موسى الخوارزمي ος αι. μ.χ. Αυστηρά καθορισμένη (πεπερασμένη) ακολουθία ενεργειών που περιγράφει μέθοδο επίλυσης ενός προβλήματος Οι ενέργειες εφαρμόζονται σε δεδομένα Παραδείγματα: Ευκλείδειος αλγόριθμος (Ευκλείδης, 3ος αι. π.χ.) για εύρεση ΜΚΔ Αριθμοί Fibonacci (Leonardo Pisano Filius Bonacci, 13ος αι. μ.χ.) Τρίγωνο Pascal (Yang Hui, 楊輝, 13ος αι. μ.χ.) 18

Fibonacci numbers 1, 1, 2, 3, 5, 8, 13, 21, Fn=Fn-1+Fn-2 Problem: Given n, compute Fn? recursion, iteration, How fast can we compute Fn? O(1.618n), O(n), O(log n) 19

Pascal Triangle (Yang Hui) Binomial coefficients / (a+b)3 = a3 + 3a2b + 3ab2 + b3 / Combinations 1 1 1 1 1 1 1 2 3 3 4 5 1 6 10... 1 4 10 1 5 1.... 20

Algorithmics as a branch of Mathematics Mathematics is a methodology for solving problems. G. Polya: How to solve it. Classically the solution is described statically, e.g., as a solution of an equation. In modern 20th century mathematics, the solution can also be dynamic, e.g., a description of an algorithm that produces the answer. Furthermore, the cost of solving the problem algorithmically is of interest: Computational complexity. D. Harel, W. Feldman. Algorithmics: the spirit of computing 21

Υπολογισιμότητα - Πολυπλοκότητα Υπολογισιμότητα (Computability) Τι μπορεί να υπολογιστεί και τι όχι; Υπολογιστική πολυπλοκότητα (Computational Complexity) Τι μπορεί να υπολογιστεί γρήγορα (ή σε λίγο χώρο) και τι όχι; Πόσο γρήγορα μπορεί να υπολογιστεί; 22

Μη επιλύσιμα προβλήματα Πρόβλημα τερματισμού Το πρόβλημα του Collatz (Ulam): while x!=1 do if (x is even) then x=x/2 else x=3*x+1 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Πρόβλημα: Δίνεται x. Τερματίζει το πρόγραμμα; Πρόβλημα: Τερματίζει το πρόβλημα για κάθε φυσικό αριθμό x; Δεν γνωρίζουμε την απάντηση (είναι δηλαδή ανοικτά προβλήματα). 23

Τι είναι πολυπλοκότητα; Το 101101011101 είναι πιο πολύπλοκο από το 010101010101 (Kolmogorov complexity) Τα θηλαστικά είναι πιο πολύπλοκα από τους ιούς. Το σκάκι είναι πιο πολύπλοκο από την τρίλιζα. Οι επικαλύψεις του Escher είναι πιο πολύπλοκες από τα πλακάκια του μπάνιου. Οι πρώτοι αριθμοί είναι πιο πολύπλοκοι από τους περιττούς (υπολογιστική πολυπλοκότητα). 24

25

Τι είναι υπολογιστική πολυπλοκότητα; Ένας τρόπος για να συλλάβουμε γιατί οι πρώτοι αριθμοί είναι πιο πολύπλοκοι από τους περιττούς είναι η υπολογιστική πολυπλοκότητα. Το πρόβλημα «Δίνεται x. Είναι πρώτος;» είναι πιο δύσκολο από το πρόβλημα «Δίνεται x. Είναι περιττός;» 26

Computational Complexity Efficiently computable, feasible. Comparing algorithms with respect to their efficiency. Classifying problems with respect to the use of resources, e.g., time (computational steps), space (memory), number of processors, number of non-deterministic choices in every step, use of external help (oracles), use of random bits, etc. 27

Κατηγοριοποίηση προβλημάτων Όλα τα προβλήματα Υπολογίσιμα (επιλύσιμα) Αποδοτικώς επιλύσιμα Παραλληλοποιήσιμα 28

Asymptotic behavior logn n n2 2n 3.322 10 100 1024 6.644 100 10000 9.966 1000 1000000 1267650600228229401496703205376 (1267650600228229401496703205376) 10 29

Iteration-Recursion-Induction 30

Πύργοι Ανόι (Hanoi Towers) 31

Μερική και Ολική Ορθότητα 32

Euclid s idea for finding the GCD of two natural numbers If a>b then GCD(a, b) = GCD(a mod b, b) If a<b then GCD(a, b) = GCD(a, b mod a) a mod b = the remainder of the integer division a div b This is the best known algorithm for GCD. It is an open problem whether this is an optimal algorithm. 33

Euclid s algorithm for GCD GCD of 172 and 10 10 2 2 54. 54 4 4 0 (iteration) The GCD is 2. 34

Treesort με χρήση Binary Search Tree 35

Structured Programming Modularity Parallel Systems Concurrent Systems Distributed Systems 36

Δίκτυα Ταξινόμησης (Sorting Networks) 37

Four Color Theorem (1852-1977) Appel Haken (απόδειξη με πρόγραμμα!) 38

Αλγόριθμοι 39

Determinism 40

Nondeterminism 41

Μοντέλα Υπολογισμού 42

Θέση των Church-Turing (ισοδύναμη διατύπωση) 43

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

Είδη πολυπλοκότητας 45

Πολυπλοκότητα: κόστος αλγορίθμου / κόστος προβλήματος 46

Παράδειγμα: ταξινόμηση Bubblesort: c n2 Mergesort: c' n logn Πολυπλοκότητα του προβλήματος (επίλυση με συγκρίσεις): c' n logn 47

Μαθηματικοί Συμβολισμοί 48

Μαθηματικοί Συμβολισμοί 49

Μαθηματικοί Συμβολισμοί 50

Η "προπαίδεια" log*n: πόσες φορές πρέπει να λογαριθμήσουμε το n για να φτάσουμε κάτω από το 1 (αντίστροφη υπερεκθετικής) A: Ackermann. α: αντίστροφη της Α. 51

Εύρεση Μέγιστου Κοινού Διαιρέτη (gcd) Δεν είναι καλή ιδέα να το αναγάγουμε στο πρόβλημα εύρεσης πρώτων παραγόντων γιατί αυτό δεν λύνεται αποδοτικά. Απλός αλγόριθμος: Ο(min(α,b)) Αλγόριθμος με αφαιρέσεις: Ο(max(α,b)) Αλγόριθμος του Ευκλείδη: Ο(log min(α,b)) 52

Πολυπλοκότητα Ευκλείδειου Αλγόριθμου Άνω φράγμα: Ο(log min(α,b)) Επειδή σε 2 επαναλήψεις ο μεγαλύτερος αριθμός υποδιπλασιάζεται (άσκηση: αποδείξτε το!) Κάτω φράγμα: Ω(log min(α,b)) Επειδή για διαδοχικούς Fibonacci, Fk+1, Fk, χρειάζεται k βήματα, και Fk φk/ 5, όπου φ=(1+ 5)/2 (χρυσή τομή). Επομένως: Θ(log min(α,b))

Ύψωση σε δύναμη power(a, n) result := 1 for i := 1 to n do result := result*a return result Πολυπλοκότητα: O(n) εκθετική ως προς το μήκος της εισόδου! 54

Ύψωση σε δύναμη με επαναλαμβανόμενο τετραγωνισμό fastpower(a, n) result := 1 while n>0 do if odd(n) then result:=result*a n := n div 2 a := a*a return result Ιδέα: 1.23+1.22 +0.21 +1.20 a =a 13 Πολυπλοκότητα: O(log n) πολυωνυμική ως προς το μήκος της εισόδου! 55

Αριθμοί Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... F0 = 0, F1 = 1, Fn=Fn-1+Fn-2, n >=2 Πρόβλημα: Δίνεται n, να υπολογιστεί το Fn Πόσο γρήγορο μπορεί να είναι το πρόγραμμά μας; 56

Αριθμοί Fibonacci: αναδρομικός αλγόριθμος F(n) if (n<2) then return n else return F(n-1)+F(n-2); Πολυπλοκότητα: T(n) = T(n-1) + T(n-2) + c, δηλ. η T(n) ορίζεται όπως η F(n) (+ κάτι μικρό), οπότε: Τ(n) > F(n) = Ω(1.62n) 57

Αριθμοί Fibonacci: καλύτερος αλγόριθμος F(n) a:=0; b:=1; for i:=2 to n do c:=b; b:=a+b; a:=c; return b; Πολυπλοκότητα: O(n) 58

Χρόνος εκτέλεσης αλγορίθμων Θεωρήστε 4 προγράμματα με αριθμό βημάτων O(2n ), O(n 2), O(n), και O(logn) που το κάθε χρειάζεται 1 δευτερόλεπτο για να υπολογίσει το F(100). Πόσα δευτερόλεπτα θα χρειαστούν για να υπολογίσουν το F(n); F(100) c.2n 1 c.n 2 1 c.n 1 c.logn 1 F(101) F(110) 2 1024 1.02 1.21 1.01 1.1 F(200)?????? 4 2 1.002 1.02 1.15 59

Αριθμοί Fibonacci: ακόμα καλύτερος αλγόριθμος Μπορούμε να γράψουμε τον υπολογισμό σε μορφή πινάκων: Από αυτό συμπεραίνουμε Ο αριθμός των αριθμητικών πράξεων μειώνεται στο O(log n). 60

Προβλήματα πρώτων αριθμών Primality testing: Δίνεται ακέραιος n. Είναι πρώτος; Σχετικά εύκολο. Επιλύεται σε πολυωνυμικό χρόνο όπως έδειξαν πρόσφατα κάποιο προπτυχιακοί Ινδοί φοιτητές. Factoring: Δίνεται ακέραιος n. Να βρεθούν οι πρώτοι παράγοντες του. Δεν ξέρουμε αν είναι εύκολο ή δύσκολο. Πιστεύουμε ότι δε λύνεται σε πολυωνυμικό χρόνο, αλλά ούτε ότι είναι τόσο δύσκολο όσο τα NP-complete προβλήματα. Σε κβαντικούς υπολογιστές (που δεν έχουμε ακόμα καταφέρει να κατασκευάσουμε) επιλύεται πολυωνυμικά. 61

Factoring και κρυπτογραφία (η δικαίωση του Ευκλείδη!) RSA: Κρυπτογραφικό σχήμα δημοσίου κλειδιού για να στείλει η A (Alice) στον B (Bob) ένα μήνυμα m. O B διαλέγει 2 μεγάλους πρώτους αριθμούς p και q, υπολογίζει το γινόμενο n=pq, και διαλέγει ακέραιο e σχετικά πρώτο με το φ(n)=(p-1)(q-1). Ο Β στέλνει στην Α τα n και e. H Α στέλνει στον Β τον αριθμό c=me(mod n). Ο Β υπολογίζει το m: m=cd(mod n), όπου το d=e-1 (mod (p-1)(q-1)). Παράδειγμα: p=11, q=17, n=187, e=21, d=61, m=42, c=9 - Η ασφάλεια του RSA στηρίζεται στην (εκτιμώμενη) δυσκολία του factoring. - Για την υλοποίηση του RSA χρησιμοποιούνται, μεταξύ άλλων, ο αλγόριθμος επαναλαμβανόμενου τετραγωνισμού και ο επεκτεταμένος Ευκλείδειος αλγόριθμος (που επιπλέον εκφράζει τον gcd(a,b) σαν γραμμικό συνδυασμό των a και b). 62

Πολυπλοκότητα: ανοικτά ερωτήματα Εκτός από κάποιες ειδικές περιπτώσεις, για κανένα πρόβλημα δεν γνωρίζουμε πόσο γρήγορα μπορεί να λυθεί. Ακόμα και για τον πολλαπλασιασμό αριθμών δεν γνωρίζουμε τον ταχύτερο αλγόριθμο. Ο σχολικός τρόπος πολλαπλασιασμού αριθμών με n ψηφία χρειάζεται O(n2) βήματα. Υπάρχουν καλύτεροι αλγόριθμοι που χρειάζονται περίπου O(n log n) βήματα. Υπάρχει αλγόριθμος που χρειάζεται μόνο O(n) βήματα; Αυτό είναι ανοικτό ερώτημα. 63