• Tidak ada hasil yang ditemukan

TEORI ALGORITMA. Dosen Pengampu: Zuhri Halim, M.Kom

N/A
N/A
Protected

Academic year: 2022

Membagikan "TEORI ALGORITMA. Dosen Pengampu: Zuhri Halim, M.Kom"

Copied!
108
0
0

Teks penuh

(1)

TEORI ALGORITMA

Dosen Pengampu : Zuhri Halim, M.Kom

(2)

Analogi :

Jika seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah yang harus

dilakukan adalah:

Langkah :

Menulis surat

Surat dimasukkan ke dalam amplop tertutup

Amplop dikasih alamat penerima dan pengirim

Amplop ditempeli perangko secukupnya.

Pergi ke Kantor Pos terdekat untuk mengirimkannya

(3)

Apa Itu Algoritma ?

● Definisi :

○ Urutan langkah-langkah untuk memecahkan

masalah yang disusun secara sistematis dan logis.

○ Kamus Besar Bahasa Indonesia:

Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah.

● Algoritma dibutuhkan untuk memerintah

komputer mengambil langkah-langkah

tertentu dalam menyelesaikan masalah.

(4)

Apa Itu Program/Pemrograman?

Definisi

● Kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code

yang dibuat oleh programmer (pembuat program).

● Program : Realisasi dari Algoritma.

Program = Algoritma + Bahasa

(5)

Mengapa Algoritma ?

● Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman

manapun.

● Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.

● Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena

algoritmanya sama.

(6)

Syarat Algoritma Baik?

● Tingkat kepercayaannya tinggi (realibility)

Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.

● Pemrosesan yang efisien (cost rendah)

Proses harus diselesaikan secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.

● Sifatnya general

Bukan sesuatu yang hanya untuk menyelesaikan satu

kasus saja, tapi juga untuk kasus lain yang lebih general.

(7)

● Bisa dikembangkan (expandable)

Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.

● Mudah dimengerti

Siapapun yang melihat, dia akan bisa memahami

algoritma Anda. Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola).

● Portabilitas yang tinggi (portability)

Bisa dengan mudah diimplementasikan di berbagai platform komputer.

● Precise (tepat, betul, teliti)

(8)

● Efektif

Tidak boleh ada instruksi yang tidak mungkin dikerjakan boleh pemroses yang akan menjalankannya.

● Harus terminate

Jalannya algoritma harus ada kriteria berhenti.

● Output yang dihasilkan tepat.

(9)

Langkah Pembuatan Program

Mendefinisikan masalah

a. Kondisi awal, yaitu input yang tersedia.

b. Kondisi akhir, yaitu output yang diinginkan.

c. Data lain yang tersedia.

d. Operator yang tersedia.

e. Syarat atau kendala yang harus dipenuhi.

(10)

Langkah Pembuatan Program

Buat Algoritma dan Struktur Cara Penyelesaian

• Jika masalahnya kompleks, maka dibagi ke

dalam modul-modul

(11)

Langkah Pembuatan Program

Menulis program

●Pilihlah bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika sudah dikuasai, memiliki tingkat kompatibilitas tinggi dengan

perangkat keras dan platform lainnya.

(12)

Langkah Pembuatan Program

Mencari Kesalahan

a. Kesalahan sintaks (penulisan program).

b. Kesalahan pelaksanaan: semantik, logika, dan

ketelitian..

(13)

Langkah Pembuatan Program

● Uji dan Verifikasi Program

● Dokumentasi Program

● Pemeliharaan Program

(14)

STRUKTUR PENULISAN ALGORITMA

Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu :

●Judul (Header)

●Kamus

●Algoritma

(15)

Header (Judul)

Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks

tersebut adalah program, prosedur, fungsi.

(16)

Kamus (Deklarasi)

Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan :

●Nama type

●Nama konstanta

●Nama variabel

●Nama fungsi

●Nama prosedur.

(17)

Kamus (Deklarasi)

(18)

Algoritma (Deskripsi)

Algoritma adalah bagian inti dari suatu algoritma yang berisi instruksi atau

pemanggilan aksi yang telah didefinisikan.

(19)

PENYAJIAN ALGORITMA

Bentuk penyajian untuk algoritma dibagi menjadi 3 (tiga) bentuk penyajian, yaitu :

● Algoritma dengan struktur Bahasa Indonesia

● Algoritma dengan Pseudocode

● Algoritma dengan Flowchart

(20)

Struktur Bahasa Indonesia

Sifat: Umum

● Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman.

● Tidak tergantung pada suatu bahasa pemrograman.

● Notasi-notasinya dapat digunakan untuk seluruh

bahasa manapun.

(21)

Struktur Bahasa Indonesia

Contoh : Menghitung rata-rata tiga buah data Algoritma dengan struktur bahasa Indonesia :

● 1) Baca bilangan a, b, dan c

● 2)Jumlahkan ketiga bilangan tersebut

● 3)Bagi jumlah tersebut dengan 3

● 4)Tulis hasilnya

(22)

Pseudo-Code

Penyajian algoritma dengan pseudocode berarti menggunakan kode yang mirip

dengan kode pemrograman yang

sebenarnya. Pseudocode lebih rinci dari

English/Indonesia Structure.

(23)

Pseudo-Code

Contoh (1) : Menghitung rata-rata tiga buah data

Algoritma dengan struktur pseudocode :

●1) input (a, b, c)

●2) Jml = a+b+c

●3) Rerata = Jml/3

●4) Output (Rerata)

(24)

Flowchart

Flowchart adalah penggambaran secara grafik dari langkah-langkah dan urut-urutan prosedur dari

suatu program. Flowchart menolong analis dan

programmer untuk memecahkan masalah kedalam segmen-segmen yang lebih kecil dan menolong

dalam menganalisis alternatif-alternatif lain dalam

pengoperasian.

(25)

Flowchart

Kegunaan:

▪Untuk mendesain program

▪Untuk merepresentasikan program Maka, flowchartharus dapat

Merepresentasikankomponen-komponen dalam

bahasa pemrograman

(26)

Mengapa Flowchart

a. Relationship

Flowchart dapat memberikan gambaran yang efektif, jelas, dan ringkas tentang prosedur logic. Teknik penyajian yang bersifat grafis jelas akan lebih baik

daripada uraian-uraian yang bersifat teks

khususnya dalam menyajikan logikalogika

yang bersifat kompleks.

(27)

Mengapa Flowchart

b. Analysis

Dengan adanya pengungkapan yang jelas dalam model atau chart, maka para

pembaca dapat dengan mudah melihat

permasalahan atau memfokuskan perhatian

pada area-area tertentu sistem informasi.

(28)

Mengapa Flowchart

c. Communication

Karena simbol-simbol yang digunakan

mengikuti suatu standar tertentu yang sudah

diakui secara umum, maka flowchart dapat

merupakan alat bantu yang sangat efektif

dalam mengkomunikasikan logika suatu

masalah atau dalam mendokumentasikan

logika tersebut.

(29)

Lambang

(30)

Lambang (2)

(31)

Lambang (3)

(32)

Lambang (4)

(33)

Lambang (5)

(34)

Contoh Flowchart

Problem:

Menghitung

Luaspersegipanjang Algoritma:

1.Masukkanpanjang(p) 2.Masukkanlebar(l)

3.Hitungluas(L),

yaitupanjangkali lebar

4.Cetakluas(L)

(35)

Contoh Flowchart

Problem:

Menentukan

Bilangan ganjil atau

Genap

(36)

STRUKTUR DASAR ALGORITMA

Struktur dasar algoritma :

1. Struktur Runtunan (Sequence Proses)

2. Struktur Pemilihan (Selection Proses)

3. Struktur Pengulangan (Iteration Proses)

(37)

Struktur Runtunan

Sebuah runtunan terdiri dari satu atau lebih

‘instruksi’. Tiap-tiap instruksi dilaksanakan secara berurutan sesuai dengan urutan

penulisannya; sebuah instruksi baru bisa

dilaksanakan setelah instruksi sebelumnya

selesai dilaksanakan.

(38)

Struktur Runtunan

(39)

Struktur Pemilihan

Pada struktur ini, jika kondisi terpenuhi maka salah satu aksi akan dilaksanakan dan aksi yang ke dua diabaikan.

Kondisi adalah persyaratan yang dapat dinilai benar atau salah sehingga akan memunculkan ‘aksi’ yang berbeda dengan ‘kondisi’ yang berbeda.

(40)

Struktur Pemilihan

Notasi algoritmik : if Syarat then

Aksi {True}

endif {False}

(41)

Struktur Pemilihan

Notasi Algoritma, IF syarat THEN

aksi-1 {true}

ELSE

aksi-2 {false}

ENDIF

(42)

Struktur Pemilihan

CONTOH :

Menentukan bilangan terbesar diantara 3 bilangan:

‘if’ x > y ‘then’

‘if’ x > z ‘then’

tulis x sebagai bilangan terbesar

‘else’

tulis z sebagai bilangan terbesar

‘else’

‘if’ y > z ‘then’

tulis y sebagai bilangan terbesar

‘else’

tulis z sebagai bilangan terbesar

(43)

Struktur Pengulangan

Digunakan untuk program yang pernyataannya akan

dieksekusi berulang-ulang. Instruksi dikerjakan selama

memenuhi suatu kondisi tertentu. Jika syarat (kondisi)

masih terpenuhi maka pernyataan (aksi) akan terus

dilakukan secara berulang.

(44)

Struktur Pemilihan

For-Next

For var=awal to akhir

@@@@@.

instruksi-instruksi

@@@@@..

Next var

(45)

Struktur Pengulangan

While - do

Bentuk umum : While {kondisi} do

@@@@..

instruksi-instruksi

@@@@..

Endwhile

(46)

Struktur Pengulangan

Repeat - Until

Bentuk Umum ; Repeat

@@@@@@..

Instruksi

@@@@@@...

Until (kondisi)

(47)

Struktur Pengulangan

Contoh :

Algoritma Cetak_Angka

{mencetak 1, 2, .., 8 ke piranti keluaran}

Deklarasi :

K: integer Deskripsi :

K 1 {inisialisasi}

while k <= 8 do write (k)

k k + 1 endwhile

Contoh :

Algoritma Cetak_Angka

{mencetak 1, 2, .., 8 ke piranti keluaran}

Deklarasi :

K: integer Deskripsi :

K 1 {inisialisasi}

repeat

write (k)

k k + 1 until k > 8

(48)

1

Kompleksitas Algoritma

Dosen Pengampu : Zuhri Halim, M.Kom

(49)

Pendahuluan

• Sebuah masalah dapat mempunyai banyak algoritma penyelesaian. Contoh: masalah pengurutan (sort), ada puluhan algoritma pengurutan

• Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien).

• Algoritma yang bagus adalah algoritma yang mangkus (efficient).

Kemangkusan algoritma diukur dari waktu (time) eksekusi algoritma dan kebutuhan ruang (space) memori.

(50)

• Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang.

• Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses.

• Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang bagus dari sejumlah algoritma penyelesaian masalah.

(51)

• Mengapa kita memerlukan algoritma yang

mangkus? Lihat grafik di bawah ini.

(52)

Model Perhitungan Kebutuhan Waktu

• Menghitung kebutuhan waktu algoritma dengan mengukur waktu sesungguhnya (dalam satuan detik) ketika algoritma dieksekusi oleh komputer bukan cara yang tepat.

• Alasan:

1. Setiap komputer dengan arsitektur berbeda mempunyai bahasa mesin yang berbeda → waktu setiap operasi antara satu komputer dengan komputer lain tidak sama.

2. Compiler bahasa pemrograman yang berbeda menghasilkan kode mesin yang berbeda → waktu setiap operasi antara compiler dengan compiler lain tidak sama.

(53)

• Model abstrak pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler apapun.

• Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma.

• Ada dua macam kompleksitas algoritma, yaitu: kompleksitas waktu dan kompleksitas ruang.

