συµβολοσειρών µε εφαρµογές στα βιολογικά δεδοµένα

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

Download "συµβολοσειρών µε εφαρµογές στα βιολογικά δεδοµένα"

Transcript

1 Aλγόριθµοι αναγνώρισης συµβολοσειρών µε εφαρµογές στα βιολογικά δεδοµένα ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Χρήστος Τζόκας Θεσσαλονίκη Oκτώβριος 2008 Τµήµα Πληροφορικής Α.Π.Θ. 1

2 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή Περίληψη Αλγόριθµοι ακριβούς αναζήτησης Αλγόριθµος Καrp-Rabin Αλγόριθµος Κnuth-Morris Pratt Αλγόριθµος Boyer Moore έντρο Επιθεµάτων- Suffix Tree Αλγόριθµος αναζήτησης µε χρήση της Αναλυτικής Θεωρίας Αριθµών Παραρτήµατα...20 Παράρτηµα Παράρτηµα Παράρτηµα Παράρτηµα Αποτελέσµατα Συµπεράσµατα Βιβλιογραφία

3 1. Εισαγωγή H αναγνώριση οµοιοτήτων σε συµβολοσειρές (string matching) είναι ένα βασικό πρόβληµα στην επιστήµη των υπολογιστών που έχει προβληµατίσει αρκετά και τυγχάνει µεγάλης προσοχής από τους επιστήµονες. Οι διάφορες τεχνικές και σχετικοί αλγόριθµοι που υλοποιούν την αναζήτηση οµοιοτήτων σε συµβολοσειρές, χρησιµοποιούνται για τον έλεγχο των δεδοµένων ως προς το αν έχουν κάποια συγκεκριµένη δοµή, για την εύρεση σχετικών-παρόµοιων δοµών, και την αντικατάσταση συγκεκριµένου κοµµατιού πληροφορίας µε κάποιο άλλο. Πιο συγκεκριµµένα, η αναγνώριση οµοιοτήτων σε συµβολοσειρές έχει άµεση εφαρµογή σε εφαρµογές που σχετίζονται µε επεξεργασία δεδοµένων, επεξεργασία-αναζήτηση κειµένου, αναγνώριση οµιλίας, ανάκτηση πληροφορίας και ανάλυση-αποθήκευση-οργάνωση βιολογικών δεδοµένων. Βιοπληροφορική είναι η διαχείριση της Βιολογίας σε όρους µορίων (µε την έννοια της Φυσικής Χηµείας) και η εφαρµογή τεχνικών πληροφορικής (εφαρµοσµένα µαθηµατικά, επιστήµη των υπολογιστών και στατιστική) για την κατανόηση και οργάνωση πληροφορίας που σχετίζεται µε τα µόρια σε µεγάλη κλίµακα. Οι αλγόριθµοι αναζήτησης οµοιοτήτων σε συµβολοσειρές, µπορούν να χωρισθούν σε τέσσερις κατηγορίες : 1. Αλγόριθµοι που βασίζονται στην σύγκριση χαρακτήρων. Π.χ. Οι αλγόριθµοι Brute force, Knuth-Morris-Pratt, Simon,Collucci, Boyer Moore, και Turbo-BM. 2. Αλγόριθµοι που χρησιµοποιούν Suffix αυτόµατα. Π.χ. Οι αλγόριθµοι Reverse Factor και Turbo Reverse Factor. 3. Αλγόριθµοι που χρησιµοποιούν τον παραλληλισµό των χειρισµών των bit στις ψηφιολέξεις για να εκτελούν παράλληλα πολλές λειτουργίες. Π.χ. Οι αλγόριθµοι Shift-Or, Shift-and και BNDM. 3

4 4. Αλγόριθµοι που χρησιµοποιούν τεχνικές κατακερµατισµού. Π.χ. Οι αλγόριθµοι Harrison και Karp-Rabin. 2. Περίληψη Σκοπός της παρούσης πτυχιακής εργασίας είναι η καταγραφή και κατανόηση των αλγορίθµων που βασίζονται στη σύγκριση χαρακτήρων καθώς επίσης και η σύγκριση αυτών των παραδοσιακών µεθόδων µε µια νέα πιθανοθεωρητική µεθόδο που βασίζεται στη µέθοδο κατακερµατισµού που αναπτύχθηκε από τους κ. Ατρέα και Καρανίκα (βλ. [2]). H κύρια ιδέα της νέας µεθόδου βασίζεται στη χρήση πρώτων αριθµών ώστε να έχουµε ένα «αποτύπωµα» µιας λέξης. Ετσι ορίζεται ένας µετασχηµατισµός T πάνω στο σύνολο S όλων των λέξεων µήκους N σε αλφάβητο I m ={0,,m}, όπου κάθε σύµβολο αντιστοιχεί σε έναν αριθµό: T: S Q +, T(x 1 x N ) = N xi, xi I m, p i= 1 i όπου p i είναι ο i-πρώτος αριθµός µεγαλύτερος του m και Q + είναι το σύνολο των θετικών ρητών. Ο µετασχηµατισµός T µπορεί να θεωρηθεί υπό µία έννοια ως ένας µέσος όρος µε βάρη, όπου σε κάθε χαρακτήρα x i τα βάρη 1/p i καθορίζονται από διαδοχικούς πρώτους. Tο κείµενο x ανακτάται από το αποτύπωµά του ως η µοναδική λύση ενός συστήµατος N γραµµικών διοφαντικών εξισώσεων a i x i +b i c i+1 = c i, i = 1,,N-1, όπου ο c i oρίζεται αναδροµικά. Ο προκύπτων αλγόριθµος αναζήτησης έχει O ( N M ) πολυπλοκότητα. Για να υπερκερασθεί αυτό το µειονέκτηµα, ορίζεται µία συνάρτηση κατακερµατισµού T % έτσι ώστε T% ( x) T( x) < ε για κάθε λέξη x S, όπου ε είναι ένα προκαθορισµένο όριο ανοχής. Τότε ο νέος αλγόριθµος αναζήτησης έχει O ( N) πολυπλοκότητα, αλλά δεν έχει µοναδικότητα. Στην παρούσα πτυχιακή η νέα µέθοδος κατακερµατισµού υλοποιήθηκε σε αλγόριθµο σε λογισµικό Mathematica και όλοι οι υπόλοιποι αλγόριθµοι σε γλώσσα C. Από τη µελέτη προέκυψε ότι η νέα µέθοδος κατακερµατισµού έχει το µειονέκτηµα της µη µοναδικότητας όπως και η αντίστοιχη ανταγωνιστική µέθοδος του Κarp-Rabin. Επίσης µειονέκτηµα είναι και το γεγονός ότι η νέα µέθοδος χρησιµοποιεί µεγάλους πρώτους αριθµούς που επιφέρουν σφάλµατα στρογγυλοποίησης. Φαίνεται λοιπόν ότι αν και είναι ανταγωνιστική προς τους παραδοσιακούς αλγορίθµους για πρότυπα µικρού µήκους, για πρότυπα µεγάλου µήκους υστερεί σε χρόνο εκτέλεσης. 4

5 3. Αλγόριθµοι ακριβούς Αναζήτησης 3.1 Αλγόριθµος Karp-Rabin Eισαγωγή Ο αλγόριθµος Κarp-Rabin είναι ένας αλγόριθµος ακριβούς αναζήτησης/ανίχνευσης όλων των θέσεων όπου µια συµβολοσειράπρότυπο µήκους m κείται εντός µιας άλλης συµβολοσειράς µήκους n>m. Aνακαλύφθηκε από τον Michael O.Rabin και Richard M.Karp (βλ. [4]). Σύντοµη Περιγραφή Ο πιο απλός τρόπος αντιµετώπισης προβληµάτων ακριβούς αναγνώρισης συµβολοσειρών είναι να ελέγχουµε την οµοιότητα των υπό εξέταση συµβολοσειρών στοιχείο προς στοιχείο (Brute Force algorithm). Στον αλγόριθµο Karp-Rabin, αντί να γίνεται έλεγχος οµοιότητας σε κάθε στοιχείο των συµβολοσειρών χρησιµοποιείται µια συνάρτηση κατακερµατισµού, η οποία αντιστοιχεί σε κάθε συµβολοσειρά έναν αριθµό την «ψηφιακή» υπογραφή του. Σηµειώνουµε ότι, ακόµη και όταν η παραπάνω συνάρτηση κατακερµατισµού αντιστοιχεί σε δύο συµβολοσειρές τον ίδιο αριθµό δεν σηµαίνει ότι οι συµβολοσειρές ταυτίζονται, αλλά ότι έχουν «µεγάλη» πιθανότητα να ταυτίζονται. Σ αυτή την περίπτωση θα πρέπει να ελέγξουµε στοιχείο-στοιχείο εάν όντως οι προς εξέταση συµβολοσειρές είναι όµοιες. Λειτουργία Έστω ένα αλφάβητο Σ = {a o,a 1,a 2, a k-1 } µεγέθους Σ =κ. Σε κάθε στοιχείο του αλφαβήτου αντιστοιχούµε µοναδικό φυσικό αριθµό από το σύνολο {0,1,2.κ-1}. 5

