Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 67
1. Mc tiêu
2. Kin thc c bn cn có hc chng này
3. Tài liu tham kho có liên quan n chng
4. Ni dung:
IV.1 - Mô hình x lý ngoài.
IV.2 - ánh giá các gii thut x lý ngoài.
IV.3 - Sp xp ngoài.
IV.4 - Lu tr thông tin trong tp tin.
Trong chng này chúng ta s nghiên cu hai vn chính là sp xp d liu c l
u trong
nh ngoài và k thut lu tr tp tin. Trong k thut lu tr tp tin chúng ta s s dng các cu trúc
liu tun t, bng bm, tp tin ch mc và cu trúc B-cây.
IV.1- MÔ HÌNH X LÝ NGOÀI
Trong các gii thut mà chúng ta ã cp t trc ti nay, chúng ta ã gi s rng s lng
các d liu vào là khá nh có th cha ht b nh trong (main memory). Nhng u gì s xy ra
u ta mun x lý phiu u tra dân s toàn quc hay thông tin v qun lý t ai c nc chng hn?
Trong các bài toán nh vy, s lng d liu vt quá kh nng lu tr ca b nh trong. có th
gii quyt các bài toán ó chúng ta phi dùng b nh ngoài lu tr và x lý. Các thit b lu tr
ngoài nh bng t, a tu có kh nng lu tr ln nhng c m truy nhp hoàn toàn khác vi b
nh trong. Chúng ta cn tìm các cu trúc d liu và gii thut thích hp cho vic x lý d liu lu tr
trên b nh ngoài.
Kiu d liu tp tin là kiu thích hp nht cho vic biu din d liu c lu trong b nh
ngoài. Hu hành chia b nh ngoài thành các khi (block) có kích thc bng nhau, kích thc này
thay i tùy thuc vào hu hành nhng nói chung là t 512 bytes n 4096 bytes.
Trong quá trình x lý, vic chuyn giao d liu gia b nh trong và b nh ngoài c tin
hành thông qua vùng nhm (buffer). Bm là mt vùng dành riêng ca b nh trong mà kích
thc bng vi kích thc ca mt khi ca b nh ngoài.
Có th xem mt tp tin bao gm nhiu mu tin c lu trong các khi . Mi khi lu mt s
nguyên vn các mu tin, không có mu tin nào b chia ct lu trên hai khi khác nhau.
ng dài k là mt tp hp k mu tin ã oc sp th t theo khoá tc là, nu các mu tin
r
1
, r
2
, ..., r
k
có khoá ln lt là k
1
, k
2
, ..., k
k
to thành mt ng thì k
1
k
2
... k
k
.
Cho tp tin cha các mu tin r
1
, r
2
, ..., r
n
, ta nói tp tin c t chc thành ng có dài k
u ta chia tp tin thành các n k mu tin liên tip và mi n là mt ng, n cui có th
không có k mu tin, trong trng hp này ta gi n y là uôi (tail).
Ví d 4-1: Tp tin gm 14 mu tin có khóa là các s nguyên c t chc thành 4 ng
trong hai tp tin G1, G2:
G1: 28 31 93 96 54 85 30 39 8 10 8 10 F1
G2: 3 5 10 40 9 65 13 90 69 77 22 F2
Bc 2: i vai trò ca F1 và G1, F2 và G2 cho nhau. Trn các ng dài 2 trong hai tp
tin F1 và F2 c các ng dài 4 ri ghi luân phiên vào trong hai tp tin G1 và G2:
G1: 3 5 28 31 9 54 65 85 8 10 69 77 F1
G2: 10 40 93 96 13 30 39 90 8 10 22 F2
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 70
Bc 3: i vai trò ca F1 và G1, F2 và G2 cho nhau. Trn các ng dài 4 trong hai tp
tin F1 và F2 c các ng dài 8 ri ghi luân phiên vào trong hai tp tin G1 và G2:
G1: 3 5 10 28 31 40 93 96 8 8 10 10 22 69 77 F1
G2: 9 13 30 39 54 65 85 90 F2
Bc 4: i vai trò ca F1 và G1, F2 và G2 cho nhau. Trn các ng dài 8 trong hai tp
tin F1 và F2 c các ng dài 16 ri ghi luân phiên vào trong 2 tp tin G1 và G2.
G1: 3 5 9 10 13 28 30 31 39 40 54 65 85 90 93 96 F1
G2: 8 8 10 10 22 69 77 F2
Bc 5: i vai trò ca F1 và G1, F2 và G2 cho nhau. Trn các ng dài 16 trong hai tp
tin F1 và F2 c 1 ng dài 23 ri ghi vào trong tp tin G1.
G1: 3 5 8 8 9 10 10 10 13 22 28 30 31 39 40 54 65 77 85 90 93 96
Tp tin G1 cha các mu tin ã c sp còn tp tin G2 rng.
Chng trình
procedure Merge(k:integer; f1,f2,g1,g2: File of RecordType);
{Th tc này trn các ng dài k và trong hai tp tin f1 và f2 thành các ng dài 2k và
ghi luân phiên vào trong hai tp tin g1 và g2}
var
OutSwithh : boolean; {Nu OutSwitch = TRUE thì ghi vào tp tin g1, ngc li ghi vào g2}
Winner: integer; { chnh mu tin hin hành nào trong hai tp tin f1 và f2 sc ghi ra tp
tin g1 hoc g2}
Used: array[1..2] of integer; { Used[ij] ghi s mu tin ã c c trong ng hin ti ca tp
{ Chn Winner }
if Fin[1] then Winner := 2
else if Fin[2] then Winner := 1
else if current[1].key < Current[2].key then
Winner := 1
else Winner := 2;
if OutSwitch then Write(g1, Current[winner] )
else Write(g2, current[winner] );
GetRecord(Winner);
end;
OutSwitch := Not OutSwitch;
end;
end;
IV.3.2.Ci tin sp xp trn
Ta thy quá trình sp xp trn nói trên bt u t các ng dài 1 cho nên phi sau logn
c gii thut mi kt thúc. Chúng ta có th tit kim thi gian bng cách chn mt s k thích hp
sao cho k mu tin có th cha trong b nh trong. Mi ln c vào b nh trong k mu tin, dùng
p xp trong (chng hn dùng QuickSort) sp xp k mu tin này và ghi luân phiên vào hai tp tin
F1 và F2. Nh vy chúng ta bt u sp xp trn vi các tp tin c t chc thành các ng dài
k.
Sau i bc thì dài mi ng là k2
i
. Gii thut s kt thúc khi k2
i
n hay i log . Do ó
phép truy xut khi s là . D thy c là ta tng c tc sp xp trn.
Ví d 4-3: Ly tp tin F có 23 mu tin vi khóa là các s nguyên nh trong ví d 4-2
F: 28 31 3 5 93 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22
Ta gi s b nh trong có th cha c 3 mu tin, ta c ln lt 3 mu tin ca F vào b nh
trong , dùng mt sp xp trong sp xp chúng và ghi phiên vào 2 tp tin F1 và F2.
và ghi luân phiên vào trong h tp tin F[h+1], F[h+2], ... , F[m]. i vai trò ca F[i] và F[h+i]] cho
nhau (vi 1 i h).