Brute force ?
Brute force adalah sebuah pendekatan yang
lurus (straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada
pernyataan masalah (problem statement)
dan definisi konsep yang dilibatkan.
Algoritma brute force memecahkan
masalah dengan sangat sederhana,
langsung dan dengan cara yang jelas
(obvious way).
Brute force : pendekatan yang lurus (straightforward)
untuk memecahkan suatu masalah
Biasanya didasarkan pada:
pernyataan masalah (problem statement)
definisi konsep yang dilibatkan.
Algoritma brute force memecahkan masalah dengan
sangat sederhana,
langsung,
jelas (obvious way).
Just do it!
Brute force adalah sebuah pendekatan yang
lurus (straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada
pernyataan masalah (problem statement)
dan definisi konsep yang dilibatkan.
Algoritma brute force memecahkan
masalah dengan sangat sederhana,
langsung dan dengan cara yang jelas
(obvious way).
Brute force : pendekatan yang lurus (straightforward)
untuk memecahkan suatu masalah
Biasanya didasarkan pada:
pernyataan masalah (problem statement)
definisi konsep yang dilibatkan.
Algoritma brute force memecahkan masalah dengan
sangat sederhana,
langsung,
jelas (obvious way).
Just do it!
Contoh Algoritma Brute force
Mencari Nilai terbesar dalam suatu array /
senarai
Persoalan: Diberikan sebuah senarai / larik /
array yang beranggotakan n buah bilangan
bulat (a1, a2, …, an).
Carilah elemen terbesar di dalam senarai
tersebut.
Algoritma brute force: bandingkan setiap
elemen senarai untuk menemukan elemen
terbesar
procedure CariElemenTerbesar(input a1, a2, ..., an : integer, output
maks : integer)
{ Mencari elemen terbesar di antara elemen a1, a2, ..., an. Elemen
terbesar akan disimpan di dalam maks.
Masukan: a1, a2, ..., an
Keluaran: maks }
Deklarasi
k : integer
Algoritma:
maks ← a1
for k ← 2 to n do
if ak > maks then
maks ← ak
endif
endfor
Mencari Nilai terbesar dalam suatu array /
senarai
Persoalan: Diberikan sebuah senarai / larik /
array yang beranggotakan n buah bilangan
bulat (a1, a2, …, an).
Carilah elemen terbesar di dalam senarai
tersebut.
Algoritma brute force: bandingkan setiap
elemen senarai untuk menemukan elemen
terbesar
procedure CariElemenTerbesar(input a1, a2, ..., an : integer, output
maks : integer)
{ Mencari elemen terbesar di antara elemen a1, a2, ..., an. Elemen
terbesar akan disimpan di dalam maks.
Masukan: a1, a2, ..., an
Keluaran: maks }
Deklarasi
k : integer
Algoritma:
maks ← a1
for k ← 2 to n do
if ak > maks then
maks ← ak
endif
endfor
Contoh lain
Contoh 1 : Menghitung pangkat
Menghitung an
(a > 0, n adalah bilangan
bulat tak-negatif)
an = a × a × … × a (sebanyak n kali) , jika n >
0
= 1 , jika n = 0
Algoritma: kalikan 1 dengan a sebanyak n
kali
Algoritma Pangkat
function pangkat(input a, n : integer)integer
{ Menghitung a
n
, a > 0 dan n bilangan bulat tak-negatif
Masukan: a, n
Keluaran: nilai perpangkatan.
}
Deklarasi
k, hasil : integer
Algoritma:
hasil<1
for k<1 to n do
hasil<hasil * a
endfor
return hasil
Contoh 1 : Menghitung pangkat
Menghitung an
(a > 0, n adalah bilangan
bulat tak-negatif)
an = a × a × … × a (sebanyak n kali) , jika n >
0
= 1 , jika n = 0
Algoritma: kalikan 1 dengan a sebanyak n
kali
Algoritma Pangkat
function pangkat(input a, n : integer)integer
{ Menghitung a
n
, a > 0 dan n bilangan bulat tak-negatif
Masukan: a, n
Keluaran: nilai perpangkatan.
}
Deklarasi
k, hasil : integer
Algoritma:
hasil<1
for k<1 to n do
hasil<hasil * a
endfor
return hasil
Contoh 2
Menghitung Faktorial
Menghitung n! (n bilangan bulat taknegatif)
n! = 1 × 2 × 3 × … × n , jika n > 0
= 1 , jika n = 0
Algoritma: kalikan n buah bilangan, yaitu 1,
2, 3, …, n, bersama-sama
Algoritma Faktorial
function faktorial(input n : integer)integer
{ Menghitung n!, n bilangan bulat tak-negatif
Masukan: n
Keluaran: nilai faktorial dari n.
}
Deklarasi
k, fak : integer
Algoritma:
fak<1
for k<1 to n do
fak<fak * k
endfor
return fak
Contoh 3
Mengalikan dua buah matriks, A dan B
Definisi:
Misalkan C = A × B dan elemen-elemen
matrik dinyatakan sebagai cij
, aij
, dan bij
Cij
=ai1b1j+ai2b2j…..+ainbnj
Algoritma brute force: hitung setiap elemen
hasil perkalian satu per satu, dengan cara
mengalikan dua vektor yang panjangnya n
Algoritma perkalian matrik
Procedure PerkalianMatriks(input A, B : Matriks, input n : integer,output C :
Matriks)
{ Mengalikan matriks A dan B yang berukuran n × n, menghasilkan
matriks C yang juga berukuran n × n
Masukan: matriks integer A dan B, ukuran matriks n
Keluaran: matriks C }
Deklarasi
i, j, k : integer
Algoritma
for i < 1 to n do
for j ← 1 to n do
C[i,j] < 0 { inisialisasi penjumlah }
for k < 1 to n do
C[i,j] < C[i,j] + A[i,k]*B[k,j]
endfor
endfor
endfor
Menghitung Faktorial
Menghitung n! (n bilangan bulat taknegatif)
n! = 1 × 2 × 3 × … × n , jika n > 0
= 1 , jika n = 0
Algoritma: kalikan n buah bilangan, yaitu 1,
2, 3, …, n, bersama-sama
Algoritma Faktorial
function faktorial(input n : integer)integer
{ Menghitung n!, n bilangan bulat tak-negatif
Masukan: n
Keluaran: nilai faktorial dari n.
}
Deklarasi
k, fak : integer
Algoritma:
fak<1
for k<1 to n do
fak<fak * k
endfor
return fak
Contoh 3
Mengalikan dua buah matriks, A dan B
Definisi:
Misalkan C = A × B dan elemen-elemen
matrik dinyatakan sebagai cij
, aij
, dan bij
Cij
=ai1b1j+ai2b2j…..+ainbnj
Algoritma brute force: hitung setiap elemen
hasil perkalian satu per satu, dengan cara
mengalikan dua vektor yang panjangnya n
Algoritma perkalian matrik
Procedure PerkalianMatriks(input A, B : Matriks, input n : integer,output C :
Matriks)
{ Mengalikan matriks A dan B yang berukuran n × n, menghasilkan
matriks C yang juga berukuran n × n
Masukan: matriks integer A dan B, ukuran matriks n
Keluaran: matriks C }
Deklarasi
i, j, k : integer
Algoritma
for i < 1 to n do
for j ← 1 to n do
C[i,j] < 0 { inisialisasi penjumlah }
for k < 1 to n do
C[i,j] < C[i,j] + A[i,k]*B[k,j]
endfor
endfor
endfor
Contoh 4
Menemukan semua faktor dari bilangan
bulat n (selain dari 1 dan n itu sendiri).
Definisi: Bilangan bulat a adalah faktor
dari bilangan bulat b jika a habis membagi
b.
Algoritma brute force: bagi n dengan
setiap i = 2, 3, …, n – 1. Jika n habis
membagi i, maka i adalah faktor dari n.
Menemukan semua faktor dari bilangan
bulat n (selain dari 1 dan n itu sendiri).
Definisi: Bilangan bulat a adalah faktor
dari bilangan bulat b jika a habis membagi
b.
Algoritma brute force: bagi n dengan
setiap i = 2, 3, …, n – 1. Jika n habis
membagi i, maka i adalah faktor dari n.
procedure CariFaktor(input n : integer)
{ Mencari faktor dari bilangan bulat n selain 1 dan n itu sendiri.
Masukan: n
Keluaran: setiap bilangan yang menjadi faktor n dicetak. }
Deklarasi
k : integer
Algoritma:
K < 1
for k < 2 to n - 1 do
if n mod k = 0 then
write(k)
endif
endfor
Contoh 5
Menguji Bilangan Prima
Persoalan: Diberikan sebuah bilangan bilangan
bulat positif. Ujilah apakah bilangan tersebut
merupakan bilangan prima atau bukan.
Definisi: bilangan prima adalah bilangan yang
hanya habis dibagi oleh 1 dan dirinya sendiri.
Algoritma brute force: bagi n dengan 2 sampai n
–1.
Jika semuanya tidak habis membagi n, maka n
adalah bilangan prima.
Perbaikan: cukup membagi dengan 2 sampai Ön
saja
Algoritma cek Prima
function Prima(input x : integer)-> boolean
{ Menguji apakah x bilangan prima atau bukan.
Masukan: x
Keluaran: true jika x prima, atau false jika x tidak prima.}
Deklarasi
k, y : integer
test : boolean
Algoritma:
if x < 2 then { 1 bukan prima }
return false
else
if x = 2 then { 2 adalah prima, kasus khusus }
return true
else
y < √x
test < true
while (test) and (y ³ 2) do
if x mod y = 0 then
test < false
else
y < y - 1
endif
endwhile
{ not test or y < 2 }
return test
endif
endif
{ Mencari faktor dari bilangan bulat n selain 1 dan n itu sendiri.
Masukan: n
Keluaran: setiap bilangan yang menjadi faktor n dicetak. }
Deklarasi
k : integer
Algoritma:
K < 1
for k < 2 to n - 1 do
if n mod k = 0 then
write(k)
endif
endfor
Contoh 5
Menguji Bilangan Prima
Persoalan: Diberikan sebuah bilangan bilangan
bulat positif. Ujilah apakah bilangan tersebut
merupakan bilangan prima atau bukan.
Definisi: bilangan prima adalah bilangan yang
hanya habis dibagi oleh 1 dan dirinya sendiri.
Algoritma brute force: bagi n dengan 2 sampai n
–1.
Jika semuanya tidak habis membagi n, maka n
adalah bilangan prima.
Perbaikan: cukup membagi dengan 2 sampai Ön
saja
Algoritma cek Prima
function Prima(input x : integer)-> boolean
{ Menguji apakah x bilangan prima atau bukan.
Masukan: x
Keluaran: true jika x prima, atau false jika x tidak prima.}
Deklarasi
k, y : integer
test : boolean
Algoritma:
if x < 2 then { 1 bukan prima }
return false
else
if x = 2 then { 2 adalah prima, kasus khusus }
return true
else
y < √x
test < true
while (test) and (y ³ 2) do
if x mod y = 0 then
test < false
else
y < y - 1
endif
endwhile
{ not test or y < 2 }
return test
endif
endif
biar lebih jelas di kasih contoh kodingan sederhananya kak dari algoritma yang sudah ditampilkan
BalasHapus