6 Εστω y = {y[0],,y[n]} µία συµβολοσειρά µε στοιχεία από το αλφάβητο Σ. Μια συνάρτηση κατακερµατισµού, συµβολικά hash(y) απεικονίζει σε κάθε συµβολοσειρά y έναν αριθµό. Μία τέτοια συνάρτηση απαιτούµε να ικανοποιεί τις ακόλουθες ιδιότητες: 1. να είναι εύκολα υπολογίσιµη 2. η τιµή hash(y[1 µ+1]) να υπολογίζεται εύκολα από την ήδη υπολογισθείσα τιµή (y[0 µ]), µ<n. Στην περίπτωση Karp-Rabin, η τιµή hash(y[0 n]) υπολογίζεται ως εξής: hash(y[0 n]) = (y[0]*k n-1 + y[1] *k n-2 + +y[n-1] *k 0 ) mod q, όπου q ένας µεγάλος αριθµός. Στη συνέχεια: hash(y[1 n+1]) = (k * (hash(y[0,,n]) y[0] * k n-1 )+y[n+1]) mod q. Κατά την φάση της προ-επεξεργασίας, υπολογίζεται πρώτα η τιµή κατακερµατισµού hash(x) της συµβολοσειράς-προτύπου x=x[0,,m]. Αυτό γίνεται σε χρόνο Ο(M). Eστω y = y[0 n] n>m είναι η συµβολοσειρά εντός της οποίας αναζητούµε εάν υπάρχει κάπου η συµβολοσειρά x. Κατά την διάρκεια της αναζήτησης γίνεται σύγκριση της τιµής hash(x) µε τις τιµές hash(y[ j j+m-1]) για 0 j n-m. Αν ισχύει hash(x)=hash(y[ j j+m-1]) για κάποια j, τότε πάλι πρέπει να εξεταστούν στοιχείο προς στοιχείο οι συµβολοσειρές x[0,,m] και y[j j+m-1] για επιβεβαίωση της οµοιότητας. Πολυπλοκότητα Για την ανίχνευση µιας συµβολοσειράς-πρότυπο x µέσα σε µια συµβολοσειρά y, η χρονική πολυπλοκότητα του αλγόριθµου Karp-Rabin στην καλύτερη περίπτωση είναι Ο(n). Η µέση χρονική πολυπλοκότητα είναι επίσης Ο(n), ενώ η πολυπλοκότητα στην χειρότερη περίπτωση είναι Ο(mn). Χρήση O αλγόριθµος Karp-Rabin χρησιµοποιείται κυρίως για ταυτόχρονη αναγνώριση πολλαπλών συµβολοσειρών-προτύπων, εντός µιας µεγαλύτερης συµβολοσειράς. Aλγόριθµος-Παράδειγµα 6

7 Βλέπε Παράρτηµα Αλγόριθµος Knuth-Morris-Pratt Eισαγωγή Ο αλγόριθµος Knuth-Morris-Pratt είναι ένας αλγόριθµος ακριβούς αναζήτησης/ανίχνευσης όλων των θέσεων όπου µια συµβολοσειράπροτύπου µήκους m κείται εντός µιας άλλης συµβολοσειράς µήκους n>m. Ο αλγόριθµος δηµιουργήθηκε από τους Donald Knuth και Vaughan Pratt και ανεξάρτητα από τον J.H.Morris to1977, αλλά τον δηµοσιεύσαν και οι τρεις µαζί (βλ. [5]). Σύντοµη Περιγραφή Είναι µια σαφής βελτίωση του brute force αλγορίθµου και συγκρίνει τις συµβολοσειρές από αριστερά προς τα δεξιά. Μετά από κάθε αποτυχηµένη απόπειρα ταιριάσµατος της υποσυµβολοσειράς στην συµβολοσειρά,ο αλγόριθµος δεν ξεκινάει από το επόµενο σύµβολο, αλλά ξεκινάει µετά από κάποιο αριθµό συµβόλων, ο οποίος εξαρτάται από την πληροφορία που έχει συγκεντρωθεί από την σύγκριση των προηγούµενων χαρακτήρων. Λειτουργία Έστω ότι συγκρίνουµε την υποσυµβολοσειρά x µε το τµήµα y[ j j+m-1] της συµβολοσειράς y. Βρισκόµαστε δηλαδή στην θέση j. Έστω ότι τα πρώτα σύµβολα που δεν ταιριάζουν είναι τα x[ i ] και y[ i+j] µε 0< i <m. 7

8 Τότε x[0 i-1] = y[ j i+j-1] = U και a = x[ i ] y[ i+j ] = b. Όταν ο αλγόριθµος δοκιµάσει πάλι να κάνει την σύγκριση των συµβολοσειρών ξεκινώντας από κάποια επόµενη θέση, είναι λογικό να περιµένει κανείς ότι κάποιο πρόθεµα u της x πρέπει να ταιριάζει µε ένα µέρος της κατάληξης του τµήµατος U της y. Επίσης, για να αποφύγουµε ένα άµεσο µη ταίριασµα συµβόλων, πρέπει το σύµβολο που ακολουθεί το πρόθεµα u στο x να είναι διαφορετικό από a. Το µεγαλύτερο τέτοιο πρόθεµα u αποκαλείται tagged border. Για τον βοηθητικό πίνακα kmpnext ισχύει: το kmpnext[ i ] ισούται µε το µήκος του µεγαλύτερου border του x[0 i-1] που ακολουθείται από ένα χαρακτήρα c διαφορετικό του x[ i ] για 0< i m και µε -1 αν δεν υπάρχει τέτοιο tagged border. Έτσι, η σύγκριση µπορεί να συνεχιστεί µεταξύ των συµβόλων x[kmpnext[ i ] ] και y[i+j] µε ασφάλεια,χωρίς να υπάρχει ο κίνδυνος να χαθεί κάποιο ταίριασµα της υποσυµβολοσειράς χ στην y και χωρίς να γίνει οπισθοδρόµηση στην y. Η τιµή του kmpnext[0] τίθεται ίση µε -1. Ο πίνακας kmpnext υπολογίζεται πριν την φάση της αναζήτησης, εφαρµόζοντας τον ίδιο ευριστικό αλγόριθµο στην υποσυµβολοσειρά x την ίδια, σαν να ισχύει x=y. Πολυπλοκότητα Για υποσυµβολοσειρά x, µήκους m και συµβολοσειρά y, µήκους n, κατά την φάση της προεπεξεργασίας δηµιουργείται ο βοηθητικός πίνακας σε Ο(m) χώρο και χρόνο. Η αναζήτηση γίνεται σε χρόνο Ο(m+n). Κατά την διάρκεια της αναζήτησης γίνονται το πολύ 2n-1 συγκρίσεις συµβόλων, ενώ η καθυστέρηση (µέγιστος αριθµός συγκρίσεων για ένα σύµβολο) οριοθετείται από το log φ (m), όπου φ,η χρυσή τοµή.(φ= (1+ 5) / 2 ). Χρήση Ο αλγόριθµος Knuth-Morris-Pratt χρησιµοποιείται για την αναγνώριση µιας µικρής σχετικά συµβολοσειράς - προτύπου, εντός µιας µεγαλύτερης συµβολοσειράς. Aλγόριθµος-Παράδειγµα 8

9 Βλέπε Παράρτηµα 2. Eισαγωγή 3.3 Αλγόριθµος Boyer Moore Ο αλγόριθµος Boyer Moore αναπτύχθηκε από τους Bob Boyer και J.Strother Moore το Θεωρείται ο πιο αποτελεσµατικός αλγόριθµος εύρεσης συµβολοσειράς στις περισσότερες εφαρµογές (βλ. [2]). Σύντοµη Περιγραφή Ελέγχει την υπό εύρεση υποσυµβολοσειρά από τα δεξιά προς τα αριστερά και σε περίπτωση ταιριάσµατος της υποσυµβολοσειράς ή µη, χρησιµοποιεί δυο προϋπολογισµένες συναρτήσεις για να βρει την επόµενη θέση από την οποία θα ξεκινήσει πάλι την διαδικασία σύγκρισης των συµβόλων της συµβολοσειράς µε αυτά της υποσυµβολοσειράς. Γενικά, όσο ποιο µεγάλο είναι το µήκος της υποσυµβολοσειράς,τόσο ποιο γρήγορος και αποδοτικός είναι ο αλγόριθµος. Λειτουργία Σχήµα (α). Υπάρχει πάλι ταύτιση του U,του οποίου προηγείται το c a. Έστω ότι δεν υπάρχει ταίριασµα του συµβόλου χ[ i ] = a υποσυµβολοσειράς x και του συµβόλου y[ i+j ]= b της συµβολοσειράς y. της Έπίσης, x[ i+1 m -1] = y[ i+j+1 j+m-1] = U και x[ i ] y[ i+j]. 9

