BAB 3. ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
3.1.3 Analisis Algoritma A*
Game tradisional egrang akan berupa kotak-kotak dengan ordo X x Y. Pada ordo X x Y, dua kotak akan dipakai oleh titik awal dan titik tujuan, sisanya untuk menghasilkan jalan agar terlihat jalurnya yang pada akhirnya akan menentukan jalan terpendek ke titik tujuan. Maksimal penghalang pada tiap ordo dapat kita tentukan yaitu dengan rumus pada tabel.
Tabel 3.1 Maksimal penghalang
Keterangan : X : Nilai baris Y : Nilai kolom
Dengan maksimal penghalang (X x Y) – 2, maka akan menghasilkan jalan yang tidak terlihat disebabkan jarak antara titik awal dan titik tujuan saling berdekatan, tapi dengan kondisi awal dan titik tujuan saling berjauhan maka akan menghasilkan jalan tidak akan ditemukan. Agar terlihat jalan yang dihasilkan maka diusahakan titik awal dengan titik tujuan tidak saling berdekatan dan jumlah penghalang yang akan dipasangkan kurang dari maksimal, implementasinya dapat dilihat dengan contoh ordo 4x10 pada gambar 3.4.
Ordo Maksimal Penghalang
X x Y (M x N) – 2
3 x 3 (3 x 3) - 2 = 7 4 x 4 (4 x 4) - 2 = 14 5 x 5 (5 x 5) - 2 = 23 ... x ... (... x ...) - 2 = ...
(i) (ii) Gambar 3.3 Ordo 3x3 dengan dua kondisi Keterangan :
A : Titik awal :Penghalang
T : Titik tujuan
Maksimal penghalang yang akan dipasangkan pada ordo lainnya adalah sebanyak ordo tersebut dikurangi dua untuk menempatkan titik awal dan titik tujuan. Pada gambar menunjukkan suatu ruang (map) dengan ordo 3x3 di dalam
game yang akan dibangun. Setiap kotak mempresentasikan simpul (node). Setiap kotak terhubung ke delapan kotak yang paling dekat, artinya setiap simpul (node) terhubung ke simpul lain yang berada di sebelah kanan, kiri, atas-kanan, bawah-kanan, bawah-kiri, dan atas-kiri dari simpul tersebut. Kotak warna cokelat diimplementasikan sebagai penghalang, yaitu kotak yang tidak dapat dilalui oleh titik awal.
Karena titik A tidak terhubung langsung ke titik T, maka kita perlu melewati simpul-simpul tertentu yang pada akhirnya akan mengantarkan ke titik T dengan jarak sependek mungkin.
3.1.3.1Analisis Pemecahan Masalah dengan Algoritma A* (A Star)
Sudah dijelaskan sebelumnya pada analisis lintasan bahwa ordo dapat disesuaikan dengan rentang X x Y, salah satu contoh perhitungan pada game
tradisional egrang ini akan dijelasakan dengan ordo minimal yaitu 4x10 dikarenakan perhitungan pada ordo berapa pun akan sama. Pada penentuan bobot setiap node akan diberikan nilai sesuai dengan jarak terdekat ke tujuan, misal
node yang terjauh dari tujuan maka diberi bobot yang kecil sedangkan node yang terdekat dengan tujuan diberi bobot yang lebih besar. Contoh perhitungannya seperti pada gambar 3.4 yang diberi nilai bobot yang terkecil yaitu 1 dan bobot selanjutnya ditambahkan 1.
A
T
Contoh kasus pada lintasan dengan ordo 4 x 10 yang terlihat pada gambar 3.4, akan dihitung pencariannya dengan algoritma A*.
0 1 2 3 4 5 6 7 8 9 10 0
1 2 3
Gambar 3.4 Kondisi lintasan dengan ordo 4 x 10 Keterangan :
Simpul awal Simpul penghalang
Simpul tujuan Simpul yang mungkin diperiksa Posisi simpul awal = Ax : 0, Ay : 0
Posisi simpul tujuan = goal x : 10, goal y : 2 Langkah ke satu
n (1,1) : g (1,1) = 1
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(1,1) = (abs(1 - 2) + abs(1 - 2))
= (abs(-1) + abs(-1)) = 2
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(1,1) = min(abs(1 - 2) + abs(1 - 2))
= min(abs(-1)+abs(-1)) = min 2
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(1,1) = (-2) + (2-(2*(-2))) = -2 + 6 = 4 f (1,1) = g (1,1) + h (1,1) = 1 + 4 = 5
n (1,0) : g (1,0) = 1
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(1,0) = (abs(1 - 2) + abs(0 - 2))
= (abs(-1) + abs(-2)) = 3
h_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y)) 57 h_diagonal(1,0) = min(abs(1 - 2)+abs(0 - 2))
= min(abs(-1)+abs(-2)) = min 3
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(1,0) = (- 3) + (3-(2*(-3))) = -3 + 9 = 6 f (1,0) = g (1,0) + h (1,0) = 1 + 6 = 7 n (0,1) : g (0,1) = 1
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(0,1) = (abs(0 - 2) + abs(1 - 2))
= (abs(-2) + abs(-1)) = 3
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(0,1) = min(abs(0 - 2)+abs(1 - 2))
= min(abs(-2)+abs(-1)) = min 3
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(0,1) = (-3) + (3-(2*(-3)))
= -3 + 9 = 6 58
f (0,1) = g (0,1) + h (0,1) = 1 + 6
= 7 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.5 Langkah pertama pencarian bestnode
Keterangan :
Simpul yang diperiksa Simpul awal
Simpul tujuan
Pada gambar 3.5 terdapat tiga simpul yang mungkin menjadi best node yaitu (1,0) dengan f(n)=7, (1,1) dengan f(n)=5 dan (0,1) dengan f(n)=7. Dari ke tiga simpul yang mungkin maka dipilihlah simpul (1,1) dengan biaya terkecil yaitu 5.
Langkah ke dua n (2,2) : g (2,2) = 2
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(2,2) = (abs(2 - 2) + abs(2 - 2))
= (abs(0) + abs(0)) = 0
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(2,2) = min(abs(2 - 2)+abs(2 - 2))
= min(abs(0)+abs(0)) = min 0
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(0,1) = (-0) + (0-(2*(-0)))
= 0 + 0 = 0
f (2,2) = g (2,2) + h (2,2) = 2 + 0
= 2
n (2,1) : g (2,1) = 2
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(2,1) = (abs(2 - 2) + abs(1 - 2))
= (abs(0) + abs(-1)) = 1
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(2,1) = min(abs(2 - 2)+abs(1 - 2))
= min(abs(0)+abs(-1)) = min 1
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(2,1) = (-1) + (1-(2*(-1))) = -1 + 3 = 2 f (2,1) = g (2,1) + h (2,1) = 2 + 2 = 4 n (1,2) : g (1,2) = 2
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(1,2) = (abs(1 - 2) + abs(2 - 2))
= (abs(-1) + abs(0)) = 1
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(1,2) = min(abs(1 - 2)+abs(2 - 2))
= min(abs(-1)+abs(0)) = min 1
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(1,2) = (-1) + (1-(2*(-1)))
= -1 + 3 = 2
= 2 + 2 = 4 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.6 Langkah kedua pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke tiga simpul yang mungkin maka dipilihlah simpul (2,2) dengan biaya terkecil yaitu 2.
Langkah ke tiga n (3,3) : g (3,3) = 3
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(3,3) = (abs(3 - 2) + abs(3 - 2))
= (abs(1) + abs(1)) = 2
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(3,3) = min(abs(3 - 2)+abs(3 - 2))
= min(abs(1)+abs(1)) = min 2
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(3,3) = (-2) + (2-(2*(-2)))
= -2 + 6 = 4
f (3,3) = g (3,3) + h (3,3) = 3 + 4
= 7
n (3,2) : g (3,2) = 3
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(3,2) = (abs(3 - 2) + abs(2 - 2))
= (abs(1) + abs(0)) = 1
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(3,2) = min(abs(3 - 2)+abs(2 - 2))
= min(abs(1)+abs(0)) = min 1
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(3,2) = (-1) + (1-(2*(-1))) = -1 + 3 = 2 f (3,2) = g (3,2) + h (3,2) = 3 + 2 = 5 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 Gambar 3.7 Langkah ketiga pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke dua simpul yang mungkin maka dipilihlah simpul (3,2) dengan biaya terkecil yaitu 5.
Langkah ke empat n (4,2) : g (4,2) = 4
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(4,2) = (abs(4 - 2) + abs(2 - 2))
= (abs(2) + abs(0)) = 2
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(4,2) = min(abs(4 - 2)+abs(2 - 2))
= min(abs(2)+abs(0)) = min 2
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(4,2) = (-2) + (2-(2*(-2))) = -2 + 6 = 4 f (4,2) = g (4,2) + h (4,2) = 4 + 4 = 8 n (4,3) : g (4,3) = 4
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(4,3) = (abs(4 - 2) + abs(3 - 2))
= (abs(2) + abs(1)) = 3
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(4,3) = min(abs(4 - 2)+abs(3 - 2))
= min(abs(2)+abs(1)) = min 3
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(4,3) = (-3) + (3-(2*(-3)))
= -3 + 9 = 6
= 4 + 6 = 10 n (4,1) : g (4,1) = 4
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(4,1) = (abs(4 - 2) + abs(1 - 2))
= (abs(2) + abs(-1)) = 3
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(4,1) = min(abs(4 - 2)+abs(1 - 2))
= min(abs(2)+abs(-1)) = min 3
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(4,1) = (-3) + (3-(2*(-3))) = -3 + 9 = 6 f (4,1) = g (4,1) + h (4,1) = 4 + 6 = 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 Gambar 3.8 Langkah keempat pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke tiga simpul yang mungkin maka dipilihlah simpul (4,2) dengan biaya terkecil yaitu 8.
Langkah ke lima n (5,2) : g (5,2) = 5
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(5,2) = (abs(5 - 2) + abs(2 - 2))
= (abs(3) + abs(0)) = 3
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(5,2) = min(abs(5 - 2)+abs(2 - 2))
= min(abs(3)+abs(0)) = min 3
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(5,2) = (-3) + (3-(2*(-3))) = -3 + 9 = 6 f (5,2) = g (5,2) + h (5,2) = 5 + 6 = 11 n (5,3) : g (5,3) = 5
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(5,3) = (abs(5 - 2) + abs(3 - 2))
= (abs(3) + abs(1)) = 4
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(5,3) = min(abs(5 - 2)+abs(3 - 2))
= min(abs(3)+abs(1)) = min 4
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(5,3) = (-4) + (4-(2*(-4)))
= -4 + 12 = 8
= 5 + 8 = 13 n (5,1) : g (5,1) = 5
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(5,1) = (abs(5 - 2) + abs(1 - 2))
= (abs(3) + abs(-1)) = 4
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(5,1) = min(abs(5 - 2)+abs(1 - 2))
= min(abs(3)+abs(-1)) = min 4
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(5,1) = (-4) + (4-(2*(-4))) = -4 + 12 = 8 f (5,1) = g (5,1) + h (5,1) = 5 + 8 = 13 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.9 Langkah kelima pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke tiga simpul yang mungkin maka dipilihlah simpul (5,2) dengan biaya terkecil yaitu 11.
Langkah ke enam n (6,2) : g (6,2) = 6
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(6,2) = (abs(6 - 2) + abs(2 - 2))
= (abs(4) + abs(0)) = 4
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(6,2) = min(abs(6 - 2)+abs(2 - 2))
= min(abs(4)+abs(0)) = min 4
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(6,2) = (-4) + (4-(2*(-4))) = -4 + 12 = 8 f (6,2) = g (6,2) + h (6,2) = 6 + 8 = 14 n (6,3) : g (6,3) = 6
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(6,3) = (abs(6 - 2) + abs(3 - 2))
= (abs(4) + abs(1)) = 5
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(6,3) = min(abs(6 - 2)+abs(3 - 2))
= min(abs(4)+abs(1)) = min 5
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(6,3) = (-5) + (5-(2*(-5)))
= -5 + 15 = 10
= 6 + 10 = 16 n (6,1) : g (6,1) = 6
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(6,1) = (abs(6 - 2) + abs(1 - 2))
= (abs(4) + abs(-1)) = 5
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(6,1) = min(abs(6 - 2)+abs(1 - 2))
= min(abs(4)+abs(-1)) = min 5
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(6,1) = (-5) + (5-(2*(-5))) = -5 + 15 = 10 f (6,1) = g (6,1) + h (6,1) = 6 + 10 = 16 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.10 Langkah keenam pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke tiga simpul yang mungkin maka dipilihlah simpul (6,2) dengan biaya terkecil yaitu 14.
Langkah ke 7 n (7,1) : g (7,1) = 7
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(7,1) = (abs(7 - 2) + abs(1 - 2))
= (abs(5) + abs(-1)) = 6
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(7,1) = min(abs(7 - 2)+abs(1 - 2))
= min(abs(5)+abs(-1)) = min 6
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(7,1) = (-6) + (6-(2*(-6))) = -6 + 18 = 12 f (7,1) = g (7,1) + h (7,1) = 7 + 12 = 19 n (6,1) : g (6,1) = 7
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(6,1) = (abs(6 - 2) + abs(1 - 2))
= (abs(4) + abs(-1)) = 5
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(6,1) = min(abs(6 - 2)+abs(1 - 2))
= min(abs(4)+abs(-1)) = min 5
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(6,1) = (-5) + (5-(2*(-5)))
= -5 + 15 = 10
= 7 + 10 = 17 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.11 Langkah ketujuh pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke dua simpul yang mungkin maka dipilihlah simpul (6,1) dengan biaya terkecil yaitu 17.
Langkah ke delapan n (7,0) : g (7,0) = 8
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(7,0) = (abs(7 - 2) + abs(0 - 2))
= (abs(5) + abs(-2)) = 7
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(7,0) = min(abs(7 - 2)+abs(0 - 2))
= min(abs(5)+abs(-2)) = min 7
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(7,0) = (-7) + (7-(2*(-7)))
= -7 + 21 = 14
f (7,0) = g (7,1) + h (7,1) = 8 + 14
= 22 n (7,1) : g (7,1) = 8
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(7,1) = (abs(7 - 2) + abs(1 - 2))
= (abs(5) + abs(-1)) = 6
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(7,1) = min(abs(7 - 2)+abs(1 - 2))
= min(abs(5)+abs(-1)) = min 6
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(7,1) = (-6) + (6-(2*(-6))) = -6 + 18 = 12 f (7,1) = g (7,1) + h (7,1) = 8 + 12 = 20 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.12 Langkah kedelapan pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke dua simpul yang mungkin maka dipilihlah simpul (7,1) dengan biaya terkecil yaitu 20.
n (8,0) : g (8,0) = 9
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(8,0) = (abs(8 - 2) + abs(0 - 2))
= (abs(6) + abs(-2)) = 8
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(8,0) = min(abs(8 - 2)+abs(0 - 2))
= min(abs(6)+abs(-2)) = min 8
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(8,0) = (-8) + (8-(2*(-8))) = -8 + 24 = 16 f (8,0) = g (7,1) + h (7,1) = 9 + 16 = 25 n (8,1) : g (8,1) = 9
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(8,1) = (abs(8 - 2) + abs(1 - 2))
= (abs(6) + abs(-1)) = 7
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(8,1) = min(abs(8 - 2)+abs(1 - 2))
= min(abs(6)+abs(-1)) = min 7
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(8,1) = (-7) + (7-(2*(-7)))
= -7 + 21 = 14
f (8,1) = g (8,1) + h (8,1) = 9 + 14
= 23 n (8,2) : g (8,2) = 9
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(8,2) = (abs(8 - 2) + abs(2 - 2))
= (abs(6) + abs(0)) = 6
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(8,2) = min(abs(8 - 2)+abs(2 - 2))
= min(abs(6)+abs(0)) = min 6
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(8,2) = (-6) + (6-(2*(-6))) = -6 + 18 = 12 f (8,2) = g (8,2) + h (8,2) = 9 + 12 = 21 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 Gambar 3.13 Langkah kesembilan pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke dua simpul yang mungkin maka dipilihlah simpul (8,2) dengan biaya terkecil yaitu 21.
n (9,1) : g (9,1) = 10
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(9,1) = (abs(9 - 2) + abs(1 - 2))
= (abs(7) + abs(-1)) = 8
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(9,1) = min(abs(9 - 2)+abs(1 - 2))
= min(abs(7)+abs(-1)) = min 8
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(9,1) = (-8) + (8-(2*(-8))) = -8 + 24 = 16 f (9,1) = g (9,1) + h (9,1) = 10 + 16 = 26 n (9,2) : g (9,2) = 10
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(9,2) = (abs(9 - 2) + abs(2 - 2))
= (abs(7) + abs(0)) = 7
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(9,2) = min(abs(9 - 2)+abs(2 - 2))
= min(abs(7)+abs(0)) = min 7
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(9,2) = (-7) + (7-(2*(-7)))
= -7 + 21 = 14
f (9,2) = g (9,2) + h (9,2) = 10 + 14
= 24
n (9,3) : g (9,3) = 10
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(9,3) = (abs(9 - 2) + abs(3 - 2))
= (abs(7) + abs(1)) = 8
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(9,3) = min(abs(9 - 2)+abs(3 - 2))
= min(abs(7)+abs(1)) = min 8
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(9,3) = (-8) + (8-(2*(-8))) = -8 + 24 = 16 f (9,3) = g (9,3) + h (9,3) = 10 + 16 = 26 n (8,3) : g (8,3) = 10
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(8,3) = (abs(8 - 2) + abs(3 - 2))
= (abs(6) + abs(1)) = 7
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(8,3) = min(abs(8 - 2)+abs(3 - 2))
= min(abs(6)+abs(1)) = min 7
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(8,3) = (-7) + (7-(2*(-7)))
= -7 + 21 = 14
= 10 + 14 = 24 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
Gambar 3.14 Langkah kesepuluh pencarian bestnode
Simpul yang diperiksa Simpul awal
Simpul tujuan Simpul yang dipilih
Dari ke empat simpul yang mungkin maka dipilihlah simpul (9,2) dengan biaya terkecil yaitu 24.
Langkah ke sebelas n (10,1) : g (10,1) = 11
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(10,1) = (abs(10 - 2) + abs(1 - 2))
= (abs(8) + abs(-1)) = 9
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(10,1) = min(abs(10 - 2)+abs(1 - 2))
= min(abs(8)+abs(-1)) = min 9
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(10,1) = (-9) + (9-(2*(-9)))
= -9 + 27 = 18
f (10,1) = g (10,1) + h (10,1) = 11 + 18
= 29
n (10,2) : g (10,2) = 11
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(10,2) = (abs(10 - 2) + abs(2 - 2))
= (abs(8) + abs(0)) = 8
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(10,2) = min(abs(10 - 2)+abs(2 - 2))
= min(abs(8)+abs(0)) = min 8
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(10,2) = (-8) + (8-(2*(-8))) = -8 + 24 = 16 f (10,2) = g (10,2) + h (10,2) = 11 + 16 = 27 n (10,3) : g (10,3) = 11
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_orthogonal(10,3) = (abs(10 - 2) + abs(3 - 2))
= (abs(8) + abs(1)) = 9
h_diagonal(n) = min(abs(n.x-goal.x) + abs(n.y-goal.y)) h_diagonal(10,3) = min(abs(10 - 2)+abs(3 - 2))
= min(abs(8)+abs(1)) = min 9
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n))) h(10,3) = (-9) + (9-(2*(-9)))
= -9 + 27 = 18
= 11 + 18 = 29
Dari ke tiga simpul yang mungkin menjadi bestnode maka dipilihlah simpul (10,2) dengan biaya terkecil yaitu 27, dan dikenali sebagai simpul tujuan yaitu (10,2) berarti solusi telah ditemukan.
0 1 2 3 4 5 6 7 8 9 10 0
1 2