(SA) (23) 6 - Backtracking
(SA) (23) 6 - Backtracking
STRATEGI ALGORITMA
Topik 5:
BACKTRACKING
1. Penjelasan umum
2. Permasalahan n-Queen
4. Pewarnaan Graf
3 5
2 6
3 5
2 6 7
3 5
2 6 7
3 5 8
2 6 7
3 5 8
4
kiri ke kanan
2 6 7
3 5 8
4
kiri ke kanan kanan ke kiri
1 1
2 6 7
3 5 8
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 2
3 5 8
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 2
3 5 8 3
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 4 2
3 5 8 3
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 5 4 2
3 5 8 3
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 5 4 2
3 5 8 6 3
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 5 4 2
3 5 8 7 6 3
4
kiri ke kanan kanan ke kiri
1 1
2 6 7 5 4 2
3 5 8 7 6 3
4 8
kiri ke kanan kanan ke kiri
1 1
2 6 7 5 4 2
3 5 8 7 6 3
4 8
kiri ke kanan kanan ke kiri random
1 1 1
2 6 7 5 4 2
3 5 8 7 6 3
4 8
kiri ke kanan kanan ke kiri random
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
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
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
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
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
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
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
2 3
2 3 4
2 3 4
2 3 4
5 6
2 3 4
5 6 7
2 3 4
5 6 7
2 3 4
5 6 7
8
kiri ke kanan
2 3 4
5 6 7
8
kiri ke kanan kanan ke kiri
1 1
2 3 4
5 6 7
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 2
5 6 7
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 3 2
5 6 7
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 4 3 2
5 6 7
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 4 3 2
5 6 7 5
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 4 3 2
5 6 7 6 5
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 4 3 2
5 6 7 7 6 5
8
kiri ke kanan kanan ke kiri
1 1
2 3 4 4 3 2
5 6 7 7 6 5
8 8
kiri ke kanan kanan ke kiri
1 1
2 3 4 4 3 2
5 6 7 7 6 5
8 8
kiri ke kanan kanan ke kiri random
1 1 1
2 3 4 4 3 2
5 6 7 7 6 5
8 8
kiri ke kanan kanan ke kiri random
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
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
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
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
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
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
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
(1,*,*)
(1,*,*)
(1,1,*)
(1,*,*)
X
X
X
(1,1,*)
X
(1,*,*)
X
X (1,2,*)
X
(1,1,*)
X
(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
(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
(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
(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
(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
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
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
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
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
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
(1,1)
(1,1)
(2,1)
(1,1)
(2,1)
(1,1)
(2,1) (2,2)
x x
(1,1)
x x
(1,1)
x x
(3,1)
(1,1)
x x
(3,1) (3,2)
x x
(1,1)
x x
x x x
(1,1)
x x
x x x x
(1,1)
x x
x x x x
(1,1)
x x
x x x x x
(1,1)
x x
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)
x x
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)
x x
x x 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)
x x
x x x 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)
x x
x x x x 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)
x x
x x x x x 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)
x x
x x x x x 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)
x x x
x x x x x 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)
x x x x
x x x x x 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)
x x x x x
x x x x x 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)
x x x x x
x x x x x 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)
x x x x x
x x x x x 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)
x x x x x
x x x x x x 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)
x x x x x
x x x x x x x
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)
x x x x x
x x x x x x x
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)
x x x x x
x x x x x x x
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
4
0Z0Z
3
Z0Z0
2
QZ0Z
1
L0Z0
a b c d
4
0Z0Z
3
Z0Z0
2
0L0Z
1
L0Z0
a b c d
4
0Z0Z
3
Z0Z0
2
0ZQZ
1
L0Z0
a b c d
4
0Z0Z
3
L0Z0
2
0ZQZ
1
L0Z0
a b c d
4
0Z0Z
3
ZQZ0
2
0ZQZ
1
L0Z0
a b c d
4
0Z0Z
3
Z0L0
2
0ZQZ
1
L0Z0
a b c d
4
0Z0Z
3
Z0ZQ
2
0ZQZ
1
L0Z0
a b c d
4
0Z0Z
3
Z0Z0
2
0Z0L
1
L0Z0
a b c d
4
0Z0Z
3
L0Z0
2
0Z0L
1
L0Z0
a b c d
4
0Z0Z
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d
4
QZ0Z
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d
4
0L0Z
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d
4
0ZQZ
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d
4
0Z0L
3
ZQZ0
2
0Z0L
1
L0Z0
a b c d
4
0Z0Z
3
Z0L0
2
0Z0L
1
L0Z0
a b c d
4
0Z0Z
3
Z0ZQ
2
0Z0L
1
L0Z0
a b c d
4
0Z0Z
3
Z0Z0
2
0Z0Z
1
ZQZ0
a b c d
4
0Z0Z
3
Z0Z0
2
QZ0Z
1
ZQZ0
a b c d
4
0Z0Z
3
Z0Z0
2
0L0Z
1
ZQZ0
a b c d
4
0Z0Z
3
Z0Z0
2
0ZQZ
1
ZQZ0
a b c d
4
0Z0Z
3
Z0Z0
2
0Z0L
1
ZQZ0
a b c d
4
0Z0Z
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d
4
QZ0Z
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d
4
0L0Z
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d
4
0ZQZ
3
L0Z0
2
0Z0L
1
ZQZ0
a b c d
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;
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;
Contoh:
a b
c f
d e
Contoh:
a b
c f
d e
a b
c f
d e
a b
c f
d e
a b
b
c f
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
a b
b
c f
c
d e
d e
a b
b
c f
c
d e
d e
a b
b
c f
c
d e
d e
a b
b
c f
c
d e
d e
a b
b
c f
c
d e
d e
a b
b
c f
c e
d e
d e
a b
b
c f
c e
d e
d e c
a b
b
c f
c e
d e
d e c
a b
b
c f
c e
d e
d e c
a b
b
c f
c e
d e
d e c d
a b
b
c f
c e
d e
d e c d
a b
b
c f
c e
d e
d e c d
a b
b
c f
c e
d e
d e c d
a b
b
c f
c e f
d e
d e c d
a b
b
c f
c e f
d e
d e c d e
a b
b
c f
c e f
d e
d e c d e
a b
b
c f
c e f
d e
d e c d e
a b
b
c f
c e f
d e
d e c d e
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;
(n − 1)n − 1
1 + (n − 1) + (n − 1)2 + . . . + (n − 1)n−1 = simpul
n−2
v2
v1 v3
v4
v5
Contoh aplikasi pewarnaan graf
v4 v3
v2
v1 v3
⇒ v1 v2
v4
v5
v5
v4 v3
v1 v2
v5
warna tersedia:
merah (1), biru (2), hijau (3)
(m = 3)
start
v4 v3
v1
v1 v2 v2
v5 v3
warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)
v5
start
v4 v3
v1 1
v1 v2 v2
v5 v3
warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)
v5
start
v4 v3
v1 1
v1 v2 v2 1
X
v5 v3
warna tersedia:
merah (1), biru (2), hijau (3) v4
(m = 3)
v5
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
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
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
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
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
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
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
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
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
start
w1 = 11
w2 = 13
w3 = 24
w4 = 7
catatan: angka di bawah simpul menyatakan jumlah nilai bilangan yang telah terpilih (so far)
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)
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)
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)
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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