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

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA
BAB : CONSTRAINT SATISFACTION PROBLEM
NAMA : -RENDY PUTRA JALIASMAR
-ABDUL KHALIK SEMBIRING ACC
-MUHAMMAD RIFQI
-MUHAMMAD IQBAL ALVIN
NIM : -165150200111148
-165150200111153
-165150207111076
-165150201111186
TANGGAL : 18/04/2018
JENIS : TUGAS
ASISTEN : -DINDY FITRIANNORA
-WINDYA HARTASIH

A. DEFINISI MASALAH
1. Jelaskan konsep dasar dari agen berbasis pengetahuan dan hal- hal apa saja yang
harus dipenuhi ketika membuat agen tersebut.
2. Berilah contoh kasus entailment dari permainan Wumpus World berdasarkan aturan
yang diberikan
3. Dari soal nomor 2, tunjukkan dengan metode pembukuan pembuktian baik meodel
checksum ataupun menggunakan tabel kebenaran (minimal 3 kalimat dan maksimal
6 kalimat)
Contoh pengerjaan :
Diketahui KB = (B1,1 (P2,1 V ¬P3,1) V ¬B1,1) dan σ = ¬B1,1 V P2,1 Buktikan dengan
tabel kebenaran berikut, apa saja kondisi yang memenuhi KB|=σ

4. Carilah kode program dari library atau lainnya dan kemudian modifikasi yang
digunakan untuk megimplementasikan konsep agen berbasis logika dengan
menerapkan pula proses interfensi dengan cara entailement yang kemudian
dibuktikan dengan model checking dan tabel kebenaran.
B. JAWAB
1. Konsep dasar agen berbasis pengetahuan
 Mengetahui hal – hal tentang dunia dan dapat melakukan reasoning (berpikir, bernalar)
mengenal
a. Hal – hal yang tidak diketahui sebelumnya (imperfect/partial information)
b. Tindakan yang paling baik untuk diambil (best action)
 Menyatakan apa yang diketahui oleh agent
 Pendekatan deklaratif dalam membangun agen dengan memberitahu informasi yang
relevan berdasarkan sebuah kecerdasa1n buatan (tell)
 Agen display dapat ditanya (atau bertanya diri sendiri) apa yang sebaiknya dilakukan
berdasarkan kecerdasan buatan (ask)
Agen berbasis pengetahuan harus dapat
 Merepresentasikan world, state, action, dll
 Menerima informasi baru
 Meng-update representasinya
 Myimpulkan pengetahuan lain yang tidak eksplisit (hidden property)
 Menyimpulkan action apa yang perlu diambil

2. Wumpus World
a. Aturan permainan dalam Wumpus world
 Performance measure : emas +1000, mati –1000, perak -1, panah -10.
 Environment : Matriks 4x4 ruang dengan intial state [1,1]. Ada emas, Wumpus,
dan lubang yang lokasinya dipilih secara acak.
 Percept terdiri dari :
 Hembusan angina : kamar disamping lubang jebakan ada hembusan angina
 Kilauan : kamar dimana ada emas ada kilauan / sinar
 Bau : kamar dimana disamping Wumpus berbau busuk (stench)
 Action : maju, belok kiri 90, belok kanan 90, tembak panah (hanya 1), ambil
benda.
b. [1,1] OK dan [1,2] ada hembusan angina (H).
1 2 3 4
1 A : Agen
H : Hembusan angin
? E : Emas
2
L : Lubang
H
A ? B : Bau
3
T : Terkunjungi
A ? W : Wumpus
4
K : Kilauan

c. Model jebakan ada 3 pilihan Boolean di [1,3], [2,1], [2,2] dengan 8 kemungkinan
model.
3. Pembuktian model checksum
KB = pengamatan (percept) + aturan main Wumpus world.
Untuk menyatakan apakah kamar [2,1] aman atau tidak aman atau tidak aman, maka
dilakukan entailment yang dibuktikan dengan menggunakan model checksum yakni
memeriksa semua kemungkinan M(Kb), M(α1).

