• Tidak ada hasil yang ditemukan

Analisis Algoritma A*

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

Dokumen terkait