Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных" - Presentation Transcript

    1. Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Работа с внешней памятью (файлами). Николай Гребенщиков, www.grebenshikov.ru
    2. Модель внешних вычислений • Внешняя память разделяется на блоки - страницы. • Время доступа к внешней памяти. ОЗУ на 5 порядков быстрее. • Буфер в основной памяти. 1
    3. Обработка файлов • Внешняя сортировка • Хранение данных ориентированное на поиск 2
    4. Сортировка слиянием Идея: организовать файл в виде постепенно унивеличиваю- щихся серий. Серия - r1, . . . , rk , где ri ≤ ri+1, 1 ≤ i ≤ k Файл r1, . . . , rm делится на серии длинной k, если для i ≥ 0, таких что k · i ≤ m ⇒ rk(i−1)+1, rk(i−1)+2, . . . , rk·i является серией 3
    5. Файл с сериями длинной 3 2 5 7 78 98 101 2 3 4 3 67 4
    6. Работа сортировки слиянием 5
    7. merge(F 1, F 2, G1, G2, k) 1 outswitch ← true £ первая серия идет в G1 2 while not eof(F 1) or not eof(F 2) 3 do used[1] ← 0; used[2] ← 0; f in[1] ← f alse; f in[2] ← f alse; 4 cur[1] ← get(1, f 1, f 2); cur[2] ← get(2, f 1, f 2); 5 while not f in[1] or not f in[2] 6 do if f in[1] 7 then winner ← 2 8 else if f in[2] 9 then winner ← 1 10 else if cur[1].key < cur[2].key 11 else winner ← 2 12 if outswitch 13 then write(g1, cur[winner]) 14 else write(g2, cur[winner]) 6 15 cur[winner] = getRecord(winner) 16 outswitch = not outswitch
    8. merge-sort(F, N ) 1 k ← 1; switch ← 0 2 while k < 2 · N 3 do if switch = 0 4 then F 1 ← F [0, 0]; F 2 ← F [0, 1]; 5 G1 ← F [1, 0]; G2 ← F [1, 1]; 6 else F 1 ← F [1, 0]; F 2 ← F [1, 1]; 7 G1 ← F [0, 0]; G2 ← F [0, 1]; 8 merge(F 1, F 2, G1, G2, k) 9 k ←k·2 7
    9. Анализ сортировки слиянием C(N ) = M (N ) Tmerge(N ) = Θ(N ) Tmerge−sort(N ) = Θ(N ) · Θ(logN ) = Θ(N · logN ) 8
    10. На семинар • Многоканальное слияние • Многофазное слияние • Использование буферов при слиянии. Схемы с 6-ю и с 4-мя буферами. 9
    11. Хранение данных • Простой файл • Хэшированный файл • Индексированный файл: – разреженный индекс для отсортированного файла – плотный индекс для неотсортированного файла – вторичный индекс – деревья поиска 10
    12. B-дерево - сбалансироанное дерево поиска, созданное спе- циально для эффективной работы с вторичной памятью с непосредственный доступом (например, дисковой памятью). При анализе будем рассматривать: • количество обращений к диску • время вычислений 11
    13. B-дерево 12
    14. B-дерево T есть дерево с корнем root[T ], обладающее сле- дующими свойствами: • Каждый узел x содержит поля: n[x] - количество ключей в узле в настойщий момент; key1[x] ≤ . . . ≤ keyn[x][x] ; ло- гическое значение leaf [x] равное true, если x - лист. • c1[x], c2[x], . . . , cn[x]+1[x] указатели на дочерние узлы. • все листья расположены на одной глубине h. • t ≥ 2 - минимальная степень B-дерева. Для всех внутрен- них узлов кроме корневого n[x] ≥ t − 1. Для всех внутрен- них узлов n[x] ≤ 2t − 1 13
    15. Высота B-дерева T с n ≥ 1 узлами и минимальной стпенью t ≥ 2 не превышает logt(n + 1)/2. h th − 1 n ≥ 1 + (t − 1) 2ti−1 = 1 + 2(t − 1) = 2th − 1 ⇒ i=1 t−1 th ≥ (n + 1)/2 ⇒ h ≥ logt(n + 1)/2 14
    16. Поиск по B-дереву B Tree Search(x, k) 1 i←1 2 while i ≤ n[x] и k > keyi[x] 3 do i ← i + 1 4 if i ≤ n[x] и k = keyi[x] 5 then return(x, i) 6 if leaf [x] 7 then returnN IL 8 else Disk Read(ci[x]) 9 return B Tree Search(ci[x], k) 15
    17. Анализ времени поиска Количество обращений к диску равно O(h) = O(logtn) Время обработки: n[x] < 2t ⇒ T (n) = O(th) = O(t · logtn) 16
    18. Создание пустого B-дерева B Tree Create(T ) 1 x ← Allocate Node() 2 leaf [x] ← true 3 n[x] ← 0 4 Disk Write(x) 5 root[T ] ← x OPdisk = O(1) и T (n) = O(1) 17
    19. Вставка ключа в B-дерево 18
    20. Разбиение узла в B-дереве 19
    21. Разбиение корня в B-дереве 20
    22. Разбиение узла в B-дереве 21
    23. Вставка в B-дерево 22
    24. Вставка в B-дерево 23
    25. Анализ вставки в B-дерево Разбиение: OPdisk = O(1) и T (n) = O(t) Вставка: OPdisk = O(h) = O(logtn) и T (n) = O(th) = O(t · logtn) 24
    26. На семинар • Удаление из B-дерева. • B+ деревья. • Применение B-деревьев в файловых системах. 25
    27. Список литературы • Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. - М. : Издательский дом “Вильямс”, 2000. сс.311-338. • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. сс.515-536. • http://en.wikipedia.org/wiki/B-tree • http://en.wikipedia.org/wiki/B%2B tree 26
    SlideShare Zeitgeist 2009

    + Nikolay GrebenshikovNikolay Grebenshikov Nominate

    custom

    47 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 47
      • 47 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories