Anda di halaman 1dari 262

CII2K3

STRATEGI ALGORITMA

Topik 5:
BACKTRACKING
1. Penjelasan umum

2. Permasalahan n-Queen

3. Pencarian sirkuit Hamilton

4. Pewarnaan Graf

5. Permasalahan jumlah nilai subhimpunan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 2


Penjelasan umum

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 3


Penjelasan umum

◦ Sejauh ini kita telah mempelajari strategi algoritma Brute Force,


Greedy, Divide and Conquer, dan Dynamic Programming
◦ Greedy, Divide and Conquer, dan Dynamic Programming sering
kali memberikan algoritma yang lebih efisien dibandingkan
dengan Brute Force, namun masih banyak masalah yang tidak
dapat diselesaikan secara akurat oleh ketiganya
◦ Backtracking adalah strategi algoritma yang merupakan
perbaikan dari exhaustive search

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 4


Ide dasar

◦ Mengkonstruksi solusi per komponen dan mengevaluasi solusi


parsial yang didapatkan sbb:
▶ Jika solusi parsial tersebut dapat dilanjutkan tanpa melanggar
constraint yang ada, maka kita tambahkan komponen lainnya
yang tidak melanggar constraint
▶ Jika solusi partial yang didapatkan tidak dapat dilanjutkan (i.e.
penambahan komponen apapun akan menyebabkan pelanggaran
constraint), maka ganti komponen terakhir dengan komponen
lainnya

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 5


Ide dasar

◦ Mengkonstruksi solusi per komponen dan mengevaluasi solusi


parsial yang didapatkan sbb:
▶ Jika solusi parsial tersebut dapat dilanjutkan tanpa melanggar
constraint yang ada, maka kita tambahkan komponen lainnya
yang tidak melanggar constraint
▶ Jika solusi partial yang didapatkan tidak dapat dilanjutkan (i.e.
penambahan komponen apapun akan menyebabkan pelanggaran
constraint), maka ganti komponen terakhir dengan komponen
lainnya
◦ Umumnya, diilustrasikan oleh state-space tree

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 5


State-space tree

◦ Merupakan graf pohon, dimana:


▶ Akar merepresentasikan tahap awal (initial state sebelum
konstruksi solusi dimulai
▶ Simpul-simpul pada level ke-i merepresentasikan pilihan untuk
dipilih sebagai komponen ke-i
▶ Daun merepresentasikan ujung dari konstruksi solusi yang tidak
menjanjikan atau ujung dari konstruksi solusi yang lengkap

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 6


State-space tree

◦ Merupakan graf pohon, dimana:


▶ Akar merepresentasikan tahap awal (initial state sebelum
konstruksi solusi dimulai
▶ Simpul-simpul pada level ke-i merepresentasikan pilihan untuk
dipilih sebagai komponen ke-i
▶ Daun merepresentasikan ujung dari konstruksi solusi yang tidak
menjanjikan atau ujung dari konstruksi solusi yang lengkap
◦ Simpul pada state-space tree dikatakan menjanjikan jika dia
termasuk ke dalam solusi partial yang masih mungkin dilanjutkan
untuk mendapatkan solusi lengkap

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 6


State-space tree

◦ Merupakan graf pohon, dimana:


▶ Akar merepresentasikan tahap awal (initial state sebelum
konstruksi solusi dimulai
▶ Simpul-simpul pada level ke-i merepresentasikan pilihan untuk
dipilih sebagai komponen ke-i
▶ Daun merepresentasikan ujung dari konstruksi solusi yang tidak
menjanjikan atau ujung dari konstruksi solusi yang lengkap
◦ Simpul pada state-space tree dikatakan menjanjikan jika dia
termasuk ke dalam solusi partial yang masih mungkin dilanjutkan
untuk mendapatkan solusi lengkap
◦ Umumnya, state-space tree dikonstruksi secara depth-first
search (DFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 6


Recall: Depth First Search (DFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

3 5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

2 6

3 5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

2 6 7

3 5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

2 6 7

3 5 8

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

2 6 7

3 5 8

4
kiri ke kanan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

2 6 7

3 5 8

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7

3 5 8

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 2

3 5 8

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 2

3 5 8 3

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 4 2

3 5 8 3

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 5 4 2

3 5 8 3

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 5 4 2

3 5 8 6 3

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 5 4 2

3 5 8 7 6 3

4
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 5 4 2

3 5 8 7 6 3

4 8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1

2 6 7 5 4 2

3 5 8 7 6 3

4 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2

3 5 8 7 6 3

4 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 2

3 5 8 7 6 3

4 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 3 2

3 5 8 7 6 3

4 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 3 2

3 5 8 7 6 3 4

4 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 3 2

3 5 8 7 6 3 4

4 8 5
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 3 2

3 5 8 7 6 3 4 6

4 8 5
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 3 2 7

3 5 8 7 6 3 4 6

4 8 5
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Depth First Search (DFS)

1 1 1

2 6 7 5 4 2 3 2 7

3 5 8 7 6 3 4 6 8

4 8 5
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Recall: Breadth First Search (BFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

5 6

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

5 6 7

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

5 6 7

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

5 6 7

8
kiri ke kanan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

2 3 4

5 6 7

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4

5 6 7

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 2

5 6 7

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 3 2

5 6 7

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 4 3 2

5 6 7

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 4 3 2

5 6 7 5

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 4 3 2

5 6 7 6 5

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 4 3 2

5 6 7 7 6 5

8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 4 3 2

5 6 7 7 6 5

8 8
kiri ke kanan kanan ke kiri

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1

2 3 4 4 3 2

5 6 7 7 6 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2

5 6 7 7 6 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 2

5 6 7 7 6 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 3 2

5 6 7 7 6 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 3 2 4

5 6 7 7 6 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 3 2 4

5 6 7 7 6 5 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 3 2 4

5 6 7 7 6 5 6 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 3 2 4

5 6 7 7 6 5 6 7 5

8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Recall: Breadth First Search (BFS)

1 1 1

2 3 4 4 3 2 3 2 4

5 6 7 7 6 5 6 7 5

8 8 8
kiri ke kanan kanan ke kiri random

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9


Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9


Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*)

(1,1,*)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9


Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*)

X 
X 
 X
(1,1,*)
X

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9


Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*)

X 
X  (1,2,*)
 X
(1,1,*)
X

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9


Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*)

X 
X  (1,2,*)
 X
(1,1,*)
X

X
X
(1,2,3)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*)

X 
X  (1,2,*) (1,3,*)
 X
(1,1,*)
X

X
X X X
(1,2,3) (1,3,2)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*)

