SlideShare a Scribd company logo
Хакасский государственный университет им. Н.Ф. Катанова

     Структуры и алгоритмы обработки данных

   Лекция: Работа с внешней памятью
                    (файлами).

       Николай Гребенщиков, www.grebenshikov.ru
Модель внешних вычислений


 • Внешняя память разделяется на блоки - страницы.


 • Время доступа к внешней памяти. ОЗУ на 5 порядков
   быстрее.


 • Буфер в основной памяти.




                                                     1
Обработка файлов


 • Внешняя сортировка


 • Хранение данных ориентированное на поиск




                                              2
Сортировка слиянием

Идея: организовать файл в виде постепенно унивеличиваю-
щихся серий.

Серия - 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
Файл с сериями длинной 3


2 5 7   78 98 101   2 3 4   3 67




                                   4
Работа сортировки слиянием




                             5
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
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
Анализ сортировки слиянием

C(N ) = M (N )

Tmerge(N ) = Θ(N )

Tmerge−sort(N ) = Θ(N ) · Θ(logN ) = Θ(N · logN )




                                                    8
На семинар


 • Многоканальное слияние


 • Многофазное слияние


 • Использование буферов при слиянии. Схемы с 6-ю и с
   4-мя буферами.




                                                9
Хранение данных


 • Простой файл


 • Хэшированный файл


 • Индексированный файл:

   – разреженный индекс для отсортированного файла

   – плотный индекс для неотсортированного файла

   – вторичный индекс

   – деревья поиска

                                                   10
B-дерево - сбалансироанное дерево поиска, созданное спе-
циально для эффективной работы с вторичной памятью с
непосредственный доступом (например, дисковой памятью).

При анализе будем рассматривать:


 • количество обращений к диску


 • время вычислений




                                                   11
B-дерево




           12
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
Высота 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
Поиск по 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
Анализ времени поиска

Количество обращений к диску равно O(h) = O(logtn)

Время обработки: n[x] < 2t ⇒ T (n) = O(th) = O(t · logtn)




                                                            16
Создание пустого 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
Вставка ключа в B-дерево




                           18
Разбиение узла в B-дереве




                            19
Разбиение корня в B-дереве




                             20
Разбиение узла в B-дереве




                            21
Вставка в B-дерево




                     22
Вставка в B-дерево




                     23
Анализ вставки в B-дерево

Разбиение: OPdisk = O(1) и T (n) = O(t)

Вставка: OPdisk = O(h) = O(logtn) и T (n) = O(th) = O(t · logtn)




                                                          24
На семинар


 • Удаление из B-дерева.


 • B+ деревья.


 • Применение B-деревьев в файловых системах.




                                                25
Список литературы


 • Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и
   алгоритмы. - М. : Издательский дом “Вильямс”, 2000.
   сс.311-338.


 • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-
   мы: построение и анализ, 2-е издание. - М. : Издатель-
   ский дом “Вильямс”, 2007. сс.515-536.


 • http://en.wikipedia.org/wiki/B-tree


 • http://en.wikipedia.org/wiki/B%2B tree

                                                    26

More Related Content

What's hot

Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Mikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
D-кучи и их применение
D-кучи и их применениеD-кучи и их применение
D-кучи и их применение
DEVTYPE
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Technopark
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
О-символика
О-символикаО-символика
О-символика
DEVTYPE
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
Nikolay Grebenshikov
 
Лекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимостиЛекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
Vladimir Parfinenko
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
Mikhail Kurnosov
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Mikhail Kurnosov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
Mikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Mikhail Kurnosov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
Mikhail Kurnosov
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Mikhail Kurnosov
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Nikolay Grebenshikov
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Technopark
 
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Mikhail Kurnosov
 

What's hot (20)

Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
D-кучи и их применение
D-кучи и их применениеD-кучи и их применение
D-кучи и их применение
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
О-символика
О-символикаО-символика
О-символика
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Лекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимостиЛекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимости
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
Лекция 9. Дерево ван Эмде Боаса (van Emde Boas tree)
 

Viewers also liked

Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 

Viewers also liked (8)

Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 

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

20101125 proof complexity_hirsch_lecture08
20101125 proof complexity_hirsch_lecture0820101125 proof complexity_hirsch_lecture08
20101125 proof complexity_hirsch_lecture08Computer Science Club
 
Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Mikhail Kurnosov
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
Mikhail Kurnosov
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
Mikhail Kurnosov
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
Python Meetup
 
ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3
Andrey Danilchenko
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Определенные интегралы
Определенные интегралыОпределенные интегралы
Определенные интегралы
daryaartuh
 
Определенные интеграллы
Определенные интеграллыОпределенные интеграллы
Определенные интеграллыdaryaartuh
 
алексей романенко
алексей романенкоалексей романенко
алексей романенкоkuchinskaya
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskell
husniyarova
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Обработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявленийОбработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявлений
corehard_by
 
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Technosphere1
 
практика 13
практика 13практика 13
практика 13student_kai
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
57b 1 гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с
57b 1  гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с57b 1  гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с
57b 1 гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с
rosgdz
 

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

20101125 proof complexity_hirsch_lecture08
20101125 proof complexity_hirsch_lecture0820101125 proof complexity_hirsch_lecture08
20101125 proof complexity_hirsch_lecture08
 
Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
Линейные многошаговые методы
Линейные многошаговые методыЛинейные многошаговые методы
Линейные многошаговые методы
 
ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
 
Определенные интегралы
Определенные интегралыОпределенные интегралы
Определенные интегралы
 
Определенные интеграллы
Определенные интеграллыОпределенные интеграллы
Определенные интеграллы
 
алексей романенко
алексей романенкоалексей романенко
алексей романенко
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskell
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Обработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявленийОбработка коллекций. Единая суть и множество проявлений
Обработка коллекций. Единая суть и множество проявлений
 
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
 
практика 13
практика 13практика 13
практика 13
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
57b 1 гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с
57b 1  гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с57b 1  гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с
57b 1 гдз. алгебра и начала анализа 11кл. колмогоров-2002 -221с
 

More from Nikolay Grebenshikov

Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Nikolay Grebenshikov
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Nikolay Grebenshikov
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 

More from Nikolay Grebenshikov (6)

Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 

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

  • 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
  • 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
  • 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
  • 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