Dari ilustrasi diatas menunjukkan bahwa : M(Kb) subset dari M(α1) sehingga bisa
disimpulkan bahwa kamar [2,1] aman.
 Untuk pengamatan apakah kamar [2,2] aman, maka dengan ditunjukkan oleh α2,
ilustrasinya sebagai berikut :

 Dari gambar tersebut menunjukkan bahwa M(Kb) bukan subset dari M(α2), sehingga
bisa disimpulkan bahwa KB | ≠ α2, dengan kata lain kamar [2,2] tidak aman.
Tabel Kebenaran
KB = B1,2 ˄ (P2,2 ˅ P1,3)

α1 = menyaatkan kamar di [2,1] aman


B1,1 B1,2 P2,1 P1,2 P2,2 P1,3 KB α1
F F F F F F F T
F F F F F T F T
F T F F F F F T
F T F F F T T T
F T F F T F T T
F F T F F T T T
Karena KB 1 = α1, maka kamar [2,1] aman

α2 = menyaatkan kamar di [2,2] aman


B1,1 B1,2 P2,1 P1,2 P2,2 P1,3 KB α1
F F F F F F F T
F F F F F T F T
F T F F F F F T
F T F F F T T T
F T F F T F T T
F F T F F T T T
Karena KB 1 = α1, maka kamar [2,2] aman.