X 
X  (1,2,*) (1,3,*)
 X
(1,1,*)
X (2,1,*)

X X
X X X X
(1,2,3) (1,3,2) (2,1,3)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*)

X 
X  (1,2,*) (1,3,*) (2,1,*) X 
X 
 X
(1,1,*)
X  X
(2,2,*)
X

X X
X X X X
(1,2,3) (1,3,2) (2,1,3)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*)

X 
X  (1,2,*) (1,3,*) (2,1,*) X 
X  (2,3,*)
 X
(1,1,*)
X  X
(2,2,*)
X

X X X
X X X X X
(1,2,3) (1,3,2) (2,1,3) (2,3,1)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*) (3,*,*)

X 
X  (1,2,*) (1,3,*) (2,1,*) X 
X  (2,3,*)
 X
(1,1,*)
X  X
(2,2,*)
X

X X X
X X X X X
(1,2,3) (1,3,2) (2,1,3) (2,3,1)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*) (3,*,*)

X 
X  (1,2,*) (1,3,*) (2,1,*) X 
X  (2,3,*)
 X
(1,1,*)
X  X
(2,2,*)
X (3,1,*)

X X X
X X X X X X X
(1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*) (3,*,*)

X 
X  (1,2,*) (1,3,*) (2,1,*) X 
X  (2,3,*)
 X
(1,1,*)
X  X
(2,2,*)
X (3,1,*) (3,2,*)

