Вы находитесь на странице: 1из 8

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA
BAB : INFORMED SEARCH
NAMA : -RENDY PUTRA JALIASMAR
-ABDUL KHALIK SEMBIRING ACC
-MUHAMMAD RIFQI
-MUHAMMAD IQBAL ALVIN
NIM : -165150200111148
-165150200111153
-165150207111076
-165150201111186
TANGGAL : 21/03/2018
JENIS : TUGAS
ASISTEN : -DINDY FITRIANNORA
-WINDYA HARTASIH

A. DEFINISI MASALAH
Buatlah program (“untuk soal latihan praktikum nomor 3 b” atau “ untuk con-
toh masalah maze/labirin diatas dengan menggunakan algoritma A* dengan
nilai f(n) = g(n)+h(n), misal g(n) adalah tingkat kedalaman penelusuran, dan
h(n) adalah jarak Manhattan atau Euclidian”) dengan memodifikasi program
pada contoh program di-atas.
B. JAWAB

Graph.java
1 package kb4;
2 public class Graph {
3
4 private int [][] dt1;
5 private int current = 0;
6
7 private class Node {
8
9 private int data, jarak;
10 private Node next;
11
12 public Node (int dt, Node n, int jrk) {
13 data = dt;
14 next = n;
15 jarak = jrk;
16 }
17
18 public int getDt() {
19 return data;
20 }
21
22 public Node getNext() {
23 return next;
24 }
25
26 public int getJarak() {
27 return jarak;
28 }
29 }
30
31 private Node[] node;
32 private int jNode;
33
34 public Graph(int n) {
35 jNode = n;
36 node = new Node[jNode];
37 for (int i = 0; i < jNode; i++) {
38 node[i] = null;
39 }
40 dt1 = new int[n][n];
41 }
42
43 public void addAdj (int head, int adj, int jarak) {
44 Node n = new Node(adj, node[head], jarak);
45 node [head] = n;
46 current++;
47 dt1[head][adj]++;
48 }
49
50 public int[] arraylong(int [] d, int z){
51 int[] total = new int [d.length + 1];
52 for (int i = 0; i < d.length; i++) {
53 total[1] = d[i];
54 }
55 total[d.length] = z;
56 return total;
57 }
58
59 public char ubah (int a){
60 switch (a){
61 case 0:
62 return 'A';
63 case 1:
64 return 'B';
65 case 2:
66 return 'C';
67 case 3:
68 return 'D';
69 case 4:
70 return 'E';
71 case 5:
72 return 'F';
73 case 6:
74 return 'G';
75 default:
76 return 'S';
77 }
78 }
79
80 public int[] getNode(int asal){
81 int[] jwb = new int[0];
82 Node n = node [asal];
83 while (n != null){
84 System.out.println("->" + ubah(n.getDt()) + "
85 " + n.getJarak());
86 jwb = arraylong(jwb, n.getDt());
87 jwb = arraylong(jwb, n.getJarak());
88 n = n.getNext();
89 }
90 return jwb;
91 }
92 }

Astar.java
1 package kb4;
2 public class Astar {
3
4 Graph as;
5 int[] ds = {180, 90, 89, 0, 110, 79, 100};
6
7 public Astar() {
8 as = new Graph(7);
9 as.addAdj(0, 1, 79);
10 as.addAdj(0, 5, 81);
11 as.addAdj(0, 6, 63);
12 as.addAdj(1, 2, 131);
13 as.addAdj(1, 3, 109);
14 as.addAdj(1, 6, 55);
15 as.addAdj(2, 3, 88);
16 as.addAdj(3, 4, 92);
17 as.addAdj(3, 5, 126);
18 as.addAdj(4, 5, 148);
19 as.addAdj(5, 6, 60);
20
21 as.addAdj(1, 0, 79);
22 as.addAdj(5, 0, 81);
23 as.addAdj(6, 0, 63);
24 as.addAdj(2, 1, 131);
25 as.addAdj(3, 1, 109);
26 as.addAdj(6, 1, 55);
27 as.addAdj(3, 2, 88);
28 as.addAdj(4, 3, 92);
29 as.addAdj(5, 3, 126);
30 as.addAdj(5, 4, 148);
31 as.addAdj(6, 5, 60);
32 }
33
34 public char ubah(int a){
35 switch (a){
36 case 0:
37 return 'A';
38 case 1:
39 return 'B';
40 case 2:
41 return 'C';
42 case 3:
43 return 'D';
44 case 4:
45 return 'E';
46 case 5:
47 return 'F';
48 case 6:
49 return 'G';
50 default:
51 return 'S';
52 }
53 }
54
55 public boolean ceklist(int[] ko, int f){
56 boolean s = true;
57 for (int i : ko){
58 if (i == f){
59 s = s && false;
60 }
61 }
62 return s;
63 }
64
65 public void bintang(int n){
66 int now = n;
67 int terkecil;
68 int jalur[];
69 int kode[] = new int[0];
70 int f[];
71 while (now != 3){
72 System.out.println("Node saat ini : " +
ubah(now));
73 System.out.println("perhitungan :");
74 terkecil = 1000;
75 jalur = as.getNode(now);
76 f = new int[(int) Math.floor(jalur.length /
2)];
77 for (int i = 0; i < f.length; i++){
78 f[i] = jalur[(i*2)+1] + ds[jalur[i*2]];
79 System.out.println(f[i] + " ");
80 if((terkecil > f[i]) && ceklist(kode,
jalur[i*2])){
81 terkecil = f[i];
82 }
83 }
84 System.out.println("");
85 kode = as.arraylong(kode, now);
86 for (int i = 0; i < f.length; i++) {
87 if (terkecil == f[i]){
88 now = jalur[i*2];
89 }
90 }
91 System.out.println("Berpindah ke node : " +
ubah(now));
92 if (now == 3){
93 kode = as.arraylong(kode, now);
94 }
95 }
96 System.out.println("Tujuan ditemukan");
97 for (int i = 0; i < kode.length; i++) {
98 System.out.println(ubah(kode[i]) + "->");
99 }
100 System.out.println("finish");
101 }
102
103
104 }

Main.java
1 package kb4;
2 public class Main {
3
4 public static void main(String[] args) {
5 Astar n = new Astar ();
6 n.bintang(0);
7 }
8 }

Penjelasan
Class Graph:
Baris 12-16 : Konstruktor kelas Node dengan parameter int dt, Node n, dan int jarak.
Baris 18-20: Method getDt dengan nilai kembalian value dari data.
Baris 22-24: Method getNext dengan nilai kembalian value dari next.
Baris 26-28: Method getJarak dengan nilai kembalian value dari jark.
Baris 33-40: Konstraktor kelas Graph dengan parameter n
Baris 42-47: Method addAdj dengan parameter int head, int adj, dan int jarak. Method
ini berguna untuk menambah isi array.
Baris 49-56: Method arraylong dengan parameter int array d, dan int z. Method ini
berguna untuk menghubungkan node.
Baris 58-77: Method ubah dengan parameter int a. Method ini berguna untuk
mengubah value parameter a.
Baris 79-89: Methood getNode dengan parameter int asal. Method ini berfungsi untuk
memindahkan node saaat ini ke node yang terhubung dengan node awal dan
mengembalikan jaraknya.

Class Astar:
Baris 7-32: Konstruktor kelas Astar untuk menambahkan nilai ke atribut as.
Baris 34-53:Method ubah dengan parameter int a untuk mengubah value dari
parameter a.
Baris 55-63: Method ceklist dengan parameter int array ko, dan int f. Method ini
berguna untuk mengecek apa jalur tersebut telah di lewati.
Baris 65-101: Method bintang dengan parameter int n. Method ini merupakan method
yang menjalankan algoritma A*.

Class Main:
Baris 4-7 : Method untuk menjalankan program.

Screenshot
C. Kesimpulan
1. Definisikan konsep dasar metode informed search menurut pemahaman anda!
Jawab:
Metode informed search merupakan metode yang memfokuskan pencarian pada
suatu informasi agar proses pencarian lebih efisien.

2. Sebutkan kelebihan & kekurangan metode informed search!


Jawab:
Kelebihan:
- Lebih efisien
- Pencarian lebih cepat
Kekurangan:
- Algoritma lebih rumit
- Membutuhkan space lebih besar

3. Jelaskan bentuk permasalahan yang hanya dapat diselesaikan menggunakan


metode informed search!
Jawab:
Contohnya pada permasalahan pencarian jalur dari kota asal ke tujuan. Logaritma
ini sangat berguna untuk menentukan jalur mana yang lebih efisien sehingga jarak
yang ditempuh tidak terlalu jauh.

Вам также может понравиться