10 Η συνάρτηση good-suffix shift ευθυγραµµίζει το τµήµα y[ i+j+1 j+m-1] = x[ i+1 m -1]=U µε µια δεξιότερη ταύτισή του στην x,της οποίας προηγείται ένα σύµβολο διαφορετικό του χ[ i ]= a. Aν δεν υπάρχει ταύτιση του τµήµατος U, τότε η συνάρτηση ευθυγραµµίζει την µεγαλύτερη κατάληξη u του y[ i+j+1 j+m-1] µε ένα ταιριαστό πρόθεµα της x. Σχήµα (β). Μόνο µια κατάληξη του U συναντιέται στην χ. Η συνάρτηση bad-character shift ευθυγραµµίζει το σύµβολο y[ i+j] µε την δεξιότερη εµφάνισή του στην χ[0...m 2]. Σχήµα (γ) Γίνεται ταύτιση του y[ i+j]= b µέσα στο χ. Αν το y[ i+j] =b δεν υπάρχει στο x[0...m 2], τότε καµiα υποσυµβολοσειρά της y που να συµπεριλαµβάνει το y[i+j] δεν ταυτίζεται µε την x και γίνεται µια µετατόπιση, τέτοια ώστε η υποσυµβολοσειρά x να ξεκινάει από τη θέση του επόµενου συµβόλου του y[ i+j],που είναι το y[ i+j+1]. Η bad-character shift µπορεί να είναι αρνητική, επειδή ο αλγόριθµος Boyer Moore επιλέγει πάντα την µεγαλύτερη από τις good-suffix shift και badcharacter shift. Σχήµα (δ) εν υπάρχει το y[ i+j]= b µέσα στο χ. 10

11 Η good-suffix shift αποθηκεύεται σε ένα πίνακα bmgs µεγέθους m+1. Συνθήκες : 1. Cs(i, s): για κάθε κ τέτοιο ώστε i < k < m, s κ ή x[k-s]=x[k] και 2. Co(i, s): αν s < i τότε x[i-s] x[i]. Έπειτα, για 0 i < m: bmgs[i+1]=min{s>0 : Cs(i, s) and Co(i, s) hold}. Το bmgs[0] ορίζεται ως το µήκος της περιόδου της x. Ο υπολογισµός του πίνακα bmgs στον κώδικα που ακολουθεί,χρησιµοποιεί ένα πίνακα suff που ορίζεται ως εξής: for 1 i < m, suff[ i ]=max{ k : x[ i-k+1.. i] = x[m-k.. m-1] }. Η bad-character shift αποθηκεύεται σε ένα πίνακα bmbc µεγέθους σ. Για c Є Σ : bmbc[c] = min {i : 1 i < m -1 and x[ m-1-i ]=c} αν το σύµβολο c υπάρχει στην χ. Αλλιώς, bmbc[c] = m. Πολυπλοκότητα Για υποσυµβολοσειρά χ, µήκους m και συµβολοσειρά y, µήκους n και µε µήκος αλφαβήτου Σ =σ, η φάση της προεπεξεργασίας κατά την οποία δηµιουργούνται οι δυο πίνακες από τις δυο συναρτήσεις Good-suffix shift και Bad-character shift, έχει Ο(m+σ) χωρική και χρονική πολυπλοκότητα. Η φάση της αναζήτησης έχει χρονική πολυπλοκότητα Ο(mn) και στην χειρότερη περίπτωση που η υποσυµβολοσειρά δεν είναι περιοδική,ο αλγόριθµος κάνει 3n συγκρίσεις συµβόλων. Στις περιπτώσεις που το µήκος του αλφάβητου είναι µεγάλο (σε σχέση µε το µήκος της υπό εύρεσης υποσυµβολοσειράς) ο αλγόριθµος είναι πολύ αποδοτικός.όταν ψάχνει για συµβολοσειρά α m-1 b σε µια b n o αλγόριθµος κάνει O(n/m) συγκρίσεις.(καλύτερη απόδοση). Χρήση Ο αλγόριθµος Boyer Moore, χρησιµοποιείται κυρίως για την αναγνώριση µιας µεγάλης σε µήκος συµβολοσειράς-προτύπου, εντός µιας µεγαλύτερης συµβολοσειράς. 11

12 Aλγόριθµος-Παράδειγµα Βλέπε Παράρτηµα έντρο Επιθεµάτων- Suffix Tree Περιγραφή To suffix tree είναι µια από τις πιο σηµαντικές δοµές δεδοµένων στους αλγόριθµους συµβολοσειρών. Μπορεί να αναπαριστά το σύνολο των επιθεµάτων µιας συµβολοσειράς µε οικονοµικό και αποδοτικό τρόπο. Περιέχει µονοπάτι από την ρίζα έως ένα φύλλο για κάθε κατάληξη της συµβολοσειράς, έτσι ώστε κάθε υποσυµβολοσειρά να µπορεί να διαβασθεί ως πρόθεµα κάποιου µονοπατιού. Οι πλευρές του δένδρου έχουν ετικέτες τις υποσυµβολοσειρές και όλοι οι εσωτερικοί κόµβοι έχουν τουλάχιστον 2 παιδιά. Οι υπο-συµβολοσειρές των πλευρών που εξέρχονται από τον ίδιο κόµβο δεν επιτρέπεται να έχουν κοινό τον πρώτο τους χαρακτήρα. Στο δένδρο υπάρχουν n φύλλα, όπου n το µήκος της συµβολοσειράς, το πολύ n-1 εσωτερικοί κόµβοι (χωρίς την ρίζα) και συνολικά το πολύ 2n κόµβοι. Πρέπει κάθε συµβολοσειρά, για την οποία εξετάζουµε το δένδρο επιθεµάτων της, να έχει τελικό χαρακτήρα ο οποίος δεν εµφανίζεται πουθενά αλλού στην συµβολοσειρά. Για να επιτευχθεί αυτό το ενδεχόµενο προσθέτουµε στο τέλος των συµβολοσειρών κάποιο τερµατικό χαρακτήρα (συνήθως τον $) ο οποίος δεν ανήκει στο αλφάβητο της συµβολοσειράς. Ο πρώτος γραµµικός ως προς τον χρόνο suffix tree αλγόριθµος αναπτύχθηκε από τον Weiner το Ένας πιο αποδοτικός ως προς τον χώρο αλγόριθµος,αναπτύχθηκε από τον McCreight το 1976 και ο Ukkonen έκανε τον πρώτο online-construction, γραµµικό ως προς τον χρόνο αλγόριθµο,το Πολυπλοκότητα Ένα suffix tree για συµβολοσειρά S µήκους n, µπορεί να κατασκευαστεί σε Ο(n) χρόνο. Εντοπίζει µια υποσυµβολοσειρά P µεγέθους m σε Ο(m) χρόνο. 12