X X X X
X X X X X X X X
(1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Contoh state-space tree

State space tree untuk permutasi tiga obyek:


(*,*,*)

(1,*,*) (2,*,*) (3,*,*)

X 
X  (1,2,*) (1,3,*) (2,1,*) X 
X  (2,3,*) (3,1,*) (3,2,*) X 
X 
 X
(1,1,*)
X  X
(2,2,*)
X  X
(3,3,*)
X

X X X X
X X X X X X X X
(1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9
Permasalahan n-Queen

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 10


n-Queens Problem
Permasalahan:
Terdapat papan catur berukuran n × n.
Bagaimana kita dapat menempatkan n buah ratu pada papan catur
tersebut sedemikian sehingga tidak ada dua ratu yang dapat saling
menyerang (i.e. tidak ada dua ratu yang terletak pada baris, kolom,
ataupun diagonal yang sama).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 11


n-Queens Problem
Permasalahan:
Terdapat papan catur berukuran n × n.
Bagaimana kita dapat menempatkan n buah ratu pada papan catur
tersebut sedemikian sehingga tidak ada dua ratu yang dapat saling
menyerang (i.e. tidak ada dua ratu yang terletak pada baris, kolom,
ataupun diagonal yang sama).

Contoh solusi untuk n = 4:


4
0L0Z
3
Z0ZQ
2
QZ0Z
1
Z0L0
a b c d
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 11
Solusi dengan Brute Force (1)

Dengan Brute Force, kita dapat mengecek setiap kemungkinan


penempatan n buah ratu di n × n petak yang tersedia, yaitu C(n2 , n).

Untuk n = 4, terdapat C(16, 4) = 1.820 kemungkinan solusi

Untuk n = 8, terdapat C(64, 8) = 4.426.165.368 kemungkinan solusi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 12


Solusi dengan Brute Force (2)

Alternatifnya, untuk setiap baris yang ada, kita dapat mengecek


setiap kemungkinan penempatan 1 buah ratu di n petak yang tersedia
(pada setiap barisnya).

Untuk n = 4, terdapat (C(4, 1))4 = 44 = 256 kemungkinan solusi

Untuk n − 8, terdapat (C(8, 1))8 = 88 = 16.777.216 kemungkinan


solusi

Untuk n buah ratu, terdapat (C(n, 1))n = nn kemungkinan solusi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 13


Solusi dengan Brute Force (3)

Dengan exhaustive search, kita dapat menyatakan solusinya dengan


tupel
X = {x1 , x2 , . . . , xn }
dimana xi menyatakan nomor kolom dimana ratu ditempatkan pada
baris ke i

Untuk n = 4, terdapat P (4, 4) = 4! = 24 kemungkinan solusi

Untuk n − 8, terdapat P (8, 4) = 8! = 40.320 kemungkinan solusi

Untuk n buah ratu, terdapat P (n, n) = n! kemungkinan solusi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 14


Solusi dengan Backtracking

◦ Algoritma Backtracking memperbaiki algoritma brute force yang


ke-3 (algoritma exhaustive search)
◦ Kita dapat menyatakan solusinya dengan tupel

X = {x1 , x2 , . . . , xn }

◦ Pada setiap tahap, kita bisa mengisi komponen pada tupel satu
per satu
◦ Komponen yang dapat dipilih adalah 1, 2, . . . , n
◦ Maka, level pada space state tree menyatakan i (urutan pada
permutasi), dimana pada setiap level, kita dapat memilih angka
1, 2, . . . , n sebagai xi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 15


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2)

x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3)

x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3)

x x

(3,1)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3)

x x

(3,1) (3,2)

x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3)

x x

(3,1) (3,2) (3,3)

x x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3)

x x

(3,1) (3,2) (3,3) (3,4)

x x x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4)

x x x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1)

x x x x x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2)

x x x x x

(4,1)

x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2)

x x x x x

(4,1) (4,2)

x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2)

x x x x x

(4,1) (4,2) (4,3)

x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2)

x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3)

x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4)

x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1)

x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2)

x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3) (2,4)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3) (2,4)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4) (3,1)

x x x x x x x

(4,1) (4,2) (4,3) (4,4)

x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3) (2,4)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4) (3,1)

x x x x x x x

(4,1) (4,2) (4,3) (4,4) (4,1)

x x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3) (2,4)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4) (3,1)

x x x x x x x

(4,1) (4,2) (4,3) (4,4) (4,1) (4,2)

x x x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3) (2,4)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4) (3,1)

x x x x x x x

(4,1) (4,2) (4,3) (4,4) (4,1) (4,2) (4,3)

x x x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (1)
Misalkan simpul dilabeli dengan (i, xi ), yang menyatakan bahwa satu ratu
ditempatkan pada baris ke-i dan kolom ke-xi .
Maka didapatkan state-space tree sbb:
Start

(1,1) (1,2)

(2,1) (2,2) (2,3) (2,4) (2,1) (2,2) (2,3) (2,4)

x x x x x

(3,1) (3,2) (3,3) (3,4) (3,1) (3,2) (3,3) (3,4) (3,1)

x x x x x x x

(4,1) (4,2) (4,3) (4,4) (4,1) (4,2) (4,3)

x x x x x x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16
Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0Z0Z
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
QZ0Z
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0L0Z
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0ZQZ
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
L0Z0
2
0ZQZ
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
ZQZ0
2
0ZQZ
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0L0
2
0ZQZ
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0ZQ
2
0ZQZ
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
L0Z0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
QZ0Z
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0L0Z
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0ZQZ
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0L
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0L0
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0ZQ
2
0Z0L
1
L0Z0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0Z0Z
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
QZ0Z
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0L0Z
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0ZQZ
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
Z0Z0
2
0Z0L
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0Z0Z
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
QZ0Z
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0L0Z
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Contoh penyelesaian masalah 4-Queens (2)

4
0ZQZ
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Algoritma Backtracking permasalahan n-Queens
◦ Tinjau dua posisi ratu pada (i, j) dan (k, l)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 18


Algoritma Backtracking permasalahan n-Queens
◦ Tinjau dua posisi ratu pada (i, j) dan (k, l)
◦ Jika dua ratu tersebut berada pada baris yang sama, maka i = k

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 18


