Persistent Data Structures Version Control Ephemeral v 0

  • Slides: 9
Download presentation
Persistent Data Structures (Version Control) Ephemeral v 0 Partial persistence version list Full persistence

Persistent Data Structures (Version Control) Ephemeral v 0 Partial persistence version list Full persistence version tree v 0 Confluently persistence version DAG v 0 Purely functional v 0 car cdr update v 1 v 2 v 3 v 4 v 5 v 6 update & query v 1 query only query v 1 v 2 v 3 v 6 v 4 v 5 never modify only create new pairs only DAGs v 1 v 2 v 3 v 5 updates at leaves any version can be copied query all versions update/merge/query all versions Retroactive v 0 v 1 v 2 v 3 update & query all versions updates in the past propragate v 4 1

Planar Point Location T 1 T 2 T 3 update T 4 T 5

Planar Point Location T 1 T 2 T 3 update T 4 T 5 T 6 O(n∙log n) preprocessing, O(log n) query T 7 Partial persistent search trees 2

Path Copying (trees) root pointer c a c f d f g e 3

Path Copying (trees) root pointer c a c f d f g e 3

Partial Persistence § Version ID = time = 0, 1, 2, . . .

Partial Persistence § Version ID = time = 0, 1, 2, . . . § Fat node (any data structure) field 1: (0, x) (3, y) (7, z) – record all updates in node field 2: (0, a) (14, c) (16, b) (version, value) pairs – field updates O(1) – field queries predecessor wrt version id (search tree/v. EB) § Node copying (O(1) degree data structures) – Persistent node = collection of nodes, each valid for an interval of versions, with extra updates, = max indegree – pointers must have subinterval of the node pointing to; otherwise copy and insert pointers (cacading copying) NB: Needs to keep track of back-pointers [0, 8[ field 1: field 2: (0, x) (3, y) [8, 13[ field 1: (8, z) (10, w) [13, [ field 1: (13, w) (q 5, y) (0, a) (7, c) field 2: (8, c) (9, d) field 2: (13, e) (14, c) 4

Full Persistence 1 4 increasing version 7 3 5 2 1 preorder traversal 6

Full Persistence 1 4 increasing version 7 3 5 2 1 preorder traversal 6 4 7 5 3 6 2 Version list (order maintenance data structure) Version tree (numbers = version ids) § Fat node field: (1, x) (7, z) (5, x) (6, y) (2, x) – Updates (1, x) (6, y) (7, z) to a field – Queries = binary search among versions – Update (7, z): Insert 7 as leftmost child of 4; insert pairs for 7 and 5=succ(7) § Node splitting (≥ 2 ekstra fields) [0, [ [4, 3[ field 1: (1, a) (4, b) (3, a) (2, c) field 2: (1, f) (7, g) (5, f) [0, 5[ [5, 3[ [4, 5[ [5, [ split field 1: (1, a) (4, b) field 1: (5, b) (3, a) (2, c) version 5 field 2: (1, f) (7, g) field 2: (5, f) 5

Persistence Techniques [N. Sarnak, R. E. Tarjan, Planar point location using persistent search trees,

Persistence Techniques [N. Sarnak, R. E. Tarjan, Planar point location using persistent search trees, Communications of the ACM, 29(7), 669 -679, 1986] § Partial persistence, trees, O(1) access, amortized O(1) update [J. R. Driscoll, N. Sarnak, D. D. Sleator, R. E. Tarjan, Making Data Structures Persistent, Journal of Computer and System Sciences, 38(1), 86 -124, 1989] § Partial & full persistence, O(1) degree data structures, O(1) access, amortized O(1) update [P. F. Dietz, R. Raman, Persistence, Amortization and Randomization. Proceedings 2 nd Annual ACM-SIAM Symposium on Discrete Algorithms, 78 -88, 1991] [G. S. Brodal, Partially Persistent Data Structures of Bounded Degree with Constant Update Time, Nordic Journal of Computing, volume 3(3), pages 238 -255, 1996] § Partial persistence, O(1) degree data structures, O(1) access & updates update [P. F. Dietz, Fully Persistent Arrays. Proceedings 1 st Workshop on Algorithms and Data Structures, LNCS 382, 67 -74, 1989] § Full persistence, RAM structures, O(loglog n) access, O(loglog n) amortized expected updates 6

Comparison of Persistence Techniques § Copy data structure for each version – no query

Comparison of Persistence Techniques § Copy data structure for each version – no query overhead, slow updates & wastes a lot of space § Record updates & keep current version – fast updates & queries to current version, space efficient, slow queries in the past § Path copying – applies to trees, no query overhead, space overhead = depth of update § Fat node – partial persistence: O(1) updates and space optimal, loglog n query overhead – full persistence: O(loglog n) expected amortized updates and space optimal, loglog n query overhead § Node copying/splitting – fast updates & queries (amortized updates for full persistence) – only works for pointer-based structures with O(1) degree 7

Fractional Cascading § Basic Idea : 2 x Bin. Search 1 Bin. Search +

Fractional Cascading § Basic Idea : 2 x Bin. Search 1 Bin. Search + O(1) L 1 2 5 8 11 21 25 27 31 33 42 L 2 5 8 12 14 17 19 20 35 37 41 L 2 catalog graph § Build bridges (and pointers to nearest original element) § Searches to next list : Traverse nearest bridge § Construction : Repeatedly create bridges until all gaps O(1) nodes 2 5 8 11 18 14 20 21 25 27 31 33 41 42 bridges 5 8 12 14 17 19 20 27 35 37 § Generalizes to catalog graphs of degree O(1) 41 8

Fractional Cascading Techniques [Bernard Chazelle, Leonidas J. Guibas, Fractional Cascading: I. A Data Structuring

Fractional Cascading Techniques [Bernard Chazelle, Leonidas J. Guibas, Fractional Cascading: I. A Data Structuring Technique, Algorithmica, 1(2): 133 -162, 1986. ] [Bernard Chazelle, Leonidas J. Guibas: Fractional Cascading: II. Applications. Algorithmica 1(2): 163 -191 (1986)] § Static fractional cascading, O(1) worst-case access [Kurt Mehlhorn, Stefan Näher: Dynamic Fractional Cascading. Algorithmica 5(2): 215 -241 (1990)] § Dynamic fractional cascading, O(loglog N) worst-case access, amortized insert and delete § Insertion or deletion only, O(1) per worst-case access, amortized insert or delete 9