Αλγόριθμοι «διαίρει και βασίλευε»

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

ΜΑΘΗΜΑΤΙΚΑ ΚΑΤΕΥΘΥΝΣΗΣ
Απαντήσεις Προόδου II.
Αντισταθμιστική ανάλυση Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Σημειώσεις : Χρήστος Μουρατίδης
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Εισαγωγή στην επιστήμη των υπολογιστών
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A εισαγωγή αναζήτησηεπιλογή διατεταγμένος πίνακας.
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Ο Αλγόριθμος FP-Growth. Αλγόριθμος FP-Growth Ο αλγόριθμος χρησιμοποιεί μια συμπιεσμένη αναπαράσταση της βάσης των συναλλαγών με τη μορφή ενός FP-δέντρου.
ΤΜΗΥΠ / ΕΕΣΤ1 Μάθημα 8 ο Ανίχνευση Ακμών. ΤΜΗΥΠ / ΕΕΣΤ2 Εισαγωγή (1)  Οι ακμές είναι βασικά χαρακτηριστικά της εικόνας Προς το παρόν δεν υπάρχει ακόμα.
Αλγόριθμοι και Πολυπλοκότητα
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Γραφήματα & Επίπεδα Γραφήματα
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Δυναμικός Προγραμματισμός
Προσεγγιστικοί Αλγόριθμοι
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Τυχαιοκρατικοί Αλγόριθμοι TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA Πιθανότητες και Αλγόριθμοι Ανάλυση μέσης.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ουρά Προτεραιότητας: Heap
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Διάλεξη 9η: Εφαρμογή της μεθόδου Simplex στο γραμμικό προγραμματισμό κατά τη μεγιστοποίηση Μέθοδος Simplex 1.Όταν υπάρχουν μέχρι πέντε κλάδοι παραγωγής.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Ο αλγόριθμος Bellman-Ford (επανεξετάζεται)
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Ελάχιστο Συνδετικό Δέντρο
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Χρονική Πολυπλοκότητα και Μοντέλα
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
ΤΜΗΥΠ / ΕΕΣΤ1 Μάθημα 8 ο Ανίχνευση Ακμών. ΤΜΗΥΠ / ΕΕΣΤ2 Εισαγωγή (1)  Οι ακμές είναι βασικά χαρακτηριστικά της εικόνας Προς το παρόν δεν υπάρχει ακόμα.
8-1 ΜΑΘΗΜΑ 8 ο Εισαγωγή στους Αλγόριθμους Ταξινόμησης.
JPEG Μια τεχνική συμπίεσης ακίνητης εικόνας. Η Τεχνική JPEG Αφορά συμπίεση ακίνητων εικόνων Είναι τεχνική συμπίεσης με απώλειες Το πρόβλημα είναι η εκάστοτε.
Διάλεξη 14: Εισαγωγή στη ροή ρευστών
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Δυναμικός Κατακερματισμός
Δομές Δεδομένων 2η Διάλεξη Αλγόριθμοι Ένωσης-Εύρεσης (Union-Find)
Επίλυση Προβλημάτων με Αναζήτηση
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

Αλγόριθμοι «διαίρει και βασίλευε»

Σύνοψη Ο αλγόριθμος MergeSort Εύρεση του μεσαίου σημείου της μήτρας στοίχισης σε γραμμικό χώρο Στοίχιση αλληλουχιών με χρήση γραμμικού χώρου Στοίχιση μπλοκ Η επιτάχυνση των Τεσσάρων Ρώσων Κατασκευή της LCS σε υποδευτεροβάθμιο χρόνο

Αλγόριθμοι «διαίρει και βασίλευε» «Διαίρει»: το πρόβλημα διαιρείται σε υποπροβλήματα «Βασίλευε»: τα υποπροβλήματα λύνονται αναδρομικά. Αν τα υποπροβλήματα είναι αρκετά μικρά, λύνονται με τον αλγόριθμο της ωμής βίας Συρραφή των λύσεων των υποπροβλημάτων σε μια λύση του αρχικού προβλήματος (περίπλοκο κομμάτι)

Επανεξέταση του προβλήματος της Ταξινόμησης Δίνεται: ένας μη ταξινομημένος πίνακας Στόχος: να ταξινομηθεί 5 2 4 7 1 3 6 1 2 3 4 5 6 7