Algoritma Backtracking permasalahan n-Queens
◦ Tinjau dua posisi ratu pada (i, j) dan (k, l)
◦ Jika dua ratu tersebut berada pada baris yang sama, maka i = k
◦ Jika dua ratu tersebut berada pada kolom yang sama, maka j = l

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 18


Algoritma Backtracking permasalahan n-Queens
◦ Tinjau dua posisi ratu pada (i, j) dan (k, l)
◦ Jika dua ratu tersebut berada pada baris yang sama, maka i = k
◦ Jika dua ratu tersebut berada pada kolom yang sama, maka j = l
◦ Jika dua ratu tersebut berada pada diagonal yang sama, maka
|i − k| = |j − l|

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 18


Algoritma Backtracking permasalahan n-Queens
◦ Tinjau dua posisi ratu pada (i, j) dan (k, l)
◦ Jika dua ratu tersebut berada pada baris yang sama, maka i = k
◦ Jika dua ratu tersebut berada pada kolom yang sama, maka j = l
◦ Jika dua ratu tersebut berada pada diagonal yang sama, maka
|i − k| = |j − l|
Contoh:
4
0Z0Z 4
0Z0L 4
0Z0Z
3
L0Z0 3
Z0Z0 3
ZQZ0
2
0Z0Z 2
0L0Z 2
0ZQZ
1
Z0L0 1
Z0Z0 1
Z0Z0
a b c d a b c d a b c d

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 18


Pseudo-code backtracking untuk n-Queens (1)

Procedure queens(i:index);
Var j:index;
Begin
if promising(i) then
if i=n then
write(col[1] through col[n])
else
for j:=1 to n do
col[i+1]:=j;
queens(i+1)
end
end
end
End;

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 19


Pseudo-code backtracking untuk n-Queens (2)

function promising(i:index):boolean;
Var k:index;
Begin
k:=1;
promising:=true;
while k<i and promising do
if col[i]=col[k] or abs(col[i]-col[k])=i-k then
promising:=false
end
k:=k+1
end
End;

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 20


Kompleksitas backtracking untuk n-Queens

Procedure queens() dapat dipanggil sebanyak banyaknya simpul


pada state-space tree, yaitu:
◦ 1 simpul pada level 0
◦ n simpul pada level 1
◦ n2 simpul pada level 2
..
.
◦ nn simpul pada level n
yaitu
nn+1 − 1
Σni=0 ii = simpul
n−1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 21


Pencarian sirkuit Hamilton

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 22


Pencarian Sirkuit Hamilton

Terdapat suatu graf G. Kita ingin mencari sirkuit Hamilton, yaitu


sirkuit yang berawal dari satu simpul dan melewati setiap simpul
lainnya pada G tepat satu kali sebelum kembali ke simpul asalnya.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 23


Pencarian Sirkuit Hamilton

Terdapat suatu graf G. Kita ingin mencari sirkuit Hamilton, yaitu


sirkuit yang berawal dari satu simpul dan melewati setiap simpul
lainnya pada G tepat satu kali sebelum kembali ke simpul asalnya.

Contoh:
a b

c f

d e

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 23


Pencarian Sirkuit Hamilton

Terdapat suatu graf G. Kita ingin mencari sirkuit Hamilton, yaitu


sirkuit yang berawal dari satu simpul dan melewati setiap simpul
lainnya pada G tepat satu kali sebelum kembali ke simpul asalnya.

Contoh:
a b

c f

d e

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 23


State-space tree untuk sirkuit Hamilton

◦ Misalkan kita tinjau graf G dengan n simpul


◦ Sirkuit Hamilton dapat kita tulis sebagai v1 − v2 − . . . − vn − v1 ,
dimana vi ∈ VG
◦ Kita dapat mencari solusi dengan mengisi solusi per komponen
untuk mendapatkan solusi parsial per tahapnya
◦ Artinya, pada setiap langkah ke-i, kita meninjau simpul ke-i yang
perlu kita kunjungi pada sirkuit Hamilton
◦ Sehingga, level pohon menyatakan urutan kunjungan, dan
(simpul) anak menyatakan simpul yang dapat dikunjungi pada
tahap selanjutnya

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 24


Sirkuit Hamilton: contoh backtracking

a b

c f

d e

Catatan: untuk menghemat tempat,


pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

c f

d e

Catatan: untuk menghemat tempat,


pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

d e

Catatan: untuk menghemat tempat,


pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

d e

Catatan: untuk menghemat tempat,


e
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den-
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

d e

Catatan: untuk menghemat tempat,


e d
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

d e

Catatan: untuk menghemat tempat,


e d f
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

d e

Catatan: untuk menghemat tempat,


e d f
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c
d e

d e

Catatan: untuk menghemat tempat,


e d f
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e

Catatan: untuk menghemat tempat,


e d f
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c

Catatan: untuk menghemat tempat,


