Anda di halaman 1dari 34

Daftar Isi

1 Algoritma

2
Banyak masalah dapat dipecahkan dengan mempertimbangkannya sebagai
kasus khusus dari masalah umum. Sebagai contoh, masalah menemukan
bilangan bulat terbesar dalam urutan 101, 12, 144, 212, 98. Ini adalah kasus
khusus dari masalah menemukan bilangan bulat terbesar dalam urutan bilangan
bulat. Untuk memecahkan masalah umum ini, kita harus memberikan algoritma,
yang menentukan urutan langkah-langkah yang digunakan untuk memecahkan
masalah umum ini.

Sebagai contoh, masalah mencari elemen dalam daftar dan mengurutkan daftar
sehingga elemennya dalam urutan yang ditentukan, seperti meningkatkan,
menurun, atau alfabetik. Selanjutnya akan dikembangkan algoritma yang
menemukan pembagi terbesar bersama dari dua bilangan bulat, yang
menghasilkan semua pengurutan dari himpunan terbatas, yang menemukan jarak
terpendek antara node dalam jaringan, dan untuk memecahkan banyak masalah
lainnya.

3
Selanjutnya akan diperkenalkan konsep paradigma algoritma, yang menyediakan
metode umum untuk merancang algoritma. Khususnya algoritma brute-force,
yang menemukan solusi menggunakan pendekatan langsung tanpa
memperkenalkan kecerdasan apa pun. Akan dibahas algoritma greedy, sebuah
kelas algoritma yang digunakan untuk memecahkan masalah optimasi. Akan
dibuktikan bahwa algoritma greedy tertentu selalu menemukan solusi optimal.
Salah satu pertimbangan penting mengenai algoritma adalah kompleksitas
komputasinya, yang mengukur waktu pemrosesan dan memori komputer yang
diperlukan oleh algoritma untuk memecahkan masalah dari ukuran tertentu.

4
Definisi 1
Sebuah algoritma adalah urutan terbatas instruksi yang tepat untuk melakukan
komputasi atau memecahkan masalah.

5
Kata algoritma berasal dari nama al-Khowarizmi, seorang matematikawan abad
ke-9 yang bukunya tentang angka Hindu menjadi dasar notasi desimal modern.
Awalnya, kata algorisme digunakan untuk aturan-aturan dalam melakukan
aritmatika menggunakan notasi desimal. Kata algorisme kemudian berkembang
menjadi kata algoritma pada abad ke-18.

6
Contoh 1
Buatlah sebuah algoritma untuk mencari nilai maksimum (terbesar) dari sebuah
urutan terbatas bilangan bulat.

7
Contoh 1
Buatlah sebuah algoritma untuk mencari nilai maksimum (terbesar) dari sebuah
urutan terbatas bilangan bulat.

1 Tetapkan nilai maksimum sementara sama dengan bilangan bulat pertama


dalam urutan. (Maksimum sementara akan menjadi bilangan bulat terbesar
yang diperiksa pada setiap tahap prosedur.)

7
Contoh 1
Buatlah sebuah algoritma untuk mencari nilai maksimum (terbesar) dari sebuah
urutan terbatas bilangan bulat.

1 Tetapkan nilai maksimum sementara sama dengan bilangan bulat pertama


dalam urutan. (Maksimum sementara akan menjadi bilangan bulat terbesar
yang diperiksa pada setiap tahap prosedur.)
2 Bandingkan bilangan bulat berikutnya dalam urutan dengan maksimum
sementara, dan jika bilangan tersebut lebih besar dari maksimum sementara,
tetapkan maksimum sementara sama dengan bilangan tersebut.

7
Contoh 1
Buatlah sebuah algoritma untuk mencari nilai maksimum (terbesar) dari sebuah
urutan terbatas bilangan bulat.

1 Tetapkan nilai maksimum sementara sama dengan bilangan bulat pertama


