Brute Forte Và Plane Sweep Thut Toán Nào Ti u Trong Bài
Toán Tìm Cp i m Gn Nht
Hunh Minh Trí
1
(M001016), Nguyn Ngc Nga
1
(M001005),
Tr ng M Thu Tho
1
(M001015), Nguyn Th Hng Yn
1
(M001018)
1
Hc viên cao hc ngành H Thng Thông Tin khóa 19,
Tr ng i Hc Cn Th
Tháng 4, nm 2013
Tóm tt: Trong bài báo này chúng tôi s gii thiu v hai thut toán
gii quyt yêu cu “Tìm cp i m ngn nht trong mt phng”. Mi
thut toán s c trình bày v mt ý t ng, tính phc tp, thc
nghim trên cùng mt b d liu so sánh thi gian thc hin ca hai
gii thut t ó tìm ra gii thut ti u. B d liu c to mt cách
ngu nhiên t s l ng nh n s l ng ln so sánh c s
chênh lch v thi gian thc hin ca tng thut toán. T ó a ra kt
lun thut toán ti u Brute forte hoc Plane sweep.
Keywords: Brute forte, Plane sweep, so sánh Frute forte và Plane
seep
3
1 Gi i thiu
Bài toán tìm cp i m gn nht trong mt phng là bài toán c bn trong hình
hc tính toán, c s dng nhiu trong h thng GIS, phn t hu hn, ha
máy tính,… theo nghiên cu hin nay có nhiu thut toán vi phc tp khác
nhau vá c tip cn theo các h ng sau:
H ng tip cn Brute Forte:
Thut toán thuc cách tip cn này cài t khá n gin. ng vi tng i m I
cho tr c thut toán này s tính khong cách t I n các i m còn li, t ó so
sánh các khong cách tìm c cp i m ngn nht. Trong tr ng hp này
cn thc hin n(n-1)/2 s ln tính khong cách, n(n-1)/2 s ln so sánh vy thi
gian cn cho h ng tip cn này O(n
2
).
H ng tip cn chia tr
u tiên các i m trong mt phng c chia thành các tp con, thc hin tìm
cp i m ngn nht cho các tp con, trn hai tp con, kim tra các i m gn
n g phân cách xem có cp i m nào nm hai bên n g phân cách có khong
cách nh hn min. Trong h ng tip cn này cn thi gian thc hin O(n logn)
H ng tip cn tr t phng
Tr c tiên là tìm miny, maxy trong tp hp i m ã cho, thc hin sp xp các
i m theo th t tng dn ca x Dùng mt n g thng ng (miny, maxy) tr t
t i m cc trái sang i m cc phi, lu gi các cp i m gn nht và các i m
gn vi n g tr t, thc hin so sánh gia li cp i m có khong cách ngn
nht
[1]
Trong h ng tip cn này thì thi gian sp các i m cho tr c là tn nhiu thi
gian nht và ó cng c xem là phc tp ca thut toán O(nlogn)
Nhim v trng tâm trong bài báo này là tìm hiu thut toán Brute forte và Plan
sweep
2 Ni dung
2.1 Phát bi u bài toán:
Cho n (n>=2) i m trong mt phng 2 chiu c lu tr trong mt mng a vi
mi i m th i có ta (x,y). Vn t ra là tìm mt cp i m (p, q) gn nhau
nht bng cách dùng thut toán Brute forte và, Plane sweep.
Vi hai nh bt k a(x
a
, y
a
), b(x
b
, y
b
) trong tp n nh thì khong cách gia
chúng là
d(a,b)=
22
)()(
abab
yyxx −+−
[1] Slide bài ging PGS, TS. Trn Cao Khoa công ngh thông tinh và
truyn thông – i Hc Cn Th
2.2 Gi i thut Brute forte
Ý t ng:
- Khi to v trí nh u tiên i=1; Khong nh nht d
min
=∞; p= a[1];
q= a[2]
- Duyt qua tng nh i trong tp n nh
* Duyt nh j trong tp n-1 nh \\ không tính nh i
Tính khong cách t nh i n nh j d(a[i],a[j])
Nu d
min
>
d(a[i],a[j]) thì
d
min
= d(a[i],a[j])
p= a[i]
q= a[j]
⇒ Kt qu: (p, q) là cp i m ngn nht cn tìm
Thi gian thc hin:
∑
=
−
=
n
i
nn
i
1
2
)1(
⇒ phc tp ca Brute forte là O(n
2
)
2.3 Gi i thut Plane sweep
Ý t ng:
Dùng 1 n g thng thng ng, tr t t trái sang phi t i m trái nht. Lu
gi các cp i m gn nht và các i m gn vi n g quét. Khi quét ngang
qua 1 i m ta lu tr: Cp i m gn nht trong tp hp các i m ã quét qua
(a,b) vi khong cách d(a,b). Mt t i n S cha các i m ã quét qua theo
th t ta y. Nh vy, khi quét ngang 1 i m p phi thc hin các phép
toán sau: loi b khi S các i m r tha: x(p)-x(r) > d, tìm i m q trong S sao
cho d(p,q)<d. Cp nht li a=p, b=q và d=d(p,q), insert p vào S.
Rõ ràng mi ln quét qua mt i m p ta ch xét các i m trong S và cn tìm
i m q vi d(p,q)<d. Các i m cn xét thuc hình ch nht B(p,d) kích th c
dx2d . i m q cn tìm thuc giao ca B(p,d) vi na hình tròn (p,d). Vi mi
i m thuc S, thc hin tìm kim theo phm vi vi các khóa là ta y.
5
T chc cây tìm kim là AVL hoc red-black lu tr S. ây tổ chức mảng 2
chiều lưu trữ S.
Hình ch nht dx2d cha nhiu nht là 6 i m sao cho khong cách gia hai
i m bt k ít nht là d. H qu: thi gian tìm kim trong S xác nh các
i m thuc B(p,d) là O(logn+6) ó là thi gian 1DRangeSearchTree.
Sp xp các i m theo x tng dn, mc ích: xác nh i m k tip c x lí
( c quét), xác nh i m b loi khi S.
u tiên tr t t nút 1 qua phi gp nút 2 thì o n 12 tìm thy u tiên là o n
gn nht. Tip theo tr t ti nút 3 thì o n 12 cng là o n gn nht t ng t
nút 4 và nút 5. Hình ch nht có chiu ngang d và hình tròn có bán kính d vn
cha thay i. C th tip tc tr t hình ch nht vi bán d mi sang i m 7
…
Nhng n nút 6 thi trong phn giao gia hình ch nht và hình tròn tâm nút 6
có cha 2 i m là 4 và 5. Khi ó gii thut so sánh chiu dài gia nút 64 vi d
và nút 65 vi d. Xét thy khong cách gia 2 nút 6, 5 nh hn d nên cp nht
li d là d’ và loi b nút 1,2 ra, cp nht li nút 5,6. Nút 3 không xét vì nm
ngoài vùng giao.
Th i gian:
– Dùng Quicksort sp xp các i m O(nlogn)
– Thêm/xóa mt phn t vào/t S là O(logn)
– Thc hin tìm kim phm vi trong S là O(logn)
– Thc hin tìm kim khi quét qua n i m O(nlogn).
Thi gian tng cng O(nlogn)
d
d
i m ang tr t n
d'
5
4
3
1
2
6
7
8
9
10
Rõ ràng chúng ta thy ch ng trình s tn nhiu thi gian là lúc xét trong
phn giao nói trên (có nút 4 và 5) nu có nhiu nút thì phi duyt ht các nút
này. Nu trong tt c các phn giao không có nút nào thì tr t n nút cui
cùng s tn thi gian là O(n).
2.4 Cách thc nghi m :
1. Các điểm nằm trong phần giao nhưng các khoàng cách giữa các cặp
bằng nhau (tốt nhất <n).
2. Các điểm không trùng nhau và có khoảng cách từ trái qua phải từng
đôi một tăng dần hoặc giảm dần (gần tốt nhất =n).
3. Các điểm nằm tập trung một phần nhiều về phía trái (tương đối)
4. Các điểm nằm tập trung một phần nhiều về phía phải (tương đối)
5. Thực hiện các điểm có tọa độ x nằm tập trung một phần nhiều ở
giữa (tương đối)
6. Một cặp ngắn nhất nằm ở phía trái và các điểm còn lại tập trung
nhiều về phía phải (khá lâu).
7. Một cặp ngắn nhất nằm ở phía phải và các điểm còn lại tập trung
nhiều về phía trái (khá lâu)
8. Các điểm nằm trong phần giao của hình tròn và hình chữ nhật đầu
tiên (xấu nhất >n).
2.5 Demo và code (Pascal):
Demo : detai.exe
Code:
PROGRAM TRUOTPHANG;
USES crt,graph;
TYPE mang=array[1 2,1 50] of integer;
FUNCTION KHOANGCACH(i1,i2:integer;a:mang):integer;
Var xx,yy:integer;
Begin
xx:=a[1,i2]-a[1,i1];
yy:=abs(a[2,i2]-a[2,i1]);
khoangcach:=round(SQRT(xx*xx + yy*yy));
End;
PROCEDURE HCN(d,x,y_max,n:integer;a:mang);
Var d1,d2,i:integer;
Begin
clrscr;
setcolor(9);
for i:=x-d to x do
begin
line(i,0,i,y_max);
7
delay(30);
end;
setcolor(4);
for i:=1 to n do
circle(a[1,i],a[2,i],1);
setcolor(9);
End;
VAR
mh,mode,canduoi_x,k,i,j,n,vt1,vt2,d,d1,d2,x,y,y_max,t
emp:integer;
a:mang;
BEGIN
clrscr;
write('Nhap so diem tu 3 >50, n='); readln(n);
writeln;
mh:=VGA;
mode:=VGAHi;
initgraph(mh,mode,'c:\tp\BGI');
y_max:=0;
i:=1;
Repeat
{ writeln('Nhap nut thu ',i,':');
write(' Toa do x='); readln(x);
write(' Toa do y='); readln(y);
writeln; }
a[1,i]:=random(150);
a[2,i]:=random(150);
if y_max<a[2,i] then
y_max:=a[2,i];
i:=i+1;
Until i=n+1;
{Dung Quicksort sap xep de dat thou gian O(nlgn)}
For i:=1 to n-1 do
for j:=i+1 to n do
if a[1,i]>a[1,j] then
begin
temp:=a[1,i];
a[1,i]:=a[1,j];
a[1,j]:=temp;
end;
d:=khoangcach(1,2,a);
x:=a[1,2];
HCN(d,x,y_max,n,a);
Vt1:=1;
Vt2:=2;
canduoi_x:=1;
if n>2 then
Begin
i:=3;
Repeat
For j:=canduoi_x to i-1 do
{xet trong HCN}
Begin
k:=khoangcach(j,i,a);
if d>k then
begin
d:=k;
vt1:=j;
vt2:=i;
canduoi_x:=j;
end;
End;
x:=a[1,i];
HCN(d,x,y_max+d,n,a);
setcolor(6);
Circle(a[1,i],a[2,i],d);
setcolor(1);
line(a[1,vt1],a[2,vt1],a[1,vt2],a[2,vt2]);
setcolor(9);
readln;
i:=i+1;
Until i>=n+1;
End;
Closegraph;
END.
3 Kt qu thc nghi m
Ch ng trình s chy lâu hn nu b trí nhiu i m tp trung.
Ta có th t chc lu tr theo dng cây cân bng, cây tìm kim nh phân và
tìm mt phn t nào ó ta thc hin gii thut tìm kim 1DTreeRangeSearch
vi phc tp là O(logn+s) vi s là s phn t tr v sau tìm kim, n là tng
s phn t. Hoc là tìm kim 2 chiu theo phm vi FindAllInRange vi
phc tp là O(nlogn). Hoc là gii thut tìm kim 2DTreeRangeSearch vi
phc tp là O(log2n+s) vi s là s phn t tr v sau tìm kim, n là tng s
phn t.
Mt cách khác, ta có th t chc d liu theo cây t phân vi thi gian xây
dng cây là O(D*n), D là chiu sâu gii hn ca cây, n là tng s phn t.
Hoc là cây K-D-Trees cng là dng cây nh phân c xây dng khá t ng
t vi cách xây dng cây t phân. Vic thc hin tìm kim trong tr ng hp
xu nht mt thi gian O(n) và trung bình là O(logn).
9
5 Kt Lun
Tùy theo vic b trí các i m trên mt phng mà gii thut chy nhanh hay chm
cng nh gii thut này và các gii thut nói trên s có thi gian chy khác
nhau. Tuy nhiên chúng ta cng nên lu ý vic t chc lu tr d liu nh th nào
cho hiu qu gim i s phc tp t vic xây dng không gian lu tr và vic
tìm kim.
Nh vy rõ ràng gii thut Plane sweep ti u hn Brute forte
Mt khác, d liu nhiu hay ít thì các gii thut cng có th chy vi thi gian
khác nhau. Ví d nh t chc tìm kim theo cây nh phân có th t ti phc
tp là n
2
.
Tài liu tham kho
1. Slide bài ging Phân tích thit k gii thut nâng cao - PGS, TS. Trn Cao
- Khoa công ngh thông tin và
truyn thông – i Hc
Cn Th
2. Phân tích và thit k gii thut – Nguyn Vn Linh – i Hc Cn Th