My first Magazine pemrograman-kompetitif-dasar | Page 154

12 Dasar-Dasar Geometri Algoritma 72 Solusi Potongan Pizza versi 2. function CHECK P IZZA (A, B,C, D) 2: return (A × A)/B = (C ×C)/D 3: end function 1: Namun, π muncul pada kedua ruas di Algoritma 71. Kita dapat menghilangkan π sehingga didapatkan perbandingan seperti pada Algoritma 72. Algoritma 73 Solusi Potongan Pizza versi 3. function CHECK P IZZA (A, B,C, D) 2: return A × A × D = C ×C × B 3: end function 1: Terakhir, kita dapat pindahkan B di ruas kiri serta D di ruas kanan untuk mendapatkan per- bandingan pada Algoritma 73. Meskipun ketiga algoritma ini sama secara matematis, Algoritma 73 lebih aman dibandingkan 2 algoritma lainnya. Pada Algoritma 73, tidak ada pembagian sama sekali, juga tidak ada pemakaian nilai π, sehingga perhitungan dapat dilakukan pada bilangan bulat. Jika terpaksa menggunakan bilangan riil, seperti real atau double, Anda perlu menggunakan teknik khusus untuk memeriksa kesamaan dua bilangan riil. Caranya adalah mengambil selisih mutlak dari kedua bilangan tersebut, lalu bandingkan hasilnya dengan suatu nilai toleransi yang sangat kecil seperti 10 −9 . Nilai toleransi ini biasa disebut dengan epsilon (ε). Apabila selisih mutlaknya lebih kecil dari nilai toleransi, maka kedua bilangan tersebut dapat dianggap sama. Algoritma 74 Memeriksa kesamaan bilangan riil a dan b dengan nilai toleransi ε. function IS E QUAL (a, b) 2: return ABS (a − b) < ε 3: end function 1: Pada Algoritma 74, ABS merupakan fungsi harga mutlak. Fungsi ABS (x) mengembalikan nilai −x apabila x bernilai negatif, dan x pada kasus lainnya. Kita dapat menggunakan IS E QUAL untuk memeriksa apakah a ≤ b atau a < b, untuk bilangan riil a dan b, seperti yang ditunjukkan pada Algoritma 75 dan Algoritma 76. Algoritma 75 Memeriksa apakah a ≤ b untuk tipe data bilangan riil. function IS L ESS E Q (a, b) return IS E QUAL (a, b) ∨ (a < b) 3: end function 1: 2: Algoritma 76 Memeriksa apakah a < b untuk tipe data bilangan riil. function IS L ESS (a, b) 2: return (not IS E QUAL (a, b)) ∧ (a < b) 3: end function 1: 144