Cryptarithmetic merupakan pengetahuan dan seni untuk menciptakan dan
menyelesaikan mathematic puzzle, dimana digit-digit ditukar dengan huruf-huruf alfabet atau symbol lain. Cryptarithmetic termasuk salah satu persoalan CSP (Constraint
Satisfaction Problem) yang bisa diselesaikan menggunakan algoritma backtracking.
Backtracking
adalah
algoritma berbasis DFS (Depth First Search) untuk mencari solusi
persoalan secara lebih tepat. Pada algoritma backtracking tidak perlu
memeriksa semua kemungkinan solusi yang ada, hanya pencarian yang mengarah ke
solusi saja yang selalu dipertimbangkan. Dengan proses seperti ini maka
perfomansi akan lebih baik karena akan menghemat waktu pencarian.
Cryptarithmetic merupakan contoh yang sangat cocok untuk CSP, karena selain
menyediakan deskripsi, masalah cryptarithmetic
dapat dijelaskan lebih baik dengan constraint-constraint.
Constraint-constraint yang mendefinisikan sebuah cryptarithmetic
problem antara lain :
<> Masing-masing huruf atau symbol merepresentasikan digit yang
hanya satu dan unik dalam persoalan tersebut.
<> Ketika digit-digit menggantikan huruf atau simbol, maka
hasil dari operasi aritmatika harus benar.
Batasan-batasan di atas memunculkan
beberapa batasan baru dalam persoalan, yaitu apabila basis dari angka adalah
10, maka pasti akan ada paling banyak 10 simbol atau huruf yang unik dalam
persoalan. Jika tidak, maka tidak akan mungkin untuk memberikan digit yang unik
ke setiap huruf atau simbol yang unik juga dalam persoalan. Dan supaya memiliki
makna yang berarti secara semantik, angka tidak boleh dimulai dengan 0, jadi
huruf-huruf yang muncul untuk setiap variabel pertama sekali seharusnya tidak
boleh mengandung 0.
Contoh Persoalan Cryptarithmetic
:
Solusi persoalan Cryptarithmetic
dengan CSP
dengan menggunakan algoritma Backtracking
Variabel :
{M, O, S, E, N, R, D, Y, X1, X2, X3}
Domain :
Di = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Constraint : D + E = Y + 10 * X1
X1 + N + R = E + 10 * X2
X2 + E + O = N + 10 * X3
X3 + S + M = O + 10 * M
Initial State, Setiap variabel masih berbentuk huruf atau
symbol.
Successor, Pemberian digit atau nilai kepada
setiap variabel, tetapi setiap digit atau nilai harus berbeda untuk setiap
variabel.
Path Cost, Jumlah pencarian solusi permasalahan
agar mencapai goal state.
Goal State, Setiap
variabel sudah memiliki nilai yang memenuhi semua constraint yang telah ditetapkan untuk persoalan.
Solusi :
=> S + M = O nilai S dan M harus berkisar diantara [0-9],
karena hanya 1 digit. Maka nilai M adalah 1 (M = 1) karena S + M + X3
tidak bisa lebih besar dari 19.
=> Karena M = 1, maka (S + 1 + X3 = 1(M)O) nilai S
adalah 8(+1) atau 9 agar didapat 2 digit nilai (10 atau 11). 8(+1) maksudnya 8
ditambah nilai X3.
=> Nilai O adalah 0 karena S + (M = 1) + X3 harus
bernilai 10 supaya didapat 2 digit. Nilai 11 bisa didpat kalau menggunakan S =
9 dan X3 = 1, tapi nilai 1 sudah buat M, karena itu nilai O tidak
boleh 1.
=> Kemungkinan pertama : S = 8, X3 = 1, O = 0
<> E
+ O = N, nilai E + O harus bernilai 10 agar bisa didapat nilai X3 =
1
<> X2
+ E + O = N, (1+) + (E = 9) + (O = 0) = (1)N, maka 10 = (1)N, maka N = 0, hal ini menciptakan kesalahan karena
nilai N = O, jadi kemungkinan ini salah.
=> Kemungkinan kedua : S = 9, X3 = 0, O = 0
<> E
+ O = N, X2 + E + O = N, maka nilai X2 harus 1 karena
nilai E tidak boleh sama dengan N.
<> Didapat
persamaan 1 + E + 0 = N, maka N = E + 1.
=> Karena nilai pasti tidak dapat, maka kita menjalan
kemungkinan pertama.
=> N + R = E (hasil disini harus bernilai belasan agar X2
= 1) D + E = Y.
=> kemungkinan pertama sudah dijalankan, tapi tidak ketemu
nilai variabel, karena itu kita jalankan kemungkinan kedua.
=> Kita mulai dengan tebakan Kalo E = 2, maka N = 3. Pemilihan
nilai E, karena variabel E paling banyak
muncul dan paling banyak berinteraksi dengan huruf lain. X1 + N + R
= (1)E, X1 + 3 +R = (1)2, berapa nilai X1 + R + 3 agar di dapat
nilai 12?
<> Jawabannya
X1 = 1, R = 8. Lalu kita masukan ke persamaan lanjutan, D + E = Y
(hasil disini harus belasan agar di dpat X1 = 1), D + 2 = Y, dari
sini didapatkan kesimpulan bahwa kemungkinan ini tidak mungkin, karena sebesar
apapun nilai D + 2 tidak akan mencapai nlai belasan.
=> Kita lanjutkan tebakan jika E = 3, maka N = 4, (X1
+ N + R), X1 + 4 + R = (1)3, berapa X1 + R + 4 agar didapat 12? R = 8 dam X1 =1.
<> Kita
masukan ke D + E = (1)Y, kemungkinan ini tidak mungkin karena D + 3 hanya
bernilai paling besar 10(D = 7), dan menyebabkan Y = 0 dan menjadi sama dengan
nilai O.
=> Sekarang jika E = 4, maka N = 5, (X1 + N + R), X1
+ 5 +R = (1)4, berapa X1 + 5
+ R agar didapat 14? R = 8 dan X1 = 1.
<> Kita
masukan ke D + E = (1)Y kemungkinan ini tidak mungkin karena
D(7) + 4 hanya bernilai paling besar 11, dan menyebabkan
Y = 1 dan menjadi sama dengan nilai M.
Y = 1 dan menjadi sama dengan nilai M.
=> Sekarang jika E = 5, maka N = 6, (X1 + N + R), X1
+ 6 + R = (1)5, berapa X1 + 6 + R agar didapat 15? R = 8 dan X1
= 1.
<> Kita
masukan ke D + E = (1)Y kemungkinan ini mungkin karena D(7) + 5 bernilai paling besar 12, dan
menyebabkan Y = 2. Didapatkan jawaban.
Hasil yang didapat adalah :
M = 1 N = 6 X1 = 1
O = 0 R = 8 X2 = 1
S = 9 D = 7 X3 = 0
E = 5 Y = 2
Referensi :
kalo
ReplyDeleteSE
LL
------+
ES
XX
ReplyDeleteYY
____+