(54)

7

Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n.

Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.

• Dengan menggunakan besaran kompleksitas waktu/ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n.

(55)

8

• Ukuran masukan (n): jumlah data yang diproses oleh sebuah algoritma.

• Contoh: algoritma pengurutan 1000 elemen larik, maka n = 1000.

• Contoh: algoritma TSP pada sebuah graf lengkap dengan 100 simpul, maka n = 100.

• Contoh: algoritma perkalian 2 buah matriks berukuran 50 x 50, maka n = 50.

• Dalam praktek perhitungan kompleksitas, ukuran masukan dinyatakan sebagai variabel n saja.

(56)

Contoh

(57)

Kompleksitas Waktu

• Jumlah tahapan komputasi dihitung dari berapa kali suatu operasi dilaksanakan di dalam sebuah algoritma sebagai fungsi ukuran masukan (n)..

• Di dalam sebuah algoritma terdapat bermacam jenis operasi:

Operasi baca/tulis

Operasi aritmetika (+, -, *, /)

Operasi pengisian nilai (assignment)

Operasi pengakasesan elemen larik

Operasi pemanggilan fungsi/prosedur

dll

• Dalam praktek, kita hanya menghitung jumlah operasi khas (tipikal) yang mendasari suatu algoritma.

(58)

Contoh operasi khas di dalam algoritma

• Algoritma pencarian di dalam larik

Operasi khas: perbandingan elemen larik

• Algoritma pengurutan

Operasi khas: perbandingan elemen, pertukaran elemen

• Algoritma penjumlahan 2 buah matriks Operasi khas: penjumlahan

• Algoritma perkalian 2 buah matriks

Operasi khas: perkalian dan penjumlahan

(59)

Contoh 1. Tinjau algoritma menghitung rerata sebuah larik (array).

sum ←0

for i ← 1 to n do

sum ← sum + a[i]

endfor

rata_rata ← sum/n

• Operasi yang mendasar pada algoritma tersebut adalah operasi penjumlahan elemen-elemen a

i

(yaitu sum←sum+a[i]) yang dilakukan sebanyak n kali.

Kompleksitas waktu: T(n) = n.

(60)
(61)
(62)
(63)
(64)
(65)
(66)
(67)
(68)
(69)
(70)

Latihan

Contoh 6. Hitung kompleksitas waktu algoritma berikut berdasarkan jumlah operasi kali.

(71)

Jawaban

• Untuk

j = n, jumlah operasi perkalian = n

j = n/2, jumlah operasi perkalian = n/2 j = n/4, jumlah operasi perkalian = n/4

j = 1, jumlah operasi perkalian = 1

Jumlah operasi perkalian seluruhnya adalah

= n + n/2 + n/4 + … + 2 + 1 → deret geometri

(72)

Perancangan dan Analisis Algoritma

Zuhri Halim, S.Kom., M.Kom

(73)

Definisi :

Notasi asimtotik merupakan himpunan fungsi yang dibatasi oleh suatu fungsi n ∈ N yang cukup besar.

Fungsi : N → R (sering R

+

)

Notasi Asimtotik digunakan untuk menentukan

kompleksitas suatu algoritma dengan melihat waktu tempuh algoritma. Waktu tempuh algoritma

merupakan fungsi : N → R

+

Kompleksitas Waktu Asimptotik

(74)

Kompleksitas Waktu Asimptotik

Terdapat tiga macam yaitu :

⬜ Keadaan terbaik (best case)

Dilambangkan dengan notasi θ(...) dibaca Theta

⬜ Keadaan rata-rata (average case)

Dilambangkan dengan notasi Ω(...)dibaca Omega

⬜ Keadaan terburuk (worst case)

Dilambangkan dengan notasi O(...)dibaca Big-O Kinerja sebuah algoritma biasanya diukur dengan menggunakan

patokan keadaan terburuk (worst case) yang dinyatakan dengan Big- O

(75)

Notasi Big Oh

❖ Definisi 1 : waktu terburuk

iff ada dua bilangan konstanta c dan no

