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

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

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

Transcript

1 Κεφάλαιο 2 ο : Αλγόριθµοι Ακριβούς Εύρεσης Προτύπου Σε αυτό το κεφάλαιο θα αναφερθούµε σε 3 σηµαντικούς αλγορίθµους ακριβούς εύρεσης προτύπου- exact pattern matching, που χρησιµοποιούνται σε προγράµµατα σύγκρισης και ανάλυσης ακολουθιών βιολογικών δεδοµένων. Επειδή ο όγκος των ακολουθιών βιολογικών δεδοµένων διπλασιάζεται κάθε 18 περίπου µήνες το κύριο ενδιαφέρον εστιάζεται στη σχεδίαση αποδοτικών αλγορίθµων σε χρόνο και απαιτούµενο χώρο. Η απλοϊκή προσέγγιση αναζήτησης ενός προτύπου- pattern P µήκους n σε ένα κείµενο ή βιολογική ακολουθία X µήκους m, στοιχίζει το πρότυπο στην πρώτη θέση της ακολουθίας και εξετάζει έναν προς έναν τους χαρακτήρες του προτύπου (Πίνακας 2.2.α) Σε περίπτωση µη ταιριάσµατοςmismatch, η σύγκριση ξαναρχίζει µε µετατόπιση του προτύπου κατά µια θέση. Η απλοϊκή αυτή προσέγγιση στοιχίζει O(n*m) χρόνο. void Naïve-Method (char *x, int m, char *y, int n) { int i,j; for (j=0; j<=n-m; ++j) { for (i=0; i<m && x[i]==y[i+j]; ++i); if i>=m output(j); Πίνακας 2.α: Απλοϊκή Προσέγγιση Αναζήτησης Προτύπου Μια σχηµατική απεικόνιση αυτής της απλοϊκής µεθόδου φαίνεται στο ακόλουθο σχήµα. g c a t t a t a c a g t a c g Βήµα 1: Στο πρώτο βήµα παρατηρούµε ότι έχουµε διαφορετικό χαρακτήρα στην 4 η θέση οπότε και το πρότυπο µεταφέρεται κατά 1 θέση δεξιά

2 g c a t t a t a c a g t a c g 1 Βήµα 2: Στο δεύτερο βήµα παρατηρούµε ότι έχουµε διαφορετικό χαρακτήρα από την 1 η θέση οπότε και το πρότυπο µεταφέρεται κατά 1 θέση δεξιά. Η διαδικασία επαναλαµβάνεται και για το 3 ο, και 4 ο βήµα. g c a t t a t a c a g t a c g Βήµα 5: Στο πέµπτο βήµα παρατηρούµε ότι έχουµε ταίριασµα και των 8 χαρακτήρων του προτύπου. Οπότε η πρώτη εµφάνιση του προτύπου είναι στην θέση Χ 5. Στη συνέχεια η διαδικασία συνεχίζεται µετατοπίζοντας σε κάθε βήµα το πρότυπο κατά 1 θέση δεξιά. Οι αλγόριθµοι που θα παρουσιάσουµε στη συνέχεια χρησιµοποιούν διάφορες τεχνικές επιτάχυνσης της διαδικασίας αναζήτησης. Έχουµε επιλέξει να παρουσιάσουµε 3 αντιπροσωπευτικούς αλγορίθµους: 1. Τον αλγόριθµο Boyer-Moore, που συγκρίνει τους χαρακτήρες του προτύπου (pattern) ως προς την ακολουθία από δεξιά προς τα αριστερά, 2. Τον αλγόριθµο Knuth-Morris-Pratt, που αποτελεί το πιο σηµαντικό αλγόριθµο γραµµικής πολυπλοκότητας και 3. Τον αλγόριθµο Shift-Or, που χρησιµοποιεί αριθµητικές µεθόδους. 2.1 Ο Αλγόριθµος Boyer-Moore Ο αλγόριθµος Boyer-Moore χρησιµοποιεί τις ακόλουθες τεχνικές: α) ελέγχει τους χαρακτήρες από δεξιά προς τα αριστερά, και β) στην περίπτωση µη ταιριάσµατος χρησιµοποιεί τους κανόνες good suffix shift και bad character shift για να µετατοπίσει το σηµείο στοίχισης του προτύπου ως προς την ακολουθία. Ας υποθέσουµε ότι συγκρίνοντας τους χαρακτήρες x[i]=a και y[i+j]=b από το πρότυπο και το κείµενο αντίστοιχα, έχουµε mismatch

3 Από τη σύγκριση των προηγούµενων χαρακτήρων, ισχύει ότι x[i+1 m-1]= y[i+j+1 j+m-1]= u, ενώ x[i] y[i+j]. Ο κανόνας good suffix shift στηρίζεται στη µετατόπιση του τµήµατος x[i+1 m-1]= y[i+j+1 j+m-1] στην επόµενη προς τα δεξιά εµφάνιση του στο κείµενο όπου ο επόµενος προς τα αριστερά χαρακτήρας είναι διάφορος του x[i] (σχήµα α). y b u x a u x c u shift Σχήµα 2.1.α. Στην περίπτωση που δεν υπάρχει τέτοια εµφάνιση στοιχίζουµε το µέγιστο πρόθεµα v του x που συµφωνεί µε το αντίστοιχο τµήµα του y[i+j+1 j+m-1]. Ο κανόνας bad character shift στηρίζεται στη στοίχιση του χαρακτήρα y[i+j] του κειµένου µε τη δεξιότερη εµφάνιση του στο πρότυπο x[0 m-2] (σχήµα β). Αν ο χαρακτήρας δεν εµφανίζεται µέσα στο πρότυπο, τότε καµία εµφάνιση του x δε θα συµπεριλαµβάνει το χαρακτήρα y[i+j], και το αριστερό τµήµα του προτύπου στοιχίζεται µε τον επόµενο χαρακτήρα y[i+j+1], όπως φαίνεται στο σχήµα γ. y b u x a u x b δεν περιέχει b shift Σχήµα 2.1.β. y b u x a u shift x δεν περιέχει b Σχήµα 2.1.γ