Mergesort: βήμα «διαίρει» Βήμα 1 – Διαίρει 5 2 4 7 1 3 6 5 2 4 7 1 3 6 5 2 4 7 1 3 6 5 2 4 7 1 3 6 log(n) διαιρέσεις για να χωριστεί ένας πίνακας μεγέθους n στα μεμονωμένα στοιχεία του

Mergesort: βήμα «βασίλευε» Βήμα 2 – Βασίλευε 5 2 4 7 1 3 6 O(n) 2 5 4 7 1 3 6 O(n) 2 4 5 7 1 3 6 O(n) 1 2 3 4 5 6 7 O(n) O(n logn) logn επαναλήψεις, κάθε επανάληψη απαιτεί χρόνο O(n). Συνολικός χρόνος:

Mergesort: βήμα συρραφής Βήμα 3 – Συρραφή 2 πίνακες μεγέθους 1 μπορούν εύκολα να συγχωνευθούν για να σχηματίσουν έναν ταξινομημένο πίνακα μεγέθους 2 2 ταξινομημένοι πίνακες μεγέθους n και m, αντίστοιχα, μπορούν να συγχωνευθούν σε χρόνο O(n+m) για να σχηματίσουν έναν ταξινομημένο πίνακα μεγέθους n+m 5 2

Mergesort: βήμα συρραφής Συρραφή 2 πινάκων μεγέθους 4 2 4 5 7 1 3 6 2 4 5 7 3 6 1 1 2 4 5 7 2 3 6 4 5 7 3 6 1 2 1 2 3 4 5 7 6 κλπ… 1 2 3 4 1 2 3 4 5 6 7

Ο αλγόριθμος Merge Merge(a,b) n1  μέγεθος πίνακα a n2  μέγεθος πίνακα b an1+1   an2+1   i  1 j  1 for k  1 to n1 + n2 if ai < bj ck  ai i  i +1 else ck  bj j j+1 return c

Mergesort: παράδειγμα 20 4 7 6 1 3 9 5 Διαίρει 20 4 7 6 1 3 9 5 20 4 7 6 1 3 9 5 7 1 3 9 5 20 4 6 4 20 6 7 1 3 5 9 Βασίλευε 4 6 7 20 1 3 5 9 1 3 4 5 6 7 9 20

Ο αλγόριθμος MergeSort MergeSort(c) n  μέγεθος πίνακα c if n = 1 return c left  λίστα με τα πρώτα n/2 στοιχεία του c right  λίστα με τα τελευταία n-n/2 στοιχεία του c sortedLeft  MergeSort(left) sortedRight  MergeSort(right) sortedList  Merge(sortedLeft,sortedRight) return sortedList

MergeSort: χρόνος εκτέλεσης Το πρόβλημα απλοποιείται σε μικρά βήματα Για την i-οστή επανάληψη συγχώνευσης, η πολυπλοκότητα του προβλήματος είναι O(n) Το πλήθος των επαναλήψεων είναι O(log n) Χρόνος εκτέλεσης: O(n logn)

Μέθοδος «διαίρει και βασίλευε» για την LCS Path(source, sink) if(οι κορυφές source & sink βρίσκονται σε διαδοχικές στήλες) output τη μεγαλύτερη διαδρομή από source προς sink else middle ← η μεσαία κορυφή μεταξύ των source & sink Path(source, middle) Path(middle, sink)

Μέθοδος «διαίρει και βασίλευε» για την LCS Path(source, sink) if(οι κορυφές source & sink βρίσκονται σε διαδοχικές στήλες) output τη μεγαλύτερη διαδρομή από source προς sink else middle ← η μεσαία κορυφή μεταξύ των source & sink Path(source, middle) Path(middle, sink) Το μόνο πρόβλημα που απομένει είναι πώς να βρούμε τη «μεσαία κορυφή»!

Ο υπολογισμός της διαδρομής στοίχισης απαιτεί δευτεροβάθμια μνήμη Διαδρομή στοίχισης Η χωρική πολυπλοκότητα για τον υπολογισμό της διαδρομής στοίχισης για αλληλουχίες μήκους n και m είναι O(nm) Πρέπει να αποθηκεύσουμε όλους τους δείκτες οπισθοδρόμησης στη μνήμη για να ανακατασκευάσουμε τη διαδρομή (οπισθοδρόμηση) m n