dalam urutan. (Maksimum sementara akan menjadi bilangan bulat terbesar
yang diperiksa pada setiap tahap prosedur.)
2 Bandingkan bilangan bulat berikutnya dalam urutan dengan maksimum
sementara, dan jika bilangan tersebut lebih besar dari maksimum sementara,
tetapkan maksimum sementara sama dengan bilangan tersebut.
3 Ulangi langkah sebelumnya jika masih ada bilangan bulat dalam urutan.

7
Contoh 1
Buatlah sebuah algoritma untuk mencari nilai maksimum (terbesar) dari sebuah
urutan terbatas bilangan bulat.

1 Tetapkan nilai maksimum sementara sama dengan bilangan bulat pertama


dalam urutan. (Maksimum sementara akan menjadi bilangan bulat terbesar
yang diperiksa pada setiap tahap prosedur.)
2 Bandingkan bilangan bulat berikutnya dalam urutan dengan maksimum
sementara, dan jika bilangan tersebut lebih besar dari maksimum sementara,
tetapkan maksimum sementara sama dengan bilangan tersebut.
3 Ulangi langkah sebelumnya jika masih ada bilangan bulat dalam urutan.
4 Berhenti ketika tidak ada bilangan bulat yang tersisa dalam urutan.
Maksimum sementara pada saat ini adalah bilangan bulat terbesar dalam
urutan.

7
8
1 Masukan (Input). Sebuah algoritma memiliki nilai masukan dari himpunan
tertentu.
2 Keluaran (Output). Dari setiap himpunan nilai masukan, sebuah algoritma
menghasilkan nilai keluaran dari himpunan tertentu. Nilai keluaran tersebut
adalah solusi untuk masalah yang diberikan.
3 Definitif (Definiteness). Langkah-langkah dari sebuah algoritma harus
didefinisikan dengan jelas.
4 Kebenaran (Correctness). Sebuah algoritma seharusnya menghasilkan nilai
keluaran yang benar untuk setiap himpunan nilai masukan.
5 Kefinitan (Finiteness). Sebuah algoritma seharusnya menghasilkan keluaran
yang diinginkan setelah jumlah langkah yang finit (tetapi mungkin besar)
untuk setiap masukan dalam himpunan masukan.
6 Efektifitas (Effectiveness). Setiap langkah dari sebuah algoritma harus dapat
dilakukan dengan tepat dan dalam jumlah waktu yang finit.
7 Umum (Generality ). Prosedur yang diberikan harus dapat diterapkan untuk
semua masalah dari bentuk yang diinginkan, tidak hanya untuk himpunan
nilai masukan tertentu saja.
9
Contoh 2
Algoritma 1 untuk mencari elemen maksimum dalam sebuah urutan integer
memiliki properti-properti berikut:
1 Input: algoritma ini menerima sebuah urutan integer.
2 Output: algoritma ini menghasilkan sebuah integer, yaitu elemen maksimum
dalam urutan tersebut.
3 Definitness: setiap langkah pada algoritma ini didefinisikan dengan jelas.
4 Correctness: algoritma ini akan selalu menghasilkan nilai output yang benar,
yaitu elemen maksimum dalam urutan tersebut.
5 Finiteness: algoritma ini akan berhenti setelah sejumlah langkah yang finitis,
yakni setelah semua elemen pada urutan telah diperiksa.
6 Effectiveness: setiap langkah pada algoritma dapat dilakukan dengan tepat
dalam waktu yang berhingga.
7 Generality: algoritma ini dapat digunakan untuk semua urutan integer, tidak
hanya pada urutan tertentu.
10
Searching Algorithm

Masalah mencari lokasi elemen dalam daftar terurut terjadi dalam banyak konteks.
Misalnya, program yang memeriksa ejaan kata mencari kata-kata dalam kamus,
yang hanyalah daftar kata terurut. Masalah seperti ini disebut masalah pencarian.

