Anda di halaman 1dari 4

PENCARIAN PASANGAN TITIK YANG JARAKNYA TERDEKAT (CLOSEST PAIR)

Untuk memenuhi tugas matakuliah Desain dan Analisis Algorima

Oleh : Andi Syahrandi Dj Listiyanti Musa Ratih Puspita Furi IF-32-01 113080067 113080068 113081017

FAKULTAS INFORMATIKA INSTITUT TEKNOLOGI TELKOM BANDUNG 2010

1. Deskripsi Masalah Dalam masalah mencari jarak titik yang paling dekat ini, diberikan himpunan titik yaitu P(xi,yi) sebanyak n buah pada bidang 2-D. Kemudian ditentukan pasangan titik yang memiliki jarak yang paling dekat dalam himpunan P.
y p5 p2 p3 p1 p7 x p4 p6 p8

Jarak antara titik p1(x1,y1) dan p2(x2,y2) dihitung dengan rumus Euclidean yaitu

2.

Algoritma Divide and Conquer Asumsi : n = 2k dan titik-titik diurutkan secara menaik berdasarkan absis (x). a. Terselesaikan (SOLVE), jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus Euclidean. b. Divide, Bagi himpunan titik ke dalam dua bagian, Pleft dan Pright, setiap bagian mempunyai jumlah titik yang sama. c. Conquer, secara rekursif, terapkan algoritma Divide and Conquer pada masingmasing bagian. d. Pasangan titik yang jaraknya terdekat ada tiga kemungkinan letaknya, yaitu : - Pasangan titik terdekat terdapat di bagian PLeft - Pasangan titik terdekat terdapat di bagian PRight - Pasangan titik terdekat dipisahkan oleh garis batas L, yaitu satu titik di PLeft dan satu titik di PRight Jika kasusnya merupakan kasus ketiga maka lakukan tahap COMBINE untuk mendapatkan jarak dua titik terdekat sebagai solusi persoalan semula.

Pseudo-code algoritmanya :
procedure FindClosestPair(input P : SetOfPoint, n : integer, output delta : real) {mencari jarak terdekat sepasang titik di dalam himpunan P} Deklarasi: DeltaLeft, DeltaRight : real Algoritma: If n = 2 then Delta jarak kedua titik dengan rumus Euclidean Else P-Left {p1, p2, ..., pn/2} P-Right {pn/2+1, pn/2+2, ..., pn} FindClosestPair (P-Left, n/2, DeltaLeft) FindClosestPair (P-Right, n/2, DeltaRight) Delta minimum(DeltaLeft, DeltaRight) {--------------------------------------------------------} Tentukan apakah terdapat titik pl di P-Left dan pr di P-Right. Dengan jarak (pl,pr) < delta. Jika ada, set delta dengan jarak terkecil tersebut. {--------------------------------------------------------} endif

Tahap COMBINE dapat diimplementasikan sebagai berikut : a. Tentukan semua titik di PLeft yang memiliki absis x paling sedikit xn/2 delta. b. Tentukan semua titik di Pright yang memiliki absis x paling banyak xn/2 + delta.
y

x L

Langkah a dan b akan menghasilkan sejumlah titik sebagai himpunan Pstrip yang berisi s buah titik. Titik-titik tersebut diurutkan secara menaik berdasarkan absisnya. Misalkan q1, q2 , ..., qs menyatakan hasil pengurutannya.

Pseudo-code algoritmanya :
for i 1 to s do for j i+1 to s do exit when (|q1.x-qj.x| > delta or |q1.y-qj.y| > delta if jarak(q1, qj) < delta then delta jarak(q1, qj) {dihitung dengan rumus Euclidean} endif endfor

endfor

3. Kompleksitas Waktu Waktu yang dibutuhkan untuk memproes titik-titik di sepanjang garis L yaitu t(n) = cn = O(n), c adalah konstanta. Maka, kompleksitas algorima menghitung jarak terdekat sepasang titik dengan algoritma Divide and Conquer dinyatakan dalam persamaan rekurens berikut :

2T (n / 2) cn , n 2 T (n) a ,n 2
Dimana a dan c adalah konstanta. Solusi dari persamaan di atas adalah T(n) = O(n log n). 4. Solusi dengan Algoritma Brute Force : 1. Algoritma Brute Force akan menghitung sebanyak C(n, 2) = n(n 1)/2 pasangan titik. 2. Kemudian dipilih pasangan titik yang mempunyai jarak terkecil. 3. Kompleksitas algoritma adalah O(n2). 5. Analisa Untuk penyelesaian masalah pencarian pasangan titik yang jaraknya terdekat , algoritma Divide and Conquer lebih optimal jika dibandingkan dengan algoritma Brute Force. Ini terlihat dari nilai kompleksitas waktu asimtotik masing-masing algoritma.

Anda mungkin juga menyukai