13 Εντοπίζει το πρώτο ταίριασµα των υποσυµβολοσειρών P 1 P q, συνολικού µήκους m, σε Ο(m) χρόνο,όταν το suffix tree δηµιουργείται µε τον αλγόριθµο του Ukkonen. Εντοπίζει όλα τα z ταιριάσµατα των υποσυµβολοσειρών P 1 P q, συνολικού µήκους m, σε Ο(m+z) χρόνο. Κατασκευή του έντρου Επιθεµάτων Ο απλός αλγόριθµός κατασκευής δένδρου επιθεµάτων για την συµβολοσειρά S (µήκους S =n) αρχικά θεωρεί ότι το δένδρο αποτελείται µόνο από την ρίζα και εισάγει σε αυτό διαδοχικά όλα τα επιθέµατα S[i..n], µε το i να αυξάνεται από το 1 µέχρι και το n. Αρχικά εισάγεται το επίθεµα S[1..n] (ολόκληρη η συµβολοσειρά δηλαδή) κάτω από την ρίζα εισάγοντας µία πλευρά και ένα φύλλο. Η ετικέτα της πλευράς καθώς και η ετικέτα µονοπατιού του φύλλου είναι S[1..n]. Στο i-στο βήµα όπου εισάγουµε το επίθεµα S[i..n] αρχίζουµε κατεβαίνουµε από την ρίζα προς τα φύλλα ακολουθώντας το µοναδικό µονοπάτι που ορίζεται από τους χαρακτήρες του επιθέµατος. Πιο συγκεκριµένα ξεκινώντας από την ρίζα ακολουθούµε την πλευρά που η ετικέτα της αρχίζει µε τον χαρακτήρα S(i) και διαδοχικά συγκρίνουµε τους χαρακτήρες του επιθέµατος µε τους χαρακτήρες των ετικετών των πλευρών που συναντάµε µέχρι κάποιος χαρακτήρας να µην ταιριάζει. Έστω ότι δεν ταίριασε ο χαρακτήρας S(k),το k i. Κατά την κάθοδό µας από την ρίζα υπάρχουν δύο ενδεχόµενα: είτε βρισκόµαστε σε κάποιο κόµβο (ο οποίος θα έχει και ετικέτα µονοπατιού ίση µε S[i..k-1]) είτε στο µέσο της ετικέτας µιας πλευράς. Αν ισχύει η πρώτη περίπτωση εισάγουµε το υπόλοιπο του επιθέµατος (S[k..n]) εισάγοντας παράλληλα µία πλευρά και ένα φύλλο το οποίο θα πάρει και τον αριθµό i µιας και αντιστοιχεί σ αυτό το επίθεµα. Εάν ισχύει η δεύτερη περίπτωση σπάµε στην πλευρά στη µέση δηµιουργώντας ένα εσωτερικό κόµβο µε ετικέτα µονοπατιού S[i..k-1] και εισάγουµε το υπόλοιπο του επιθέµατος (S[k..n]) εισάγοντας παράλληλα µία πλευρά και ένα φύλλο, το οποίο θα πάρει και τον αριθµό i, κάτω από τον νεοσύστατο κόµβο. Για παράδειγµα,έστω η συµβολοσειρά mississippi. 13

14 14

15 15

16 Όσον αφορά την εισαγωγή του i,είναι τελικός χαρακτήρας και κανονικά δεν θα έπρεπε να εµφανίζεται πουθενά αλλού, κάτι που στην συγκεκριµένη περίπτωση δεν ισχύει. Γι αυτό έπρεπε να εισαχθεί στο τέλος της συµβολοσειράς το $. Οπότε το τελικό αποτέλεσµα θα ήταν ως εξής: 16

17 5. Αλγόριθµος αναζήτησης µε χρήση της Αναλυτικής Θεωρίας Αριθµών Περιγραφή Εστω I p = {0,1,2,,p} είναι ένα σύνολο µη αρνητικών ακεραίων ορίζουµε το ακόλουθο σύνολο: X = {x = {x 1,,x N }: x i I p }. Εστω p i είναι ο i στός -πρώτος µεγαλύτερος του p, ορίζουµε την ακόλουθη απεικόνιση: p T : X B : T( x) = x, p N i i i= 1 i+ 1 όπου B είναι ένα σύνολο θετικών ρητών. Τότε ο µετασχηµατισµός Τ(x) είναι 1-1 και απεδείχθη ότι: N pi Πρόταση Εστω T( x) = xi όπως παραπάνω, τότε x είναι η µοναδική i= 1 p i+ 1 λύση του ακολούθου συστήµατος N γραµµικών διοφαντικών εξισώσεων που εκφράζονται από την ακόλουθη αναδροµική διαδικασία: N N+ 1 Y = T ( x) p, K, Y = p x + p Y,..., Y = x. 1 i+ 1 k j k k+ 1 k+ 1 N N i= 1 j= k j k+ 1 Προφανώς η παραπάνω πρόταση είναι ένας τρόπος κωδικοποίησης και αποκωδικοποίησης της πληροφορίας. ηλαδή αν δοθεί ο ρητός Τ(x) εργαζόµαστε όπως στην Παραπάνω Πρόταση για να υπολογίσουµε τα x 1,,x N. Επίσης αναπτύσσεται µε φυσικό τρόπο µια νέα µέθοδος για αναγνώριση συµβολοσειρών. Εστω συµβολοσειρά W = {w 1,w 2,,w N }, σε αλφάβητο alphabet A = {a 0, a 1,,a p } (p+1)-γραµµάτων, τότε µετατρέπουµε τη συµβολοσειρά σε αριθµητική ακολουθία χρησιµοποιώντας την 1-1 αντιστοιχία f: A I p 17

18 οπότε έχουµε αντιστοιχίσει στο W έναν µοναδικό θετικό ρητό τον: p =. N T ( W ) f ( w ) p i i i= 1 i+ 1 υστυχώς όµως εµπεριέχεται η έννοια της συνέλιξης που δεν είναι καλή για υπολογισµούς όσον αφορά την εύρεση προτύπου εντός δοθείσης συµβολοσειράς. Για το λόγο αυτό προσεγγίζουµε τη συνάρτηση Τ µε µία συνάρτηση κατακερµατισµού ως εξής: Εστω συµβολοσειρές x = {x 1,x 2,,x N }, y = {y 1,y 2,,y M }, όπου Ν>Μ και έστω p i είναι ο i οστός -πρώτος µεγαλύτερος του Μ N 2, ορίζουµε: N N 1 T( x1... xn ) = 1 x i= 1 pi j= i j. (1) Ο µετασχηµατισµός T είναι 1-1 και εφόσον M < N, i =1,,N-M, είναι εύκολο να δούµε ότι: T ( x... x ) = T ( x... x ) S( i) + L x + ε, i+ 1 i+ M i i+ M 1 i+ M i όπου 1 S( i) = x, L= 1, = i+ M 1 M M i+ j 1 j ε i j= i j= 1 p j j= 1 p. j x Στη συνέχεια ορίζουµε µε T % τη συνάρτηση κατακερµατισµού: ( ) ( ) T% x... x = T% x... x S( i) + L x i+ 1 i+ M i i+ M 1 i+ M, (2) %. i = 2,,N-M όπου T( x... x ) = T( x... x ) 1 M 1 M Ο αλγόριθµος είναι ο εξής: οθέντος y = {y 1,,y M } και x = {x 1,,x N }: 18

19 (a) υπολογίζουµε τους αριθµούς T(x 1,,x M ) T(y 1,,y M ) (βλ. 1) και K = m 1 M M M 1 i= 1 p S = yi, S1 = xi. 2 i+ mn i= 1 i= 1 (b) Υπολογίζουµε τους αριθµούς ( ) τους αριθµούς S(i). T% xi xi+ M, i= 2,..., N M (βλέπε 2) και (c) Φτιάχνουµε το σύνολο E υποψηφίων οµοιοτήτων χρησιµοποιώντας τον ακόλουθο µηχανισµό ανοχής: όπου i= 1,..., N M. { {,..., }: 0 % 1 (... 1 ) (,..., 1 ) and ( ) i+ i+ M i+ i+ M M } E = x x < T x x T y y i K S = S i 19

20 6. ΠΑΡΑΡΤΗΜΑΤΑ ΠΑΡΑΡΤΗΜΑ 6.1 Παρατίθεται η σχεδίαση του αλγορίθµου Karp-Rabin σε γλώσσα C: #define REHASH (a,b,h) ((((h)-(a)*d)<<1)+(b)) void KR( char *x, int m, char *y, int n) { int d, hx, hy, i, j ; /* προεπεξεργασία*/ /* υπολογισµός του d=2^(m-1) µε τον << χειριστή */ for ( d=i=1; i<m; ++i) d=(d<<1); for (hy=hx=i=0; i<m; ++i) { hx = ((hx<<1) +x[i]); hy = ((hy<<1) +y[i]); } /* φάση αναζήτησης */ j = 0; while ( j <= n-m) { } } ++j; if (hx == hy && memcmp(x, y+j, m) == 0) OUTPUT ( j ) ; hy = REHASH ( y[ j ], y[ j+m], hy ); 20

21 Παράδειγµα: Εστω συµβολοσειρά-πρότυπο x = {AACCT}, αναζητώ οµοιότητα στη συµβολοσειρά y = CACCAACCTCCG. Χρησιµοποιώ q = 123 και 4-αδικό σύστηµα αρίθµησης µε k = 4. 1 η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[0..4]) = 20 2 η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[1..5]) = η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[2..6]) = η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[3..7]) = η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[4..8]) =404 = hash(x), οπότε πρέπει να συγκριθούν οι 5 χαρακτήρες για να επιβεβαιωθεί το ταίριασµα των συµβολοσειρών. 6 η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[5..9]) =

22 7 η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[6..10]) = η προσπάθεια: y : C A C C A A C C T C C G x : Α Α C C T hash(y[7..11]) = 954 Ο αλγόριθµος Karp-Rabin στο συγκεκριµµένο παράδειγµα έκανε 8 συγκρίσεις µεταξύ τιµών κατακερµατισµού και 5 συγκρίσεις µεταξύ χαρακτήρων. 22