Υπολογισμός βαθμολογίας της στοίχισης με χρήση γραμμικής μνήμης Βαθμολογία στοίχισης Η χωρική πολυπλοκότητα για τον υπολογισμό μόνο της βαθμολογίας είναι O(n) Χρειαζόμαστε μόνο την προηγούμενη στήλη για να υπολογίσουμε την τρέχουσα στήλη, και μπορούμε να «απαλλαγούμε» από την προηγούμενη στήλη μόλις ολοκληρώσουμε τη χρήση της 2 n n

Υπολογισμός βαθμολογίας της στοίχισης: ανακύκλωση στηλών Μόνο δύο στήλες βαθμολογιών αποθηκεύονται σε οποιαδήποτε χρονική στιγμή η μνήμη για τη στήλη 1 χρησιμοποιείται για τον υπολογισμό της στήλης 3 η μνήμη για τη στήλη 2 χρησιμοποιείται για τον υπολογισμό της στήλης 4

Περνώντας από τη μεσαία γραμμή Θέλουμε να υπολογίσουμε τη μεγαλύτερη διαδρομή από την κορυφή (0,0) προς την κορυφή (n, m) που διέρχεται από την κορυφή (i, m/2), όπου το i παίρνει τιμές από 0 έως n και αναπαριστά την i-οστή γραμμή Ορίζουμε το length(i) ως το μήκος της μεγαλύτερης διαδρομής μεταξύ των (0,0) και (n, m) που διέρχεται από την κορυφή (i, m/2) m/2 m n (i, m/2) prefix(i) suffix(i)

Περνώντας από τη μεσαία γραμμή m/2 m n (i, m/2) prefix(i) suffix(i) Ορίζουμε το (mid, m/2) ως την κορυφή όπου η μεγαλύτερη διαδρομή τέμνει τη μεσαία στήλη length(mid) = βέλτιστο μήκος = max0i n length(i)

Υπολογισμός του prefix(i) Το prefix(i) είναι το μήκος της μεγαλύτερης διαδρομής μεταξύ των (0,0) και (i, m/2) Υπολογίζουμε το prefix(i) με δυναμικό προγραμματισμό στο αριστερό μισό της μήτρας αποθήκευση στήλης prefix(i) 0 m/2 m

Υπολογισμός του suffix(i) Το suffix(i) είναι το μήκος της μεγαλύτερης διαδρομής μεταξύ των (i, m/2) και (n, m) Το suffix(i) είναι το μήκος της μεγαλύτερης διαδρομής μεταξύ των (n, m) και (i, m/2) με όλες τις ακμές αντεστραμμένες Υπολογίζουμε το suffix(i) με δυναμικό προγραμματισμό στο δεξιό μισό της «αντεστραμμένης» μήτρας αποθήκευση στήλης suffix(i) 0 m/2 m

length(i) = prefix(i) + suffix(i) Προσθέτουμε τα prefix(i) και suffix(i) για να υπολογίσουμε το length(i): length(i)=prefix(i) + suffix(i) Έχουμε πλέον τη μεσαία κορυφή της μέγιστης διαδρομής (i, m/2) ως μέγιστο του length(i) i μεσαίο σημείο 0 m/2 m

Εύρεση του μεσαίου σημείου 0 m/4 m/2 3m/4 m

Εύρεση του μεσαίου σημείου ξανά 0 m/4 m/2 3m/4 m

Και ξανά 0 m/8 m/4 3m/8 m/2 5m/8 3m/4 7m/8 m

Χρόνος = εμβαδόν: πρώτο πέρασμα Στο πρώτο πέρασμα, ο αλγόριθμος καλύπτει ολόκληρο το εμβαδόν (Area) Area = nm

Χρόνος = εμβαδόν: πρώτο πέρασμα Στο πρώτο πέρασμα, ο αλγόριθμος καλύπτει ολόκληρο το εμβαδόν (Area) Area = nm Υπολογισμός prefix(i) Υπολογισμός suffix(i)

Χρόνος = εμβαδόν: δεύτερο πέρασμα Στο δεύτερο πέρασμα, ο αλγόριθμος καλύπτει μόνο το 1/2 εμβαδόν Area/2

Χρόνος = εμβαδόν: τρίτο πέρασμα Στο τρίτο πέρασμα, καλύπτεται μόνο το 1/4. Area/4

Γεωμετρική μείωση σε κάθε επανάληψη 1 + ½ + ¼ + ... + (½)k ≤ 2 Χρόνος εκτέλεσης: O(Area) = O(nm) 5ο πέρασμα: 1/16 3ο πέρασμα: 1/4 1ο πέρασμα : 1 4ο πέρασμα: 1/8 2ο πέρασμα: 1/2