4. Source Code
Wumpus.java
1 import java.util.Scanner;
2
3 public class wumpus {
4
5 static int scream = 0;
6 static int score = 0;
7 static int complete = 0;
8
9 static boolean check(Tiles t) {
10 int temp = t.sense();
11 if (temp == 1 || temp == 2) {
12 return false;
13 }
14 return true;
15 }
16
17 public static void main(String[] args) {
18 Scanner scr = new Scanner(System.in);
19 Environment e = new Environment();
20 String w[][] = new String[5][5];
21 e.accept(w);
22 System.out.println("\n\n Finding the
solution...");
23 Tiles t[] = new Tiles[17];
24 int c = 1;
25 out:
26 for (int i = 1; i < 5; i++) {
27 for (int j = 1; j < 5; j++) {
28 if (c > 16) {
29 break out;
30 }
31 t[c] = new Tiles(w[i][j], c);
32 ++c;
33 }
34 }
35 t[13].safe = 1;
36 t[13].visited = 1;
37 int pos = 13;
38 int condition;
39 int limit = 0;
40 String temp1, temp2;
41 do {
42 ++limit;
43 condition = -1;
45 if (t[pos].env.contains("G")) {
46 complete = 1;
47 System.out.println("Gold Found!");
48 break;
49 }
50 if (t[pos].br != 1 && t[pos].r != 1 && t[pos
+ 1].doubt_pit < 1 && t[pos + 1].doubt_wump < 1 && t[pos
+ 1].pit != 1 && t[pos + 1].wump != 1 &&
!(t[pos].back.contains("r") && (t[pos].l != 1 || t[pos].u
!= 1 || t[pos].d != 1) && check(t[pos]))) {
51 temp1 = "1";
52 t[pos].r = 1;
53 ++pos;
54 System.out.println("\nfront pos" + pos);
55 ++score;
56 t[pos].back += temp1;
57 condition = t[pos].sense();
58 if (condition == 3) {
59 complete = 1;
60 break;
61 } else if (condition == 1 &&
t[pos].visited == 0) {
62 if (t[pos].br != 1 && t[pos + 1].safe
!= 1) {
63 t[pos + 1].doubt_pit += 1;
64 }
65 if (t[pos].bu != 1 && (pos - 4) >= 1
&& t[pos - 4].safe != 1) {
66 t[pos - 4].doubt_pit += 1;
67 }
68 if (t[pos].bl != 1 && (pos - 1) >= 1
&& t[pos - 1].safe != 1) {
69 t[pos - 1].doubt_pit += 1;
70 }
71 if (t[pos].bd != 1 && (pos + 4) <= 16
&& t[pos + 4].safe != 1) {
72 t[pos + 4].doubt_pit += 1;
73 }
74 t[pos].safe = 1;
75 } else if (condition == 2 &&
t[pos].visited == 0) {
76 if (t[pos].br != 1 && t[pos + 1].safe
!= 1) {
77 t[pos + 1].doubt_wump += 1;
78 }
79 if (t[pos].bu != 1 && (pos - 4) >= 1
&& t[pos - 4].safe != 1) {
80 t[pos - 4].doubt_wump += 1;
81 }
82 if (t[pos].bl != 1 && (pos - 1) >= 1
&& t[pos - 1].safe != 1) {
83 t[pos - 1].doubt_wump += 1;
84 }
85 if (t[pos].bd != 1 && (pos + 4) <= 16
&& t[pos + 4].safe != 1) {
86 t[pos + 4].doubt_wump += 1;
87 }
88 t[pos].safe = 1;
89 } else if (condition == 0) {
90 t[pos].safe = 1;
91 }
92 t[pos].visited = 1;
93 } else if (t[pos].bl != 1 && t[pos].l != 1 &&
t[pos - 1].doubt_pit < 1 && t[pos - 1].doubt_wump < 1 &&
t[pos - 1].pit != 1 && t[pos - 1].wump != 1 &&
!(t[pos].back.contains("1") && (t[pos].r != 1 || t[pos].u
!= 1 || t[pos].d != 1) && check(t[pos]))) {
94 temp1 = "r";
95 t[pos].l = 1;
96 pos = pos - 1;
97 System.out.println("\nback pos= " + pos);
98 ++score;
99 t[pos].back += temp1;
100 condition = t[pos].sense();
101 if (condition == 3) {
102 complete = 1;
103 break;
104 } else if (condition == 1 &&
t[pos].visited == 0) {
105 if (t[pos].br != 1 && t[pos + 1].safe
!= 1) {
106 t[pos + 1].doubt_pit += 1;
107 }
108 if (t[pos].bu != 1 && (pos - 4) >= 1
&& t[pos - 4].safe != 1) {
109 t[pos - 4].doubt_pit += 1;
110 }
111 if (t[pos].bl != 1 && (pos - 1) >= 1
&& t[pos - 1].safe != 1) {
112 t[pos - 1].doubt_pit += 1;
113 }
114 if (t[pos].bd != 1 && (pos + 4) <= 16
&& t[pos + 4].safe != 1) {
115 t[pos + 4].doubt_pit += 1;
116 }
117 t[pos].safe = 1;
118 } else if (condition == 2 &&
t[pos].visited == 0) {
120 if (t[pos].br != 1 && t[pos + 1].safe
!= 1) {
121 t[pos + 1].doubt_wump += 1;
122 }
123 if (t[pos].bu != 1 && (pos - 4) >= 1
&& t[pos - 4].safe != 1) {
124 t[pos - 4].doubt_wump += 1;
125 }
126 if (t[pos].bl != 1 && t[pos - 1].safe
!= 1) {
127 t[pos - 1].doubt_wump += 1;
128 }
129 if (t[pos].bd != 1 && (pos + 4) <= 16
&& t[pos + 4].safe != 1) {
130 t[pos + 4].doubt_wump += 1;
131 }
132 t[pos].safe = 1;
133 } else if (condition == 0) {
134 t[pos].safe = 1;
135 }
136 t[pos].visited = 1;
137 } else if (t[pos].bd != 1 && t[pos].d != 1 &&
(pos + 4) <= 16 && t[pos + 4].doubt_pit < 1 && t[pos +
4].doubt_wump < 1 && t[pos + 4].pit != 1 && t[pos +
4].wump != 1) {
138 temp1 = "u";
139 t[pos].d = 1;
140 pos = pos + 4;
141 System.out.println("\ndown pos= " + pos);
142 ++score;
143 t[pos].back += temp1;
144 condition = t[pos].sense();
145 if (condition == 3) {
146 complete = 1;
147 break;
148 } else if (condition == 1 &&
t[pos].visited == 0) {
149 if (t[pos].br != 1 && t[pos + 1].safe
!= 1) {
150 t[pos + 1].doubt_pit += 1;
151 }
152 if (t[pos].bu != 1 && (pos - 4) >= 1
&& t[pos - 4].safe != 1) {
153 t[pos - 4].doubt_pit += 1;
154 }
155 if (t[pos].bl != 1 && (pos - 1) >= 1
&& t[pos - 1].safe != 1) {
156 t[pos - 1].doubt_pit += 1;
157 }
158 if (t[pos].bd != 1 && (pos + 4) <= 16
&& t[pos + 4].safe != 1) {
159 t[pos + 4].doubt_pit += 1;
160 }
161 t[pos].safe = 1;
162 } else if (condition == 2 &&
t[pos].visited == 0) {
163 if (t[pos].br != 1 && t[pos + 1].safe
!= 1) {
164 t[pos + 1].doubt_wump += 1;
165 }
166 if (t[pos].bu != 1 && (pos - 4) >= 1
167 && t[pos - 4].safe != 1) {
168 t[pos - 4].doubt_wump += 1;
169 }
170 if (t[pos].bl != 1 && t[pos - 1].safe
!= 1) {
171 t[pos - 1].doubt_wump += 1;
172 }
173 if (t[pos].bd != 1 && (pos + 4) <= 16
&& t[pos + 4].safe != 1) {
174 t[pos + 4].doubt_wump += 1;
175 }
176 t[pos].safe = 1;
177 } else if (condition == 0) {
178 t[pos].safe = 1;
179 }
180 t[pos].visited = 1;
181
182 } else if (limit > 50) {
183 int temp3 = pos;
184 int flag_1 = 0, flag2 = 0, flag3 = 0,
flag4 = 0;
185 System.out.println("\nCurrently at
position " + temp3 + ".\nThinking...");
186 while (t[pos].visited == 1 && t[pos].br
!= 1) {
187 ++pos;
188 ++score;
189
190 }
191 if (t[pos].pit == 1 || t[pos].wump == 1
|| (t[pos].br == 1 && t[pos].visited == 1 && t[pos].safe
!= 1)) {
192 pos = temp3;
193 }
194 if (flag_1 == 0) {
195 t[pos].back += "1";
196 }
197 while (pos + 4 >= 1 && t[pos].bu != 1 &&
t[pos].visited == 1) {
198 pos -= 4;
199 ++score;
200 }
201 if (t[pos].pit == 1 || t[pos].wump == 1
|| (t[pos].bu == 1 && t[pos].visited == 1 && t[pos].safe
!= 1)) {
202 pos = temp3;
203 flag3 = 1;
204 }
205 if (flag3 == 0) {
206 t[pos].back += "d";
207 }
208 while (t[pos].visited == 1 && t[pos].bl
!= 1) {
209 --pos;
210 ++score;
211 }
212 if (t[pos].pit == 1 || t[pos].wump == 1
|| (t[pos].bl == 1 && t[pos].visited == 1 && t[pos].safe
!= 1)) {
213 pos = temp3;
214 flag2 = 1;
215 }
216 if (flag2 == 0) {
217 t[pos].back += "r";
218 }
219 while (pos + 4 <= 16 && t[pos].bd != 1 &&
t[pos].visited == 1) {
220 pos += 4;
221 ++score;
222 }
223 if (t[pos].pit == 1 || t[pos].wump == 1
|| (t[pos].bd == 1 && t[pos].visited == 1 && t[pos].safe
!= 1)) {
224 pos = temp3;
225 flag4 = 1;
226 }
227 if (flag4 == 0) {
228 t[pos].back += "u";
229 }
230 t[pos].safe = 1;
231 t[pos].visited = 1;
232 System.out.println("reached at position "
+ pos);
233 limit = 0;
234
235 }
236 if (t[pos].env.contains("W") && scream != 1)
{
237 score += 100;
238 scream = 1;
239 t[pos].safe = 1;
240 System.out.println("\n\n Wumpus killed --
>");
241 t[pos].env.replace("W", " ");
242 for (int l = 1; l <= 16; ++l) {
243 t[l].doubt_wump = 0;
244 t[l].env.replace("S", " ");
245 }
246 }
247 if (t[pos].env.contains("P")) {
248 score += 50;
249 t[pos].pit = 1;
250 System.out.println("\n\nFallen in pit of
position " + pos + ".");
251 }
252 for (int k = 1; k <= 16; ++k) {
253 if (t[k].doubt_pit == 1 &&
t[k].doubt_wump == 1) {
254 t[k].doubt_pit = 0;
255 t[k].doubt_wump = 0;
256 t[k].safe = 1;
257 }
258 }
259 for (int y = 1; y <= 16; ++y) {
260 if (t[y].doubt_wump > 1) {
261 t[y].wump = 1;
262 for (int h = 1; h <= 16; ++h) {
263 if (h != y) {
264 t[h].doubt_wump = 0;
265 t[h].env.replace("S", " ");
266 }
267 }
268 }
269 }
270 for (int y = 1; y <= 16; ++y) {
271 if (t[y].doubt_pit > 1) {
272 t[y].pit = 1;
273 }
274 }
275 try {
276 Thread.sleep(200);
277 } catch (Exception p) {
278 }
279 } while (complete == 0);
280 if (complete == 1) {
281 score = score * 2;
282 if (scream == 1) {
283 score -= 100;
284 }
285 score *= -1;
286 score += 1000;
287 }
288 System.out.println("The score till he reaches
gold is " + score + ".\nNow he will return back following
the explored path.");
289 }
290 }

Environment.java
1 import java.util.*;
2
3 public class Environment {
4
5 Scanner scr = new Scanner(System.in);
6 int np;
7 int wp, gp;
8 int pos[];
9 int b_pos[] = new int[20];
10 int s_pos[] = new int[20];
11
12 void accept(String w[][]) {
13 for (int i = 0; i < 20; ++i) {
14 b_pos[i] = -1;
15 s_pos[i] = -1;
16 }
17 for (int i = 0; i < 5; ++i) {
18 for (int j = 0; j < 5; ++j) {
19 w[i][j] = "";
20 }
21 }
22 int count = 1;
23 System.out.println("\n\n ******Wumpus World
Problem ******");
24 System.out.println("The position are as
follows.");
25 for (int i = 1; i <= 4; ++i) {
26 System.out.println("\n-----------------------
27 ------------------");
28 System.out.println("|\t");
29 for (int j = 1; j <= 4; ++j) {
30 System.out.print((count++) + "\t|\t");
31 }
32 }
33 System.out.println("\n---------------------------
-------");
34 System.out.println("\nAgent start position :
13");
35 w[4][1] = "A";
36 System.out.println("\nEnter the number of
pits.");
37 np = scr.nextInt();
38 pos = new int[np];
39 System.out.println("Position of pit, gold, and
wumpus should not overlap");
40 System.out.println("Enter the position of
pits.");
41 for (int i = 0; i < np; ++i) {
42 pos[i] = scr.nextInt();
43 show_sense(pos[i], 1, w);
44 }
45 System.out.println("Enter the position of
wumpus.");
46 wp = scr.nextInt();
47 show_sense(wp, 2, w);
48 System.out.println("Enter the position of
gold.");
49 gp = scr.nextInt();
50 insert(w);
51 }
52
53 void insert(String w[][]) {
54 int temp = 0;
55 int count = 0;
56 int flag1 = 0, flag2 = 0;
57 for (int i = 0; i < np; ++i) {
58 temp = pos[i];
59 count = 0;
60 for (int j = 1; j <= 4; ++j) {
61 for (int k = 1; k <= 4; ++k) {
62 ++count;
63 if (count == temp) {
64 w[j][k] += "P";
65 } else if (count == gp && flag1 == 0)
{
66 w[j][k] += "G";
67 flag1 = 1;
68 } else if (count == wp && flag2 == 0)
{
69 w[j][k] += "W";
70 flag2 = 1;
71 }
72 }
73
74 }
75
76 }
77 display(w);
78
79 }
80
81 void show_sense(int a, int b, String w[][]) {
82 int t1, t2, t3, t4;
83 t1 = a - 1;
84 t2 = a + 1;
85 t3 = a + 4;
86 t4 = a - 5;
87 if (a == 5 || a == 9) {
88 t1 = 0;
89 }
90 if (a == 8 || a == 12) {
91 t2 = 0;
92 }
93 if (a == 4) {
94 t2 = 0;
95 }
96 if (a == 13) {
97 t1 = 0;
98 }
99 if (t3 > 16) {
100 t3 = 0;
101 }
102 if (t4 < 0) {
103 t4 = 0;
104 }
105 if (b == 1) {
106 b_pos[0] = t1;
107 b_pos[1] = t2;
108 b_pos[2] = t3;
109 b_pos[3] = t4;
110 } else if (b == 2) {
111 s_pos[0] = t1;
112 s_pos[1] = t2;
113 s_pos[2] = t3;
114 s_pos[3] = t4;
115 }
116 int temp1 = 0, count;
117 for (int i = 0; i < 4; ++i) {
118 if (b == 1) {
119 temp1 = b_pos[i];
120 } else {
121 temp1 = s_pos[i];
122 }
123 }
124 count = 0;
125 for (int j = 1; j <= 4; ++j) {
126 for (int k = 1; k <= 4; ++k) {
127 ++count;
128 if (count == temp1 && b == 1 &&
!w[j][k].contains("B")) {
129 w[j][k] += "B";
130 } else if (count == temp1 && b == 2 &&
!w[j][k].contains("S")) {
131 w[j][k] += "S";
132 }
133 }
134 }
135
136 }
137
138 void display(String w[][]) {
139 System.out.println("\n The environment for
problem is as follows.\n");
140 for (int i = 1; i <= 4; ++i) {
141 System.out.println("\n-----------------------
----------------------");
142 System.out.println("|\t");
143 for (int j = 1; j <= 4; ++j) {
144 System.out.println(w[i][j] + "\t|\t");
145 }
146 }
147 System.out.println("\n---------------------------
----------------------");
148 }
149 }

Tiles.java
1 public class Tiles {
2
3 int safe = 0;
4 int unsafe = 0;
5 int wump = 0;
6
7
int pit = 0, gold = 0, doubt_pit = 0, doubt_wump = 0,
br = 0, num = 0, bl = 0, bu = 0, bd = 0, l, r, u, d,
8 visited = 0;
9 String env;
10 String back = "";
11
12 Tiles(String s, int n) {
13 env = s;
14 num = n;
15 l = r = u = d = 0;
16 if (n == 9 || n == 5) {
17 bl = 1;
18 }
19 if (n == 8 || n == 12) {
20 br = 1;
21 }
22 if (n == 1) {
23 bu = 1;
24 bl = 1;
25 }
26 if (n == 13) {
27 bd = 1;
28 bl = 1;
29 }
30 if (n == 4) {
31 bu = 1;
32 br = 1;
33 }
34 if (n == 16) {
35 bd = 1;
36 br = 1;
37 }
38 }
39
40 int sense() {
41 if (env.contains("B")) {
42 return 1;
43 } else if (env.contains("S")) {
44 return 2;
45 } else if (env.contains("G")) {
46 return 3;
47 } else if (env.contains("W")) {
48 return 4;
49 } else {
50 return 0;
51 }
52 }
}
Pembahasan:
- Class environment, membuat class environment dan mengimpor kelas scanner dan
mendeklarasikan nilai dari lubang, posisi Wumpus, posisi solid dan posisi lubang
- Method accept, menggambarkan keadaan gua Wumpus denagan bentuknya dan juga
meminta user untuk memasukkan jumlah lubang yang diiinginkan dan meminta user
untuk memasukkan jumlah lubang yang diinginkan dan meminta posisi dari Wumpus
- Method insert, memasukkan inputan user yang tadi di method sebelumnya telah
diminta.
- Method show-sense, menampilkan apa yang dirasa setelah memasukki posisi yang
telah dipilih
- Method display, menampilkan jawaban agar agen bisa mendapat gold
- Class tiles, kelas ini menurunkan jumlah dari posisi maupunkeadaan apasaja yang
dihadapi oleh agen logika
- Class Wumpus, mendeklarikan kelas Wumpus dimana akan mencetak nilai dari hasil
agen logika
- Class main, mendeklarasikan class main untuk menjalankan program yang berisi
algoritma berupa:
- Mencetak nilai tiles dengan perulangan dan array
- Mencetak jika posisi agen telah berhasil mendapat emas
- Menetukan posisi selanjutnya dimana agen akan berpindah dan memberitahu jika ada
sense maka akan berpindah posisi yang aman dan mencetak posisi dimana agen berada
dan memberitahu jika daerah itu aman atau tidak
- Percabanga jika Wumpus maka agen akan menembak panah untuk membunuh dan
daerah menjadi aman
- Mencetak jika agen jatuh ke pit
- Percabangan jika ada pit
- Mencetak jika agen logika telah sampai ke posisi gold dengan selamat dan bisa
menangkap jika ada error.

Screenshot
C. Kesimpulan

1. Sebutkan perbedaan definisi dan konsep dasar agen berbasis logika dengan agen
berbasis pengetahuan
Jawab:
Agen logika merupakan agen yang memiliki kemampuan bernalar secara logika.
Ketika beberapa solusi tidak secara eksplisit diketahui, maka diperlukan suatu agen
berbasis logika.
Agen berbasis pengetahuan dapat memberitahu informasi yg relevan dan disimpan
dalam sebuah kecerdasan buatan (Tell). Agen juga dapat ditanya (bertanya pd diri
sendiri) apa yang sebaiknya dilakukan berdasarkan kecerdasan buatan (Ask).

2. Jelaskan konsep dasar logika proporsisi baik secara sintaks atau maupun semantic
Jawab:
Sintaks logika proposisi :
- Jika S adalah kalimat maka ~S ada kalimat (negasi)
- Jika S1 dan S2 adalah kalimat S1 ∧ S2 adalah kalimat (konjungsi)
- Jika S1 dan S2 adalah kalimat S1 V S2 adalah kalimat (disjungsi)
Semantik dari logika preposisi:
- Sebuah model memberi nilai true atau false terhadap setiap proposisi, missal P1,2 =
true, P3,1 = false
- Sebuah proses rekursif bisa mengevaluasi kalimat sembarang

3. Jelaskan metode pembuktian dari logika proporsisi


Jawab:
Pengaplikasian inference rule
- Dihasilkan kalimat baru yang sah (sound) dari yang lama
- Bukti(proof) merupakan serangkaian pengaplikasian inference rule (operator ) dari
agoritma search
- Biasanya, kalimat harus diterjemahkan ke dalam sebuah normal form

Model checking
- Penjabaran truth table (sehingga dihasilkan nilai eksponensial dalam n)
- Backtracking lebih efisien, misalkan: algoritma DPLL
- Heuristic search dalam model space (sound tetapi incomplete), misalkan :
minconflicts hill –climbing

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