Theorema : Misal

adalah suatu polinom derajat n. Maka

(76)

Notasi Theta

Definisi 2 : waktu tercepat

iff ada dua konstanta c dan n

o

(77)

Notasi Omega

Definisi 3 : waktu rata-rata

iff ada tiga konstanta positif c

1

, c

2

, dan n

o

(78)

7

(79)

8

Fungsi Kompleksitas

(80)

MENGHITUNG WAKTU PROSES (1)

Contoh : Pseudocode Selection Sort (pseudocode 3.6) 1 for i=1 to N-1 do

2 min=i

3 for j=i+1 to N do 4 if A[j]<A[min] then 5 min=j

6 end if 7 end for

8 swap(A[i],A[min]) 9 end for

Hitung waktu proses algoritma yang diperlukan untuk mengurutkan deretan yang berisi 8 angka acak ! Bagaimana jika ukuran input belum diketahui?

Dinyatakan dengan N

Waktu proses dinyatakan dengan sebuah persamaan N, selanjutnya disebut Fungsi Kompleksitas Fungsi Kompleksitas menyatakan seberapa kompleksnya sebuah algoritma

(81)

MENGHITUNG WAKTU PROSES (2)

Asumsi bahwa nilai N belum diketahui

Bisa dihitung bahwa untuk setiap perulangan i akan terjadi perulangan j sebanyak N-1, N-2, N-3, ..., 1 kali

Misalkan nilai N adalah 5, berarti kita perlu menghitung 5+4+3+2+1 (rumus deret hitung)

Dengan nilai a dan b = 1 diperoleh :

(82)

FUNGSI KOMPLEKSITAS

Fungsi Kompleksitas algoritma Selection Sort di atas

Dengan rumus Fungsi Kompleksitas N(N+1)/2 berarti jika N=5 maka waktu proses adalah 15.

Jika nilai N diperbesar menjadi 8, maka waktu proses menjadi 36.

Nilai N dan waktu proses bisa dipetakan dalam sebuah koordinat Cartesius dengan N di sumbu x dan waktu proses di sumbu y.

Terlihat bahwa waktu proses algoritma Selection Sort bertumbuh (growth rate) secara linear.

(83)

MEMBACA BIG-OH

O(1) artinya algoritma konstan O(n) artinya algoritma linear

O(n2) artinya algorritma quadratic O(n3) artinya algoritma qubic

O(log n) contohnya pada full balanced Binary Search Tree O(nm) artinya algoritma eksponensial

Notasi Big-O bisa berisi kombinasi dari contoh di atas

Penyederhanaan Big-O dilakukan pada komponen yang “less important”

(84)

Perancangan dan Analisis Algoritma

STRATEGI ALGORITMA

Dosen Pengampu: Zuhri Halim, M.Kom

(85)

JENIS STRATEGI ALGORITMA

Strategi Solusi Langsung

Alg. Brute Force

Alg Greedy

Strategi Berbasis Pencarian Pada Ruang Status

Teknik DFS (Depth First Search)

Teknik BFS (Breadth First search)

Alg. Backtracking

Alg. Branch and Bound

Strategi Solusi Atas-Bawah

Alg. Devide and Conquer

Strategi Solusi Bawah-Atas

Alg. Dinamic Programming

Strategi Shortest Path

Alg. Djikstra

Alg . Floyd-Warshall

(86)

Strategi Solusi Langsung Algoritma Brute Force

Zuhri Halim, M.Kom

(87)

Definisi Brute Force

Brute force adalah sebuah pendekatan yang langsung (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).

(88)

Contoh-contoh Brute Force

1. Menghitung an (a > 0, n adalah bilangan bulat tak- negatif)

an = a x a x … x a (n kali) , jika n > 0

= 1 , jika n = 0

Algoritma: kalikan 1 dengan a sebanyak n kali

(89)

2. Menghitung n! (n bilangan bulat tak- negatif)

n! = 1 × 2 × 3 × … × n , jika n > 0

= 1 , jika n = 0