e d f
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c

Catatan: untuk menghemat tempat,


e d f d
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c

Catatan: untuk menghemat tempat,


e d f d
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c d

Catatan: untuk menghemat tempat,


e d f d
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c d

Catatan: untuk menghemat tempat,


e d f d c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c d

Catatan: untuk menghemat tempat,


e d f d c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e
d e

d e c d

Catatan: untuk menghemat tempat,


e d f d c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e f
d e

d e c d

Catatan: untuk menghemat tempat,


e d f d c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e f
d e

d e c d e

Catatan: untuk menghemat tempat,


e d f d c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e f
d e

d e c d e

Catatan: untuk menghemat tempat,


e d f d c c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e f
d e

d e c d e

Catatan: untuk menghemat tempat,


e d f d c c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f d
parsial yang sedang dievaluasi. x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: contoh backtracking
a

a b

b
c f

c e f
d e

d e c d e

Catatan: untuk menghemat tempat,


e d f d c c
pada setiap level, di sini kita hanya
menulis simpul yang bertetangga den- x x x x
gan simpul yang dipilih sebelumnya
namun belum pernah dipilih di solusi f d
parsial yang sedang dievaluasi. x
a

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Sirkuit Hamilton: pseudo-code backtracking (1)

Procedure hamiltonian(i:index);
Var j:index;
Begin
if promising(i) then
if i=n-1 then
write(vindex[1] through vindex[n-1])
else
for j:=2 to n do
vindex[i+1]:=j;
hamiltonian(i+1)
end
end
end
End;

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 26


Sirkuit Hamilton: pseudo-code backtracking (2)
function promising(i:index):boolean;
Var k:index; promising: boolean
Begin
if i=n-1 and no edge (vindex[i],vindex[0]) then
promising:=false;
else if i>0 and no edge (vindex[i-1],vindex[i]) then
promising:=false;
else
k:=1;
promising:=true;
while k<i and promising do
if vindex[i]=vindex[k] and promising then
promising:=false
end
k:=k+1
end
end
End;

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 27


Kompleksitas backtracking untuk sirkuit Hamilton
Procedure hamiltonian() dapat dipanggil sebanyak banyaknya
simpul pada ruang solusi, yaitu:
◦ 1 simpul pada level 0
◦ n − 1 simpul pada level 1
◦ (n − 1)2 simpul pada level 2
..
.
◦ (n − 1)n−1 simpul pada level n − 1
yaitu

(n − 1)n − 1
1 + (n − 1) + (n − 1)2 + . . . + (n − 1)n−1 = simpul
n−2

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 28


Latihan (1)

Perhatikan graf berikut:

Dengan menggunakan teknik backtracking, carilah semua Sirkuit


Hamiltonian yang ada pada graf tersebut, kemudian tentukan sirkuit
mana yang memiliki total bobot terkecil.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 29


Pewarnaan Graf

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 30


Permasalahan m-Colouring

Misalkan terdapat graf G dengan simpul v1 , v2 , . . . , vn . Misalkan


terdapat m warna untuk mewarnai simpul-simpul tersebut.
Bagaimana caranya kita dapat mewarnai simpul-simpul tersebut
sedemikian sehingga tidak ada dua simpul bertetangga memiliki
warna yang sama?

Catatan: tidak semua warna harus dipakai.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 31


Contoh aplikasi pewarnaan graf

Contoh: pewarnaan peta

v2

v1 v3

v4

v5
Contoh aplikasi pewarnaan graf

Contoh: pewarnaan peta

v4 v3
v2

v1 v3
⇒ v1 v2
v4

v5
v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 32


State-space tree untuk pewarnaan graf

◦ Misalkan kita tinjau graf G dengan n simpul untuk pewarnaan


graf dengan m warna (m-colouring problem)
◦ Solusi permasalahan pewarnaan graf dapat kita tulis sebagai
tupel {x1 , x2 , . . . , xn } dimana xi menyatakan warna yang
digunakan untuk mewarnai simpul ke-i
◦ Kita dapat mencari solusi dengan mengisi solusi per komponen
untuk mendapatkan solusi parsial per tahapnya
◦ Artinya, pada setiap langkah ke−i, kita tinjau warna yang dapat
digunakan untuk mewarnai simpul ke−i
◦ Sehingga, level pohon menyatakan simpul yang kita tinjau

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 33


Pewarnaan graf: contoh backtracking

v4 v3

v1 v2

v5

warna tersedia:
merah (1), biru (2), hijau (3)
(m = 3)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1

v1 v2 v2

v5 v3

warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2

v5 v3

warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1
X

v5 v3

warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1 2
X

v5 v3

warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1 2
X

v5 v3 1

warna tersedia: X
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1 2
X

v5 v3 1 2

warna tersedia: X X
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1 2
X

v5 v3 1 2 3

