ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Παρασκευή - 17/12/10 (08:30-11:30) Τελική Εξέταση ΧΩ 01 Αίθουσα 108 Οι ερωτήσεις που δίνονται για κάθε κεφάλαιο έχουν ως στόχο να σας υποβοηθήσουν να προετοιµαστείτε όσο το δυνατό καλύτερα για την τελική εξέταση. εν καθορίζουν όµως την ύλη της τελικής, η οποία καθορίζεται από τις διαφάνειες των διαλέξεων οι οποίες είναι αναρτηµένες στην ακόλουθη ιστοσελίδα. http://www.cs.ucy.ac.cy/courses/epl035/index.html Ύλη Τελικής Εξέτασης Κεφάλαιο 1: Εισαγωγή ( ιάλεξη 1) 1. Ποια τα στάδια επίλυσης φυσικών προβληµάτων στη πληροφορική. 2. Τι είναι η µαθηµατική µοντελοποίηση? 3. Τι είναι οι δοµές δεδοµένων? 4. Τι είναι ο αλγόριθµος? a. ποια κριτήρια πρέπει να ικανοποιεί? b. ποια η κύρια διαφορά µε ένα πρόγραµµα? c. πως και σε τι αποσκοπεί η αξιολόγηση των αλγορίθµων? Κεφάλαιο 2: Αφηρηµένοι Τύποι εδοµένων ( ιάλεξη 1) 1. Τι ορίζουµε ως τύπο δεδοµένων και τι ως Αφηρηµένο Τύπο εδοµένων (ΑΤ ) και ποια η διαφορά τους? 2. Πλεονεκτήµατα και υλοποίηση του ΑΤ. 3. οµικές σχέσεις ΑΤ 4. Πως ορίζουµε ένα ΑΤ καθώς και ποιοι είναι οι βασικοί ΑΤ? 5. Υλοποιήσεις βασικών ΑΤ. 6. ΑΤ δοµή, τρόπος ορισµού και υλοποίησης σε ένα πρόγραµµα, καθώς και υπολογισµός διεύθυνσης πεδίου, βλέπε φροντιστήριο και εργασία 1. = βαση( ) i + 1 j= 1 λj
Κεφάλαιο 3: Πολυπλοκότητα Αλγορίθµων ( ιάλεξη 2-3) Εκτός Ύλης Τελικής 1. Τι είναι αλγόριθµος και ποιες παράµετροι θεωρούνται σηµαντικοί για ένα αλγόριθµο? 2. Σε τι αποσκοπεί η ανάλυση αλγορίθµων και ποιοι τρόποι ανάλυσης υπάρχουν? 3. Αρχή της σταθερότητας 4. Big-O notation και ιδιότητες. 5. Ανάλυση/εξέταση προγραµµάτων (κώδικα) ή συναρτήσεων και υπολογισµός χείριστης και βέλτιστης περίπτωσης χρόνου εκτέλεσης αλγορίθµου. 6. Μαθηµατική επαγωγή Κεφάλαιο 4: Συµβολοσειρές ( ιάλεξη 4) 1. Τι είναι η συµβολοσειρά? Ορισµός a. Ποιος είναι ο τρόπος υλοποίησης συµβολοσειράς στην C? b. Αναγνώριση/χρησιµοποίηση ορθών τρόπων αρχικοποίησης συµβολοσειρών (προγραµµατιστικά). c. Ανάγνωση και εκτύπωση συµβολοσειράς στην C (προγραµµατιστικά). 2. Πίνακες συµβολοσειρών και προγραµµατιστική υλοποίηση. 3. Ποιες είναι οι βασικές (συχνές και αναγκαίες) πράξεις µε συµβολοσειρές? 4. Πως υλοποιούνται στην C? a. υνατότητα χρήσης/κατανόησης υφιστάµενων πράξεων (συναρτήσεων) στην C καθώς και προγραµµατιστικής υλοποίησης δικών σας συναρτήσεων (πράξεων) που εξυπηρετούν τον ίδιο σκοπό. 5. Υλοποίηση προγραµµάτων ή συναρτήσεων που βασίζονται στις υφιστάµενες συναρτήσεις για διαχείριση συµβολοσειρών? Κεφάλαιο 5: είκτες και Πίνακες ( ιάλεξη 5-6) 1. Τι είναι οι δείκτες, πως λειτουργούν και ποιοι οι λόγοι χρήσης τους?\ 2. υνατότητα προγραµµατιστικής χρήσης/κατανόησης δεικτών και διευθύνσεων, π.χ. χρήση τελεστής διεύθυνσης, χρήση τελεστής αναφοράς, παραδείγµατα προγραµµάτων ή ορισµός συναρτήσεων µε δείκτες και κατανόησης/εξαγωγής αποτελεσµάτων. 3. είκτες και πίνακες: υνατότητα κατανόησης προγραµµάτων ή συναρτήσεων µε δείκτες και πίνακες. 4. Πίνακες δεικτών: Σωστή αρχικοποίηση και υλοποίηση προγραµµάτων µε πίνακες δεικτών ή κατανόηση προγραµµάτων και εξαγωγή αποτελεσµάτων. 5. Παράµετροι συνάρτησης main(), η σηµασία τους καθώς και οι τρόποι υλοποίησης προγράµµατος στο οποίο δέχεται παραµέτρους η συνάρτησης main(). Κεφάλαιο 6: οµές και Ενώσεις ( ιάλεξη 7) 1. Τι είναι οι δοµές (structures) και τι οι ενώσεις (unions)? a. Ποια η χρησιµότητα τους καθώς και η κύρια διαφορά τους? 2. Προγραµµατιστική υλοποίηση δοµής και αναφορά σε πεδία/µέλη της δοµής. 3. Προγραµµατιστική υλοποίηση φωλιασµένης δοµής και αναφορά σε πεδία/µέλη φωλιασµένων δοµών.
4. Ποια η χρησιµότητα του typedef στην υλοποίηση δοµών? 5. Υλοποίηση συναρτήσεων µε δοµές ως παραµέτρους εισόδου. Κεφάλαιο 7: Memory Allocation (malloc) ( ιάλεξη 8) 1. Ποια η κύρια διαφορά/πλεονέκτηµα της υναµικής έσµευσης Μνήµης µε την Στατική έσµευση Μνήµης? 2. Υπολογισµός απαιτούµενης µνήµης εκτέλεσης προγράµµατος µε στατική ή/και δυναµική δέσµευση µνήµης. 3. Πως υλοποιούµε/δεσµεύουµε δυναµικά µνήµη σε ένα πρόγραµµα και πως αποδεσµεύουµε την µνήµη που δεν χρησιµοποιείται πλέον? 4. Υλοποίησης συνδεδεµένης λίστας µε αυτοαναφερόµενες δοµές. Κεφάλαιο 8: Αναδροµή ( ιάλεξη 9) 1. Τι είναι η αναδροµή, ποια η χρησιµότητα της και ποια βήµατα είναι αναγκαία για την υλοποίηση της? 2. Πως γίνεται η υλοποίηση της αναδροµής και ποια η σχέση µε τον ΑΤ στοίβα? 3. Υλοποίηση προγραµµάτων/συναρτήσεων µε τη χρήση αναδροµής, π.χ. δίνεται ένα πρόγραµµα/συνάρτηση χωρίς αναδροµή και να πρέπει να υλοποιήσετε ένα αντίστοιχο πρόγραµµα/συνάρτηση µε αναδροµή, ή να συµπληρώσετε τις αναγκαίες εντολές σε ένα αναδροµικό πρόγραµµα/συνάρτηση. Κεφάλαιο 9: Αφηρηµένοι Τύποι εδοµένων (ΑΤ ), Λίστες, ΑΤ Στοίβα και Ουρά ( ιάλεξη 10) 1. Τι ορίζουµε ως Τύπο εδοµένων και τι ως Αφηρηµένο Τύπο εδοµένων (ΑΤ ) και ποια η διαφορά τους? 2. Τι είναι η Λίστα και ποιες οι βασικές/αναγκαίες πράξεις για τον ορισµό του γενικού ΑΤ Λίστα? 3. Ποιοι είναι οι βασικοί τύποι λίστας (περιγραφή) και ποιες οι παραλλαγές στις 2 βασικές πράξεις σε σχέση µε τη γενική ΑΤ Λίστα? 4. ΑΤ Στοίβα, βασικές πράξεις, ορισµός/δήλωση στοίβας και κόµβων καθώς και υλοποίηση/κατανόηση βασικών πράξεων µε στατική δέσµευση µνήµης. 5. ΑΤ Ουρά, βασικές πράξεις, ορισµός/δήλωση ουράς και κόµβων καθώς και υλοποίηση/κατανόηση βασικών πράξεων µε στατική δέσµευση µνήµης. Κεφάλαιο 10: Στοίβες ( ιάλεξη 11) 1. ΑΤ Στοίβα, βασικές πράξεις, ορισµός/δήλωση στοίβας και κόµβων καθώς και υλοποίηση/κατανόηση βασικών πράξεων µε δυναµική δέσµευση µνήµης. 2. Παραδείγµατα εφαρµογών του ΑΤ Στοίβα. Κεφάλαιο 11: Λίστες ( ιάλεξη 12) 1. ΑΤ Λίστα, βασικές πράξεις, ορισµός/δήλωση λίστας και κόµβων καθώς και υλοποίηση/κατανόηση βασικών πράξεων µε δυναµική δέσµευση µνήµης. 2. Σύγκριση Πινάκων µε Συνδεδεµένες Λίστες, Πλεονεκτήµατα, Μειονεκτήµατα.
Κεφάλαιο 12: Αλγόριθµοι ταξινόµησης Μέρος 1 ( ιάλεξη 13) Αλγόριθµοι ταξινόµησης o SelectionSort α) Θεωρητικά: Σκοπός, Λειτουργία/Βήµατα Εκτέλεσης, Ανάλυση Χρόνου Εκτέλεσης, β) Πρακτικά: Κατανόηση και Επεξήγηση Κώδικα Υλοποίησης Αλγόριθµου SelectionSort, υνατότητα (βάση Κώδικα Υλοποίησης Αλγόριθµου SelectionSort) Εξαγωγής Αποτελεσµάτων Εκτέλεσης, Επίλυση Παραδειγµάτων Εκτέλεσης Αλγόριθµου SelectionSort. o InsertionSort α) Θεωρητικά: Σκοπός, Λειτουργία/Βήµατα Εκτέλεσης, Ανάλυση Χρόνου Εκτέλεσης, β) Πρακτικά: Κατανόηση και Επεξήγηση Κώδικα Υλοποίησης Αλγόριθµου InsertionSort, υνατότητα (βάση Κώδικα Υλοποίησης Αλγόριθµου InsertionSort) Εξαγωγής Αποτελεσµάτων Εκτέλεσης, Επίλυση Παραδειγµάτων Εκτέλεσης Αλγόριθµου InsertionSort. o Σύγκριση InsertionSort και SelectionSort Κεφάλαιο 12: Αλγόριθµοι ταξινόµησης Μέρος 2 ( ιάλεξη 14) Αλγόριθµοι ταξινόµησης o Mergesort α) Θεωρητικά: Σκοπός, Λειτουργία/Βήµατα Εκτέλεσης, Ανάλυση Χρόνου Εκτέλεσης, β) Πρακτικά: Κατανόηση και Επεξήγηση Κώδικα Υλοποίησης Αλγόριθµου Mergesort, υνατότητα (βάση Κώδικα Υλοποίησης Αλγόριθµου Mergesort) Εξαγωγής Αποτελεσµάτων Εκτέλεσης, Επίλυση Παραδειγµάτων Εκτέλεσης Αλγόριθµου Mergesort. o BucketSort α) Θεωρητικά: Σκοπός, Λειτουργία/Βήµατα Εκτέλεσης, Ανάλυση Χρόνου Εκτέλεσης, β) Πρακτικά: Κατανόηση και Επεξήγηση Κώδικα Υλοποίησης Αλγόριθµου BucketSort, υνατότητα (βάση Κώδικα Υλοποίησης Αλγόριθµου BucketSort) Εξαγωγής Αποτελεσµάτων Εκτέλεσης, Επίλυση Παραδειγµάτων Εκτέλεσης Αλγόριθµου BucketSort. o Σύγκριση Mergesort και BucketSort Κεφάλαιο 12: Αλγόριθµοι ταξινόµησης Μέρος 3 ( ιάλεξη 15) Αλγόριθµοι ταξινόµησης o QuickSort α) Θεωρητικά: Σκοπός, Λειτουργία/Βήµατα Εκτέλεσης, Ανάλυση Χρόνου Εκτέλεσης, β) Πρακτικά: Κατανόηση και Επεξήγηση Κώδικα Υλοποίησης Αλγόριθµου QuickSort, υνατότητα (βάση Κώδικα Υλοποίησης Αλγόριθµου QuickSort) Εξαγωγής Αποτελεσµάτων Εκτέλεσης, Επίλυση Παραδειγµάτων Εκτέλεσης Αλγόριθµου QuickSort. o Τι είναι η έµµεση ταξινόµηση (Indirect Sorting)? o Τι είναι η Εξωτερική ταξινόµηση (External Sorting)?
Κεφάλαιο 13: Εισαγωγή σε ενδρικές οµές εδοµένων ( ιάλεξη 16) ενδρικές οµές εδοµένων o Τι είναι η ενδρικές οµές εδοµένων? Ποια η διαφορά τους µε τις γραµµικές δοµές δεδοµένων? Ορισµός ένδρου. Παραδείγµατα Χρήσης/Υλοποίησης ένδρων o Σύγκριση και µειονεκτήµατα της χρήσης γραµµικής δοµής πίνακα σε σχέση µε την χρήση ένδρων ( ενδρικών οµών εδοµένων). o Ορισµοί ένδρων (π.χ. Βάθος και ύψος ενός δένδρου), Επίλυση (Εξαγωγή Αποτελεσµάτων) Βάση των ορισµών ένδρων. o Αναπαράσταση ένδρων στη Μνήµη. o Τεχνικές ιάσχισης ένδρων, Επίλυση Παραδειγµάτων Εκτέλεσης Προθεµατικής και Μεταθεµατικής ιάσχισης ένδρων. Κεφάλαιο 14: υαδικά ένδρα ( ιάλεξη 17) υαδικά ένδρα o Τι είναι τα υαδικά ένδρα? Ποιο είναι το σηµαντικότερο πλεονέκτηµα που προσφέρουν (χρειάζεται επεξήγηση)? o Τι είναι τα υαδικά ένδρα Αναζήτησης? o υνατότητα Κτισίµατος καθώς και αναγνώρισης υαδικών ένδρων (π.χ. Γεµάτο (Full), Τέλειο (Perfect)). o υνατότητα Υλοποίησης ή ιαµόρφωσης της Υλοποίησης υαδικών ένδρων (π.χ. πράξεις Εισαγωγής, Εύρεσης Στοιχείου, ιαγραφής Μικρότερου Στοιχείου, Σύγκρισης ένδρων). Κεφάλαιο 15: Ισοζυγισµένα έντρα (Balanced Trees) ( ιάλεξη 18) Ισοζυγισµένα έντρα (Balanced Trees) o Τι είναι τα Ισοζυγισµένα ένδρα? Τι επιτυγχάνεται µε την χρήση Ισοζυγισµένων ένδρων και πως επιτυγχάνεται? o Τι είναι τα 2-3 (2 ή 3 παιδιά) ένδρα? o Πως επιτυγχάνεται (θεωρητικά) η υλοποίηση 2-3 ένδρων? o Ποιες είναι οι φάσεις εισαγωγής κόµβου (θεωρητικά) σε ένα 2-3 δένδρο? o υνατότητα Επίλυσης Ολοκληρωµένου Παραδείγµατος Εισαγωγής Κόµβων σε 2-3 ένδρα. o Ποια η σχέση των 2-3 ένδρων µε τα Ισοζυγισµένα έντρα (Balanced Trees)? Κεφάλαιο 16: Εισαγωγή στους Γράφους (Graphs) ( ιάλεξη 19) Εισαγωγή στους Γράφους (Graphs) o Τι είναι οι γράφοι και ποιες οι πιο γνωστές εφαρµογές τους? o Ορισµοί Γράφων και δυνατότητα κατάταξης/αναγνώρισης γράφων βάση των ιδιοτήτων τους. o Αναπαράσταση γράφων στην Μνήµη (θεωρητικά και κυρίως πρακτικά)
o Τι είναι η ιάσχιση γράφων και ποιες οι γνωστές εφαρµογές της διάσχισης γράφων? o Προθεµατική και Μεταθεµατική ιάσχιση Γράφων (θεωρητικά και κυρίως πρακτικά) o Ποιο είναι το πρόβληµα στην περίπτωση της Προθεµατικής ιάσχισης όταν ο γράφος δεν είναι συνεκτικός (disconnected) και πως επιλύεται? Κεφάλαιο 17: Ελάχιστα Γεννητορικά ένδρα - Αλγόριθµος Prim ( ιάλεξη 20) Ελάχιστα Γεννητορικά ένδρα - Αλγόριθµος Prim o Τι είναι τα Ελάχιστα Γεννητορικά ένδρα? Περιγράψτε το πρόβληµα που προσπαθούν να επιλύσουν. o Ορισµοί Γεννητορικών ένδρων και Ελάχιστο Γεννητορικό ένδρο. o υνατότητα εξαγωγής Ελάχιστου Γεννητορικού ένδρου. o Ο αλγόριθµός του Prim (θεωρητικά και κυρίως πρακτικά) o Πως επιτυγχάνουµε την υλοποίηση του αλγόριθµου Prim (θεωρητικά)? o Ανάλυση Χρόνου Εκτέλεσης Αλγόριθµου Prim.