11
Masalah pencarian umum dapat dijelaskan sebagai berikut: Temukan elemen x
dalam daftar elemen yang berbeda a1 , a2 , . . . , an , atau tentukan bahwa x tidak ada
dalam daftar. Solusi untuk masalah pencarian ini adalah lokasi dari elemen dalam
daftar yang sama dengan x (solusinya jika x = ai ) dan 0 jika x tidak ada dalam
daftar.

12
Linear Search

Pertama-tama akan dibahas algoritma pencarian linear, atau algoritma pencarian


sekuensial. Algoritma pencarian linear dimulai dengan membandingkan x dan a1 .
Jika x = a1 , maka solusinya adalah lokasi a1 , yaitu 1. Jika x 6= a1 , bandingkan x
dengan a2 . Jika x = a2 , maka solusinya adalah lokasi a2 , yaitu 2. Jika x 6= a2 ,
bandingkan x dengan a3 . Lanjutkan proses ini, membandingkan x dengan setiap
elemen dalam daftar secara berurutan sampai ada kecocokan ditemukan, dengan
solusinya adalah lokasi dari elemen tersebut, kecuali jika tidak ada kecocokan.
Jika seluruh daftar telah dicari tanpa menemukan x, maka solusinya adalah 0.

13
Binary Search

Algoritma pencarian biner (binary search) dilakukan dengan membandingkan


elemen yang akan dicari dengan elemen tengah pada daftar. Kemudian, daftar
dibagi menjadi dua sublist yang lebih kecil dengan ukuran yang sama atau salah
satu sublist lebih sedikit satu elemen daripada yang lain. Pencarian dilanjutkan
dengan membatasi pencarian pada sublist yang sesuai berdasarkan
perbandingan elemen yang akan dicari dengan elemen tengah. Algoritma ini
dapat digunakan ketika daftar memiliki elemen yang terurut menurut ukuran yang
meningkat (misalnya: jika elemennya adalah angka, maka urutannya dari terkecil
ke terbesar; jika elemennya adalah kata, maka urutannya secara leksikografis
atau urutan alfabet).

14
Contoh 3
Untuk mencari angka 19 dalam daftar

1 2 3 5 6 7 8 10 12 13 15 16 18 19 20 22,

pertama-tama pisahkan daftar ini, yang terdiri dari 16 elemen, menjadi dua daftar
yang lebih kecil dengan masing-masing delapan elemen, yaitu,

1 2 3 5 6 7 8 10

dan
12 13 15 16 18 19 20 22.

15
Kemudian, bandingkan 19 dan term terbesar dalam daftar pertama. Karena
10 < 19, pencarian 19 dapat dibatasi pada daftar yang berisi term ke-9 hingga
ke-16 dari daftar asli. Selanjutnya, bagi daftar ini, yang memiliki delapan term,
menjadi dua daftar kecil yang masing-masing berisi empat term, yaitu,

12 13 15 16

dan
18 19 20 22.

16
Karena 16 < 19 (membandingkan 19 dengan term terbesar pada list pertama)
maka pencarian dibatasi pada daftar kedua yang berisi term ke-13 hingga ke-16
dari daftar asli. Daftar 18 19 20 22 dibagi menjadi dua daftar, yaitu,

18 19

dan
20 22.
Karena 19 = 19, pencarian berakhir dan solusinya adalah lokasi elemen yang
sama dengan x, yaitu lokasi ke-14.

17
18
Mengurutkan elemen dalam sebuah daftar adalah masalah yang muncul dalam
banyak konteks. Sebagai contoh, untuk membuat direktori telepon diperlukan
pengurutan nama-nama pelanggan secara alfabetis. Demikian pula, membuat
daftar lagu yang tersedia untuk diunduh memerlukan pengurutan judul-judul lagu
secara alfabetis. Mengurutkan alamat pada daftar kirim e-mail dapat menentukan
apakah ada alamat yang duplikat. Membuat kamus yang berguna memerlukan
pengurutan kata-kata secara alfabetis. Demikian juga, menghasilkan daftar suku
cadang memerlukan pengurutan sesuai dengan nomor bagian yang meningkat.

