Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνο ΣHMΜY Ελόηεηα 0: Δηζαγσγή Δηδάζθοληες: Σηάζεο Εάρνο, Άξεο Παγνπξηδήο, Κσζηήο Σαγώλαο, Γεκήηξεο Σνύληξεο Επηκέιεηα δηαθαλεηώλ: Σηάζεο Εάρνο, Άξεο Παγνπξηδήο http://www.corelab.ece.ntua.gr/courses/introcs http://courses.microlab.ntua.gr/ 1
Επιστήμη των Υπολογιστών Ο επηζηεκνληθόο θαη ηερλνινγηθόο θιάδνο πνπ: κειεηάεη ηελ αλαπαξάζηαζε, απνζήθεπζε, επεμεξγαζία θαη κεηάδνζε πιεξνθνξηώλ κέζσ ππνινγηζηώλ θαη δηθηύσλ αλαδεηά θαη εμεηάδεη ηξόπνπο (αιγόξηζκνπο, δνκέο δεδνκέλσλ, γιώζζεο πξνγξακκαηηζκνύ, αξρηηεθηνληθέο) γηα ηελ απνδνηηθή πινπνίεζε ησλ παξαπάλσ εξγαζηώλ 2
Άλλα ονόματα Informatics (Πιεξνθνξηθή) Computing Science (Δπηζηήκε Υπνινγηζκώλ) Dijkstra: «Ζ επηζηήκε ησλ ππνινγηζηώλ έρεη σο αληηθείκελν ηνπο ππνινγηζηέο όζν θαη ε αζηξνλνκία ηα ηειεζθόπηα» 3
Κεντρικό ερώτημα της επιστήμης υπολογιστών Τη κπνξεί λα κεραλνπνηεζεί θαη κάιηζηα απνδνηηθά; Πνηα πξνβιήκαηα κπνξνύκε λα ιύζνπκε κε ππνινγηζηή θαη πόζν θαιά; 4
Όψεις επιστήμης υπολογιστών Θεσξεηηθέο ζεκειηώζεηο: ππνινγηζηκόηεηα, ινγηθή, απηόκαηα, γξάθνη Αιγόξηζκνη θαη πνιππινθόηεηα Γιώζζεο θαη κνληέια πξνγξακκαηηζκνύ: πξνζηαθηηθέο, αληηθεηκελνζηξεθείο, ζπλαξηεζηαθέο, ινγηθνύ πξνγξακκαηηζκνύ, γιώζζεο ζελαξίσλ Μεηαγισηηηζηέο Αξρηηεθηνληθή ππνινγηζηή, assembly Χεθηαθή ζρεδίαζε, VLSI 5
Άλλες όψεις της επιστήμης των υπολογιστών Γίθηπα θαη δηαδίθηπν Δκπνξηθέο εθαξκνγέο (online ζπλαιιαγέο, e- commerce, e-banking, e-anything). Σύγρξνλε ηερλνινγία (AI, multimedia, ubiquitous computing) Αζθάιεηα θαη παξαθνινύζεζε (encryption, security, e-voting, digital warfare, big brother) Αιιαγέο ζε θάζε ηνκέα ηεο δσήο (αγνξέο, δηαζθέδαζε, θνηλσληθά δίθηπα) 6
Κλάδοι επιστήμης υπολογιστών (i) Υπνινγηζηκόηεηα θαη πνιππινθόηεηα Αιγόξηζκνη θαη δνκέο δεδνκέλσλ Γιώζζεο πξνγξακκαηηζκνύ θαη κεηαγισηηηζηέο Τερλνινγία ινγηζκηθνύ Βάζεηο δεδνκέλσλ θαη δηαρείξηζε πιεξνθνξηώλ Αξρηηεθηνληθή θαη νξγάλσζε ππνινγηζηώλ Λεηηνπξγηθά - παξάιιεια - θαηαλεκεκέλα ζπζηήκαηα 7
Κλάδοι επιστήμης υπολογιστών (ii) Γίθηπα ππνινγηζηώλ θαη ηερλνινγίεο δηαδηθηύνπ Τερλεηή λνεκνζύλε Δπηθνηλσλία αλζξώπνπ κεραλήο, πνιπκέζα Κξππηνγξαθία Υπνινγηζηηθή βηνινγία, βηνινγηθνί ππνινγηζκνί Κβαληηθνί ππνινγηζκνί 8
Είπαν... Dijkstra: «Τν εξώηεκα εάλ ν σποιογηζηής ζθέθηεηαη δελ είλαη πην ελδηαθέξνλ από ην εξώηεκα εάλ ην σποβρύτηο θοισκπάεη» Tom Watson, IBM, 1945: «Ο θόζκνο δελ ρξεηάδεηαη πεξηζζόηεξνπο από πέληε σποιογηζηές» 9
Θεωρητικές θεμελιώσεις Υπνινγηζηκόηεηα: ποηά πξνβιήκαηα κπνξνύκε λα ιύζνπκε; Υπνινγηζηηθή πνιππινθόηεηα: πόζο θαιά κπνξνύκε λα ηα ιύζνπκε;... σο πξνο ην ρξόλν σο πξνο ην ρώξν/κλήκε σο πξνο ηελ θαηαλάισζε ελέξγεηαο σο πξνο bandwidth 10
Θεωρητικές θεμελιώσεις: υπολογιστική πολυπλοκότητα Αιγόξηζκνη: άλσ θξάγκαηα ηαμηλόκεζε (κε bubblesort): O(n 2 ) Απνδείμεηο δπζθνιίαο: θάησ θξάγκαηα ηαμηλόκεζε κε ζπγθξίζεηο: Ψ(n logn) NP-πιεξόηεηα: ηζρπξή έλδεημε απνπζίαο απνδνηηθνύ αιγνξίζκνπ million dollar question! 11
Θεωρητικές θεμελιώσεις: εργαλεία Μνληέια ππνινγηζκνύ: πεπεξαζκέλα απηόκαηα, κεραλέο Turing, ι-ινγηζκόο, ινγηθά θπθιώκαηα, λεπξσληθά δίθηπα,... Αλαπαξάζηαζε πξνβιεκάησλ: γξάθνη, ινγηθή, γξακκηθόο πξνγξακκαηηζκόο,... 12
Πρόγραμμα Αθξηβήο πεξηγξαθή ελόο αιγνξίζκνπ ζε κία ηππηθή γιώζζα πνπ νλνκάδεηαη γιώζζα πξνγξακκαηηζκνύ Οη ελέξγεηεο εθαξκόδνληαη ζε αληηθείκελα πνπ ιέγνληαη δεδνκέλα (data) 13
Διατύπωση αλγορίθμου σε γλώσσα Φπζηθέο γιώζζεο Φσξίο απζηεξνύο ζπληαθηηθνύο θαλόλεο Μεγάιε ππθλόηεηα θαη ζεκαζηνινγηθή ηθαλόηεηα Τππηθέο γιώζζεο Απζηεξό ζπληαθηηθό θαη ζεκαζηνινγία Γιώζζεο πξνγξακκαηηζκνύ Τππηθέο γιώζζεο πεξηγξαθήο ππνινγηζκώλ Δληνιέο εθηειέζηκεο από ειεθηξνληθό ππνινγηζηή 14
Οργάνωση υπολογιστών (i) 15 Αλαπαξάζηαζε θαη πξάμεηο δπαδηθώλ αξηζκώλ Καηεγνξίεο αξρηηεθηνληθώλ Αξρέο ζρεδηαζκνύ θαη πινπνίεζεο εθαξκνγώλ ζε αξρηηεθηνληθέο/πιηθό Δηζαγσγή ζηελ θαηαζθεπή νινθιεξσκέλσλ θπθισκάησλ 15
Οργάνωση υπολογιστών (ii) 16 Υιηθό (hardware), νξγάλσζε θαη ιεηηνπξγία κηθξνεπεμεξγαζηώλ (ηκήκαηα θαη ιεηηνπξγία ππνινγηζηή, κνξθή εληνιήο-γιώζζα κεραλήο, ζπκβνιηθή γιώζζα (assembly), ζρεδίαζε κλήκεο-πεξηθεξεηαθέο κνλάδεο-κνλάδεο απνζήθεπζεο) Δηζαγσγή ζην ινγηζκηθό ζπζηήκαηνο ιεηηνπξγηθό ζύζηεκα κεηαγισηηηζηήο 16
Επίλυση προβλημάτων μέσω Η/Υ Πξόβιεκα Αιγόξηζκνη Γιώζζα Αξρηηεθηνληθή Σπλόινπ Δληνιώλ Μηθξναξρηηεθηνληθή Κπθιώκαηα Σηνηρεία 17
Επίλυση προβλημάτων μέσω Η/Υ Μηα ζπζηεκαηηθή αθνινπζία κεηαζρεκαηηζκώλ κεηαμύ ησλ επηπέδσλ αθαίξεζεο (layers of abstraction) Πρόβιεκα Αιγόρηζκος Πρόγρακκα Αρτηηεθηοληθή Σσλόιοσ Εληοιώλ Σρεδηαζκόο Λνγηζκηθνύ: Δπηινγή αιγνξίζκσλ θαη δνκώλ δεδνκέλσλ Πξνγξακκαηηζκόο: Φξήζε γιώζζαο γηα ηελ πεξηγξαθή ηνπ αιγνξίζκνπ Μεηάθξαζε/Γηεξκελεία: Μεηαηξνπή γιώζζαο ζε εληνιέο κεραλήο 18
συνέχεια Αρτηηεθηοληθή Σσλόιοσ Εληοιώλ Σρεδηαζκόο Δπεμεξγαζηή Μηθροαρτηηεθηοληθή Σρεδηαζκόο Λνγηθήο/Κπθιώκαηνο Κσθιώκαηα Circuits Γηαδηθαζία Καηαζθεπήο Σηοητεία Devices 19
Τρία παραδείγματα υπολογισμού Αξηζκνί Fibonacci Κύθινο Euler θύθινο Hamilton Κξππηνγξαθία δεκνζίνπ θιεηδηνύ 20
Αριθμοί Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... F 0 = 0, F 1 = 1 F n = F n-1 + F n-2, n >=2 Πξόβιεκα: Γίλεηαη n, λα ππνινγηζηεί ην F n Πόζν γξήγνξν κπνξεί λα είλαη ην πξόγξακκά καο; 21
Το πρόβλημα του Euler Γίλεηαη γξάθνο. Υπάξρεη ηξόπνο λα πεξάζνπκε από θάζε αθκή κηα αθξηβώο θνξά; Seven Bridges of Königsberg Source: http://physics.weber.edu/carroll/honors_images/barbasibridges.jpg 22
Το πρόβλημα του Hamilton Γίλεηαη γξάθνο. Υπάξρεη ηξόπνο λα πεξάζνπκε από θάζε θνξπθή κηα αθξηβώο θνξά; Source: http://jwilson.coe.uga.edu/emat6680/yamaguchi/ emat6690/essay1/gt.html 23
Το πρόβλημα του Hamilton Γίλεηαη γξάθνο. Υπάξρεη ηξόπνο λα πεξάζνπκε από θάζε θνξπθή κηα αθξηβώο θνξά; Source: http://jwilson.coe.uga.edu/emat6680/yamaguchi/ emat6690/essay1/gt.html 24
P =? NP Τη είλαη πην εύθνιν; Να βξείηε ηηο ιύζεηο ησλ αζθήζεσλ ή λα ηηο αληηγξάςεηε; Πόζν πην δύζθνιν είλαη λα βξνύκε θάπνηα ιύζε από ην λα ηελ επαιεζεύζνπκε; Απηό είλαη νπζηαζηηθά ην P =? NP πξόβιεκα, πνπ απνηειεί ην πην ζεκαληηθό αλνηθηό πξόβιεκα ηεο Θεσξεηηθήο Πιεξνθνξηθήο ζήκεξα. Σην http://www.claymath.org πξνζθέξνληαη 1εθ. δνιάξηα γηα ηε ιύζε ηνπ! 25
Κρυπτογραφία δημοσίου κλειδιού Σπλαξηήζεηο κνλήο θαηεύζπλζεο (one-way functions): εύθοιο λα ππνινγηζηνύλ, δύζθοιο λα αληηζηξαθνύλ Κξππηνγξαθία δεκνζίνπ θιεηδηνύ (θαηάργεζε ηελ αλάγθε αληαιιαγής θιεηδηώλ!): ζηεξίδεηαη ζηελ ύπαξμε ηέηνησλ ζπλαξηήζεσλ. Κξππηνζύζηεκα RSA [Rivest-Shamir-Adleman, 1977] ζπλάξηεζε θξππηνγξάθεζεο: c = m e mod n Αζθάιεηα RSA: δελ ππάξρεη (ειπίδοσκε, ρξεηαδόκαζηε απόδεημε!) απνδνηηθόο ηξόπνο ππνινγηζκνύ ηνπ m δεδνκέλσλ ησλ c, e, θαη n, αλ n είλαη ζύλζεηνο (...εθηόο αλ γλσξίδνπκε παξαγνληνπνίεζε ηνπ n) Γειαδή ε ζσλάρηεζε θρσπηογράθεζες RSA είλαη κολής θαηεύζσλζες (κάιινλ!) 26
Συμπεράσματα (i) Πνιιά ελδηαθέξνληα πξνβιήκαηα δελ μέξνπκε αλ κπνξνύκε λα ηα ιύζνπκε αξθεηά γξήγνξα κε ππνινγηζηή Αθόκε θαη όηαλ είκαζηε ζίγνπξνη όηη ππάξρεη ιύζε θαη κάιηζηα κνλαδηθή (ζσλαρηήζεης κολής θαηεύζσλζες) Υπάξρνπλ θαη πξνβιήκαηα πνπ δελ ιύλνληαη θαλ! : Halting Problem 27
Συμπεράσματα (ii) Δίλαη ζεκαληηθό λα γλσξίδνπκε ηί κπνξνύκε θαη ηί δελ κπνξνύκε λα θάλνπκε κε ηνπο ππνινγηζηέο Απηό κειεηάεη ε Δπηζηήκε ησλ Υπνινγηζηώλ Ζ ππνινγηζηηθή δπζθνιία νξηζκέλσλ πξνβιεκάησλ (π.ρ. παξαγνληνπνίεζε) κπνξεί λα είλαη επηζπκεηή (θξππηνγξαθία, εθινγέο) Τα καζεκαηηθά είλαη πάληα επίθαηξα! 28