Μπορούμε να στοιχίσουμε αλληλουχίες σε υποδευτεροβάθμιο χρόνο; Ο δυναμικός προγραμματισμός απαιτεί O(n2) για καθολική στοίχιση Μπορούμε να βελτιώσουμε την απόδοση; Ναι, με χρήση της επιτάχυνσης των Τεσσάρων Ρώσων

Διαμέριση αλληλουχιών σε μπλοκ Το πλέγμα n x n διαμερίζεται σε μπλοκ μεγέθους t x t Συγκρίνουμε δύο αλληλουχίες μεγέθους n, και κάθε αλληλουχία χωρίζεται σε τμήματα μήκους t το καθένα Η αλληλουχία u = u1…un γίνεται |u1…ut| |ut+1…u2t| … |un-t+1…un| και η αλληλουχία v = v1…vn γίνεται |v1…vt| |vt+1…v2t| … |vn-t+1…vn|

Διαμέριση πλέγματος στοίχισης σε μπλοκ n/t n t t n n/t διαμέριση

Στοίχιση μπλοκ Στοίχιση μπλοκ των αλληλουχιών u και v: Προστίθεται ένα ολόκληρο μπλοκ Αφαιρείται ένα ολόκληρο μπλοκ Διαδρομή μπλοκ: μια διαδρομή που διατρέχει κάθε τετράγωνο t x t μέσω των γωνιών του

Στοίχιση μπλοκ: παραδείγματα αποδεκτό μη αποδεκτό

Το πρόβλημα της Στοίχισης Μπλοκ Στόχος: Βρείτε τη μεγαλύτερη διαδρομή μπλοκ σε ένα γράφημα μετασχηματισμού Είσοδος: Οι δύο αλληλουχίες u και v που έχουν διαμεριστεί σε μπλοκ μεγέθους t. Αυτό είναι ισοδύναμο με ένα γράφημα μετασχηματισμού n x n που έχει διαμεριστεί σε υποπλέγματα t x t Έξοδος: Η στοίχιση μπλοκ των u και v με τη μέγιστη βαθμολογία (δηλαδή η μεγαλύτερη διαδρομή μπλοκ στο γράφημα μετασχηματισμού)

Κατασκευή στοιχίσεων μέσα στα μπλοκ Προς επίλυση: υπολογίστε τη βαθμολογία στοίχισης ßi,j για κάθε ζεύγος μπλοκ |u(i-1)*t+1…ui*t| και |v(j-1)*t+1…vj*t| Πόσα μπλοκ υπάρχουν ανά αλληλουχία; (n/t) μπλοκ μεγέθους t Πόσα ζεύγη μπλοκ απαιτούνται για τη στοίχιση των δύο αλληλουχιών; (n/t) x (n/t) Για κάθε ζεύγος μπλοκ, λύστε ένα πρόβλημα μίνι στοίχισης με μέγεθος t x t

Κατασκευή στοιχίσεων μέσα στα μπλοκ n/t Επίλυση προβλημάτων μίνι στοίχισης Κάθε μικρό τετράγωνο αναπαριστά ένα ζεύγος μπλοκ

Στοίχιση μπλοκ: δυναμικός προγραμματισμός Έστω ότι το si,j συμβολίζει τη βέλτιστη βαθμολογία στοίχισης μπλοκ ανάμεσα στα πρώτα i τμήματα της u και τα πρώτα j τμήματα της v Το block είναι η ποινή για την προσθήκη ή αφαίρεση ενός ολόκληρου μπλοκ Το i,j είναι η βαθμολογία του ζεύγους μπλοκ στη γραμμή i και τη στήλη j si-1,j - block si,j-1 - block si-1,j-1 - i,j si,j = max

Στοίχιση μπλοκ: χρόνος εκτέλεσης Οι δείκτες i, j παίρνουν τιμές από 0 έως n/t Ο χρόνος εκτέλεσης του αλγορίθμου είναι O( [n/t]*[n/t]) = O(n2/t2) αν δεν μετρήσουμε το χρόνο για τον υπολογισμό κάθε i,j

Στοίχιση μπλοκ: χρόνος εκτέλεσης (συνέχεια) Ο υπολογισμός όλων των i,j απαιτεί την επίλυση (n/t)*(n/t) μίνι στοιχίσεων μπλοκ, μεγέθους (t*t) η καθεμία Άρα, ο υπολογισμός όλων των i,j απαιτεί χρόνο O([n/t]*[n/t]*t*t) = O(n2) Απαιτείται ίδιος χρόνος με το δυναμικό προγραμματισμό Πώς μπορούμε να επιταχύνουμε;

