Tải bản đầy đủ (.doc) (9 trang)

Brute Forte Và Plane Sweep Thuật Toán Nào Tối Ưu Trong Bài Toán Tìm Cặp Điểm Gần Nhất

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (112.32 KB, 9 trang )

Brute Forte Và Plane Sweep Thut Toán Nào Ti  u Trong Bài
Toán Tìm Cp  i  m Gn Nht
Hunh Minh Trí
1
(M001016), Nguyn Ngc Nga
1
(M001005),
Tr  ng M Thu Tho
1
(M001015), Nguyn Th Hng Yn
1
(M001018)
1
Hc viên cao hc ngành H Thng Thông Tin khóa 19,
Tr  ng   i Hc Cn Th
Tháng 4, nm 2013
Tóm tt: Trong bài báo này chúng tôi s gii thiu v hai thut toán
  gii quyt yêu cu “Tìm cp i m ngn nht trong mt phng”. Mi
thut toán s    c trình bày v mt ý t  ng, tính   phc tp, thc
nghim trên cùng mt b d liu   so sánh thi gian thc hin ca hai
gii thut t ó tìm ra gii thut ti u. B d liu    c to mt cách
ngu nhiên t s l ng nh   n s l  ng   ln   so sánh    c s
chênh lch v thi gian thc hin ca tng thut toán. T ó   a ra kt
lun thut toán ti u Brute forte hoc Plane sweep.
Keywords: Brute forte, Plane sweep, so sánh Frute forte và Plane
seep
3
1 Gi i thiu
Bài toán tìm cp i m gn nht trong mt phng là bài toán c bn trong hình
hc tính toán,    c s dng nhiu trong h thng GIS, phn t hu hn,   ha
máy tính,… theo nghiên cu hin nay có nhiu thut toán vi   phc tp khác


nhau vá    c tip cn theo các h  ng sau:
H  ng tip cn Brute Forte:
Thut toán thuc cách tip cn này cài  t khá   n gin.  ng vi tng i  m I
cho tr  c thut toán này s tính khong cách t I  n các i m còn li, t ó so
sánh các khong cách   tìm    c cp i m ngn nht. Trong tr ng hp này
cn thc hin n(n-1)/2 s ln tính khong cách, n(n-1)/2 s ln so sánh vy thi
gian cn cho h  ng tip cn này O(n
2
).
H  ng tip cn chia   tr
  u tiên các i m trong mt phng    c chia thành các tp con, thc hin tìm
cp i  m ngn nht cho các tp con, trn hai tp con, kim tra các i m gn
   n g phân cách xem có cp i m nào nm hai bên    n g phân cách có khong
cách nh hn min. Trong h  ng tip cn này cn thi gian thc hin O(n logn)
H  ng tip cn tr t phng
Tr  c tiên là tìm miny, maxy trong tp hp i m ã cho, thc hin sp xp các
i  m theo th t tng dn ca x Dùng mt    n g thng   ng (miny, maxy) tr  t
t i  m cc trái sang i m cc phi, lu gi các cp i m gn nht và các i m
gn vi    n g tr  t, thc hin so sánh   gia li cp i m có khong cách ngn
nht
[1]
Trong h  ng tip cn này thì thi gian sp các i m cho tr c là tn nhiu thi
gian nht và ó cng    c xem là   phc tp ca thut toán O(nlogn)
Nhim v trng tâm trong bài báo này là tìm hiu thut toán Brute forte và Plan
sweep
2 Ni dung
2.1 Phát bi u bài toán:
Cho n (n>=2) i  m trong mt phng 2 chiu    c lu tr trong mt mng a vi
mi i  m th i có ta   (x,y). Vn     t ra là tìm mt cp i m (p, q) gn nhau
nht bng cách dùng thut toán Brute forte và, Plane sweep.

