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