23 ΠΑΡΑΡΤΗΜΑ-6.2 Παρατίθεται η σχεδίαση του αλγορίθµου Knuth-Morris- Pratt: void prekmp(char *x, int m, int kmpnext[]) { int i, j; } i = 0; j = kmpnext[0] = -1; while (i < m) { while (j > -1 && x[ i]!= x[ j]) j = kmpnext[ j]; i++; j++; if (x[ i ] == x[ j ]) kmpnext[ i] = kmpnext[ j]; else kmpnext[ i] = j; } void KMP(char *x, int m, char *y, int n) { int i, j,kmpnext[xsize]; } /* προεπεξεργασία */ prekmp(x, m, kmpnext); /* αναζήτηση */ i = j = 0; while ( j < n) { while (i > -1 && x[ i]!= y[ j]) i = kmpnext[ i]; i++; j++; if (i >= m) { OUTPUT(j - i); i = kmpnext[ i]; } } Παράδειγµα : Εστω συµβολοσειρά-πρότυπο x = {GCAGAGAG} και αναζητώ οµοιότητα στη συµβολοσειρά y = {GCATCGCAGAGAGTATΑCAGTACG}. i x[ i ] G C A G A G A G 23

24 kmpnext[ i ] Φάση αναζήτησης 1 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G x : G C A G A G A G Μετατόπιση κατά 4 ( i kmpnext[ i ] = ) 2 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G 1 x : G C A G A G A G Μετατόπιση κατά 1 ( i kmpnext[ i ] = ) 3 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G x : G C A G A G A G Μετατόπιση κατά 7 ( i kmpnext[ i ] = 8-1) (ταίριασµα) 4 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G 2 x : G C A G A G A G Μετατόπιση κατά 1 ( i kmpnext[ i ] = 1-0) 5 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G 1 x : G C A G A G A G Μετατόπιση κατά 1 ( i kmpnext[ i ] = ) 6 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G 1 x : G C A G A G A G Μετατόπιση κατά 1 ( i kmpnext[ i ] = ) 7 η προσπάθεια: 24

25 y : G C A T C G C A G A G A G T A T Α C A G T A C G 1 x : G C A G A G A G Μετατόπιση κατά 1 ( i kmpnext[ i ] = ) 8 η προσπάθεια: y : G C A T C G C A G A G A G T A T Α C A G T A C G 1 x : G C A G A G A G Μετατόπιση κατά 1 ( i kmpnext[ i ] = ) Ο αλγόριθµος Knuth-Morris-Pratt έκανε 18 συγκρίσεις συµβόλων. 25

26 ΠΑΡΑΡΤΗΜΑ-6.3 Παρατίθεται η σχεδίαση του αλγορίθµου Boyer Moore: void prebmbc(char *x, int m, int bmbc[]) { int i; for (i = 0; i < ASIZE; ++i) bmbc[ i] = m; } for (i = 0; i < m - 1; ++i) bmbc[x[ i] ] = m - i - 1; void suffixes(char *x, int m, int *suff) { int f, g, i; { } } suff[m - 1] = m; g = m - 1; for (i = m - 2; i >= 0; --i) if (i > g && suff[i + m f] < i - g) suff[ i] = suff[ i + m f]; else { if (i < g) g = i; f = i; while (g >= 0 && x[g] == x[g + m f]) --g; suff[ i] = f - g; } void prebmgs(char *x, int m, int bmgs[ ]) { int i, j, suff[xsize]; suffixes(x, m, suff); for (i = 0; i < m; ++i) bmgs[ i] = m; j = 0; for (i = m - 1; i >= -1; --i) if (i == -1 suff[ i] == i + 1) for (; j < m i; ++j) if (bmgs[ j] == m) 26

27 } bmgs[ j ] = m i; for (i = 0; i <= m - 2; ++i) bmgs[m suff[ i]] = m i; void BM(char *x, int m, char *y, int n) { int i, j, bmgs[xsize], bmbc[asize]; /* προεπεξεργασία */ prebmgs(x, m, bmgs); prebmbc(x, m, bmbc); /* Αναζήτηση */ j = 0; while (j <= n - m) { for (i = m - 1; i >= 0 && x[ i] == y[i + j]; --i); if (i < 0) { OUTPUT( j ); j += bmgs[0]; } else j += MAX(bmGs[ i], bmbc[y[i + j] ] - m i); } } Παράδειγµα : Εστω συµβολοσειρά-πρότυπο x = {GCAGAGAG} και αναζητώ οµοίοτητα στην y = {CACCAACCTCCG}. Φάση αναζήτησης 1 η προσπάθεια: y G C A T C G C A G A G A G T A T A C A G T A C G 1 27

28 x G C A G A G A G Μετακίνηση κατά 1. (bmgs[7]=bmbc[a]-7+7) 2 η προσπάθεια: y G C A T C G C A G A G A G T A T A C A G T A C G x G C A G A G A G Μετακίνηση κατά 4. (bmgs[5]=bmbc[c]-7+5) 3 η προσπάθεια: y G C A T C G C A G A G A G T A T A C A G T A C G x G C A G A G A G Μετακίνηση κατά 7. (bmgs[0]) (ταίριασµα) 4 η προσπάθεια: y G C A T C G C A G A G A G T A T A C A G T A C G x G C A G A G A G Μετακίνηση κατά 4. (bmgs[5]=bmbc[c]-7+5) 5 η προσπάθεια: y G C A T C G C A G A G A G T A T A C A G T A C G 2 1 x G C A G A G A G Μετακίνηση κατά 7. (bmgs[6]) Ο αλγόριθµος Boyer Moore έκανε 17 συγκρίσεις συµβόλων. 28

29 ΠΑΡΑΡΤΗΜΑ-6.4 Παρατίθεται η σχεδίαση του αλγορίθµου της παραγράφου 5: Clear[deigma2, qq,qqq,l,ll,jl,jl1,a1,b1,vv,tt,tt1,g11,gg1,g1,tgg,tt2,g2, as] deigma1="tgttggccattaacttgtatcagttatcagtgttctccccaaaaatgt CATATAGCATCCTGGTAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCTAG AAATTATAGCATCACATCCATAACAATCTATAACATGATAATCTCAGATAGCATCAC ATTACCATGATGGTAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTCCAGATATT GGTGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAAAATGTCATATAG CATCCTGGTAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCTAGAAATTAT AGCATCACATCCATAACAATCTATAACATGATAATCTCAGATAGCATCACATTACCA TGATGGTAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTCCAGATATTGGTGTTG GCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAAAATGTCATATAGCATCCTG GTAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCTAGAAATTATAGCATCA CATCCATAACAATCTATAACATGATAATCTCAGATAGCATCACATTACCATGATGGT AAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTCCAGATATTGGTGTTGGCCATTA ACTTGTATCAGTTATCAGTGTTCTCCCCAAATGTTGGCCATTAACTTGTATCAGTTA TCAGTGTTCTCCCCAAAAATGTCATATAGCATCCTGGTAAACAGGGCATTTTAAGAT ACATGTACCTTCTTATTTCTAGAAATTATAGCATCACATCCATAACAATCTATAACA TGATAATCTCAGATAGCATCACATTACCATGATGGTAAAAGGTCCTAGGGAGAACAC TGGTTATTTGGCTCCAGATATTGGTGTTGGCCATTAACTTGTATCAGTTATCAGTGT TCTCCCCAAAAATGTCATATAGCATCCTGGTAAACAGGGCATTTTAAGATACATGTA CCTTCTTATTTCTAGAAATTATAGCATCACATCCATAACAATCTATAACATGATAAT CTCAGATAGCATCACATTACCATGATGGTAAAAGGTCCTAGGGAGAACACTGGTTAT TTGGCTCCAGATATTGGTGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCC AAAAATGTCATATAGCATCCTGGTAAACAGGGCATTTTAAGATACATGTACCTTCTT ATTTCTAGAAATTATAGCATCACATCCATAACAATCTATAACATGATAATCTCAGAT AGCATCACATTACCATGATGGTAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTC CAGATATTGGTGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAATGTT GGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAAAATGTCATATAGCATCCT GGTAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCTAGAAATTATAGCATC ACATCCATAACAATCTATAACATGATAATCTCAGATAGCATCACATTACCATGATGG TAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTCCAGATATTGGTGTTGGCCATT AACTTGTATCAGTTATCAGTGTTCTCCCCAAAAATGTCATATAGCATCCTGGTAAAC AGGGCATTTTAAGATACATGTACCTTCTTATTTCTAGAAATTATAGCATCACATCCA TAACAATCTATAACATGATAATCTCAGATAGCATCACATTACCATGATGGTAAAAGG TCCTAGGGAGAACACTGGTTATTTGGCTCCAGATATTGGTGTTGGCCATTAACTTGT ATCAGTTATCAGTGTTCTCCCCAAAAATGTCATATAGCATCCTGGTAAACAGGGCAT TTTAAGATACATGTACCTTCTTATTTCTAGAAATTATAGCATCACATCCATAACAAT CTATAACATGATAATCTCAGATAGCATCACATTACCATGATGGTAAAAGGTCCTAGG GAGAACACTGGTTATTTGGCTCCAGATATTGGTGTTGGCCATTAACTTGTATCAGTT ATCAGTGTTCTCCCCAAATGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCC CAAAAATGTCATATAGCATCCTGGTAAACAGGGCATTTTAAGATACATGTACCTTCT TATTTCTAGAAATTATAGCATCACATCCATAACAATCTATAACATGATAATCTCAGA TAGCATCACATTACCATGATGGTAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCT CCAGATATTGGTGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAAAAT GTCATATAGCATCCTGGTAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCT 29

