Algoritma Closter pair Algoritma closest pair point adalah adalah suatu algoritma yang memecahkan persoalan untuk mencari jarak terdekat antara kumpulan titik dalam suatu bidang dua dimensi. Permasalahan closest pair merupakan salah satu permasalahan klasik dalam dunia matematika diskrit. Secara singkat, deskripsi permasalahan adalah sebagai berikut: diberikan N buah titik yang terletak pada bidang planar 2 dimensi, tentukanlah dua buah titik yang memiliki jarak paling dekat.
Ilustrasi permasalahan closest pair
Cara yang paling sederhana untuk memecahkan masalah ini adalah dengan membandingkan semua kemungkinan titik-titiknya untuk dicari jaraknya. Untuk menentukan jarak antar titik digunakan persamaan 1.
d
x
1
x2
2
y
1
y2
2
Dimana x dan y adalah koordinat masing-masing titik yang diperbandingkan. Algoritma akan mencoba semua kemungkinan titik hingga didapatkan nilai d yang paling kecil. Persamaan 1 digunakan untuk menghitung closest pair point pada pada suatu suatu bidang dua dimensi, dimensi, terdiri dari komponen x dan y, dimana x dan y merupakan koordinat dari titik yang akan dibandingkan. Sedangkan pada permasalahan perbandingan nilai RGB hasil pembacaan sensor TCS3200 memiliki 3 komponen, yaitu : Red, Green, dan Blue (RGB). Untuk itu diperlukan pengembangan dari persamaan closest pair point pada pada persamaan 1.
Mulai
Baca Alamat Akhir (n)
Baca Data Warna Input (Ri,Gi,Bi)
Alamat (A)=1 Hasil_d=1000
Baca Data RGB Pada Alamat=A (Rd,Gd,Bd)
Cari Nilai d d
Rd Ri Gd Gi 2
2
Hasil_d > Nilai d ?
Bd Bi
2
Hasil_d = Nilai d Simpan Nilai A
A=A+1
Alamat (A) = Alamat Akhir (n)?
Tampilkan Nilai A Tampilkan Ri,Gi,Bi
selesai
Diagram Alir Proses perbandingan data warna RGB yang dibaca dengan database warna RGB Program membaca data warna RGB benda input (Ri, Gi, Bi). Program membandingkan warna RGB benda input dengan database warna RGB (Rd, Gd,Bd) dengan menggunakan algoritma closest pair point . Program akan menyimpan alamat dari nilai closest pair point (d) terkecil. Program akan terus menerus membandingkan warna RGB benda input dengan database warna RGB (Rd, Gd,Bd) dengan menggunakan algoritma closest pair point sampai alamat penyimpanan data RGB terakhir.
Program akan menampilkan alamat dari nilai closest pair point (d) terkecil dan nilai warna RGB benda input.
Hasil Dan Analisa
Dalam penelitian ini, langkah pertama yaitu dilakukan proses penyimpanan database warna RGB (warna RGB pembanding), kemudian disimpan dalam memori ( Electrically Erasable Programmable Read-Only Memory ) EEPROM pada alamat tertentu secara berurutan. Data yang diperoleh dapat dilihat pada tabel 1.
Tabel 1. Database warna RGB pembanding Alamat
Red
Green
Blue
Keterangan
1
0
0
0
Warna Hitam
2
14
92
23
Warna Hijau
3
2
13
45
Warna Biru
4
169
25
77
Warna Hot Pink
5
246
105
5
Warna Merah Orange
6
88
98
2
Warna Kuning
7
31
8
7
Warna Saddle Brown
8
16
52
110
9
30
85
36
Warna Forest Green
10
30
18
41
Warna Nila
11
113
151
51
Warna Hijau Lime
12
92
33
91
Warna Ungu
13
127
16
59
Warna Merah Muda
14
159
19
24
Warna Merah Tua
15
106
109
122
Warna Abu-abu
16
109
83
6
Warna Royal Blue
Warna Emas Rod
Proses berikutnya adalah membaca benda dengan warna RGB tertentu (RGB input ), kemudian membandingkan warna RGB yang dibaca (RGB input ) dengan database warna RGB pembanding menggunakan algoritma closest pair point.
Pengujian : Benda input berwarna hijau dengan RGB adalah R=14, G=99, dan B=24. Database warna RGB pembanding dapat dilihat pada tabel 1. Dengan menggunakan persamaan 3 akan dicari nilai closest pair point.
Rd Ri
2
d
Gd Gi
2
Bd Bi
2
RGB input dibandingkan dengan Database RGB pembanding pada alamat 1. d
0 14
d
196 9801 576
d
10573
d
2
0 99
2
0 24
2
103
Selanjutnya RGB input dibandingkan dengan Database RGB pembanding pada alamat 2.
14 14
2
d
d
92 99
2
23 24
2
7
Hasil perbandingan RGB input dengan Database RGB pembanding ditunjukkan pada tabel 2. Tabel 2. Hasil perbandingan RGB input (R=14, G=99, B=24) dengan Database RGB Database RGB Pembanding
Alamat
RGB input
Nilai (d)
Keterangan
Red
Green
Blue
1
0
0
0
103
2
14
92
23
7
3
2
13
45
89
4
169
25
77
180
5
246
105
5
233
Dikenali sebagai Warna
6
88
98
2
77
No. 2
7
31
8
7
94
8
16
52
110
(Warna Hijau)
9
30
85
36
24
10
30
18
41
84
11
113
151
51
115
12
92
33
91
122
13
127
16
59
145
R=14 G=99 B=24
98
Berhasil dikenali
14
159
19
24
166
15
106
109
122
135
16
109
83
6
98
Pada tabel 2 dapat dilihat bahwa nilai d terkecil (closest pair point ) adalah 7, yang merupakan hasil dari perbandingan RGB input dengan RGB pada alamat 2. Dengan demikian RGB input dikenali sebagai warna no. 2 yaitu warna hijau. Warna ini sesuai dengan warna benda yang menjadi input , dengan kata lain, algoritma closest pair point dapat mengenali input dengan baik (sukses mengenali input ).
Tabel 3. Hasil perbandingan RGB input (R=2, G=14, B=45) dengan Database RGB Database RGB Pembanding
Alamat
RGB input
Nilai (d)
Red
Green
Blue
1
0
0
0
47
2
14
92
23
82
3
2
13
45
1
4
169
25
77
170
5
246
105
5
263
6
88
98
2
128
7
31
8
7
48
8
16
52
110
R=2 G=14 B=45
Keterangan
Dikenali sebagai Warna No. 3
77
9
30
85
36
77
10
30
18
41
29
11
113
151
51
176
12
92
33
91
103
13
127
16
59
126
14
159
19
24
158
15
106
109
122
161
16
109
83
6
133
(Warna Biru)
Berhasil dikenali
Pada tabel 3 dapat dilihat bahwa nilai d terkecil (closest pair point ) adalah 1, yang merupakan hasil dari perbandingan RGB input dengan RGB pada alamat 3. Dengan demikian RGB input dikenali sebagai warna no. 3 yaitu warna biru. Warna ini sesuai dengan warna benda yang menjadi input.
Pengujian dilanjutkan dengan memasukkan benda input yang berbeda – beda sebanyak 16 warna, dan dilihat tingkat keberhasilan algoritma closest pair point dalam mengenalinya. Hasil pengenalan algoritma closest pair point terhadap ke-16 benda input yang berbeda – beda ditunjukkan pada tabel 4.
Tabel 4. Hasil pengenalan algoritma closest pair point terhadap ke-16 benda input
No.
Warna Benda Input
RGB Benda Input Red
Green
Blue
Nilai d Terkecil
Dikenali Sebagai Warna
Ketera ngan
1
Warna Hitam
0
0
1
1
Warna Hitam
Berhasil
2
Warna Hijau
14
99
24
7
Warna Hijau
Berhasil
3
Warna Biru
2
14
45
1
Warna Biru
Berhasil
4
Warna Hot Pink
123
26
79
23
Warna Merah Muda
Gagal
5
Warna Merah Orange
245
106
3
2
Warna Merah Orange
Berhasil
6
Warna Kuning
89
99
2
1
Warna Kuning
Berhasil
7
Warna Saddle Brown
30
8
6
1
Warna Saddle Brown
Berhasil
8
Warna Royal Blue
16
51
111
1
Warna Royal Blue
Berhasil
9
Warna Forest Green
25
80
35
7
Warna Forest Green
Berhasil
10
Warna Nila
29
16
39
3
Warna Nila
Berhasil
11
Warna Hijau Lime
113
153
56
5
Warna Hijau Lime
Berhasil
12
Warna Ungu
90
30
87
5
Warna Ungu
Berhasil
13
Warna Merah Muda
125
16
58
2
Warna Merah Muda
Berhasil
14
Warna Merah Tua
157
19
21
4
Warna Merah Tua
Berhasil
15
Warna Abu-abu
106
108
121
1
Warna Abuabu
Berhasil
16
Warna Emas Rod
109
83
6
0
Warna Emas Rod
Berhasil
Pada tabel 4 dapat dilihat bahwa dari ke-16 benda berwarna RGB yang menjadi input , hanya ada 1 benda yang gagal dikenali, yaitu warna hot pink dikenali sebagai warna merah muda. Hal ini menunjukkan bahwa tingkat keberhasilan algoritma closest pair point dalam mengenali warna dari sensor TCS3200 sangat baik mencapai 15/16 x 100 % = 93,75 %. Sedangkan tingkat kesalahannya hanya 1/16 x 100 % = 6,25 %.
Kesimpulan
Berdasarkan percobaan yang dilakukan dan hasil yang didapat, maka dapat diperoleh kesimpulan sebagai berikut : 1. Algoritma closest pair point dapat dikembangkan untuk membandingkan data hasil pembacaan sensor warna TCS3200. 2. Tingkat keberhasilan algoritma closest pair point dalam mengenali warna dari sensor TCS3200 sangat baik mencapai 93,75 %. 3. Tingkat kesalahan algoritma closest pair point dalam mengenali warna dari sensor TCS3200 hanya 6,25 %.
GEOMETRY PROBLEM Algoritma geometrik berurusan dengan benda-benda geometris seperti titik, garis, dan poligon. Orang Yunani kuno yang sangat tertarik untuk mengembangkan prosedur (Mereka tidak menyebutnya algoritma, tentu saja) untuk memecahkan berbagai geometris masalah, termasuk masalah membangun bentuk geometris sederhana segitiga, lingkaran, dan sebagainya dengan ditandai penggaris dan kompas. Kemudian, sekitar 2000 tahun, minat yang kuat dalam algoritma geometrik menghilang, dan akan dibangkitkan di usia computer. Tidak ada lagi penggaris dan kompas, hanya bit, byte, dan baik kecerdikan manusia. Tentu saja, saat ini orang yang tertarik dalam algoritma geometric dengan aplikasi sangat berbeda dalam pikiran, seperti komputer grafis, robotika, dan tomografi. Closest-Pair Problems
1. Pendahuluan Permasalahan closest pair merupakan salah satu permasalahan klasik dalam dunia matematika diskrit. Secara singkat, deskripsi permasalahan adalah sebagai berikut: diberikan N buah titik yang terletak pada bidang planar 2-dimensi, tentukanlah dua buah titik yang memiliki jarak paling dekat. Secara umum, permasalahan ini sering dikaitkan dengan permasalahan pada dunia sehari – hari. Contoh permasalahannya seperti proses pengambilan dua bahan baku oleh lengan robot pada pabrik mikroprosesor agar pergerakan lengan robot seminimal mungkin. Secara naif, permasalahan ini dapat diselesaikan dengan algoritma brute force yang membutuhkan kompleksitas waktu O (N2). Untuk N yang besar (N > 100000), komputasi dengan algoritma brute force akan memakan waktu yang lama, bahkan dengan komputer paling cepat saat ini. 2 Penyelesaian dengan Brute Force Solusi brute force untuk masalah ini cukup straightforward: tinjau seluruh kemungkinan pasangan titik – titik kemudian hitung jaraknya dan cari nilai maksimum. Pseudocode untuk solusi ini adalah sebagai berikut: function findClosestPair : real min = ~ for each i in pointList
for each j in pointList if (i <> j AND distance(i , j) < max) min = distance(i , j) return min Jadi, untuk setiap instance permasalahan, akan terjadi N pass untuk setiap titik dan masing – masing pass akan melakukan peninjauan kembali untuk N titik. Sehingga, kompleksitas waktu untuk algoritma ini adalah O(N 2). 3 Penyelesaian dengan Divide and Conqueror Strategi penyelesaian dengan algoritma divide and conquer tidak sesederhana algoritma brute force. Penyelesaian dengan divide and conquer membutuhkan pencapaian sebuah lemma yang bergantung pada strategi penyelesaian itu sendiri. Lemma inilah yang menjadi kunci optimasi. Pada konsepnya, penyelesaian menggunakan algoritma divide and conquer dapat diabstraksikan melalui pseudocode berikut: function findClosestPair(left , right) : real if (right = left) return 0 else l = findClosestPair(left , (left + right) /2) r = findClosestPair((left + right) / 2 + 1 , right) mid = conquer(left , right) return min(l,r,mid) Fungsi di atas memiliki prekondisi yang harus dipenuhi, yaitu titik – titik sudah terurut berdasarkan nilai absis. Pengurutan sangat disarankan dilakukan dengan algoritma pengurutan dengan kompleksitas O (n log n) agar tidak memperburuk keseluruhan kompleksitas program. Setelah diurutkan, titik – titik tersebut akan ditinjau untuk menghitung jarak pasangan titik terpendek. Peninjauan ini akan dilakukan satu per satu dengan membagi titik – titik menjadi dua segmen. Pembagian didasarkan pada sebuah garis vertikal yang dapat membagi titik – titik menjadi dua segmen sama besar. Segmen kiri adalah kumpulan titik – titik yang memiliki nilai absis lebih kecil atau sama dengan dari absis garis pembagi, sementara segmen kanan adalah kumpulan titik – titik yang memiliki nilai absis lebih besar atau sama dengan nilai absis garis pembagi. Untuk berikutnya, titik – titik pada segmen kiri dilambangkan sebagai himpunan L dan titik – titik pada segmen kanan dilambangkan sebagai himpunan R. Setelah dibagi menjadi dua segmen sama besar, himpunan L akan ditinjau lagi dengan fungsi yang samasecara rekursif, demikian halnya dengan himpunan R juga akan diproses dengan cara yang sama.
Setelah hasil dari kedua pemanggilan rekursif didapatkan, fungsi akan mencari nilai terkecil dari kedua pemanggilan tersebut. Kedua pemanggilan fungsi tersebut diharapkan dapat memberikan jarak pasangan titik terpendek di kedua segmen dan secara lo gis dapat disimpulkan bahwa jarak terpendek untuk keseluruhan kasus adalah nilai minimal dari kedua harga tersebut.
Meskipun demikian, masih terdapat satu kemungkinan yang dapat menghasilkan jarak pasangan yang lebih pendek. Kemungkinan tersebut dapat terjadi pada pasangan dua titik yang terletak di dua segmen berbeda, atau dengan kata lain pemasangan a ntara titik yang berada di posisi paling kanan dari segmen kiri dengan titik yang berada di posisi paling kari dari segmen kanan. Dengan kasus seperti ini, fungsi juga harus meninjau kembali kemungkinan pasangan – pasangan yang terbentuk dari kedua segmen.