19
Misalkan kita memiliki daftar elemen dari sebuah himpunan. Selanjutnya, kita
memiliki cara untuk mengurutkan elemen-elemen himpunan tersebut. Pengurutan
adalah proses menempatkan elemen-elemen tersebut dalam daftar sedemikian
rupa sehingga elemen-elemen tersebut terurut dalam urutan yang meningkat.
Sebagai contoh, mengurutkan daftar 7, 2, 1, 4, 5, 9 menghasilkan daftar
1, 2, 4, 5, 7, 9. Mengurutkan daftar d, h, c, a, f (menggunakan urutan alfabet)
menghasilkan daftar a, c, d, f , h.

20
Bubble sort adalah salah satu algoritma pengurutan yang paling sederhana,
namun bukan yang paling efisien. Algoritma ini mengurutkan daftar dalam urutan
meningkat dengan membandingkan secara berulang-ulang elemen-elemen yang
berdekatan dan menukar posisinya jika tidak berada pada urutan yang benar.
Untuk melaksanakan bubble sort, kita melakukan operasi dasar, yaitu menukar
posisi elemen yang lebih besar dengan yang lebih kecil yang mengikutinya,
dimulai dari awal daftar, untuk satu kali proses. Kita mengulang prosedur ini
hingga pengurutan selesai dilakukan. Kita dapat membayangkan elemen-elemen
dalam daftar ditempatkan dalam kolom. Pada bubble sort, elemen-elemen yang
lebih kecil "menggelembung" ke atas saat mereka ditukar dengan elemen-elemen
yang lebih besar. Elemen-elemen yang lebih besar "terendam" ke bawah.

21
22
Contoh 4
Gunakan metode bubble sort untuk mengurutkan 3, 2, 4, 1, 5 menjadi dalam
urutan meningkat.
Bubble sort adalah algoritma pengurutan sederhana yang mengurutkan daftar
dengan cara membandingkan elemen-elemen yang bersebelahan, kemudian
menukar posisinya jika diperlukan. Untuk melakukan bubble sort, kita melakukan
operasi dasar, yaitu menukar elemen yang lebih besar dengan elemen yang lebih
kecil yang mengikuti, dimulai dari awal daftar, untuk satu kali pengulangan.
Prosedur ini diulangi sampai pengurutan selesai dilakukan.

23
Dalam kasus ini, kita memiliki daftar {3, 2, 4, 1, 5}. Langkah pertama adalah
membandingkan 3 dan 2. Karena 2 lebih kecil dari 3, maka kita menukar
posisi mereka sehingga daftar menjadi {2, 3, 4, 1, 5}. Kemudian, kita
membandingkan 3 dan 4, dan karena 3 sudah berada pada posisi yang
benar, tidak ada yang perlu diubah. Kita melanjutkan langkah ini hingga
mencapai akhir daftar. Setelah satu kali pengulangan, elemen terbesar akan
berada pada posisi terakhir.
Kita melanjutkan prosedur ini dengan mengulangi pengurutan lagi dari awal
sampai seluruh daftar terurut. Berikut adalah langkah-langkahnya:

{3, 2, 4, 1, 5} → {2, 3, 4, 1, 5} → {2, 3, 1, 4, 5} → {2, 1, 3, 4, 5} → {1, 2, 3, 4, 5}.

Jadi, daftar {3, 2, 4, 1, 5} akan diurutkan menjadi {1, 2, 3, 4, 5} dengan


menggunakan bubble sort.