Algoritma: kalikan n buah bilangan, yaitu 1,

2, 3, …, n, bersama-sama

(90)

3. Mengalikan dua buah matrik yang berukuran n × n.

Misalkan C = A × B dan elemen-elemen matrik dinyatakan sebagai cij, aij, dan bij

● Algoritma: hitung setiap elemen hasil perkalian satu per satu, dengan cara mengalikan dua vektor yang panjangnya n.

(91)

Adakah algoritma perkalian matriks yang lebih mangkus daripada brute force?

(92)

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.

(93)

Adakah algoritma pemfaktoran yang lebih baik daripada brute force?

(94)

5. Mencari elemen terbesar (atau terkecil)

Persoalan: Diberikan sebuah himpunan yang beranggotakan n buah bilangan

bulat. Bilangan-bilangan bulat tersebut dinyatakan sebagai a

1

, a

2

, …, a

n

. Carilah elemen terbesar di dalam himpunan

tersebut.

(95)

Kompleksitas algoritma ini adalah O(n).

(96)

6. Sequential Search

Persoalan: Diberikan n buah bilangan bulat yang dinyatakan sebagai a

1

, a

2

, …, a

n

. Carilah apakah x terdapat di dalam himpunan bilangan bulat tersebut. Jika x ditemukan, maka lokasi (indeks) elemen yang bernilai x disimpan di dalam

peubah idx. Jika x tidak terdapat di dalam himpunan tersebut, maka idx diisi

dengan nilai 0.

(97)

Kompleksitas algoritma ini adalah O(n).

Adakah algoritma pencarian elemen yang lebih mangkus daripada brute force?

(98)

7. Bubble Sort

● Apa metode yang paling lempang dalam

memecahkan masalah pengurutan? Jawabnya adalah algoritma pengurutan bubble sort.

Algoritma bubble sort mengimplementasikan

teknik brute force dengan jelas sekali.

(99)
(100)

8. Uji keprimaan

Persoalan:

Diberikan sebuah bilangan bilangan bulat

positif. Ujilah apakah bilangan tersebut

merupakan bilangan prima atau bukan.

(101)

Adakah algoritma pengujian bilangan prima yang lebih mangkus daripada brute force?

(102)

9. Menghitung nilai polinom secara brute force

Persoalan: Hitung nilai polinom

p(x) = a

n

x

n

+ a

n-1

x

n-1

+ … + a

1

x + a

0

pada titik x = x

0

.

(103)

Kompleksitas algoritma ini adalah O(n

2

).

(104)

Perbaikan (improve):

Kompleksitas algoritma ini adalah O(n).

Adakah algoritma perhitungan nilai polinom yang lebih mangkus daripada brute force?

(105)

Karakteristik Algoritma Brute Force

1. Algoritma brute force umumnya tidak “cerdas” dan tidak mangkus, karena ia membutuhkan jumlah langkah yang besar dalam penyelesaiannya. Kadang-kadang algoritma brute force disebut juga algoritma naif (naïve algorithm).

1. Algoritma brute force seringkali merupakan pilihan yang kurang disukai karena ketidakmangkusannya itu, tetapi dengan mencari pola-pola yang mendasar, keteraturan, atau trik-trik khusus, biasanya akan membantu kita menemukan algoritma yang lebih cerdas dan lebih mangkus.

(106)

3. Untuk masalah yang ukurannya kecil, kesederhanaan brute force biasanya lebih diperhitungkan daripada

ketidakmangkusannya.

Algoritma brute force sering digunakan

sebagai basis bila membandingkan beberapa

alternatif algoritma yang mangkus.

(107)

4. Algoritma brute force seringkali lebih mudah diimplementasikan daripada algoritma yang lebih canggih, dan karena

kesederhanaannya, kadang-kadang

algoritma brute force dapat lebih mangkus

(ditinjau dari segi implementasi).

(108)

Bubble sort

Kompleksitas algoritma ini adalah O(n

2

).

● Adakah algoritma pengurutan elemen elemen

yang lebih mangkus daripada brute force?

Referensi

Dokumen terkait