Лекция №11. Работа с внешней памятью (файлами). Предмет...
-
Upload
nikolay-grebenshikov -
Category
Education
-
view
669 -
download
0
description
Transcript of Лекция №11. Работа с внешней памятью (файлами). Предмет...
Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Работа с внешней памятью
(файлами).
Николай Гребенщиков, 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(F1, F2, G1, G2, k)
1 outswitch← true � первая серия идет в G12 while not eof(F1) or not eof(F2)
3 do used[1]← 0; used[2]← 0; fin[1]← false; fin[2]← false;
4 cur[1]← get(1, f1, f2); cur[2]← get(2, f1, f2);
5 while not fin[1] or not fin[2]
6 do if fin[1]
7 then winner ← 2
8 else if fin[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])
15 cur[winner] = getRecord(winner)
16 outswitch = not outswitch
6
merge-sort(F, N)
1 k ← 1; switch← 0
2 while k < 2 ·N3 do if switch = 0
4 then F1← F [0, 0]; F2← F [0, 1];
5 G1← F [1, 0]; G2← F [1, 1];
6 else F1← F [1, 0]; F2← F [1, 1];
7 G1← F [0, 0]; G2← F [0, 1];
8 merge(F1, F2, 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.
n ≥ 1 + (t− 1)h∑
i=1
2ti−1 = 1 + 2(t− 1)
(th − 1
t− 1
)= 2th − 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 returnNIL
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