Anda di halaman 1dari 9

Tugas Resume

Nama : Muhammad Fathan Sembada


NIM : 190511100
Kelas : 20-C1C-R3
Mata Kuliah : Analisis dan Strategi Algoritma

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

1. Travelling Salesperson Problem (TSP)


Diberikan n buah kota serta diketahui jarak antara setiap kota
satu sama lain. Temukan perjalanan (tour) terpendek yang dimulai
dari sebuah kota dan melalui setiap kota lainnya hanya sekali dan
kembali lagi ke kota asal keberangkatan.
2. Integer Knapsack Problem
Diberikan n buah objek dan sebuah knapsack (karung, tas,
buntilan, dsb)
dengan kapasitas bobot K. Setiap objek memiliki propert bobot
(weigth) wi dan keuntungan (profit) pi.
Bagaimana memilih objek-objek yang dimasukkan ke dalam
knapsack sedemikian sehingga tidak melebihi kapasitas knapsack
namun memberikan keuntungan maksimal?

3. Persoalan penugasan (assignment problem)


Misalkan terdapat n orang dan n buah pekerjaan (job). Setiap
orang akan di-assign dengan sebuah pekerjaan. Penugasan orang
ke-i dengan pekerjaan ke-j membutuhkan biaya sebesar c(i, j).
Bagaimana melakukan penugasan sehingga total biaya penugasan
adalah seminimal mungkin?
Contoh instansiasi persoalan:
4. Persoalan N-Ratu (The N-Queens Problem)
Diberikan sebuah papan catur yang berukuran N × N dan N
buah bidak ratu. Bagaimana menempatkan N buah ratu (Q) itu pada
petak-petak papan catur sedemikian sehingga tidak ada dua ratu
atau lebih yang terletak pada satu baris yang sama, atau pada satu
kolom yang sama, atau pada satu diagonal yang sama ?

5. Mencari Pasangan Titik Terdekat (Closest Pair)


Diberikan n buah titik, tentukan dua buah titik yang terdekat
satu sama lain.

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.

7. Menemukan jalan keluar dari labirin (Maze Problem)


Diberikan sebuah labirin dengan satu atau lebih pintu masuk
dan satu atau lebih pintu keluar. Temukan jalan yang harus dilalui
sehingga seseorang dapat keluar dengan selamat dari labirin
tersebut (tidak tersesat di dalamnya).

8. Pewarnaan Graf (Graph Colouring)


Diberikan sebuah graf G dengan n buah simpul dan disediakan
m buah warna. Warnailah seluruh simpul graf G sedemikian
sehingga tidak ada dua buah simpul bertetangga yang mempunyai
warna sama (Perhatikan juga bahwa tidak seluruh warna harus
dipakai).
9. Lintasan terpendek (shortest path)
Diketahui n buah kota dan diberikan jarak antara dua buah kota
yang bertetangga. Tentukan lintasan terpendek dari sebuah kota
asal ke sebuah kota tujuan.

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.

4. Algoritma Decrease and Conquer


Decrease and conquer merupakan metode desain algoritma
dengan mereduksi persoalan menjadi beberapa subpersoalan yang
lebih kecil, tetapi selanjutnya hanya memproses satu sub-persoalan
saja.
Berbeda dengan divide and conquer yang memproses semua
sub-persoalan dan menggabung semua solusi setiap sub-persoalan.
Decrease and conquer terdiri dari dua tahapan:
Decrease : mereduksi persoalan menjadi beberapa persoalan
yang lebih kecil (biasanya dua sub-persoalan).
Conquer : memproses satu sub-persoalan secara
rekursif.
Tidak ada tahap combine dalam decrease and conquer
5. Algoritma Bactracking
Algoritma Backtracking merupakan salah satu bentuk
algoritma yang banyak digunakan oleh para programmer ataupun
pengguna komputer ahli untuk menyelesaikan suatu permasalahan
komputasional pada perangkat komputer yang mereka gunakan.
Dalam programming algoritma backtracking, rekursi adalah kunci
dari programming backtracking. Rekursi sendiri merupakan proses
pengulangan suatu hal yang mencakup kesamaan-diri. Penggunaan
yang paling umum dari rekursi terdapat dalam kajian ilmu
matematika dan ilmu komputer.
Algoritma backtracking menghitung kumpulan kandidat
parsial, yang dalam prinsipnya, hanya dapat diselesaikan dalam
berbagai cara untu kmemberikan berbagai kemungkinan solusi
terhadap permasalahan yang hendak diselesaikan. Penyelesaiannya
juga dilakukan secara bertahap dari satu sekuens kandidat
kemungkinan ke kemungkinan lainnya.
6. Algoritma Branch and Bound
Algoritma Branch and Bound merupakan algoritma yang
membagi permasalahan menjadi sub masalah lebih kecil yang
mengarah ke solusi dengan pencabangan (branching) dan
melakukan pembatasan (bounding) untuk mencapai solusi optimal.
Pencabangan (branching) yaitu proses membentuk permasalahan ke
dalam bentuk struktur pohon pencarian (search tree). Proses
Pencabangan dilakukan untuk membangun semua cabang pohon
yang menuju solusi, sedangkan proses pembatasan dilakukan
dengan menghitung estimasi nilai (cost) simpul dengan
memperhatikan batas. Branch and Bound pertama kali
dikemukakan oleh A. H. Land dan A. G. Doig pada tahun 1960
(Suyanto, 2010:81).
Secara umum algoritma Branch and Bound dalam melakukan
pencarian solusi menggunakan teknik Least Cost Search atau
pencarian nilai terkecil, teknik ini akan menghitung nilai (cost)
setiap simpul. Simpul yang memiliki nilai paling kecil dikatakan
memiliki kemungkinan paling besar menuju solusi
7. Dynamic programming
Pemrograman Dinamis adalah metode pengoptimalan
matematika dan metode pemrograman komputer. Metode ini
dikembangkan oleh Richard Bellman pada 1950-an dan telah
digunakan di berbagai bidang, mulai dari teknik kedirgantaraan
hingga ekonomi.
Dalam kedua konteks ini mengacu pada penyederhanaan
masalah yang rumit dengan memecahnya menjadi sub-masalah
yang lebih sederhana secara rekursif. Meskipun beberapa masalah
keputusan tidak dapat dipisahkan dengan cara ini, keputusan yang
mencakup beberapa titik waktu sering kali pecah secara rekursif.
Begitu pula dalam ilmu komputer, jika suatu masalah dapat
diselesaikan secara optimal dengan memecahnya menjadi sub-sub
masalah dan kemudian secara rekursif mencari solusi optimal untuk
sub masalah tersebut, maka dikatakan memiliki substruktur yang
optimal.

Anda mungkin juga menyukai