24
Insertion sort adalah algoritma pengurutan sederhana, namun biasanya tidak
efisien dibandingkan dengan algoritma pengurutan lainnya. Untuk mengurutkan
daftar dengan n elemen, insertion sort dimulai dengan elemen kedua. Insertion
sort membandingkan elemen kedua ini dengan elemen pertama dan
menyisipkannya sebelum elemen pertama jika elemen kedua tidak melebihi
elemen pertama, atau setelah elemen pertama jika elemen kedua lebih besar dari
elemen pertama. Pada titik ini, dua elemen pertama telah berada dalam urutan
yang benar. Kemudian, elemen ketiga dibandingkan dengan elemen pertama, dan
jika elemen ketiga lebih besar dari elemen pertama, maka dibandingkan dengan
elemen kedua; kemudian dimasukkan ke dalam posisi yang benar di antara tiga
elemen pertama.
Prosedur ini diulangi untuk setiap elemen pada daftar sehingga seluruh daftar
terurut.

25
Contoh 5
Untuk mengurutkan daftar {5, 3, 1, 4, 2} menggunakan insertion sort, kita mulai
dengan membandingkan 3 dengan 5, dan karena 3 lebih kecil dari 5, maka 3
diposisikan sebelum 5 sehingga daftar menjadi {3, 5, 1, 4, 2}. Selanjutnya, kita
membandingkan 1 dengan 3 dan 5, dan karena 1 lebih kecil dari keduanya, maka
1 diposisikan sebelum 3 sehingga daftar menjadi {1, 3, 5, 4, 2}. Kita mengulangi
proses ini untuk setiap elemen hingga seluruh daftar terurut.
Jadi, insertion sort membandingkan setiap elemen dengan elemen sebelumnya
dan menyisipkannya ke dalam posisi yang tepat di dalam daftar, sehingga seluruh
daftar terurut.

26
Contoh 6
Gunakan metode pengurutan insertion sort untuk mengurutkan elemen-elemen
dalam list 3, 2, 4, 1, 5 secara meningkat.
Bandingkan elemen kedua (2) dengan elemen pertama (3). Karena 2 lebih
kecil daripada 3, tukar posisi keduanya sehingga list menjadi 2, 3, 4, 1, 5.
Selanjutnya, bandingkan elemen ketiga (4) dengan elemen pertama (2) dan
elemen kedua (3). Karena 4 lebih besar daripada 2 dan 3, maka elemen 4
tetap berada pada posisinya di list 2, 3, 4, 1, 5.
Bandingkan elemen keempat (1) dengan elemen pertama (2), elemen kedua
(3), dan elemen ketiga (4). Karena 1 lebih kecil dari ketiga elemen tersebut,
tukar posisi elemen-elemen tersebut dengan 1 sehingga list menjadi 1, 2, 3,
4, 5.
Terakhir, bandingkan elemen kelima (5) dengan elemen pertama (1), elemen
kedua (2), elemen ketiga (3), dan elemen keempat (4). Karena 5 lebih besar
dari keempat elemen tersebut, maka elemen 5 tetap berada pada posisinya di
list 1, 2, 3, 4, 5.
27
28
[1] Kenneth H. Rosen, Discrete Mathematics and Its Applications, Seventh
Edition, 2011, Mc-Graw Hill Education
[2] Richard A. Brualdi, R., 2009, Introduction to Combinatoric, 5th edition,
Pearson
[3] John M. Harris, Jeffry L. Hirst, Michael J. Mossinghof, 2008, Combinatorics
and Graph Theory, Springer
[4] L. Lovasz, J. Pelikan, K. Vesztergombi, 2003, Discrete Mathematics
Elementary and Beyond, Springer-Verlag, New York.
[5] Chen Chuan Chong, Koh Khee Meng, 1992, Principles and Techniques in
Combinatorics, World Wcientific Publishing Co Pte Ltd.
[6] R.C. Bose, B. Manvel, 1984, Introduction to Combinatorial Theory, John
Wiley and Sons.
[7] C. L. Liu, 1977, Elements of Discrete Mathematics, McGraw-Hill Book
Company.
29

Anda mungkin juga menyukai