Augmenting Data Structures Dynamic Order Statistics 86 22

  • Slides: 26
Download presentation
Augmenting Data Structures, Dynamic Order Statistics Клишин Алексей, 86 м 22 Линева Татьяна, 85

Augmenting Data Structures, Dynamic Order Statistics Клишин Алексей, 86 м 22 Линева Татьяна, 85 м 1 Макарова Татьяна, 85 м 1

7 Алгоритм вставки RB_INSERT(T, z) 1) y = nil[T] 2) x = root [T]

7 Алгоритм вставки RB_INSERT(T, z) 1) y = nil[T] 2) x = root [T] 3) while x ≠ nil[T] 4) do y = x 5) if key [z] < key [x] 6) if y = nil [T] 7) then x = left [x] 8) else x = right [x] 9) p[x] = y 10) then root [T] = z 11) else if key [z] < key [y] 12) then left [y] = z 13) else right [y] = z 14) left [z] = nil [T] 15) right [z] = nil [T] 16) color [z] = RED 17) RB_INSERT_FIXUP(T, z)

8 Алгоритм вставки RB_INSERT_FIXUP(T, z) 1) while color [p[z]] = RED 2) do if

8 Алгоритм вставки RB_INSERT_FIXUP(T, z) 1) while color [p[z]] = RED 2) do if p[z] = left [p[p[z]]] 3) then y = right [p[p[z]]] 4) if color [y] = RED 5) then color [p[z]] = BLACK 1 6) color [y] = BLACK 1 7) color [p[p[z]]] = RED 1 8) z = p[p[z]] 1 9) else if z = right [p[z]] 10) then z = p[z] 2 11) LEFT_ROTATE(T, z) 2 12) color [p[z]] = BLACK 3 13) color [p[p[z]]] = RED 3 14) RIGHT_ROTATE(T, p[p[z]]) 3 15) else (то же, что и в “then”, с заменой left на right и наоборот) 16) color [root[T]] = BLACK Красный предок, красный "дядя"

9 Алгоритм вставки RB_INSERT_FIXUP(T, z) 1) while color [p[z]] = RED 2) do if

9 Алгоритм вставки RB_INSERT_FIXUP(T, z) 1) while color [p[z]] = RED 2) do if p[z] = left [p[p[z]]] 3) then y = right [p[p[z]]] 4) if color [y] = RED 5) then color [p[z]] = BLACK 1 6) color [y] = BLACK 1 7) color [p[p[z]]] = RED 1 8) z = p[p[z]] 1 9) else if z = right [p[z]] 10) then z = p[z] 2 11) LEFT_ROTATE(T, z) 2 12) color [p[z]] = BLACK 3 13) color [p[p[z]]] = RED 3 14) RIGHT_ROTATE(T, p[p[z]]) 3 15) else (то же, что и в “then”, с заменой left на right и наоборот) 16) color [root[T]] = BLACK Красный предок, черный"дядя"

20 Поддержка размера поддеревьев LEFT_ROTATE(T, x) … 13) size[y] = size[x] 14) size[x] =

20 Поддержка размера поддеревьев LEFT_ROTATE(T, x) … 13) size[y] = size[x] 14) size[x] = size[left[x]] + size[right[x]] + 1

24 График производительности. Вставка элемента Время, clocks 60000000 Количество элементов в дереве 50000000 40000000

24 График производительности. Вставка элемента Время, clocks 60000000 Количество элементов в дереве 50000000 40000000 30000000 Время, clocks 20000000 1 11 21 31 41 51 61 71 81 91 101 111 121 131 141 151 161 171 181 191 201 211 221 231 241 251 261 271 281 291 301 311 321 331 341 351 361 371 381 391 401 411 0 Intel Core i 5 -2520 M CPU 2. 50 Ghz 8. 00 GB Ram, Win 7 x 64

0 3271908 10600776 11129256 14007744 14298875 15448599 15553483 15865206 16597450 16840386 17403412 18083547 17819814

0 3271908 10600776 11129256 14007744 14298875 15448599 15553483 15865206 16597450 16840386 17403412 18083547 17819814 18536611 20533719 19943654 20674685 21166877 20814794 20664635 20862215 20678653 20949366 21304258 21913997 21544524 21827538 21745744 22384093 23515381 23613974 23484213 24355978 25231529 24038141 24116978 24613903 24550762 25388697 25381256 24705967 24891585 Количество эелментов в дереве 25 График производительности. Удаление элемента Время работы, clocks 30000000 25000000 20000000 15000000 Время работы 10000000 5000000 Intel Core i 5 -2520 M CPU 2. 50 Ghz 8. 00 GB Ram, Win 7 x 64

26 Список литературы 1. Кормен Т. , Лейзерсон Ч. , Ривест Р. Алгоритмы: построение

26 Список литературы 1. Кормен Т. , Лейзерсон Ч. , Ривест Р. Алгоритмы: построение и анализ. — М. : МЦНМО, 2002. 2. Lecture 11: Augmenting Data Structures, Dynamic Order Statistics, Interval Trees // MITOPENCOURSEWARE Massachusetts Institute Of Technology. – URL: http: //ocw. mit. edu/courses/electrical-engineeringand-computer-science/6 -046 j-introduction-to-algorithms-sma-5503 -fall 2005/video-lectures/lecture-11 -augmenting-data-structures-dynamicorder-statistics-interval-trees/ 3. Работа со структурами данных в языках Си и Python: Часть 9. Красночерные деревья // IBM. – URL: http: //www. ibm. com/developerworks/ru/library/l-data_structures_09/ 4. Красно-чёрные деревья (Red black trees) в ядре Linux//rf. Linux. – URL: http: //rflinux. blogspot. com/2011/10/red-black-trees-linux_16. html