Η τεχνική των Τεσσάρων Ρώσων Έστω t = log(n), όπου t είναι το μέγεθος μπλοκ, n είναι το μέγεθος αλληλουχίας. Αντί να έχουμε (n/t)*(n/t) μίνι στοιχίσεις, κατασκευάζουμε 4t x 4t μίνι στοιχίσεις για όλα τα ζεύγη των συμβολοσειρών με t νουκλεοτίδια (τεράστιο μέγεθος), και τις αποθηκεύουμε σε έναν πίνακα αναζήτησης. Όμως, το μέγεθος του πίνακα αναζήτησης δεν είναι πραγματικά τόσο μεγάλο αν η τιμή του t είναι μικρή. Έστω t = (logn)/4. Τότε, 4t x 4t = n

Πίνακας αναζήτησης για την τεχνική των Τεσσάρων Ρώσων AAAAAA AAAAAC AAAAAG AAAAAT AAAACA … κάθε αλληλουχία έχει t νουκλεοτίδια Πίνακας αναζήτησης “Score” AAAAAA AAAAAC AAAAAG AAAAAT AAAACA … το μέγεθος είναι μόνο n, αντί για (n/t)*(n/t)

Νέα σχέση επανάληψης Ο νέος πίνακας αναζήτησης Score δεικτοδοτείται από ένα ζεύγος συμβολοσειρών με t νουκλεοτίδια, άρα si-1,j - block si,j-1 - block si-1,j-1 – Score(i-οστό block της v, j-οστό μπλοκ της u) si,j = max

Επιτάχυνση των Τεσσάρων Ρώσων: χρόνος εκτέλεσης Αφού ο υπολογισμός του πίνακα αναζήτησης Score με μέγεθος n απαιτεί χρόνο O(n), ο χρόνος εκτέλεσης περιορίζεται κυρίως από τις (n/t)*(n/t) προσπελάσεις στον πίνακα αναζήτησης Κάθε προσπέλαση απαιτεί χρόνο O(logn) Συνολικός χρόνος εκτέλεσης: O( [n2/t2]*logn ) Εφόσον ισχύει t = logn, αντικατάσταση στην: O( [n2/{logn}2]*logn) > O( n2/logn )

Μέχρι τώρα… Μπορούμε να χωρίσουμε το πλέγμα σε μπλοκ και να εκτελέσουμε δυναμικό προγραμματισμό μόνο στις γωνίες αυτών των μπλοκ Για να επιταχύνουμε τους υπολογισμούς των μίνι στοιχίσεων σε χρόνο λιγότερο από n2, δημιουργούμε έναν πίνακα αναζήτησης μεγέθους n, ο οποίος περιέχει όλες τις βαθμολογίες για όλα τα ζεύγη με t νουκλεοτίδια Ο χρόνος εκτέλεσης μειώνεται από δευτεροβάθμιος, O(n2), σε υποδευτεροβάθμιο: O(n2/logn)

Επιτάχυνση των Τεσσάρων Ρώσων για την LCS στοίχιση μπλοκ μεγαλύτερη κοινή υποαλληλουχία

Στοίχιση μπλοκ και LCS Στη στοίχιση μπλοκ, μας ενδιαφέρουν μόνο οι γωνίες των μπλοκ. Στην LCS, μας ενδιαφέρουν όλα τα σημεία πάνω στις ακμές των μπλοκ, επειδή η διαδρομή μπορεί να διατρέξει αυτά τα σημεία. Θυμηθείτε ότι κάθε αλληλουχία έχει μήκος n, κάθε μπλοκ έχει μέγεθος t, άρα κάθε αλληλουχία έχει (n/t) μπλοκ.

Στοίχιση μπλοκ και LCS: σημεία ενδιαφέροντος η στοίχιση μπλοκ έχει (n/t)*(n/t) = (n2/t2) σημεία ενδιαφέροντος η στοίχιση LCS έχει O(n2/t) σημεία ενδιαφέροντος