30 AGAAATTATAGCATCACATCCATAACAATCTATAACATGATAATCTCAGATAGCATC ACATTACCATGATGGTAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTCCAGATA TTGGTGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAAAATGTCATAT AGCATCCTGGTAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCTAGAAATT ATAGCATCACATCCATAACAATCTATAACATGATAATCTCAGATAGCATCACATTAC CATGATGGTAAAAGGTCCTAGGGAGAACACTGGTTATTTGGCTCCAGATATTGGTGT TGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAA"; deigma2="catgtaccttcttatttctagaaattatagcatcacatccataacaat CTATAACATGATAATCTCAGATAGCATCACATTACCATGATGGTAAAAGGTCCTAGG GAGAACACTGGTTATTTGGCTCCAGATATTGGTGTTGGC"; qq=characters[deigma1]/.{"a" 2,"C" 3,"G" 5,"T" 7}; qqq=characters[deigma2]/.{"a" 2,"C" 3,"G" 5,"T" 7}; l=length[qq] ll=length[qqq] A=PrimePi[Max[qq] l] jl=prime[range[a+1,a+l]]; jl1=table[1-(1/jl[[n]]),{n,1,ll}]//n; A1=Sum[jl1[[k]],{k,1,ll}]//N; B1=Max[qq]Sum[1/jl[[n]],{n,1,ll}]//N; VV=Sum[qqq[[n]],{n,1,ll}]; TT[1]=Sum[jl1[[n]] Sum[qq[[m]],{m,n,ll}],{n,1,ll}]//N; TT1[1]=Sum[jl1[[n]] Sum[qqq[[m]],{m,n,ll}],{n,1,ll}]//N; TT[2]=TT[1]-Sum[qq[[m]],{m,1,ll}]+A1 qq[[ll+1]]//n; TT[n_]:=TT[n]=2 TT[n-1]-TT[n-2]-(qq[[n+ll-2]]-qq[[n- 2]])+A1 ( qq[[n+ll-1]]-qq[[n+ll-2]]) g11=select[table[if[0<=tt1[1]-tt[n]<=(n-1) B1 && Abs[TT[n]-TT[n+1]+A1 qq[[n+ll]]-vv] 10^(-3),n,0],{n,1,lll}],#>0&]; gg1={if[0<=tt1[1]-tt[l-ll+1] (l-ll) B1 && Sum[qq[[n]],{n,l-ll+1,l}]==VV,l-ll+1,1.1]}; g1=cases[join[g11,gg1],_integer]; FF=4; FF1=If[ll<FF,ll,FF]; Tgg[k_]:=Sum[jl1[[n]]qq[[n+k-1]],{n,1,FF1}] TT2[0]=Sum[jl1[[n]] qqq[[n]],{n,1,ff1}]; g2=select[table[if[tgg[g1[[k]]]- TT2[0] 0,g1[[k]],0],{k,1,Length[g1]}],#>0&] 30

31 Length[g1]-Length[g2]; as[k_]:=table[qqq[[n+1]]-qq[[n+g1[[k]]]],{n,0,ll-1}] Table[as[k],{k,1,Length[g1]}]; TimeUsed[] {85,306,527,791,1012,1233,1497,1718,1939,2203,2424,2645}

32 ΑΠΟΤΕΛΕΣΜΑΤΑ Για το ίδιο text : deigma2.txt Συμβολοσειρά-πρότυπο : CATCA Karp Rabin : Boyer-Moore: Knuth-Morris-Pratt : Χρόνος : secs Ταιριάσματα : 220 Χρόνος : secs Ταιριάσματα : 220 Χρόνος : secs Ταιριάσματα : ος Αλγόριθμος Χρόνος : Χρόνος : secs Ταιριάσματα : 243 Συμβολοσειρά-πρότυπο : GTTCTCCCCAAAAATGTCATATAGCATCCTGGTAAACAGGGCATTTTAAGAT Karp Rabin : Boyer-Moore: Knuth-Morris-Pratt : Χρόνος : secs Ταιριάσματα : 10 Χρόνος : secs Ταιριάσματα : 10 Χρόνος : secs Ταιριάσματα : 10 4 ος Αλγόριθμος Χρόνος : Χρόνος : secs Ταιριάσματα :

33 Συμβολοσειρά-πρότυπο : TGTTGGCCATTAACTTGTATCAGTTATCAGTGTTCTCCCCAAAAATGTCATATAGCATCCTGG TAAACAGGGCATTTTAAGATACATGTACCTTCTTATTTCTAGAAATTATAGCATCACA Karp Rabin : Boyer-Moore: Knuth-Morris-Pratt : Χρόνος : secs Ταιριάσματα : 10 Χρόνος : secs Ταιριάσματα : 10 Χρόνος : secs Ταιριάσματα : 10 4 ος Αλγόριθμος Χρόνος : Χρόνος : secs Ταιριάσματα : 144 ΣΥΜΠΕΡΑΣΜΑΤΑ Ο αλγόριθµος Knuth-Morris-Pratt, βρίσκει ακριβές αριθµό ταιριασµάτων,και ο χρόνος εκτέλεσης του(µεγαλύτερος από τον χρόνο του Βoyer-Moore), δεν επηρεάζεται από το µέγεθος της συµβολοσειράς-προτύπου.χρησιµοποιείται για το ταίριασµα σχετικά µικρών-προτύπων. Ο αλγόριθµος Βoyer-Moore, βρίσκει ακριβές αριθµό ταιριασµάτων, και ο χρόνος εκτέλεσης του (µικρότερος από όλους τους υπόλοιπους αλγορίθµους) ελαττώνεται, όσο µεγαλώνει το µέγεθος της συµβολοσειράς-προτύπου. Χρησιµοποιείται κυρίως για το ταίριασµα πολύ µεγάλων συµβολοσειρώνπροτύπων. Ο αλγόριθµος Karp-Rabin, βρίσκει ακριβές αριθµό ταιριασµάτων, και ο χρόνος εκτέλεσης του είναι µεγαλύτερος από τους προηγούµενους δυο αλγορίθµους. εν επηρεάζεται ιδιαίτερα όµως για το ταίριασµα πολλών προτύπων ταυτόχρονα, γι αυτό και χρησιµοποιείται γι αυτό τον σκοπό κυρίως. Ο 4 ος αλγόριθµος δεν βρίσκει τον σωστό αριθµό ταιριασµάτων (βρίσκει παραπάνω ταιριάσµατα) και ο χρόνος εκτέλεσής του είναι µεγαλύτερος από όλους τους προαναφερθέντες αλγόριθµους. 33

34 7. Βιβλιογραφία 1. Ν. Αtreas and C. Karanikas A new matching algorithm based on prime numbers, Proceedings of the workshop: Scientific support for the decision making in the security sector, in NATO Science for piece and security series, D: Information and Communication security Vol. 12, (2008), pp R. S. Boyer and J. S. Moore, A fast string searching algorithm, Commun. ACM 20, , C. Charras, Lecroq Thierry, Handbook of Exact String-Matching Algorithms. 4. R. M. Karp, M. O. Rabin, Efficient randomized pattern matching algorithm, IBM, J. Res. Develop. 31, No 2, , (1987). 5. D. E. Knuth, J. H. Morris and V. R. Pratt, Fast pattern matching in strings, SIAM J. Computing, 6, , (1977). 6. E. M. McCreight. A Space-Economical Suffix Tree Construction Algorithm. Jrnl. of Algorithms, 23(2) pp , E. Ukkonen. On-line Construction of Suffix Trees. Algorithmica, 14(3) pp , CROCHEMORE, M., Off-line serial exact string searching, in Pattern Matching Algorithms, ed. A. Apostolico and Z. Galil, Chapter 1, pp 1-53, Oxford University Press. 9. GUSFIELD, D., 1997, Algorithms on strings, trees, and sequences: Computer Science and Computational Biology, Cambridge University Press. 10. AOE, J.-I., 1994, Computer algorithms: string pattern matching strategies, IEEE Computer Society Press. 11. SEDGEWICK, R., FLAJOLET, P., 1996, An Introduction to the Analysis of Algorithms, Addison-Wesley Publishing Company. 12. STEPHEN, G.A., 1994, String Searching Algorithms, World Scientific. 34