Vi hai  nh bt k a(x
a
, y
a
), b(x
b
, y
b
) trong tp n   nh thì khong cách gia
chúng là
d(a,b)=
22
)()(
abab
yyxx −+−
[1] Slide bài ging PGS, TS. Trn Cao   Khoa công ngh thông tinh và
truyn thông –   i Hc Cn Th
2.2 Gi i thut Brute forte
Ý t  ng:
- Khi to v trí  nh   u tiên i=1; Khong nh nht d
min
=∞; p= a[1];
q= a[2]
- Duyt qua tng  nh i trong tp n  nh
* Duyt  nh j trong tp n-1  nh \\ không tính  nh i
Tính khong cách t  nh i   n  nh j d(a[i],a[j])
Nu d
min
>


d(a[i],a[j]) thì
d
min
= d(a[i],a[j])
p= a[i]
q= a[j]
⇒ Kt qu: (p, q) là cp i m ngn nht cn tìm
Thi gian thc hin:

=

=
n
i
nn
i
1
2
)1(
⇒   phc tp ca Brute forte là O(n
2
)
2.3 Gi i thut Plane sweep
Ý t  ng:
Dùng 1    n g thng thng   ng, tr  t t trái sang phi t i m trái nht. Lu
gi các cp i  m gn nht và các i m gn vi    n g quét. Khi quét ngang
qua 1 i m ta lu tr: Cp i m gn nht trong tp hp các i  m ã quét qua
(a,b) vi khong cách d(a,b). Mt t i n S cha các i m ã quét qua theo
th t ta   y. Nh vy, khi quét ngang 1 i  m p phi thc hin các phép
toán sau: loi b khi S các i m r tha: x(p)-x(r) > d, tìm i m q trong S sao

cho d(p,q)<d. Cp nht li a=p, b=q và d=d(p,q), insert p vào S.
Rõ ràng mi ln quét qua mt i  m p ta ch xét các i  m trong S và cn tìm
i  m q vi d(p,q)<d. Các i m cn xét thuc hình ch nht B(p,d) kích th c
dx2d .  i  m q cn tìm thuc giao ca B(p,d) vi na hình tròn (p,d). Vi mi
i  m thuc S, thc hin tìm kim theo phm vi vi các khóa là ta   y.
5
T chc cây tìm kim là AVL hoc red-black lu tr S.   ây tổ chức mảng 2
chiều lưu trữ S.
Hình ch nht dx2d cha nhiu nht là 6 i m sao cho khong cách gia hai
i  m bt k ít nht là d. H qu: thi gian tìm kim trong S   xác  nh các
i  m thuc B(p,d) là O(logn+6) ó là thi gian 1DRangeSearchTree.
Sp xp các i m theo x tng dn, mc ích: xác  nh i m k tip    c x lí
(   c quét), xác  nh i m b loi khi S.
  u tiên tr  t t nút 1 qua phi gp nút 2 thì o n 12 tìm thy   u tiên là o  n
gn nht. Tip theo tr  t ti nút 3 thì o n 12 cng là o n gn nht t  ng t
nút 4 và nút 5. Hình ch nht có chiu ngang d và hình tròn có bán kính d vn
cha thay   i. C th tip tc tr  t hình ch nht vi bán d mi sang i  m 7

Nhng   n nút 6 thi trong phn giao gia hình ch nht và hình tròn tâm nút 6
có cha 2 i  m là 4 và 5. Khi ó gii thut so sánh chiu dài gia nút 64 vi d
và nút 65 vi d. Xét thy khong cách gia 2 nút 6, 5 nh hn d nên cp nht
li d là d’ và loi b nút 1,2 ra, cp nht li nút 5,6. Nút 3 không xét vì nm
ngoài vùng giao.
 Th i gian:
– Dùng Quicksort sp xp các i m O(nlogn)
– Thêm/xóa mt phn t vào/t S là O(logn)
– Thc hin tìm kim phm vi trong S là O(logn)
– Thc hin tìm kim khi quét qua n i m O(nlogn).
 Thi gian tng cng 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 thy ch  ng trình s tn nhiu thi gian là lúc xét trong
phn giao nói trên (có nút 4 và 5) nu có nhiu nút thì phi duyt ht các nút
này. Nu trong tt c các phn giao không có nút nào thì tr  t  n nút cui
cùng s tn thi gian là O(n).
2.4 Cách thc 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 Kt qu thc nghi m
Ch  ng trình s chy lâu hn nu b trí nhiu i  m tp trung.
Ta có th t chc lu tr theo dng cây cân bng, cây tìm kim nh phân và  
tìm mt phn t nào ó ta thc hin gii thut tìm kim 1DTreeRangeSearch
vi   phc tp là O(logn+s) vi s là s phn t tr v sau tìm kim, n là tng
s phn t. Hoc là tìm kim 2 chiu theo phm vi FindAllInRange vi  
phc tp là O(nlogn). Hoc là gii thut tìm kim 2DTreeRangeSearch vi  
phc tp là O(log2n+s) vi s là s phn t tr v sau tìm kim, n là tng s
phn t.
Mt cách khác, ta có th t chc d liu theo cây t phân vi thi gian xây
dng cây là O(D*n), D là chiu sâu gii hn ca cây, n là tng s phn t.
Hoc là cây K-D-Trees cng là dng cây nh phân    c xây dng khá t  ng
t vi cách xây dng cây t phân. Vic thc hin tìm kim trong tr ng hp
xu nht mt thi gian O(n) và trung bình là O(logn).
9
5 Kt Lun
Tùy theo vic b trí các i m trên mt phng mà gii thut chy nhanh hay chm
cng nh gii thut này và các gii thut nói  trên s có thi gian chy khác
nhau. Tuy nhiên chúng ta cng nên lu ý vic t chc lu tr d liu nh th nào
cho hiu qu   gim i s phc tp t vic xây dng không gian lu tr và vic
tìm kim.

Nh vy rõ ràng gii thut Plane sweep ti u hn Brute forte
Mt khác, d liu nhiu hay ít thì các gii thut cng có th chy vi thi gian
khác nhau. Ví d nh t chc tìm kim theo cây nh phân có th   t ti   phc
tp là n
2
.
Tài liu tham kho
1. Slide bài ging Phân tích thit k gii thut nâng cao - PGS, TS. Trn Cao  
- Khoa công ngh thông tin và
truyn thông –   i Hc
Cn Th
2. Phân tích và thit k gii thut – Nguyn Vn Linh –   i Hc Cn Th

×