4 Για να χρησιµοποιήσουµε τις 2 τεχνικές που περιγράψαµε χρησιµοποιούµε 2 συναρτήσεις που έχουµε υπολογίσει σε ένα προεπεξεργαστικό βήµα. Η συνάρτηση good suffix shift, αποθηκεύεται σε έναν πίνακα bmgs µεγέθους m+1. Οι τιµές του πίνακα εκφράζουν την περίοδο του x, ως εξής: BmGs[i+1]= min {s>0, : ώστε να ισχύουν οι συνθήκες Cs(i,s) & Co(i,s), όπου Cs(i,s) = για κάθε k, i<k<m και s k, ή x[k-s]=x[k], και Co(i,s) = εάν s<i, τότε x[i-s] x[i]. Η συνάρτηση bad character shift, αποθηκεύεται σε έναν πίνακα bmbc. H τιµή της συνάρτησης ορίζεται για κάθε χαρακτήρα σ: min, i :1 i m 1& x[ m 1 i] = c bmbc[ σ ] = m, int PreBmBc (char *x, int m, int bmbc[]) { int i; for (i=0; i<asize; ++i) bmbc[i]=n; for (i=0; i<m-1; ++i) bmbc[x[i]]= m-i-1; 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-1-i; ++j) if bmgs[j]==m bmgs[j]= m-1-i; for (i=0; i<= m-2; ++i) bmgs[m-1-suff[i]= m-1-i; - 4 -

5 void suffixes (char *x, int m, int * suff) { int i,f,g; void Boyer-Moore (char *x, int m, char *y, int n) { int i,j, bmgs[xsize], bmbc[asize]; suff[m-1] = m; g=m-1; for (i=m-2; i>=0; --i) { if (i>g && suff [i+m-1-f]<i-g) suff[i]= suff[i+m-1-f]; else { if i<g g=i; f=i; while (g>=0 && x[g]==x[g+m-1-f]) --g; suff[i]=f-g; /*preprocessing*/ PreBmGs(x, m, bmgs); PreBmBc(x, m, bmbc); /*searching*/ 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+1+i); Πίνακας 2.1.α: Αλγόριθµος Boyer-Moore Πολυπλοκότητα: Οι πίνακες bmbc και bmgs υπολογίζονται σε O(m+σ) χρόνο. Η πολυπλοκότητα αναζήτησης του προτύπου είναι τετραγωνική ως προς τον απαιτούµενο χρόνο, αλλά σε πραγµατικές εφαρµογές και όταν το πρότυπο που αναζητάµε δεν είναι περιοδικό απαιτούνται 3n συγκρίσεις. Επίσης για µεγάλα αλφάβητα ( pattern ) οι απαιτούµενες συγκρίσεις είναι O(n/m), χρόνος βέλτιστος για οποιοδήποτε αλγόριθµο αναζήτησης. Παράδειγµα: Έστω το πρότυπο x=gcagagag, ορίζουµε τις 2 βοηθητικές συναρτήσεις και εφαρµόζουµε τον αλγόριθµο Boyer-Moore. i x[i] suff[i] BmGs[i] c a c g t BmBc[c] Βήµα 1: Μετατόπιση κατά 1 θέση (bmgs[7]=bmbc[a]-7+7) - 5 -

6 3 2 1 Βήµα 2: Μετατόπιση κατά 4 θέσεις (bmgs[5]=bmbc[c]-7+5) Βήµα 3: Ακριβής εύρεση του προτύπου και µετατόπισή του κατά 7 θέσεις Βήµα 4: Μετατόπιση κατά 1 θέση (bmgs[5]=bmbc[c]-7+5) 2 1 Βήµα 5: Μετατόπιση κατά 7 θέσεις (bmgs[5]=bmbc[c]-7+5) Συνολικά ο αλγόριθµος εκτελεί 17 συγκρίσεις χαρακτήρων στο συγκεκριµένο παράδειγµα. 2.2 Ο Αλγόριθµος Knuth-Morris-Pratt Ο αλγόριθµος Knuth-Morris-Pratt συγκρίνει τους χαρακτήρες από αριστερά προς τα δεξιά χρησιµοποιώντας ένα προ-επεξεργαστικό βήµα που στοιχίζει O(m) χώρο και χρόνο ενώ η συνολική πολυπλοκότητα του αλγορίθµου είναι O(n+m) ανεξάρτητα από το µέγεθος του αλφαβήτου των ακολουθιών. Ας δούµε πώς λειτουργεί ο αλγόριθµος

7 y u b x u a shift x v c Σχήµα 2.2.α. Συγκρίνοντας το πρότυπο και την ακολουθία στους χαρακτήρες των θέσεων x[i] και y[i+j] αντίστοιχα παρατηρούµε ότι έχουµε ασυµφωνία (0<i<m). Για τις συγκρίσεις των προηγούµενων θέσεων ισχύει ότι: x[0 i-1] = y[j i-j-1] = u, ενώ a= x[i] y[i+j] b. Προκειµένου να µετατοπίσουµε το πρότυπο προς τα δεξιά, υποθέτουµε ότι κάποιο πρόθεµα (prefix) v του προτύπου ταιριάζει µε κάποιο επίθεµα (suffix) του τµήµατος u της ακολουθίας. Επίσης για να µην έχουµε ασυµφωνία και στον επόµενο χαρακτήρα, ο επόµενος χαρακτήρας µετά το πρόθεµα v πρέπει να είναι διάφορος του a. To µέγιστο σε µήκος πρόθεµα v που ικανοποιεί αυτές τις συνθήκες ονοµάζεται border του u (έχουµε ήδη ορίσει ως border το substring που εµφανίζεται στην αρχή και το τέλος µιας λέξης). Ορίζουµε λοιπόν ως kmpnext[i] το µήκος του µέγιστου border του x[0 i-1] στο οποίο ο επόµενος χαρακτήρας c προς τα δεξιά είναι διάφορος του x[i] και στην περίπτωση που δεν υπάρχει τέτοιο border kmpnext[i] = -1, (για κάθε i, 0<i<m). Μετά τη µετατόπιση η σύγκριση των χαρακτήρων συνεχίζεται µεταξύ των x[kmpnext[i]] και y[i+j] χαρακτήρων. int PreScan (char *x, int m, int KmpNext[]) { int i, j; void KMP (char *x, int m, char *y, int n) { int i,j, KmpNext[XSIZE]; 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; /*preprocessing*/ PreScan(x,m,KmpNext); /*searching*/ 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]; Πίνακας 2.2.β: Αλγόριθµος Knuth-Morris-Pratt - 7 -

8 Πολυπλοκότητα: Οι τιµές του πίνακα kmpnext υπολογίζονται σε O(m) χώρο και χρόνο ενώ θέτουµε kmpnext[0]= -1. Η συνολική πολυπλοκότητα του αλγορίθµου είναι O(n+m) ανεξάρτητα από το µέγεθος του αλφαβήτου των ακολουθιών. Παράδειγµα: Έστω το πρότυπο x=gcagagag, υπολογίζουµε τον πίνακα kmpnext i x[i] kmpnext [i] Βήµα 1: Μετατόπιση κατά 4 θέσεις (i-kmpnext [i] = 3- (-1)=4) 1 Βήµα 2: Μετατόπιση κατά 1 θέση (i-kmpnext [i] = 0- (-1)=1) Βήµα 3: Ακριβής εύρεση του προτύπου και µετατόπισή του κατά 7 θέσεις. 1 2 Βήµα 4: Μετατόπιση κατά 1 θέση (i-kmpnext [i] = 1-0 =1) - 8 -

9 1 Βήµα 5: Μετατόπιση κατά 1 θέση (i-kmpnext [i] = 0- (-1) =1) 1 Βήµα 6: Μετατόπιση κατά 1 θέση (i-kmpnext [i] = 0- (-1) =1) 1 Βήµα 7: Μετατόπιση κατά 1 θέση (i-kmpnext [i] = 0- (-1) =1) 1 Βήµα 8: Μετατόπιση κατά 1 θέση (i-kmpnext [i] = 0- (-1) =1) Συνολικά ο αλγόριθµος εκτελεί 18 συγκρίσεις χαρακτήρων στο συγκεκριµένο παράδειγµα. 2.3 Ο Αλγόριθµος Shift-Or Ο αλγόριθµος Shift-Or χρησιµοποιεί αριθµητικές τεχνικές για τη σύγκριση των χαρακτήρων. Ο αλγόριθµος είναι αποδοτικός, όταν το µήκος του προτύπου δεν ξεπερνά το µήκος λέξης της µηχανής. Ο αλγόριθµος χρησιµοποιεί ένα προ-επεξεργαστικό βήµα που στοιχίζει O(m+σ) χώρο και χρόνο ενώ η συνολική πολυπλοκότητα του αλγορίθµου είναι O(n) ανεξάρτητα από το µέγεθος του αλφαβήτου των ακολουθιών. Ο αλγόριθµος προσαρµόζεται εύκολα και σε περιπτώσεις προσεγγιστικής εύρεσης προτύπου

10 Ο αλγόριθµος, χρησιµοποιεί αριθµητικές τεχνικές. Έστω R ένα bit array µεγέθους m. Το διάνυσµα R j αποθηκεύει τις τιµές του πίνακα R, µετά την επεξεργασία του χαρακτήρα y[j] της ακολουθίας, όπως φαίνεται στο σχήµα α. Κάθε διάνυσµα περιλαµβάνει τις πληροφορίες µε το ταίριασµα όλων των προθεµάτων του x που σταµατούν στη θέση j (0<i<m-1): 0, x[0... i] = y[ j i... j] R j [ i + 1] = 1 Το διάνυσµα R j+1 υπολογίζεται χρησιµοποιώντας το διάνυσµα R j ως εξής: και R [ j + 1 0, x[ i + 1] = y[ j + 1] i + 1] = 1 [0] 0, x[0] = y[ j + 1] R j + 1 = 1 Εάν R j+1 [m+1]=0, τότε έχουµε πλήρη εύρεση του προτύπου. y j x[0] i=0 1 x[0 1] i=1 0 x[0 2] i=2 1 x i=m-1 0 Σχήµα 2.3.α. R j Η µετάβαση από το διάνυσµα R j στο R j+1 µπορεί να επιταχυνθεί ως εξής: Για κάθε χαρακτήρα c Σ, έστω το διάνυσµα µεγέθους m S c για κάθε 0<i<m-1, και S c =0 αν και µόνο αν x[i]=c, το οποίο αποθηκεύει τις θέσεις εµφάνισης του χαρακτήρα c στο πρότυπο. Το διάνυσµα S c υπολογίζεται σε ένα προ-επεξεργαστικό βήµα. Εκτέλεση της πράξης: R j+1 = Shift (R j ) Or S y[j+1]

11 int PreScan (char *x, int m, unsigned S[]) { unsigned int j, lim; int i; for (i=0; i<asize; ++i) S[i]=~0; for (lim=i=0, j=1; i<m; ++i, j<<=1){ S[x[i]] &=~j; lim =j; lim=~(lim>>1); return(lim); void Shift-Or (char *x, int m, char *y, int n) { unsigned int lim, state; unsigned int S[ASIZE]; int j; if (m> WORD) error ("Shift-Or: use pattern size<= word size"); /*preprocessing*/ lim = PreScan(x,m,S); /*searching*/ for (state=~0, j=0, j<n; ++j) state= (state<<1) S[y[j]]; if state<lim output(j-m+1); Πίνακας 2.3.β: Αλγόριθµος Shift-Or Πολυπλοκότητα: Ο αλγόριθµος χρησιµοποιεί ένα προ-επεξεργαστικό βήµα που στοιχίζει O(m+σ) χώρο και χρόνο ενώ η συνολική πολυπλοκότητα του αλγορίθµου είναι O(n) ανεξάρτητα από το µέγεθος του αλφαβήτου των ακολουθιών. Παράδειγµα: Έστω το πρότυπο x=gcagagag, υπολογίζουµε τα διανύσµατα S c. S A S C S G S T g c a g a g a g

12 g c a g a g a g Όπως παρατηρούµε R 12 [7] = 0, οπότε έχουµε µια πλήρη εµφάνιση του προτύπου στη θέση = Ακριβής Εύρεση Πολλαπλών Προτύπων Σε αυτή την ενότητα παρουσιάζουµε αλγορίθµους αναζήτησης πολλών προτύπων ταυτόχρονα. Συγκεκριµένα παρουσιάζουµε το αυτόµατο Aho- Corasick για την αναζήτηση πολλαπλών προτύπων σε µια ακολουθία. Αρχικά θα παρουσιάσουµε τις βασικές ιδέες εύρεσης προτύπου βάσει ενός Ντετερµινιστικού Πεπερασµένου Αυτόµατου (Deterministic Finite Automaton- DFA). Προκειµένου να αναζητήσουµε µια λέξη µε χρήση ενός αυτοµάτου, πρέπει αρχικά να δηµιουργήσουµε το Ντετερµινιστικό Πεπερασµένο Αυτόµατο A(x), που αναγνωρίζει τη γλώσσα Σ*x. Ένα Ντετερµινιστικό Πεπερασµένο Αυτόµατο A( x) = ( Q, q, T, E), ορίζεται ως εξής: o Q: το σύνολο των προθεµάτων του x: Q={ε, x[0], x[0 1], x[0 2],..x[0 m-2],x, q 0 = ε : κατάσταση εκκίνησης, T = {x, για κάθε q Q και α Σ, (q α, α, q) E, αν και µόνο αν το q α είναι πρόθεµα του x, διαφορετικά (q α, α, p) E, έτσι ώστε το p, να είναι το µέγιστο επίθεµα του q α, που είναι και πρόθεµα του x. Το Ντετερµινιστικό Πεπερασµένο Αυτόµατο, δηµιουργείται σε O(m+σ) χρόνο και χρειάζεται Ο(m*σ) χώρο

13 Έχοντας δηµιουργήσει το αυτόµατο, η αναζήτηση µιας λέξης ξεκινά από την αρχική κατάσταση q 0. Σε κάθε βήµα διαβάζουµε έναν χαρακτήρα εισόδου και µεταβαίνουµε στην επόµενη κατάσταση. Κάθε φορά που φθάνουµε στην τελική κατάσταση αναφέρεται µια εµφάνιση της δοσµένης λέξης/ προτύπου στην ακολουθία. Η αναζήτηση στοιχίζει Ο(n) χρόνο, αν το αυτόµατο αποθηκεύεται σε πίνακα άµεσης πρόσβασης, διαφορετικά στοιχίζει Ο(n*logσ). Ας δούµε το παράδειγµα ενός αυτοµάτου για το πρότυπο T=gcagagag. Παράδειγµα Σ= {a,c,g,t Q= {ε, g,gc,gca,gcag, gcaga, gcagag, gcagaga, gcagagag, q 0 = ε, και T= {gcagagag Το αυτόµατο για τη λέξη εµφανίζεται στο ακόλουθο σχήµα. c c g c g c a g a g a g g g g g Για την αναζήτηση του προτύπου µέσα στην ακολουθία S= gcatcgcagagagtatacagtacg, χρησιµοποιούµε το αυτόµατο που έχουµε δηµιουργήσει, ενώ για κάθε χαρακτήρα που διαβάζουµε στην είσοδο, σηµειώνουµε και την κατάσταση µετάβασης

14 M συνεχίζουµε τη διαδικασία για κάθε χαρακτήρα της ακολουθίας εισόδου Συνολικά ο αλγόριθµος εκτελεί 24 συγκρίσεις χαρακτήρων στο συγκεκριµένο παράδειγµα Το Αυτόµατο Aho-Corasick Ο αλγόριθµος Aho-Corasick, γενικεύει το αυτόµατο αναζήτησης προτύπου για ένα σύνολο προτύπων. Βασική ιδέα αποτελεί ο ορισµός των goto και failure-function συναρτήσεων για κάθε κατάσταση του αυτοµάτου, το οποίο χτίζεται βάσει του συνόλου των λέξεων/ προτύπων αναζήτησης P = p, p,... p. { 1 2 k Η συνάρτηση goto, αποθηκεύει την κατάσταση µετάβασης µε την ανάγνωση ενός χαρακτήρα. Στην περίπτωση που δεν υπάρχει δυνατή µετάβαση καθώς αναφέρεται µη-ταίριασµα χαρακτήρα (mismatch), η συνάρτηση failure-function, µας επιδεικνύει ποια είναι η επόµενη κατάσταση

15 µετάβασης, (failure link), από την οποία θα συνεχίσουµε την αναζήτηση, διαβάζοντας τον επόµενο χαρακτήρα εισόδου της ακολουθίας. Μπορούµε να πούµε ότι η συνάρτηση failure-function, µοντελοποιεί την απόσταση shift στη στοίχιση προτύπου- ακολουθίας που χρησιµοποιούν οι αλγόριθµοι που ήδη παρουσιάσαµε. Στο επόµενο σχήµα δίνουµε το αυτόµατο για το σύνολο προτύπων P = { ca, tca, cgt, cat. not c or t c a t t g t 6 7 c a goto function i f(i) failure function i output(i) 2 {ca 5 {ca,tca 7 {cgt 8 {cat output function Όπως παρατηρούµε, η αρχική κατάσταση αριθµείται µε 0, η συνάρτηση goto αντιστοιχεί τα ζεύγη της µορφής (state, c) είτε στην επόµενη κατάσταση µετάβασης είτε στο µήνυµα fail (mismatch), ενώ η συνάρτηση failure-function µας δίνει την επόµενη κατάσταση µετά από ένα mismatch

16 Σε κάθε βήµα του αλγορίθµου, το αυτόµατο λειτουργεί ως εξής: εάν g(s, α) = s, το αυτόµατο µεταπηδά στην κατάσταση s και ο επόµενος χαρακτήρας της ακολουθίας διαβάζεται στην είσοδο, εάν g(s, α) = fail, το αυτόµατο µεταβαίνει στην κατάσταση s =f(s) σύµφωνα µε τη failure function. H αναζήτηση συνεχίζεται µε τρέχουσα κατάσταση την s και σύµβολο εισόδου το χαρακτήρα που ήδη έχει διαβαστεί στην είσοδο α. Στο ακόλουθο διάγραµµα δίνουµε τον αλγόριθµο αναζήτησης βάσει του Aho-Corasick αυτοµάτου, και στη συνέχει δείχνουµε πώς υλοποιούνται οι συναρτήσεις goto & failure-function. Pattern Matching Machine state 0 for i 1 until n do while g(state, α j ) = fail do state f(state) state g(state, α i ) if output(state) empty then print i print output(state) end end end Πίνακας 2.4.α: Αλγόριθµος Aho-Corasick Αυτοµάτου Κατασκευή της goto συνάρτησης Για την κατασκευή της συνάρτησης goto, δηµιουργούµε ένα γράφο µετάβασης καταστάσεων, όπου η αρχική κατάσταση είναι η 0. Στη συνέχεια εισάγουµε κάθε λέξη/ πρότυπο, δηµιουργώντας ένα κατευθυνόµενο µονοπάτι από την αρχική κατάσταση. Προσθέτουµε νέες κορυφές και ακµές, όταν αυτό είναι απαραίτητο. not c or t c a not c or t c a Εισαγωγή του ca t c a Εισαγωγή του tca

17 Όπως παρατηρούµε και από τα παραπάνω σχήµατα κάθε διαδροµή από την αρχική κατάσταση 0, σε µια τελική διαβάζει (spells) και µια λέξη από το σύνολο των προτύπων. Κατασκευή της failure-function συνάρτησης Η συνάρτηση failure-function, κατασκευάζεται µε τη βοήθεια της συνάρτησης goto. Για κάθε κατάσταση state-s, του γράφου goto ορίζουµε ως βάθος- depth(s): το µικρότερο µονοπάτι σε µήκος από την αρχική κατάσταση στην κατάσταση s. Όπως παρατηρούµε στο σχήµα α, depth(0)=0, depth(1)=depth(3)=1 κτλ. Υπολογίζουµε το βάθος κάθε κατάστασης ξεκινώντας από τις καταστάσεις βάθους 1, βάθους 2, κοκ, χρησιµοποιώντας την ακόλουθη αναδροµική σχέση: f(s) = 0, για κάθε κατάσταση s, βάθους 1. Για να υπολογίσεις το f(s), για κάθε κατάσταση s, βάθους d, θεώρησε όλες τις καταστάσεις r, βάθους d-1 : Αν g(r,α) = fail, για κάθε α, µην κάνεις τίποτα, ιαφορετικά, για κάθε σύµβολο α, έτσι ώστε g(r,α)= s, τότε: o Θέσε state = f(r) o Εκτέλεσε την εντολή state f(state), έως ότου g(state, α) fail o Θέσε f(s)= g(state, α) Οι αλγόριθµοί κατασκευής των συναρτήσεων failure-function, και goto δίνονται στη συνέχεια

18 Construction of the goto function Input: P={p 1,p 2,.p k Output: goto function newstate 0 for i 1 until k do enter p i % enter(p) inserts into the goto graph a path that spells out p for all α such that g(0,α)= fail do g(0,α) 0 end procedure enter (α 1,α 2, α m ) state 0; j 1; while g(state, α j ) fail do state g(state, α j ) j j+1 end for p j until m do newstate newstate+1 g(state, α p ) newstate state newstate end output(state) {α 1, α 2, α m Construction of the failure function Input: goto function & output function Output: failure function queue empty for each α such that g(0,α)= s 0 do queue queue {s f(s) 0 end while queue empty do let r be the next state in queue queue queue {r for each α such that g(r,α) s fail do queue queue {s state f(r) while g(state, α) = fail do state f(state) f(s) g(state, α) output (s) output(s) output(f(s)) end end end Πολυπλοκότητα: Αν το σύνολο των προτύπων έχει συνολικό µήκος n, ενώ το µήκος της ακολουθίας εισόδου είναι m, o αλγόριθµος Aho-Corasick απαιτεί O(n) χρόνο για τη δηµιουργία του αυτοµάτου σε ένα προ-επεξεργαστικό βήµα και O(m+k) χρόνο αναζήτησης, όπου k, το πλήθος των εµφανίσεων των προτύπων στην ακολουθία. 2.5 Εφαρµογές των αλγορίθµων ακριβούς ταιριάσµατος προτύπου στην Ανάλυση Ακολουθιών Βιολογικών εδοµένων Κλείνοντας σε αυτό το σηµείο την αναφορά µας σε αλγορίθµους ακριβούς ταιριάσµατος προτύπου θα αναφέρουµε ορισµένες από τις εφαρµογές τους στην Ανάλυση Ακολουθιών Βιολογικών εδοµένων. Η πρώτη εφαρµογή αναφέρεται στην αναζήτηση Sequence-taggedsite (STS) & Expressed Sequence Tags (ESTs) σε ακολουθίες γονιδιωµάτων. Χωρίς να µπαίνουµε σε βιολογικές λεπτοµέρειες, τα STS, αποτελούν τµήµατα του DNA µήκους νουκλεοτιδίων, των οποίων τα αριστερά και δεξιά άκρα µήκους νουκλεοτιδίων το καθένα

19 εµφανίζονται µοναδικά κατά µήκος ενός γονιδιώµατος και άρα έχουν χαρακτηριστική σηµασία για το γονιδίωµα αναφοράς/ µελέτης. Ένας από τους πρώτους στόχους του Human Genome Project, ήταν η χαρτογράφηση επιλεγµένων STS, και σε ένα δεύτερο επίπεδο η αναζήτηση ESTs, τα οποία προέρχονται από mrna & cdna ακολουθίες και αντιπροσωπεύουν τα τµήµατα κωδικοποίησης µιας πρωτεΐνης σε µια ακολουθία γονιδίων. Η χρήση αυτοµάτων αναζήτησης προτύπων (όπως το Aho-Corasick Automaton), αποτελούν άµεση εφαρµογή των προηγούµενων µεθόδων. Η δεύτερη εφαρµογή αναφέρεται στην αναζήτηση «κανονικών εκφράσεων» (regular expressions) σε βιολογικές ακολουθίες. Μια «κανονική έκφραση» αποτελεί ένα γενικευµένο σχήµα έκφρασης προτύπων (patterns) που εµφανίζουν δοµική οµοιότητα (ως προς την ακολουθία των συµβόλων που περιλαµβάνουν). Η Βάση εδοµένων PROSITE, αποτελεί την κύρια Βάση εδοµένων, αποθήκευσης σηµαντικών προτύπων σε πρωτεΐνες. Για παράδειγµα η κανονική έκφραση: [ED]-[EN]-L-[SAN]-x-x-[DE]-x-E-L, κωδικοποιεί ένα σύνολο λέξεων, µήκους 10 χαρακτήρων, όπου κάθε θέση διαχωρίζεται από τις άλλες µε χρήση παύλας -, ενώ τα κεφαλαία γράµµατα αντιπροσωπεύουν αµινοξέα, και τα κεφαλαία γράµµατα που αποθηκεύονται σε αγκύλες περιλαµβάνουν πιθανά αµινοξέα, όπου 1 επιλέγεται µόνο για κάθε θέση. Ένα αποδεκτό πρότυπο είναι το ENLSSEDEEL. Η χρήση αλγορίθµων αναζήτησης προτύπων αποτελούν ακόµα µια άµεση εφαρµογή στον εντοπισµό δεκτών προτύπων, όπως αυτά καθορίζονται από µια κανονική έκφραση, κατά µήκος ακολουθιών πρωτεϊνών. Η πολυπλοκότητα επίλυσης του προβλήµατος είναι O(n*m), όπου n το µήκος της κανονικής έκφρασης και m το µήκος της πρωτεϊνικής ακολουθίας

20 Βιβλιογραφικές Αναφορές 1. D.Gusfield. Algorithms on strings, trees and sequences. Cambridge University Press R. Baeza-Yates and G.H. Gonnet. A new approach to text searching. Communications of the ACM, Vol. 35, pp , R.S. Boyer and J.S. Moore, A fast string searching algorithm, Communications of the ACM, Vol. 20, pp , D.E. Knuth, J. Morris, V.R. Pratt, Fast Pattern Matching in strings, SIAM Journal of Computing, Vol. 6 (1), pp ,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης

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

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

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

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

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

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

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

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

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

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

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

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

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

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

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

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

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

Κεφάλαιο 4 ο : Αλγόριθµοι προσεγγιστικής εύρεσης προτύπου και στοίχισης συµβολοσειρών. Κεφάλαιο 4 ο : Αλγόριθµοι προσεγγιστικής εύρεσης προτύπου και στοίχισης. Στα πλαίσια αυτού του κεφαλαίου παρουσιάζουµε τους βασικούς αλγορίθµους προσεγγιστικής εύρεσης προτύπου και στοίχισης. Όπως ήδη

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

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

ΤΕΙ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΒΛΑΧΟΥ ΖΑΧΑΡΟΥΛΑ ΓΙΩΤΙΤΣΑ ΑΝΝΑ ΒΙΟΠΛΗΡΟΦΟΡΙΚΗ Επιβλέπων καθηγητής:κωνσταντακόπουλος Φώτης ΑΡΤΑ 2009-2010 1 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1...4 Εισαγωγή...4

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

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

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

Λύσεις 4ης Σειράς Ασκήσεων

Λύσεις 4ης Σειράς Ασκήσεων Λύσεις 4ης Σειράς Ασκήσεων Άσκηση 1 Αναγάγουμε τν Κ 0 που γνωρίζουμε ότι είναι μη-αναδρομική (μη-επιλύσιμη) στην γλώσσα: L = {p() η μηχανή Turing Μ τερματίζει με είσοδο κενή ταινία;} Δοσμένης της περιγραφής

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

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

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

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6 Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

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

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

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

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

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

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

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

Σειρά Προβλημάτων 1 Λύσεις

Σειρά Προβλημάτων 1 Λύσεις Σειρά Προβλημάτων Λύσεις Άσκηση Έστω αλφάβητο Σ και γλώσσες Λ, Λ επί του αλφάβητου αυτού. Να διερευνήσετε κατά πόσο ισχύει κάθε μια από τις πιο κάτω σχέσεις. Σε περίπτωση που μια σχέση ισχύει να το αποδείξετε,

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

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

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

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

ΑΣΚΗΣΗ 4η Αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών

ΑΣΚΗΣΗ 4η Αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών ΑΣΚΗΣΗ 4η Αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών ΕΙΣΑΓΩΓΗ Η αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών (database similarity searching) αποτελεί µια από τις συχνότερα χρησιµοποιούµενες

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

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

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

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

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

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

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 13: Διαδικασία Σχεδιασµού Ακολουθιακών Κυκλωµάτων (Κεφάλαιο 6.

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 13: Διαδικασία Σχεδιασµού Ακολουθιακών Κυκλωµάτων (Κεφάλαιο 6. ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 13: Διαδικασία Σχεδιασµού Ακολουθιακών Κυκλωµάτων (Κεφάλαιο 6.3) ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy)

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Ενδεικτικές απαντήσεις 1 ου σετ ασκήσεων. Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του χρόνου εκτέλεσης τριών

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

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

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

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1.

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1. Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα 2): Αυτόµατα Στοίβας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Μη Κανονικές Γλώσσες Το Λήµµα της Αντλησης για τις

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα.

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα. Σύνοψη Προηγούµενου Κανονικές Γλώσσες (3) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς (Ντετερµινιστική) Κλειστότητα Κανονικών Γλωσσών ως προς Ενωση. Κατασκευή: DFA

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

5. Μέθοδοι αναγνώρισης εκπαίδευση χωρίς επόπτη

5. Μέθοδοι αναγνώρισης εκπαίδευση χωρίς επόπτη 5. Μέθοδοι αναγνώρισης εκπαίδευση χωρίς επόπτη Tο πρόβληµα του προσδιορισµού των συγκεντρώσεων των προτύπων, όταν δεν είναι γνωστό το πλήθος τους και η ταυτότητα των προτύπων, είναι δύσκολο και για την

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

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

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ Κείμενα Ν. Μ. Σγούρος (sgouros@unipi.gr) Επεξεργασία Κειμένων Αναζήτηση Ακολουθιακή Αναζήτηση, Δομές Trie Συμπίεση Huffmann Coding, Run-Length Encoding, Burrows- Wheeler Κρυπτογράφηση

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

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ο αλγόριθμος ταξινόμησης Radix Sort -Δυο εκδοχές: Most Significant Digit (MSD) και Least Significant

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσ.h.m.μ.y. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές Στάθης Ζάχος Συνεργασία: Κωστής Σαγώνας Επιμέλεια:

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

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

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

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

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

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

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

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

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

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

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

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

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

Μηχανές Turing (T.M) I

Μηχανές Turing (T.M) I Μηχανές Turing (T.M) I Οι βασικές λειτουργίες μιας TM είναι: Διάβασε το περιεχόμενο του τρέχοντος κυττάρου Γράψε 1 ή 0 στο τρέχον κύτταρο Κάνε τρέχον το αμέσως αριστερότερο ή το αμέσως δεξιότερο κύτταρο

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

Ενότητα 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): επιστρέφει

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

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

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

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

Ν!=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 το παραγοντικό

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες () Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Πεπερασμένα Αυτόματα (Κεφάλαιο., Sipser) Ορισμός πεπερασμένων αυτομάτων και ορισμός του

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

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

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

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

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

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

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

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

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

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

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

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης Ανάλυση Αλγορίθµων Είσοδος Αλγόριθµος Έξοδος Περιγραφή και Υλικό Ανάγνωσης Χρόνος εκτέλεσης (.) Ψευδοκώδικας (.) Μέτρηση των στοιχειωδών πράξεων (.) Ασυµπτωτική σηµειογραφία (.2) Ασυµπτωτική ανάλυση (.2)

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

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

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

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

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

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

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

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

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

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

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου

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

ΕΠΛ 232 Φροντιστήριο 2

ΕΠΛ 232 Φροντιστήριο 2 Πρόβληµα ΕΠΛ Φροντιστήριο Έχετε 0 και θέλετε να τις επενδύσετε για n µήνες. Tην πρώτη µέρα κάθε µήνα έχετε µόνο µια από τις παρακάτω τρεις επιλογές:. Να αγοράσετε ένα πιστοποιητικό αποταµίευσης από την

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

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

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

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

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

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

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

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

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

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1 Αναζήτηση σε Γράφους Μανόλης Κουμπαράκης ΥΣ02 Τεχνητή Νοημοσύνη 1 Πρόλογος Μέχρι τώρα έχουμε δει αλγόριθμους αναζήτησης για την περίπτωση που ο χώρος καταστάσεων είναι δένδρο (υπάρχει μία μόνο διαδρομή

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

Βασική Εφικτή Λύση. Βασική Εφικτή Λύση

Βασική Εφικτή Λύση. Βασική Εφικτή Λύση Αλγεβρική Μορφή Γενική Μορφή Γραµµικού Προγραµµατισµού n µεταβλητών και m περιορισµών Εστω πραγµατικοί αριθµοί a ij, b j, c i R µε 1 i m, 1 j n Αλγεβρική Μορφή Γενική Μορφή Γραµµικού Προγραµµατισµού n

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

Γραµµατικές για Κανονικές Γλώσσες

Γραµµατικές για Κανονικές Γλώσσες Κανονικές Γραµµατικές Γραµµατικές για Κανονικές Γλώσσες Ταξινόµηση Γραµµατικών εξιά Παραγωγικές Γραµµατικές εξιά Παραγωγικές Γραµµατικές και NFA Αριστερά Παραγωγικές Γραµµατικές Κανονικές Γραµµατικές Γραµµατικές

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

3 Αναδροµή και Επαγωγή

3 Αναδροµή και Επαγωγή 3 Αναδροµή και Επαγωγή Η ιδέα της µαθηµατικής επαγωγής µπορεί να επεκταθεί και σε άλλες δοµές εκτός από το σύνολο των ϕυσικών N. Η ορθότητα της µαθηµατικής επαγωγής ϐασίζεται όπως ϑα δούµε λίγο αργότερα

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

Λειτουργική γονιδιωµατική. 6ο εργαστήριο

Λειτουργική γονιδιωµατική. 6ο εργαστήριο Λειτουργική γονιδιωµατική 6ο εργαστήριο Λειτουργική γονιδιωµατική Προσπαθεί να κατανοήσει τις λειτουργίες των βιολογικών µορίων, σε επίπεδο ολόκληρου του γονιδιώµατος. Γίνονται µετρήσεις για το σύνολο

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013 Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013 Λυμένες Ασκήσεις Σετ Α: Ανάλυση Αλγορίθμων Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του

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

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

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

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

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { ww w {a,b}* }. (β) Να διατυπώσετε την τυπική περιγραφή

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

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00 Χρήστος. Ζαρολιάγκης Τεχνολογίες Υλοποίησης Αλγορίθµων : Άσκηση 1 1 Ασκηση 1 [16.03.2016] Παράδοση : Τετάρτη 13.04.2016, 13:00 Η παρούσα άσκηση αφορά στον έλεγχο διµερότητας ενός γραφήµατος. Σκοπός της

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

Κεφάλαιο 3β. Ελεύθερα Πρότυπα (µέρος β)

Κεφάλαιο 3β. Ελεύθερα Πρότυπα (µέρος β) Κεφάλαιο 3β Ελεύθερα Πρότυπα (µέρος β) Ο σκοπός µας εδώ είναι να αποδείξουµε το εξής σηµαντικό αποτέλεσµα. 3.3.6 Θεώρηµα Έστω R µια περιοχή κυρίων ιδεωδών, F ένα ελεύθερο R-πρότυπο τάξης s < και N F. Τότε

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

Προγραµµατισµός στην Basic

Προγραµµατισµός στην Basic Προγραµµατισµός στην Basic 1. εντολή εισόδου Χρησιµοποιείται η εντολή INPUT, η οποία µπορεί να συνταχθεί : α. INPUT X, αν το δεδοµένο που ζητάει είναι αριθµητικό ή β. INPUT X$, αν το δεδοµένο που ζητάει

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ. μπλ 2014

ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ. μπλ 2014 ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ μπλ 2014 Έχουμε G = (V,E) μη κατευθυνόμενο γράφο με μη αρνητικές χωρητικότητες c e για κάθε e E. {(s 1, t 1 ),..., (s k, t k )} διακριτά διατεταγμένη ζεύγη

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

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

ιαφάνειες παρουσίασης #4

ιαφάνειες παρουσίασης #4 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης #4!Λοιπές εντολές!

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

Εισαγωγή στον Προγραµµατισµό. Ανάλυση (ή Επιστηµονικοί8 Υπολογισµοί)

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

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

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD Σε ορισµένες περιπτώσεις είναι ιδιαίτερα χρήσιµη η δηµιουργία ιστοσελίδων ενηµερωτικού περιεχοµένου οι οποίες στη συνέχεια µπορούν να δηµοσιευθούν σε κάποιο τόπο

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

Σε αυτό το µάθηµα. Εισαγωγή στις Μηχανές Turing. Μηχανή Turing (Turing Machine - TM) Μηχανές Turing. Παραδείγµατα Μηχανών Turing

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

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

Αριθµητική Γραµµική ΑλγεβραΚεφάλαιο 4. Αριθµητικός Υπολογισµός Ιδιοτιµών 2 Απριλίου και2015 Ιδιοδιανυσµάτων 1 / 50

Αριθµητική Γραµµική ΑλγεβραΚεφάλαιο 4. Αριθµητικός Υπολογισµός Ιδιοτιµών 2 Απριλίου και2015 Ιδιοδιανυσµάτων 1 / 50 Αριθµητική Γραµµική Αλγεβρα Κεφάλαιο 4. Αριθµητικός Υπολογισµός Ιδιοτιµών και Ιδιοδιανυσµάτων ΕΚΠΑ 2 Απριλίου 205 Αριθµητική Γραµµική ΑλγεβραΚεφάλαιο 4. Αριθµητικός Υπολογισµός Ιδιοτιµών 2 Απριλίου και205

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

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop. Η δοµή «Shift register» 1. Η δοµή «Shift register» εισάγεται στο βρόγχο for-loop αλλά και σε άλλους βρόγχους που θα δούµε στη συνέχεια, όπως ο βρόγχος «While loop». Ο τρόπος εισαγωγής και λειτουργίας της

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

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 (α) Ο αλγόριθµος χρησιµοποιεί τη διαδικασία DFS(v) η οποία, ως γνωστό, επισκέπτεται όλους τους κόµβους που είναι συνδεδεµένοι µε τον κόµβο v. Για να µετρήσουµε

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

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Κεφάλαιο 3 Αλγόριθµοι Τυφλής Αναζήτησης Τεχνητή Νοηµοσύνη - Β' Έκδοση Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Σακελλαρίου Αλγόριθµοι Τυφλής Αναζήτησης Οι αλγόριθµοι τυφλής αναζήτησης (blind

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΕΠΛ 035 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΗΛΕΚΤΡΟΛΟΓΟΥΣ ΜΗΧΑΝΙΚΟΥΣ ΚΑΙ ΜΗΧΑΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακαδηµαϊκό έτος 2017-2018 Υπεύθυνος εργαστηρίου: Γεώργιος

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

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING)

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING) ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING) Κατακερµατισµός Στόχος Έχουµε ένα σύνολο από κλειδιά {Κ 0,, Κ n-1 } και θέλουµε να υλοποιήσουµε Insert() και LookUp() (ίσως και Delete()) απλά και γρήγορα στην πράξη.

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

Σύνθεση Data Path. ιασύνδεσης. Μονάδες. Αριθµό Μονάδων. Τύπο Μονάδων. Unit Selection Unit Binding. λειτουργιών σε. Μονάδες. Αντιστοίχιση µεταβλητών &

Σύνθεση Data Path. ιασύνδεσης. Μονάδες. Αριθµό Μονάδων. Τύπο Μονάδων. Unit Selection Unit Binding. λειτουργιών σε. Μονάδες. Αντιστοίχιση µεταβλητών & Data Path Allocation Σύνθεση Data Path Το DataPath είναι ένα netlist που αποτελείται από τρεις τύπους µονάδων: (α) Λειτουργικές Μονάδες, (β) Μονάδες Αποθήκευσης και (γ) Μονάδες ιασύνδεσης Αριθµό Μονάδων

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

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

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

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

Εισαγωγή στους αλγορίθμους Βιοπληροφορικής. Στοίχιση αλληλουχιών

Εισαγωγή στους αλγορίθμους Βιοπληροφορικής.  Στοίχιση αλληλουχιών Στοίχιση αλληλουχιών Σύνοψη Καθολική στοίχιση Μήτρες βαθμολόγησης Τοπική στοίχιση Στοίχιση με ποινές εισαγωγής κενών Από την LCS στη στοίχιση: αλλαγές στη βαθμολόγηση Το πρόβλημα της Μεγαλύτερης Κοινής

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

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

Μοντελοποίηση προβληµάτων

Μοντελοποίηση προβληµάτων Σχεδιασµός Αλγορίθµων Ακέραιος προγραµµατισµός Αποδοτικοί Αλγόριθµοι Μη Αποδοτικοί Αλγόριθµοι Σχεδιασµός Αλγορίθµων Ακέραιος προγραµµατισµός Αποδοτικοί Αλγόριθµοι Μη Αποδοτικοί Αλγόριθµοι Θεωρία γράφων

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25) Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 5) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Βραχύτερα Μονοπάτια για όλα τα Ζεύγη Λύση υναµικού Προγραµµατισµού Ο αλγόριθµος των Floyd-Warshal ΕΠΛ 3

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