warna tersedia: X X
merah (1), biru (2), hijau (3) v4
(m = 3)

v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1 2
X

v5 v3 1 2 3

warna tersedia: X X
merah (1), biru (2), hijau (3) v4 1
(m = 3)
X
v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking

start

v4 v3
v1 1

v1 v2 v2 1 2
X

v5 v3 1 2 3

warna tersedia: X X
merah (1), biru (2), hijau (3) v4 1 2
(m = 3)
X
v5

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking
start

v4 v3 v1 1

v2 1 2
v1 v2
X
v3 1 2 3
v5
X X
warna tersedia: v4 1 2
merah (1), biru (2), hijau (3)
(m = 3) X
v5 1
X

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking
start

v4 v3 v1 1

v2 1 2
v1 v2
X
v3 1 2 3
v5
X X
warna tersedia: v4 1 2
merah (1), biru (2), hijau (3)
(m = 3) X
v5 1 2
X X

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: contoh backtracking
start

v4 v3 v1 1

v2 1 2
v1 v2
X
v3 1 2 3
v5
X X
warna tersedia: v4 1 2
merah (1), biru (2), hijau (3)
(m = 3) X
v5 1 2 3
X X

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Pewarnaan graf: pseudo-code backtracking (1)
Procedure mColouring(k:integer);
Var stop:Boolean;
Begin
stop ← false
while not stop do
WarnaiSimpul(k) {coba isi k dengan sebuah warna}
if x[k] = 0 then {semua warna telah dicoba}
stop ← true
else
if k = n then {semua simpul telah diberi warna}
write(x[1],x[2],. . .,x[n]) {cetak solusi}
else
mColouring(k+1) {tinjau simpul berikutnya}
endif
endif
endwhile
End

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 35


Pewarnaan graf: pseudo-code backtracking (2)
Procedure WarnaiSimpul(k:integer);
Var stop, keluar:Boolean; j:integer
Begin
stop ← false
while not stop do
x[k] ← (x[k]+1) mod (m+1) {coba warnai simpul k}
if x[k] = 0 then {semua warna telah dicoba}
stop ← true
else
for j ← 1 to n do {cek simpul-simpul lain}
if G[k,j] = n and (x[k]=x[j])then
exit loop
endif
endfor
if j = n+1 then {semua simpul telah diperiksa}
stop ← true
endif
endif
endwhile
End CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 36
Kompleksitas backtracking untuk pewarnaan graf
◦ Procedure WarnaiSimpul dapat dipanggil sebanyak
banyaknya simpul pada ruang solusi, yaitu
▶ 1 simpul pada level 0
▶ m simpul pada level 1
▶ m2 simpul pada level 2
..
.
▶ mn simpul pada level n
yaitu
mn+1 − 1
1 + m + m2 + . . . + mn = simpul
m−1
◦ Procedure WarnaiSimpul mempunyai kompleksitas O(mn)
◦ Jadi, kompleksitas algoritma backtracking untuk pewarnaan graf
adalah O(nmn )

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 37


Latihan (2)
Di suatu negara terdapat 7 buah stasiun televisi. Pemerintah
menetapkan aturan bahwa dua stasiun yang berjarak tidak lebih dari
150 km tidak boleh beroperasi pada saluran frekuensi yang sama.
Tabel di bawah ini memperlihatkan jarak (km) stasiun televisi satu
sama lain. Berapa banyak minimum frekuensi yang berbeda yang
diperlukan, yang menjamin tidak ada dua stasiun televisi berdekatan
yang beroperasi pada frekuensi yang sama? Gunakan algoritma
Backtracking untuk menyelesaikan masalah tersebut (bentuk pohon
ruang statusnya!).
1 2 3 4 5 6 7
1 - 85 145 200 50 100 230
2 85 - 125 175 100 160 175
3 145 125 - 100 200 250 160
4 200 175 100 - 210 220 180
5 50 100 200 210 - 100 235
6 100 160 250 220 100
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA - 120 38
Permasalahan jumlah nilai
subhimpunan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 39


Permasalahan sum of subsets

◦ Diberikan suatu himpunan yang berisi n bilangan bulat positif


yang berbeda satu sama lain: w1 , w2 , . . . , wn , serta sebuah
bilangan bulat positif m.
◦ Permasalahan: tentukan semua himpunan bagian dari himpunan
tersebut yang total nilai anggota-anggotanya sama dengan m
◦ Contoh: diberikan W = {11, 13, 24, 7} dan m = 31.
Himpunan bagian yang memenuhi adalah {11, 13, 7} dan {24, 7}.
◦ Catatan: permasalahan ini tidak selalu mempunyai solusi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 40