Διατρέχοντας μπλοκ για την LCS Με δεδομένες τις βαθμολογίες στοίχισης si,* στην πρώτη γραμμή και τις βαθμολογίες s*,j στην πρώτη στήλη ενός μίνι τετραγώνου t x t, πρέπει να υπολογίσουμε τις βαθμολογίες στοίχισης στην τελευταία γραμμή και στήλη του μίνι τετραγώνου. Για να υπολογίσουμε τη βαθμολογία της τελευταίας γραμμής και στήλης, χρησιμοποιούμε 4 μεταβλητές: τις βαθμολογίες στοίχισης si,* στην πρώτη γραμμή τις βαθμολογίες στοίχισης s*,j στην πρώτη στήλη την υποσυμβολοσειρά της αλληλουχίας u σε αυτό το μπλοκ (4t δυνατές επιλογές) την υποσυμβολοσειρά της αλληλουχίας v σε αυτό το μπλοκ (4t δυνατές επιλογές)

Διατρέχοντας μπλοκ για την LCS (συνέχεια) Αν χρησιμοποιήσουμε αυτές τις πληροφορίες για να υπολογίσουμε το πλέγμα, θα απαιτείται δευτεροβάθμιος χρόνος O(n2), αλλά εμείς θέλουμε κάτι καλύτερο. ξέρουμε αυτές τις βαθμολογίες μπορούμε να υπολογίσουμε αυτές τις βαθμολογίες μπλοκ t x t

Επιτάχυνση των Τεσσάρων Ρώσων Κατασκευάζουμε έναν πίνακα αναζήτησης για όλες τις δυνατές τιμές των τεσσάρων μεταβλητών: όλες τις δυνατές βαθμολογίες για την πρώτη γραμμή si,* όλες τις δυνατές βαθμολογίες για την πρώτη στήλη s*,j την υποσυμβολοσειρά της αλληλουχίας u σε αυτό το μπλοκ (4t δυνατές επιλογές) την υποσυμβολοσειρά της αλληλουχίας v σε αυτό το μπλοκ (4t δυνατές επιλογές) Για κάθε τετράδα, αποθηκεύουμε την τιμή της βαθμολογίας για την τελευταία γραμμή και στήλη. Ο πίνακας θα είναι τεράστιος, αλλά μπορούμε να απαλείψουμε τις βαθμολογίες στοιχίσεων που δεν έχουν νόημα.

Μείωση του μεγέθους του πίνακα Οι βαθμολογίες στοίχισης στην LCS αυξάνονται μονοτονικά, και τα γειτονικά στοιχεία δεν μπορούν να διαφέρουν παραπάνω από 1 Παράδειγμα: το 0,1,2,2,3,4 είναι αποδεκτό το 0,1,2,4,5,8 δεν είναι, επειδή το 2 και το 4 διαφέρουν παραπάνω από 1 (και το ίδιο ισχύει για το 5 και το 8) Επομένως, χρειάζεται να αποθηκεύουμε μόνο τις τετράδες, οι βαθμολογίες των οποίων αυξάνονται μονοτονικά και διαφέρουν το πολύ κατά 1

Αποδοτική κωδικοποίηση των βαθμολογιών στοίχισης Αντί να αποθηκεύουμε αριθμούς που αντιστοιχούν στους δείκτες των αλληλουχιών u και v, μπορούμε να χρησιμοποιήσουμε δυαδικές τιμές για να κωδικοποιήσουμε τις διαφορές μεταξύ των βαθμολογιών στοίχισης αρχική κωδικοποίηση 1 2 3 4 1 δυαδική κωδικοποίηση

Μείωση του μεγέθους του πίνακα αναζήτησης 2t δυνατές βαθμολογίες (t = μέγεθος μπλοκ) 4t δυνατές συμβολοσειρές Το μέγεθος του πίνακα αναζήτησης είναι (2t * 2t)*(4t * 4t) = 26t Έστω t = (logn)/4 Το μέγεθος του πίνακα είναι: 26((logn)/4) = n(6/4) = n(3/2) Χρόνος = O( [n2/t2]*logn ) O( [n2/{logn}2]*logn) > O( n2/logn )

Περίληψη Εκμεταλλευτήκαμε το γεγονός ότι για κάθε μπλοκ μεγέθους t = log(n), μπορούμε να υπολογίσουμε εκ των προτέρων όλες τις δυνατές βαθμολογίες και να τις αποθηκεύσουμε σε έναν πίνακα αναζήτησης μεγέθους n(3/2) Χρησιμοποιήσαμε την επιτάχυνση των Τεσσάρων Ρώσων για να μειώσουμε το χρόνο εκτέλεση της LCS από δευτεροβάθμιο σε υποδευτεροβάθμιο: O(n2/logn)