35 35

Αλγόριθμοι Συμβολοσειρών

Αλγόριθμοι Συμβολοσειρών 12 Αλγόριθμοι Συμβολοσειρών Περιεχόμενα Κεφαλαίου 12.1 Ορισμός Προβλήματος και Αλγόριθμος Ωμής Βίας... 348 12.2 Αλγόριθμος Rabin-Karp................... 350 12.3 Αλγόριθμος Boyer-Moore-Horspool.............

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Συμβολοσειρές. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Συμβολοσειρές. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Συμβολοσειρές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Συμβολοσειρές Συμβολοσειρές και προβλήματα που αφορούν συμβολοσειρές εμφανίζονται τόσο συχνά που

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΛΕΤΗ ΚΙ ΥΛΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΝΑΖΗΤΗΣΗΣ ΠΡΟΤΥΠΟΥ ΣΕ ΚΕΙΜΕΝΟ Διπλωματική Εργασία του Πέτρου Δούνου ΑΜ: 0714 Θεσσαλονίκη,

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

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n.

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n. Πρώτο Σύνολο Ασκήσεων 2014-2015 Κατερίνα Ποντζόλκοβα, 5405 Αθανασία Ζαχαριά, 5295 Ερώτημα 1 Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n. Ο αλγόριθμος εύρεσης

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

Κεφάλαιο 2 ο : Αλγόριθµοι Ακριβούς Εύρεσης Προτύπου

Κεφάλαιο 2 ο : Αλγόριθµοι Ακριβούς Εύρεσης Προτύπου Κεφάλαιο 2 ο : Αλγόριθµοι Ακριβούς Εύρεσης Προτύπου Σε αυτό το κεφάλαιο θα αναφερθούµε σε 3 σηµαντικούς αλγορίθµους ακριβούς εύρεσης προτύπου- exact pattern matching, που χρησιµοποιούνται σε προγράµµατα

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

Κεφάλαιο 3 ο : Εισαγωγή στο δέντρο επιθεµάτων (Suffix Tree) και στις Εφαρµογές του

Κεφάλαιο 3 ο : Εισαγωγή στο δέντρο επιθεµάτων (Suffix Tree) και στις Εφαρµογές του Κεφάλαιο 3 ο : Εισαγωγή στο δέντρο επιθεµάτων (Suffix Tree) και στις Εφαρµογές του Στα πλαίσια αυτού του κεφαλαίου παρουσιάζουµε δυο ευέλικτες δενδρικές δοµές: το έντρο Επιθεµάτων (Suffix Tree) και το

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

Ανάκτηση Πληροφορίας

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #11 Suffix Arrays Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 1 Άδεια χρήσης Το παρόν

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

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

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

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

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

ΟΛΟΚΛΗΡΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΥΛΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΟΛΟΚΛΗΡΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΥΛΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Παραλληλοποίηση αλγορίθμου Aho-Corasick με τεχνολογία CUDA ΔΗΜΟΠΟΥΛΟΣ

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

Κεφάλαιο 5 ο : Αλγόριθµοι Σύγκρισης Ακολουθιών Βιολογικών εδοµένων

Κεφάλαιο 5 ο : Αλγόριθµοι Σύγκρισης Ακολουθιών Βιολογικών εδοµένων Κεφάλαιο 5 ο : Αλγόριθµοι Σύγκρισης Ακολουθιών Βιολογικών εδοµένων Σε αυτό το κεφάλαιο παρουσιάζουµε 2 βασικούς αλγορίθµους σύγκρισης ακολουθιών Βιολογικών εδοµένων τους BLAST & FASTA. Οι δυο αλγόριθµοι

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΕΠΛ 232 Προγραμματιστικές Τεχνικές και Εργαλεία ΑΣΚΗΣΗ 2 Σύγκριση Ακολουθιών DNΑ με Δείκτες Διδάσκων: Δημήτρης Ζεϊναλιπούρ Υπεύθυνος Εργαστηρίου: Παύλος Αντωνίου

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

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

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Άδειες Χρήσης

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

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: υαδικά έντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

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

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

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

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

Τεχνικές Αναζήτησης Προτύπων σε Αρχεία Κειµένου

Τεχνικές Αναζήτησης Προτύπων σε Αρχεία Κειµένου ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ & ΙΚΤΥΩΝ Τεχνικές Αναζήτησης Προτύπων σε Αρχεία Κειµένου Διπλωματική Εργασία του Οδυσσέα Ε. Καλαμιώτη Επιβλέπων: Παναγιώτης Μποζάνης, Επίκουρος

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε. Ψηφιακά Δένδρα Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών τα οποία είναι ακολουθίες συμβάλλων από ένα πεπερασμένο αλφάβητο Ένα στοιχείο γράφεται ως, όπου κάθε. Μπορούμε να

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο

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

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ανασκόπηση Προβλήματος και Προκαταρκτικών Λύσεων Bit Διανύσματα Τεχνικές Κατακερματισμού & Συναρτήσεις

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 8 ο Αναζήτηση Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Αναζήτηση Αναζήτηση σε ιατεταγµένο Πίνακα υαδική Αναζήτηση Κατακερµατισµός

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

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

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

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

Insert (P) : Προσθέτει ένα νέο πρότυπο P στο λεξικό D. Delete (P) : Διαγράφει το πρότυπο P από το λεξικό D

Insert (P) : Προσθέτει ένα νέο πρότυπο P στο λεξικό D. Delete (P) : Διαγράφει το πρότυπο P από το λεξικό D Dynamic dictionary matching problem Έχουμε ένα σύνολο πρότυπων D = { P1, P2,..., Pk } oπου D το λεξικό και ένα αυθαίρετο κειμενο T [1,n] To σύνολο των πρότυπων αλλάζει με το χρόνο (ρεαλιστική συνθήκη).

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

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις Ο ΑΤΔ Λεξικό Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος Υλοποιήσεις Πίνακας με στοιχεία bit (0 ή 1) (bit vector) Λίστα ακολουθιακή (πίνακας) ή συνδεδεμένη Είναι γνωστό το μέγιστο

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

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 8-1

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 8-1 B-Δένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 8-1 2-3 Δένδρα Γενίκευση των δυαδικών δένδρων αναζήτησης.

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

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

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης Δοµές Δεδοµένων 16η Διάλεξη Κατακερµατισµός Ε. Μαρκάκης Περίληψη Συναρτήσεις κατακερµατισµού Χωριστή αλυσίδωση Γραµµική διερεύνηση Διπλός κατακερµατισµός Δυναµικός κατακερµατισµός Προοπτική Δοµές Δεδοµένων

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου Συμπίεση Η συμπίεση δεδομένων ελαττώνει το μέγεθος ενός αρχείου : Εξοικονόμηση αποθηκευτικού χώρου Εξοικονόμηση χρόνου μετάδοσης Τα περισσότερα αρχεία έχουν πλεονασμό στα δεδομένα τους Είναι σημαντική

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

Αριθµητική Ολοκλήρωση

Αριθµητική Ολοκλήρωση Κεφάλαιο 5 Αριθµητική Ολοκλήρωση 5. Εισαγωγή Για τη συντριπτική πλειοψηφία των συναρτήσεων f (x) δεν υπάρχουν ή είναι πολύ δύσχρηστοι οι τύποι της αντιπαραγώγου της f (x), δηλαδή της F(x) η οποία ικανοποιεί

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55 ΑΝΑ ΡΟΜΗ- ΑΣΚΗΣΕΙΣ Μια µέθοδος είναι αναδροµική όταν καλεί τον εαυτό της και έχει µια συνθήκη τερµατισµού π.χ. το παραγοντικό ενός αριθµού Ν, µπορεί να καλεί το παραγοντικό του αριθµού Ν-1 το παραγοντικό

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

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

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

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

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Τεχνικές κατασκευής δένδρων επιθεµάτων πολύ µεγάλου µεγέθους και χρήσης

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

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

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα

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

ΛΥΣΕΙΣ ΑΣΚΗΣΕΩΝ ΕΞΕΤΑΣΤΙΚΗΣ ΠΕΡΙΟ ΟΥ ΙΟΥΝΙΟΥ 2004., η οποία όµως µπορεί να γραφεί µε την παρακάτω µορφή: 1 e