State-space tree untuk jumlah nilai subhimpunan
◦ misalkan kita tinjau himpunan W = {w1 , w2 , . . . , wn } dan
bilangan bulat positif m
◦ Solusi permasalahan jumlah nilai subhimpunan dapat dinyatakan
dengan tupel {x1 , x2 , . . . , xn }, dimana xi = 0 jika wi tidak masuk
ke dalam himpunan bagian, dan xi = 1 nika wi masuk ke dalam
himpunan bagian (yang menjadi solusi)
◦ Kita dapat mencari solusi dengan mengisi solusi per komponen
untuk mendapatkan solusi parsial per tahapnya
◦ Artinya, pada setiap langkah ke-i, kita tinjau apakah wi masuk ke
dalam solusi atau tidak (i.e. apakah xi = 0 atau xi = 1)
◦ Sehingga, level pohon menyatakan urutan dari bilangan yang kita
tinjau

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 41


Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11

w2 = 13

w3 = 24

w4 = 7

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13

w3 = 24

w4 = 7

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1
24
w3 = 24

w4 = 7

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1
24
w3 = 24 1
>31
w4 = 7

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1
24
w3 = 24 1 0
>31 24
w4 = 7

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1
24
w3 = 24 1 0
>31 24
w4 = 7 1
31

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1
24
w3 = 24 1 0
>31 24
w4 = 7 1 0
31 24

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1 0
24 11
w3 = 24 1 0
>31 24
w4 = 7 1 0
31 24

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1 0
24 11
w3 = 24 1 0 1
>31 24 >31
w4 = 7 1 0
31 24

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1 0
24 11
w3 = 24 1 0 1 0
>31 24 >31 11
w4 = 7 1 0
31 24

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1 0
24 11
w3 = 24 1 0 1 0
>31 24 >31 11
w4 = 7 1 0 1
31 24 18

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1
11
w2 = 13 1 0
24 11
w3 = 24 1 0 1 0
>31 24 >31 11
w4 = 7 1 0 1 0
31 24 18 11

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0
24 11
w3 = 24 1 0 1 0
>31 24 >31 11
w4 = 7 1 0 1 0
31 24 18 11

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1
24 11 13
w3 = 24 1 0 1 0
>31 24 >31 11
w4 = 7 1 0 1 0
31 24 18 11

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1
24 11 13
w3 = 24 1 0 1 0 1
>31 24 >31 11 >31
w4 = 7 1 0 1 0
31 24 18 11

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1
24 11 13
w3 = 24 1 0 1 0 1 0
>31 24 >31 11 >31 13
w4 = 7 1 0 1 0
31 24 18 11

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1
24 11 13
w3 = 24 1 0 1 0 1 0
>31 24 >31 11 >31 13
w4 = 7 1 0 1 0 1
31 24 18 11 20

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1
24 11 13
w3 = 24 1 0 1 0 1 0
>31 24 >31 11 >31 13
w4 = 7 1 0 1 0 1 0
31 24 18 11 20 13

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0
>31 24 >31 11 >31 13
w4 = 7 1 0 1 0 1 0
31 24 18 11 20 13

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0 1
>31 24 >31 11 >31 13 24
w4 = 7 1 0 1 0 1 0
31 24 18 11 20 13

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0 1
>31 24 >31 11 >31 13 24
w4 = 7 1 0 1 0 1 0 1
31 24 18 11 20 13 31

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0 1
>31 24 >31 11 >31 13 24
w4 = 7 1 0 1 0 1 0 1 0
31 24 18 11 20 13 31 24

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0 1 0
>31 24 >31 11 >31 13 24 0
w4 = 7 1 0 1 0 1 0 1 0
31 24 18 11 20 13 31 24

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0 1 0
>31 24 >31 11 >31 13 24 0
w4 = 7 1 0 1 0 1 0 1 0 1
31 24 18 11 20 13 31 24 7

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Sum of subsets: contoh backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 11 1 0
11 0
w2 = 13 1 0 1 0
24 11 13 0
w3 = 24 1 0 1 0 1 0 1 0
>31 24 >31 11 >31 13 24 0
w4 = 7 1 0 1 0 1 0 1 0 1 0
31 24 18 11 20 13 31 24 7 0

catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42
Perbaikan
◦ Kita dapat mengurutkan bilangan-bilangan dalam himpunan,
secara menaik
◦ Misalkan W menyatakan jumlah nilai yang terpilih hingga tahap
ke-i pada suatu solusi parsial yang terbentuk
◦ Solusi parsial tersebut tidak menjanjikan jika
W ̸= m dan W + wi+1 > m
karena dengan menambah bilangan lain, kita akan selalu
mendapatkan bilangan yang lebih besar dari m
◦ Solusi parsial tersebut juga tidak menjanjikan jika
W + sisa < m
dimana sisa menyatakan total nilai bilangan yang belum ditinjau
(karena walaupun kita pilih semuanya, kita tidak akan mencapai
nilai m)
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 43
Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7

