Διαχρονικότητα
Χρονικές Βάσεις Δεδομένων Βάσεις Δεδομένων Χρόνου Δοσοληψίας (Transaction Time) Διατηρούν την ιστορία της δραστηριότητάς τους. Κάθε δοσοληψία με τη Βάση Δεδομένων προσδιορίζεται με μία χρονική ένδειξη. Είναι εφικτή η προσπέλαση διαφορετικών χρονικών στιγμιοτύπων της Βάσης Δεδομένων. Βάσεις Δεδομένων Ισχύοντος Χρόνου (Valid Time) Διατηρούν αντικείμενα που μία συνιστώσα τους υποδηλώνει χρονικά στιγμιότυπα. Το σύνολο των τιμών αυτών αποθηκεύουν τις τωρινές γνώσεις για το παρόν, το παρελθόν ή ακόμα και το μέλλον των αποθηκευμένων αντικειμένων. Διχρονικές Βάσεις Δεδομένων (Bitemporal) Αποτελούν συνδυασμό των δύο παραπάνω κατηγοριών. Αναπαριστούν την πραγματικότητα επιρέποντας είτε αναδρομικές είτε εκ των υστέρων αλλαγές.
Βάσεις Δεδομένων Χρόνου Δοσοληψίας Χρονική Εξέλιξη
Βάσεις Δεδομένων Ισχύοντος Χρόνου Χρονική Εξέλιξη
Διχρονικές Βάσεις Δεδομένων Χρονική Εξέλιξη
Διαχρονικότητα-Έννοιες Δομές Δεδομένων Εφήμερες i Διαχρονικές Μόνο μία εκδοχή Μερικώς ii+1i+2 Γραμμική ακολουθία εκδοχών Πλήρως i i+1i+4i+2 Δεντρική δομή εκδοχών Συνενωτικώς i i+4i+2 i+3 i+5i+5 i+6 DAG εκδοχών i+3
α) fat-node β) node-copying Δύο γενικές μέθοδοι για διασυνδεμένες δομές : πεπερασμένο σύνολο κόμβων με σταθερό αριθμό πεδίων (δεδομένα και δείκτες) σταθερό αριθμό κόμβων εισόδου Χώρος=Ο(1)/ενημερ. Χρόνος=Ο(logm)/ενημερ.ή προσπέλαση Επιμερισμένος Χώρος=Ο(1)/ενημέρωση Μετατροπή Εφήμερης Δομής σε Μερικώς Διαχρονική ([Driscoll et al. 89])
Πεδία Δεικτών Πεδία Πληροφορίας Πεδία Δεικτών Πεδία Πληροφορίας Επιπλέον Πεδία i Τιμή Πεδίου Εφήμερος Κόμβος Διαχρονικός Κόμβος έκδοση κόμβου Fat Node Μέθοδος Ονομα Πεδίου Έκδοση
Node-Copying Μέθοδος Κόμβοι περιορισμένης χωρητικότητας: όταν ο κόμβος γεμίσει δημιουργούμε νέο αντίγραφο του κόμβου ενημέρωση πεδίου Επειδή πρέπει να είναι εφικτή η προσπέλαση ενός νέου κόμβου πρέπει να αντιγράψουμε τους άμεσους προγόνους του η μέθοδος δίνει ένα σταθερό επιμερισμένο κόστος όταν ο βαθμός εισόδου κάθε κόμβου είναι φραγμένος, με την υπόθεση ότι ο επιπλέον αριθμός των προστιθεμένων φύλλων είναι αρκετά μεγάλος
Ιστορία του Προβλήματος Στην εργασία [Driscoll et al.89] παρουσιάστηκε μία γενική μεθοδολογία για μετατροπή κάθε διασυνδεδεμένης φραγμένου βαθμού εφήμερης δομής σε πλήρως διαχρονική με O(1) επιμερισμένο κόστος ανά ενημέρωση και O(1) κόστος χειρότερης περίπτωσης ανά προσπέλαση. Στην εργασία [Dietz 89] παρουσιάστηκε μία γενική μεθοδολογία για μετατροπή κάθε εφήμερης δομής, στο RAM μοντέλο υπολογισμού σε πλήρως διαχρονική με O(loglogm) επιμερισμένο κόστος ανά πράξη. Στην εργασία [Driscoll et al.94] παρουσιάστηκε ένας αλγόριθμος για τη δημιουργία πλήρως διαχρονικών steques με O(1) κόστος για κάθε πράξη εκτός από την catenate (O(loglogm)) επιμερισμένο κόστος ανά πράξη. Στην εργασία [Buchsbaum &Tarjan 95] παρουσιάστηκε ένας αλγόριθμος για τη δημιουργία συνενωτικώς διαχρονικών deques με O(1) κόστος για κάθε πράξη, εκτός από τις pop,eject (O(log * m)) Στην εργασία [Kaplan &Tarjan95] παρουσιάστηκε μία μέθοδος για τη δημιουργία συνενωτικώς διαχρονικών deques με O(1) κόστος ανά πράξη.
Νέες Τεχνικές Data Structural Bootstrapping Δομική Αποσύνδεση (Structural Decomposition ) Δομική Αφαίρεση (Structural Abstraction) Πλεοναστική Αναπαράσταση Μετρητών Αναδρομική Επιβράδυνση Φραγμένη Διάδοση Επαναζυγιστικών Πράξεων σε Ισοζυγισμένα Δέντρα με Δακτυλοδείκτες
Συστήματα Αρίθμησης
Διπλοουρές (Deques)
Διαχρονικές Διπλοουρές
Πολυπλοκότητα Συστημάτων Αρίθμησης Το χρονικό κόστος των πράξεων που υποστηρίζουν οι μετρητές είναι ανάλογο του αριθμού των ψηφίων που αλλάζουν. Επιτρεπόμενες Πράξεις σε μετρητή με k bits Επιμερισμένη Πολυπλοκότητα Πολυπλοκότητα Χειρότερης Περίπτωσης Αύξηση κατά 1O(1)O(k) Μείωση κατά 1O(1)O(k) Αυξηση και μείωση κατά 1 O(k)
Εξήγηση Ασφαλής κατάσταση ενός ψηφίου ορίζεται εκείνη η τιμή του που δεν επιτρέπει τη διάδοση μιας πράξης στο επόμενο ψηφίο. Η παραπάνω παρατήρηση δικαιολογεί γιατί τα (2,3)-δέντρα έχουν επιμερισμένο κόστος για πράξεις ενημέρωσης O(logn) ενώ τα (2,4)-δέντρα έχουν επιμερισμένο κόστος O(1). Η αύξηση κατά 1 έχει ασφαλής κατάσταση το 0. Η μείωση κατά 1 έχει ασφαλής κατάσταση το 1. Και οι δύο πράξεις μαζί δεν έχουν ασφαλή κατάσταση.
Ορισμοί Έστω x N Δυαδική Αναπαράσταση του x: d n,..,d 0, d i {0,1}, x= Πλεοναστική ΔΑ: d n,..,d 0, d i {-l,..,k}, k+l 1 x= Κάθε αριθμός έχει μία μοναδική ΔΑ αλλά μπορεί να έχει πολλές ΠΔΑ. π.χ = = = Μερικές από τις ΠΔΑ είναι ασφαλείς (μπορούν να αυξηθούν ή να μειωθούν κατά 1 σε σταθερό χρόνο χειρότερης περίπτωσης). Στόχος Η εύρεση ενός κατάλληλου σχήματος ώστε ξεκινώντας από μία ασφαλή ΠΔΑ ενός αριθμού x να εκτελούνται μία σειρά από μοναδιαίες αυξήσεις και μειώσεις μέσα από ασφαλής ΠΔΑ του x (σε O(1) χρόνο).
Πλεοναστικά Συστήματα Μέτρησης: Η αύξηση κατά 1 Χρήση 3 ψηφίων {0,1,2}, όπου το 2 αναπαριστά κρατούμενο. Ένας πλεοναστικός μετρητής είναι κανονικοποιημένος όταν μεταξύ δύο ψηφίων με τιμή 2 υπάρχει ένα ψηφίο με τιμή 0 και το πρώτο από LSB ψηφίο με τιμή διάφορη του 1 είναι μηδενικό. Fix(d j ) Αν d j = 2 τότε d j = 0 και d j+1 = d j+1 +1 Αύξηση(x) 1.x = x+1 2.Έστω i = min{j:d j 1} 3.Fix(d i )
Εναλλακτικός τρόπος: Αναπαράσταση κατά ομάδες Η δυσκολία είναι η διάδοση ενός κρατούμενου διαμέσου μίας ομάδας από 1 και αντίστοιχα η διάδοση ενός υπολοίπου διαμέσου μίας ομάδας από 0. Ιδέα: Υλοποίησε τη διάδοση διαμέσου μίας ομάδας σε Ο(1) χρόνο.
Αύξηση κατά 1 σε Οποιοδήποτε Ψηφίο Απαιτούμε την υλοποίηση σε O(1) χρόνο χειρότερης περίπτωσης της πράξης πρόσθεσης κατά μία ποσότητα 2 i. Κάθε ψηφίο είναι υποψήφιο για αύξηση και άρα κάθε ψηφίο θα πρέπει να γνωρίζει αν μετά από αυτό ακολουθεί ένα ψηφίο με τιμή 2. Οι ομάδες της μορφής (από MSB σε LSB) θα πρέπει να αναγνωρίζονται κατά τη διάρκεια των πράξεων.
Παρατηρήσεις Πλεοναστικές αναπαραστάσεις υπάρχουν για κάθε βάση. Στις skewed δυαδικές αναπαραστάσεις αριθμών το i-οστό ψηφίο έχει βάρος 2 i+1 -1 ενώ υπάρχουν τρία ψηφία. Πολύ εύκολη αύξηση και μείωση κατά 1 αλλά δύσκολη πρόσθεση. Στη μείωση κατά 1 το σύνολο ψηφίων θα είναι {-1,0,1}, όπου το -1 αναπαριστά ένα υπόλοιπο. Για την υλοποίηση μείωσης και αύξησης κατά 1 σε χρόνο O(1) απαιτούνται τέσσερα ψηφία {-1,0,1,2}.
Εφαρμογές στο VLSI Τα πλεοναστικά συστήματα αρίθμησης έχουν εφαρμοστεί για την αποδοτική υλοποίηση προσθετών και πολλαπλασιαστών από τις αρχές της δεκαετίας του ’70. +Η πολυπλοκότητα της πρόσθεσης γίνεται Ο(1) στη χειρότερη περίπτωση. -Η υλοποίηση ενός τέτοιου σχήματος έχει μεγάλο κόστος και είναι δύσκολος ο έλεγχος.
Δέντρα Εύρεσης με Δακτυλοδείκτες Διατήρηση μιας ακολουθίας διατεταγμένων στοιχείων υποστηρίζοντας τις εξής πράξεις:
Μία απλή λύση Level Linked (2,4)-δέντρα Insert: O(logn) χειρότερη περίπτωση, O(1) επιμερισμένη Delete: O(logn) χειρότερη περίπτωση, O(1) επιμερισμένη Search: O(logd) χειρότερη περίπτωση
Γνωστά Αποτελέσματα
The splitting algorithm Algorithm for insertion 1. Insert the new key into the bucket B. Assume that pointer r B points to node v. 2. If v is big (degree > b) then split it into two small nodes (degree less than b). 3. If v is the root of the tree, split unconditionally bucket B into two buckets and set r B to point to B’s father. Otherwise set r B to point to father(v).
The proof technique The proof must ensure that the degree of the internal nodes is bounded. It is proved that each internal node cannot have more than 2b children. Thus the resulting tree is an (a,2b)-tree. The proof is based on the following observation: A big node is always split into two small nodes and these nodes are not re-split before their father is checked and found to be small (or made small by a splitting).This can be proved by a simple coloring argument.
Worst Case Efficient Priority Queues
Overview of complexity Bounds
Fast Meldable Priority Queues (WADS 1995) Gerth Stolting Brodal This paper was the first to achieve constant time melding while all the other operations have the complexities given above.
Brodal’s Solution T A straightforward recursive application of Fleischer’s structure gives a finger search tree with insertion time. Brodal applies the idea of Fleischer on the tree T, exploiting the properties of binary counters to locate the internal node to split.
Main Features of the Structure 1.A new splitting algorithm for insertions 2.An incremental node splitting mechanism 3.A mechanism for maintaining ancestor pointers from the leaves of the tree 4.Auxiliary structures attached to the nodes, for the effective implementation of finger searching 5.An algorithm for the effective implementation of deletions
A new splitting algorithm Every leaf has an attached binary counter The internal nodes of height h have degree Insertion 1.Increase the counter of leaf l and copy it to the new leaf l’ 2.Find the first (from LSB to MSB) digit of the counter that is set (let it be h) 3.Split the h-th ancestor of l if it has degree
The Proof Technique The technique for proving an upper bound for the degree of a node is based in the definition of a suitable potential function. The definition of the potential for a leaf l and a node v is: Inductively: From (1) and the fact that the degree of a height h node is Δ h we get that the height of T is loglogn-O(1) and the degree of any node is at most: (1)
Incremental Node Splitting Split nodes in advance by introducing intermediate nodes of degree: The intermediate level 1 nodes of degree are represented by a pair of nodes that is split into two nodes when we have to split the node
Finding Level h Ancestors Represent each counter by a stack of intervals of 1s. With each interval (i,j) in store a pointer to the j+1-st ancestor of l. In worst case constant time we can update and find the h-th ancestor.
Potential Problems How to copy the stacks in constant time. The solution is to use purely functional implementations of stacks. Splitting a node v can make some stacks to contain wrong pointers. It can be proved that the algorithm still works, since the degree of each height h node can be bounded from above by
The Final Finger Search Tree (Insertions Only) Level linking Suppose that when we descend the levels of the tree the time for finding the right child is logarithmic in the degree of the nodes, Then the time cost will be: We store the intermediate nodes of any node of the tree in a constant update time search tree (e.g. the structure of Fleischer or Levcopoulos-Overmars). So a finger search tree that handles insertions (only) in worst case constant time has been developed.
How to Support Deletions; Deletions are implemented as in (a,b)-trees by performing a cascading sequence of fusion and share steps. So, the time complexity of the deletion will be bounded from above by the height of the tree. If we choose then the height of the tree will be:
Two Problems due to Deletions 1.Due to the fusions steps some counters will point to “non-existing” nodes. The change of all these pointers needs huge time cost. Solution: Mark nodes as dead.
Two Problems due to Deletions (continue) 2.The quantity changes when the nodes v, v’ fuse. If the fusion of v,v´ makes big the degree of v´ we have to split it. After the split we want the potential of v´ to remain unchanged. We achieve this by transferring at least children from v´ to v´´. We achieve constant time splitting and fusing by creating a layer of intermediate nodes with degree at least and at most
The Final Search Tree It can be proved by induction that: The previously described algorithm guarantee that every node of height h will have a degree of at least and at most We can insert elements in constant time and delete elements in time
How we create a finger search tree? There is a PM data structure that implements finger search tree supporting worst case constant time insertions and deletions and finger searches in O(loglogn+logd) time.
Final Solution All level 1 intermediate nodes are structured according to the above described solution. We also use level linking. Theorem: There is a finger search tree that supports finger searches in O(logd) time, insertions in Ο(1) time and deletions in time.
Space Complexity Since deletions need time and insertions constant time we may need at most space. This is caused from the dead nodes and the stacks of the deleted leaves. Is it possible to have linear space? We can achieve linear space by using the global rebuilding technique. Except the basic structure we build incrementally a new tree. When the new tree is ready, delete the old structure and use only the new. The new structure to be ready after N insertions and deletions
Νέα Ισοζυγισμένα Δέντρα με Δακτυλοδείκτες ΈνθεσηΟ(1) ΔιαγραφήΟ(1) ΨάξιμοΟ(logd) Χρόνος Χειρότερης Περίπτωσης Μοντέλο Μηχανής Δεικτών Κόμβοι μεταβλητού βαθμού Χρήση Συστοιχιών (Components) Κόμβων Πολλαπλή διάσπαση και συγχώνευση κόμβων Αυξητική (προ)επεξεργασία
Κόμβοι Μεταβλητού Βαθμού Κόμβοι ύψους i έχουν βαθμό [a i : a i 3 ] Τα παιδιά κάθε κόμβου αποθηκεύονται σε δέντρα εύρεσης α i = 9α i-1 2
Συστοιχίες (Components) Κόμβων Μηχανισμός για προσδιορισμο θέσης επαναζύγισης Συστοιχία=διαμέριση εσωτερικών κόμβων σε υποδέντρα
Πράξεις Ενημέρωσης Insert(p,e) r=component root create-leaf(p,e) break(r) rebalance(r) Delete(p) r=component root remove-leaf(p,e) break(r) rebalance(r) r p r break(r)
Επαναζύγιση(r) degree(r)>3a i 2 link(r) διάσπασε r σε το πολύ a i κόμβους βαθμού [a i 2 : 3a i 2 ] r multi-split(r) degree(r)<a i 2 v G: break(v), G συνολικός βαθμός [a i 2 : 3a i 2 ] Συγχώνευσε τον r με όλους τους κόμβους του G, link(r) r fusion group G Multi-fusion ( r )
Αυξητική (Προ)Επεξεργασία block New/old node group New/old node Blocks (ζεύγη) Nodes (ζεύγη) Splitting Groups Fusion Groups (ζεύγη) Fusion/splitting group records
Ανοιχτά Προβλήματα Απλούστερη κατασκευή; Άμεση λύση με δυαδικό δέντρο; Άμεση λύση με (a,b)-δέντρα; Συστοιχίες χρήσιμες για άλλα προβλήματα;