Mata Kuliah: Kecerdasan Artifisial (AI401) | 3 SKS
Setelah pertemuan ini, mahasiswa mampu:
| Pertemuan | Topik | Karakteristik |
|---|---|---|
| 2 | Uninformed Search | Agen tunggal, tanpa heuristik |
| 3 | Informed Search | Agen tunggal, dengan heuristik |
| 4 | Local Search | Agen tunggal, optimasi |
| 5 | Adversarial Search | Multi-agen kompetitif |
Perbedaan utama:
โ ๏ธ A* tidak bisa digunakan langsung untuk game karena lawan akan menghalangi!
Gambar 2.1: Klasifikasi game berdasarkan karakteristiknya
State berikutnya pasti ditentukan oleh aksi
Contoh: Catur, Go, Tic-Tac-Toe
Ada elemen keacakan (dadu, kartu)
Contoh: Backgammon, Poker
Semua pemain melihat seluruh state
Contoh: Catur (semua bidak terlihat)
Sebagian informasi tersembunyi
Contoh: Poker (kartu lawan tidak terlihat)
UMAX(s) + UMIN(s) = 0
atau: UMAX(s) = -UMIN(s)
๐ก Keuntungan MAX = Kerugian MIN, dan sebaliknya!
| Hasil | U(White/MAX) | U(Black/MIN) | Total |
|---|---|---|---|
| White menang | +1 | -1 | 0 โ |
| Draw | 0 | 0 | 0 โ |
| Black menang | -1 | +1 | 0 โ |
Game dengan karakteristik:
Contoh: Catur, Tic-Tac-Toe, Connect Four, Checkers
| Komponen | Deskripsi |
|---|---|
| Root Node | State awal permainan |
| MAX Nodes | Giliran kita (memaksimalkan) |
| MIN Nodes | Giliran lawan (meminimalkan) |
| Terminal Nodes | State akhir dengan nilai utility |
| Branching Factor (b) | Rata-rata langkah legal per state |
| Depth (m) | Kedalaman maksimum tree |
Gambar 3.2: Sebagian game tree untuk Tic-Tac-Toe
๐ก Tic-Tac-Toe cukup kecil untuk dieksplorasi sepenuhnya!
Prinsip:
Gambar 4.1: Propagasi nilai dari terminal ke root
MINIMAX(n) =
def max_value(state):
if terminal_test(state):
return utility(state)
v = -infinity
for action in actions(state):
v = max(v, min_value(result(state, action)))
return v
def min_value(state):
if terminal_test(state):
return utility(state)
v = +infinity
for action in actions(state):
v = min(v, max_value(result(state, action)))
return v
A (MAX)
/|\
/ | \
B C D (MIN)
/\ | /\
3 5 2 6 1
Step 1: MIN nodes
Step 2: MAX node
A = max(3, 2, 1) = 3 โ Pilih B!
Time Complexity: O(bm)
Space Complexity: O(bm)
| Game | b | m | Nodes |
|---|---|---|---|
| Tic-Tac-Toe | ~5 | 9 | ~106 |
| Chess | ~35 | ~100 | ~10154 ๐ฑ |
| Go | ~250 | ~150 | ~10360 ๐คฏ |
Eval(s) = wโยทmaterial + wโยทmobility + wโยทking_safety + ...
| Piece | Value |
|---|---|
| Pawn | 1 |
| Knight/Bishop | 3 |
| Rook | 5 |
| Queen | 9 |
Material advantage adalah feature paling penting!
Minimax mengevaluasi banyak node yang tidak perlu!
Contoh: Catur dengan depth 4
354 = 1.5 juta nodes
Dengan Alpha-Beta optimal:
352 = 1,225 nodes (99.9% lebih sedikit!)
ฮฑ (Alpha)
Nilai minimum yang dijamin MAX
(lower bound)
ฮฒ (Beta)
Nilai maksimum yang dijamin MIN
(upper bound)
Gambar 6.1: Pruning terjadi ketika ฮฑ โฅ ฮฒ
Jika nilai โค ฮฑ
โ Prune!
(MAX tidak akan pilih path ini)
Jika nilai โฅ ฮฒ
โ Prune!
(MIN tidak akan pilih path ini)
Pruning Rule: ฮฑ โฅ ฮฒ โ PRUNE!
def max_value(state, alpha, beta):
if terminal_test(state): return utility(state)
v = -infinity
for action in actions(state):
v = max(v, min_value(result(state, action), alpha, beta))
if v >= beta: return v # Prune!
alpha = max(alpha, v)
return v
def min_value(state, alpha, beta):
if terminal_test(state): return utility(state)
v = +infinity
for action in actions(state):
v = min(v, max_value(result(state, action), alpha, beta))
if v <= alpha: return v # Prune!
beta = min(beta, v)
return v
A (MAX)
/ | \
B C D (MIN)
/\ /\ /\
3 5 6 2 1 8
Node 8 tidak perlu dievaluasi!
| Kondisi | Kompleksitas | Penjelasan |
|---|---|---|
| Worst case | O(bm) | Tidak ada pruning |
| Random order | O(b3m/4) | Pruning moderat |
| Perfect order | O(bm/2) | Pruning optimal! |
๐ฏ Perfect ordering = kedalaman pencarian 2x lipat!
Untuk mendekati efisiensi optimal:
Pada chance node, hitung expected value:
E[V] = ฮฃ P(r) ร MINIMAX(Result(n, r))
โ ๏ธ Kelemahan:
Alpha-Beta kurang efektif karena chance nodes memerlukan semua children!
Skenario: Defender vs Attacker dalam pertahanan pulau
Minimax membantu menemukan strategi pertahanan optimal!
Defender:
Attacker:
๐ก Minimax memprediksi serangan rasional untuk proactive defense!
Pertanyaan 1:
Dalam zero-sum game, jika MAX mendapat utility +5, berapa utility MIN?
๐ก Zero-sum: UMAX + UMIN = 0
Pertanyaan 2:
Kapan Alpha-Beta Pruning melakukan pruning pada MIN node?
Pertanyaan 3:
Game Backgammon termasuk kategori:
๐ก Ada dadu (stokastik), tapi semua bidak terlihat (perfect info)
| Konsep | Poin Kunci |
|---|---|
| Adversarial Search | Pencarian dengan lawan kompetitif |
| Zero-Sum | UMAX + UMIN = 0 |
| Minimax | MAX maximizes, MIN minimizes |
| Kompleksitas | O(bm) tanpa pruning |
| Alpha-Beta | O(bm/2) dengan perfect ordering |
| Expectiminimax | Untuk game dengan keacakan |
CSP dan Teknik Penyelesaiannya
Pertemuan 05: Pencarian Adversarial - Game Playing
Ada pertanyaan?