w2 = 11

w3 = 13

w4 = 24

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11

w3 = 13

w4 = 24

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1
18
w3 = 13

w4 = 24

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1
18
w3 = 13 1
31
w4 = 24

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1
18
w3 = 13 1
31
w4 = 24 1
>31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1
18
w3 = 13 1
31
w4 = 24 1 0
>31 31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1
18
w3 = 13 1 0
31 18
w4 = 24 1 0
>31 31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1 0
18 7
w3 = 13 1 0
31 18
w4 = 24 1 0
>31 31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1 0
18 7
w3 = 13 1 0 1
31 18 20
w4 = 24 1 0
>31 31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1 0
18 7
w3 = 13 1 0 1 0
31 18 20 7
w4 = 24 1 0
>31 31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1 0
18 7
w3 = 13 1 0 1 0
31 18 20 7
w4 = 24 1 0 1
>31 31 31

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1
7
w2 = 11 1 0
18 7
w3 = 13 1 0 1 0
31 18 20 7
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0
18 7
w3 = 13 1 0 1 0
31 18 20 7
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0 1
18 7 11
w3 = 13 1 0 1 0
31 18 20 7
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0 1
18 7 11
w3 = 13 1 0 1 0 1
31 18 20 7 24
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0 1
18 7 11
w3 = 13 1 0 1 0 1 0
31 18 20 7 24 11
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0 1 0
18 7 11 0
w3 = 13 1 0 1 0 1 0
31 18 20 7 24 11
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0 1 0
18 7 11 0
w3 = 13 1 0 1 0 1 0 1
31 18 20 7 24 11 13
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: perbaikan backtracking
Untuk W = {11, 13, 24, 7} dan m = 31:

start

w1 = 7 1 0
7 0
w2 = 11 1 0 1 0
18 7 11 0
w3 = 13 1 0 1 0 1 0 1 0
31 18 20 7 24 11 13 0
w4 = 24 1 0 1 0
>31 31 31 7

catatan: tidak menjanjikan jika W ̸= m dan W + wi+1 > m ATAU W + sisa < m

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Sum of subsets: pseudo-code backtracking

Procedure
SumOfSubsets(k:integer,W:integer,sisa:integer,m:integer);
Begin
if (W=m or W+w[k+1] ≤ m) and (W+sisa ≥ m) then
if W=m then
write(x[1],x[2],. . .,x[n])
else
x[k+1] ← 1
SumOfSubsets(k+1,W+w[k+1],sisa-w[k+1],m)
x[k+1] ← 0
SumOfSubsets(k+1,W,sisa-w[k+1],m)
endif
endif
End

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 45


Kompleksitas backtracking untuk sum of subsets

Procedure SumOfSubsets() dapat dipanggil sebanyak banyaknya


simpul pada ruang solusi, yaitu:
◦ 1 simpul pada level 0
◦ 2 simpul pada level 1
◦ 22 simpul pada level 2
..
.
◦ 2n simpul pada level n
yaitu
1 + 2 + 22 + . . . + 2n = 2n+1 − 1 simpul

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 46


Latihan (3)

Diberikan A = {2, 10, 15, 27, 42}. Gunakan algoritma backtracking


dan gambarkan pencarian ruang solusi (state space tree) untuk
mencari salah satu himpunan bagian pertama dari A yang mempunyai
jumlah 52!

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 47


Latihan (4)

Seorang petani yang harus menyeberang sungai dengan membawa


serigala, domba, dan kubis. Perahu yang digunakan petani tersebut
hanya bisa membawa dirinya dan salah satu dari barang bawaannya
tersebut.
Jika ditinggal tanpa pengawasan petani, serigala akan memangsa
domba, atau domba akan memakan kubis. Oleh karena itu, serigala
dan domba, atau domba dan kubis, tidak dapat ditinggalkan bersama.
Desainlah solusi dengan menerapkan strategi backtracking agar
petani tersebut dapat menyeberangkan semuanya dengan selamat!

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 48


Referensi

1. T. H. Cormen, C. E. Leiserson, R. L. Riverst, C. Stein.


Introduction to Algorithms –3rd Edition, MIT Press, 2009.
2. A. Levitin. Introduction to The Design and Analysis of Algorithms
–3rd Edition, Pearson, 2011.
3. R. Neapolitan, K. Naimipour. Foundations of Algorithms –5th
Edition, Jones and Bartlett Learning, 2014.
4. Ir. Rinaldi Munir, M.T. Diktat Strategi Algoritmik IF2251.
Departemen Teknik Informatika, Institut Teknologi Bandung
5. Ian Parberry. Lecture notes on Algorithm Analysis. Department of
Computer Sciences, University of North Texas, 2001

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 49


THANK YOU

Anda mungkin juga menyukai