ΛΥΣΕΙΣ ΑΣΚΗΣΕΩΝ ΕΞΕΤΑΣΤΙΚΗΣ ΠΕΡΙΟ ΟΥ ΙΟΥΝΙΟΥ 2004., η οποία όµως µπορεί να γραφεί µε την παρακάτω µορφή: 1 e ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΥΣΗΣ ΗΛΕΚΤΡΙΚΩΝ ΚΥΚΛΩΜΑΤΩΝ ΜΑΘΗΜΑ: ΨΗΦΙΑΚΗ ΕΠΕΞΕΡΓΑΣΙΑ ΣΗΜΑΤΩΝ ΛΥΣΕΙΣ ΑΣΚΗΣΕΩΝ ΕΞΕΤΑΣΤΙΚΗΣ ΠΕΡΙΟ ΟΥ ΙΟΥΝΙΟΥ 4 AΣΚΗΣΗ () [ ] (.5)

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

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

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

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Διάλεξη 14: Δέντρα IV - B-Δένδρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 14: Δέντρα IV - B-Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - 2-3 Δένδρα, Εισαγωγή και άλλες πράξεις - Άλλα Δέντρα: Β-δένδρα, Β+-δέντρα,

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

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

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

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3.

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3. ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων Bασικές πράξεις : 1. Δηµιουργία 2. Μήκος 3. Ανάκτηση 4. Προσάρτηση 5. Διαγραφή 6. Αντιγραφή 7. Συνένωση 8. Αναζήτηση

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

ΚΕΦΑΛΑΙΟ 3 ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. nn n n

ΚΕΦΑΛΑΙΟ 3 ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. nn n n ΚΕΦΑΛΑΙΟ 3 ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 Ο αλγόριθµος Gauss Eστω =,3,, µε τον όρο γραµµικά συστήµατα, εννοούµε συστήµατα εξισώσεων µε αγνώστους της µορφής: a x + + a x = b a x + + a x = b a

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

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

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ Ι (ΠΕΡΙΤΤΟΙ) Λυσεις Ασκησεων - Φυλλαδιο 2

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ Ι (ΠΕΡΙΤΤΟΙ) Λυσεις Ασκησεων - Φυλλαδιο 2 ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ Ι Τµηµα Β (ΠΕΡΙΤΤΟΙ) Λυσεις Ασκησεων - Φυλλαδιο 2 ιδασκων: Α Μπεληγιάννης Ιστοσελιδα Μαθηµατος : http://usersuoigr/abeligia/linearalgebrai/lai2017/lai2017html Παρασκευή 20 Οκτωβρίου 2017

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

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

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

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

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

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

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

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης Δοµές Δεδοµένων 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι Ε. Μαρκάκης Περίληψη Bubble Sort Selection Sort Insertion Sort Χαρακτηριστικά επιδόσεων Shellsort Ταξινόµηση συνδεδεµένων λιστών Δοµές Δεδοµένων

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

Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing)

Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ανασκόπηση Προβλήματος και Προκαταρκτικών Λύσεων Bit-Διανύσματα

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

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

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

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

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

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

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

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ ΑΓΩΓΟΙ & ΙΑΝΥΣΜΑΤΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ ΣΥΓΚΡΟΥΣΕΙΣ ΣΕ ΑΓΩΓΟΥΣ & ΜΕΓΙΣΤΟΠΟΙΗΣΗ ΠΑΡΑΓΩΓΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΥΨΗΛΩΝ

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

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

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

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

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

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

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

Το εσωτερικό ενός Σ Β

Το εσωτερικό ενός Σ Β Επεξεργασία Ερωτήσεων 1 Εισαγωγή ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL) ηµιουργία/κατασκευή Εισαγωγή εδοµένων

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

Επαναληπτικές Ασκήσεις για το µάθηµα Ψηφιακή Επεξεργασία Σηµάτων

Επαναληπτικές Ασκήσεις για το µάθηµα Ψηφιακή Επεξεργασία Σηµάτων Άσκηση η α) Πώς θα µετρήσετε πρακτικά πόσο κοντά είναι ένα σήµα σε λευκό θόρυβο; Αναφέρατε 3 διαφορετικές µεθόδους (κριτήρια) για την απόφαση: "Ναι, πρόκειται για σήµα που είναι πολύ κοντά σε λευκό θόρυβο"

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

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ 1 Αριθµητικό Σύστηµα! Ορίζει τον τρόπο αναπαράστασης ενός αριθµού µε διακεκριµένα σύµβολα! Ένας αριθµός αναπαρίσταται διαφορετικά σε κάθε σύστηµα,

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

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΘΕΜΑ ο (.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις Πέµπτη 7 Ιανουαρίου 8 5:-8: Σχεδιάστε έναν αισθητήρα (perceptron)

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2017-2018 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

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

Λύση (από: Τσιαλιαμάνης Αναγνωστόπουλος Πέτρος) (α) Το trie του λεξιλογίου είναι

Λύση (από: Τσιαλιαμάνης Αναγνωστόπουλος Πέτρος) (α) Το trie του λεξιλογίου είναι Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών HY463 - Συστήματα Ανάκτησης Πληροφοριών 2006-2007 Εαρινό Εξάμηνο 3 η Σειρά ασκήσεων (Ευρετηρίαση, Αναζήτηση σε Κείμενα και Άλλα Θέματα) (βαθμοί 12: όποιος

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

Κεφάλαιο 6 Ουρές Προτεραιότητας Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1

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

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

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

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

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα Ορέστης Τελέλης tllis@unipi.r Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς έντρα 1 / 27 έντρα έντρο είναι απλό συνδεδεµένο µη

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

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

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

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

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Όρια Αλγόριθμων Ταξινόμησης Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Όρια Αλγόριθμων Ταξινόμησης Μέχρι στιγμής εξετάσθηκαν μέθοδοι ταξινόμησης µε πολυπλοκότητα της τάξης Θ ) ή Θlog ). Τι εκφράζει

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

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί); Μοντελοποίηση του Υπολογισµού Στοιχεία Θεωρίας Υπολογισµού (): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ποιές οι θεµελιώδεις δυνατότητες

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

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού 1 /

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές

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

Τίτλος Μαθήματος: Συνήθεις Διαφορικές Εξισώσεις Ι

Τίτλος Μαθήματος: Συνήθεις Διαφορικές Εξισώσεις Ι Τίτλος Μαθήματος: Συνήθεις Διαφορικές Εξισώσεις Ι Ενότητα: Θεώρημα ύπαρξης και μοναδικότητας της λύσης του Π.Α.Τ.: y = f ( x, y), y( x ) (Θεώρημα Picard) ' Όνομα Καθηγητή: Χρυσή Κοκολογιαννάκη Τμήμα: Μαθηματικών

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

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 3 4 5 6 7 8 9 1 BucketSort (Ταξινόμηση Κάδου) - Αρχικά θεωρείται ένα κριτήριο κατανομής με βάση το οποίο

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή

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

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης Δοµές Δεδοµένων 18η Διάλεξη Ισορροπηµένα δέντρα Ε. Μαρκάκης Περίληψη Επανάληψη των Τυχαιοποιηµένων ΔΔΑ, Στρεβλών ΔΔΑ, Δέντρων 2-3-4 Δέντρα κόκκινου-µαύρου Λίστες Παράλειψης Χαρακτηριστικά επιδόσεων - συµπεράσµατα

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

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή (ως τρόπος οργάνωσης αρχείου) μέγεθος

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

Δρ. Πέτρος Παναγή B123

Δρ. Πέτρος Παναγή B123 Δρ. Πέτρος Παναγή petrosp@cs.ucy.ac.cy B123 1 ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συμβολοσειρά Μία συμβολοσειρά είναι μία συλλογή χαρακτήρων με διάταξη Bασικές πράξεις : (Είναιτοελάχιστοδυνατόσύνολοπράξεων)

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

KEΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΑ ΚΡΥΠΤΟΣΥΣΤΗΜΑΤΑ

KEΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΑ ΚΡΥΠΤΟΣΥΣΤΗΜΑΤΑ Βασικές έννοιες KEΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΑ ΚΡΥΠΤΟΣΥΣΤΗΜΑΤΑ Ένα κρυπτοσύστηµα όπου οι χώροι των καθαρών µηνυµάτων, των κρυπτογραφηµένων µυνηµάτων και των κλειδιών είναι ο m,,,... m = καλείται ψηφιακό κρυπτοσύστηµα.

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

Γραφικά Υπολογιστών: Εμφάνιση σε 2D

Γραφικά Υπολογιστών: Εμφάνιση σε 2D 1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Εμφάνιση σε 2D Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιεχόμενα Έννοιες παραθύρων (windowing) Αποκοπή (clipping)

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

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

Τεχνολογία Πολυμέσων. Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Τεχνολογία Πολυμέσων Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

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