Topic
“Pembangunan Algoritma”
A. Pendahuluan
Untuk mengawali pembahasan kita harus tahu apa itu algoritma?
Menurut Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,
Clifford Stein Algortima adalah Langkah Komputasi yang telah terdefinisi
dengan baik yang mempunyai nilai di input, langkah, hingga outputnya.
Mempunyai algoritma yang baik sangatlah penting dalam penyelesaian
masalah computational thinking. Algoritma yang baik ialah algoritma yang
menyelesaikan masalah secara efektif dan efesien.
B. Pentingnya Strategi Algoritma
Ketika kamu hendak makan secara tidak sadar menyusun sebuah
algoritma. Algoritma itu adalah alur atau langkah-langkah yang disusun
secara tertulis, sistematis juga berurutan yang digunakan untuk
menyelesaikan masalah. Bisa juga algoritma tersusun secara tidak sengaja.
Setiap jam bahkan setiap menit pun manusia bisa membuat satu algoritma
tanpa disusun terlebih dahulu.
Penyelesaian masalah dengan menggunakan metode algoritma masuk
ke dalam Computational Thinking (CT). Computational Thinking adalah
berpikir secara komputasi atau dapat diartikan sebagai penyelesaian
masalah dengan melibatkan teknik yang digunakan oleh software dalam
penulisan program. Berpikir komputasi tidak berarti berpikir seperti
komputer, melainkan berpikir tentang komputasi di mana sesorang dituntut
untuk memformulasikan masalah dalam bentuk masalah komputasi dan
menyusun solusi komputasi yang baik (dalam bentuk algoritma) atau
menjelaskan mengapa tidak ditemukan solusi yang sesuai. Computational
Thinking memiliki 4 unsur yaitu, menyelesaikan masalah dengan cara
dekomposis, dengan cara abstraksi, dengan cara pola, dan yang terakhir
dengan cara menerapkan algoritma.
Algoritma merupakan salah satu metode yang penting dalam
Computational Thinking. Hal itu dapat terjadi karena algoritma memiliki
pengertian, urutan, langkah-langkah, tahapan-tahapan yang dapat
dilakukan untuk menyelesaikan suatu masalah secara berurutan. Hampir
semua masalah dapat diselesaikan dengan menggunakan algoritma, dari
masalah pemrograman komputer sampai masalah-masalah yang kita
hadapi setiap harinya. Penyajian algoritma dapat dibedakan menjadi dua
secara garis besar yaitu dengan pseudocode dan flowchart. Pseudocode
adalah penyelesaian dengan menggunakan kode-kode perograman,
sedangkan flowchart dengan cara gambar atau bagan.
Jika kita memecahkan masalah dengan asal-asalan tanpa langkah-
langkah (algoritma) yang tepat, maka sudah dipastikan masalah tersebut
akan berantakan karena tidak tersusun dengan rapi. Misalnya kita ingin
membuat kue, maka cara yang paling efektif dan efesien sesuai dengan
pola dan abstraksi sebelumnya hingga tahap packing, diurutkan secara
lengkap, terukur dan kreatif. Dan masih banyak permasalahan dalam
kehidupan sehari-hari yang dapat di pecahkan dengann algoritma. Oleh
karena itu dibutuhkan sebuah algoritma sangatlah penting, jika tidak ada
algoritma mungkin masalah bisa diselesaikan tapi bisa juga cara
menyelesaikannyalah yang akan rumit.
C. Jenis Permasalahan
6. Permainan 15-Puzzle
Diberikan sebuah 15-puzzle yang memuat 15 buah ubin (tile)
yang diberi nomor 1 sampai 15, dan satu buah slot kosong yang
digunakan untuk menggerakkan ubin ke atas, ke bawah, ke kiri,
dan ke kanan. Misalkan diberikan keadaan awal dan keadaaan akhir
susunan ubin. Kita ingin mentransformasikan susunan awal
menjadi susunan akhir.
D. Strategi Algoritma
1. Algoritma 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).
2. Algoritma Greedy
Algoritma greedy merupakan jenis algoritma yang
menggunakan pendekatan penyelesaian masalah dengan mencari
nilai maksimum sementara pada setiap langkahnya. Nilai
maksimum sementara ini dikenal dengan istilah local maximum.
Pada kebanyakan kasus, algoritma greedy tidak akan menghasilkan
solusi paling optimal, begitupun algoritma greedy biasanya
memberikan solusi yang mendekati nilai optimum dalam waktu
yang cukup cepat.
3. Algoritma Divide and Conquer
Algoritma Divide and Conquer merupakan algoritma yang
sangat populer di dunia Ilmu Komputer. Divide and Conquer
merupakan algoritma yang berprinsip memecah-mecah
permasalahan yang terlalu besar menjadi beberapa bagian kecil
sehingga lebih mudah untuk diselesaikan.
Langkah-langkah umum algoritma Divide and Conquer :
Divide : Membagi masalah menjadi beberapa upa-masalah
yang memiliki kemiripan dengan masalah semula
namun berukuran lebih kecil ( idealnya berukuran
hampir sama ).
Conquer : Memecahkan ( menyelesaikan ) masing-masing
upa-masalah ( secara rekursif ).
Combin : Menggabungkan solusi masing-masing upa-
e masalah sehingga membentuk solusi masalah
semula.