Anda di halaman 1dari 14

https://id.wikipedia.

org/wiki/Algoritma
https://fzrusman.wordpress.com/2012/04/09/asal-mula-kata-algoritma/

Kata algoritma datang dari nama matematikawan Persia abad ke-9 Abu Abdullah
Muhammad ibnu Musa Al-Khwarizmi, yang hasil kerjanya dibangun dari matematikawan
India abad ke-7 Brahmagupta. Kata algorisma awalnya mengacu hanya pada aturan-aturan
dalam melakukan aritmetika menggunakan bilangan Hindu-Arab namun berkembang lewat
penerjemahan Latin Eropa dari nama Al-Khwarizmi menjadi algoritma pada abad ke-18.
Penggunaan kata tersebut berkembang mengikutkan semua prosedur untuk menyelesaikan
masalah atau melakukan unit kegiatan.

Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal-muqabala, yang


artinya Buku Pemugaran dan Pengurangan. Dari judul buku itu kita juga memperoleh akar
kata aljabar(algebra).

Perubahan kata algorism menjadi algorithm muncul karena kata algorism sering
dikelirukan dengan arithmetic, sehingga akhiran -sm berubah menjadi thm. Karena
perhitungan dengan angka arab sudah menjadi hal yang biasa/lumrah, maka lambat laun kata
algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum,
sehingga kehilangan makna aslinya. Dalam bahasa Indonesia, kata algorithm diserap menjadi
algoritma.

http://raficie.blogspot.co.id/2013/03/definisi-algoritma.html

http://disiniajayuk.blogspot.co.id/2016/01/definisi-algoritma-menurut-para-ahli.html

algoritma adalah metode efektif diekspresikan sebagai rangkaian terbatas dari instruksi-
instruksi yang telah didefinisikan dengan baik untuk menghitung sebuah fungsi. Dimulai dari
sebuah kondisi awal dan input awal (mungkin kosong), instruksi-instruksi tersebut
menjelaskan sebuah komputasi yang, bila dieksekusi, diproses lewat sejumlah urutan kondisi
terbatas yang terdefinisi dengan baik, yang pada akhirnya menghasilkan "keluaran" dan
berhenti di kondisi akhir.
Definisi algoritma adalah urutan langkah-langkah logis penyeselaian masalah yang disusun
secara sistematis dan logis. Kata logis (logika) merupakan kata kunci dalam algoritma.
Langkah-langkah dalam algoritma harus dapat ditentukan bernilai benar atau salah.

Menurut Goodmanj Hedet Niemi:


Urut-urutan terbatas dari operasi-operasi terdefinisi dengan baik, yang masing-masing
membutuhkan memory dan waktu yang terbatas untuk menyelesaikan suatu masalah

Menurut Donald E. Knuth:


Sekumpulan aturan-aturan berhingga yang memberikan sederetan operasi-operasi untuk
menyelesaikan suatu jenis masalah yang khusus.

Menurut Rinaldi Munir:


Urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis.

Menurut Kamus Besar Bahasa Indonesia (KBBI) terbitan Balai Pustaka (1988):
Urutan logis pengambilan putusan untuk pemecahan suatu masalah.

Menurut Seymour Lipschutz, Ph.D dan Marc Lipson, Ph.D:


Suatu daftar langkah-demi-langkah yang terhingga dari instruksi-instruki yang terdefinisikan
dengan jelas yang dipakai untuk permasalahan tertentu.

http://hermanteknik.blogspot.co.id/2012/10/jenis-jenis-algoritma.html

http://eby190205.blogspot.co.id/2011/02/jenis-jenis-algoritma.html

BRANCH AND BOUND

Metode Branch and Bound adalah sebuah teknik algoritma yang secara khusus mempelajari
bagaimana caranya memperkecil Search Tree menjadi sekecil mungkin.
Sesuai dengan namanya, metode ini terdiri dari 2 langkah yaitu :
Branch yang artinya membangun semua cabang tree yang mungkin menuju solusi.
Bound yang artinya menghitung node mana yang merupakan active node (E-node) dan node
mana yang merupakan dead node (D-node) dengan menggunakan syarat batas constraint
(kendala).
TEKNIK BRANCH AND BOUND
FIFO Branch and Bound
Adalah teknik Branch and Bound yang menggunakan bantuan queue untuk perhitungan
Branch and Bound secara First In First Out.
LIFO Branch and Bound
Adalah teknik Branch and Bound yang menggunakan bantuan stack untuk perhitungan
Branch and Bound secara Last In First Out.
Least Cost Branch and Bound
Teknik ini akan menghitung cost setiap node. Node yang memiliki cost paling kecil
dikatakan memiliki kemungkinan paling besar menuju solusi.
MASALAH YANG DAPAT DIPECAHKAN
Branch and Bound dapat digunakan untuk memecahkan berbagai masalah yang
menggunakan Search Tree
Traveling Salesman Problem
N-Queen Problem
15 Puzzle Problem
0/1 Knapsack Problem
-Shortest Path
Algoritma Brute Force

Algoritma Brute Force adalah sebuah pendekatan


yang lempang (straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada pernyataan
masalah (problem statement) dan definisi konsep
yang dilibatkan.

Prinsip prinsip algoritma brute force untuk


menyelesaikan persoalan Integer Knapsack ialah:
1) Mengenumerasikan semua himpunan bagian
dari solusi.
2) Mengevaluasi total keuntungan dari setiap
himpunan bagian dari langkah pertama
3) Pilih himpunan bagian yang mempunyai total
keuntungan terbesar

Algoritma Greedy
Secara harfiah, greedy berarti rakus atau tamak.
Algoritma Greedy merupakan algoritma sedarhana
dan lempang yang paling populer untuk pemecahan
persoalan optimasi (maksimum atau minimum).
Prinsip greedy adalah: take what you can get
now!, yang digunakan dalam konteks positif.

Ada tiga pendekatan dalam menyelesaikan


persoalan Integer Knapsack dengan algoritma
Greedy:
1) Greedy by profit.
Pada setiap langkah, knapsack diisi dengan objek
yang mempunyai keuntungan terbesar. Strategi ini
mencoba memaksimumkan keuntungan dengan
memilih objek yang paling menguntungkan terlebih
dahulu.
2) Greedy by weight.
Pada setiap langkah, knapsack diisi dengan objek
yang mempunyai berat paling ringan. Strategi ini
mencoba memaksimumkan keuntungan dengan
memasukkan sebanyak mungkin objek ke dalam
knapsack.
3) Greedy by density.
Pada setiap langkah, knapsack diisi dengan objek
yang mempunyai densitas, pi /wi terbesar. Strategi
ini mencoba memaksimumkan keuntungan dengan
memilih objek yang mempunyai keuntungan per unit
berat terbesar.
Algoritma Dynamic Programming

Program Dinamis (dynamic programming): metode


pemecahan masalah dengan cara menguraikan solusi
menjadi sekumpulan langkah (step) atau tahapan
(stage) sedemikian sehingga solusi dari persoalan
dapat dipandang dari serangkaian keputusan yang
saling berkaitan.

Pada penyelesaian persoalan dengan metode ini:


(1) terdapat sejumlah berhingga pilihan yang
mungkin,
(2) solusi pada setiap tahap dibangun dari hasil
solusi tahap sebelumnya,
(3) kita menggunakan persyaratan optimasi dan
kendala untuk membatasi sejumlah pilihan yang
harus dipertimbangkan pada suatu tahap.

Dua pendekatan yang digunakan dalam Dynamic


Progamming adalah maju (forward atau up-down)
dan mundur (backward atau bottom-up).
Misalkan x1, x2, , xn menyatakan peubah (variable)
keputusan yang harus dibuat masing-masing untuk
tahap 1, 2, , n. Maka,
a. Program dinamis maju: Program dinamis
bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n.
Runtunan
peubah keputusan adalah x1, x2, , xn.

b. Program dinamis mundur: Program dinamis


bergerak mulai dari tahap n, terus mundur ke
tahap n 1, n 2, dan seterusnya sampai tahap
1. Runtunan peubah keputusan adalah xn, xn-1,
, x1.
Secara umum, ada empat langkah yang dilakukan
dalam mengembangkana algoritma program
dinamis:
1. Karakteristikkan struktur solusi optimal.
2. Definisikan secara rekursif nilai solusi
optimal.
3. Hitung nilai solusi optimal secara maju atau
mundur.
4. Konstruksi solusi optimal.

Algoritma Divide and Conquer

Algoritma divide and conquer sudah lama diperkenalkan sebagai sumber dari
pengendalian proses paralel, karena masalah-masalah yang terjadi dapat diatasi
secara independen. Banyak arsitektur dan bahasa pemrograman paralel mendesain
implementasinya (aplikasi) dengan struktur dasar dari algoritma divide and conquer.
Untuk menyelesaikan masalah-masalah yang besar, dan dibagi (dipecah) menjadi
bagian yang lebih kecil dan menggunakan sebuah solusi untuk menyelesaikan
problem awal adalah prinsip dasar dari pemrograman/strategi divide and conquer.

Pseudo Code (Kode Semu) ,Pseudo Code (kode semu) merupakan metode yang cukup
efisien untuk menggambarkan suatu algoritma . Pseudo Code dituliskan dengan
menggunakan bahasa yang mudah dipahami (boleh menggunakan bahasa Indonesia) agar alur
logika yang digambarkan dapat dimengeti oleh orang awam sekalipun. Flowchart Pseudo
Code (kode semu) disusun dengan tujuan untuk menggambarkan tahap-tahap penyelesaian
suatu masalah dengan kata-kata (teks). Metode ini mempunyai kelemahan, dimana
penyusunan algoritma dengan kode semu sangat dipengaruhi oleh tata bahasa pembuatnya,
sehingga kadang-kdang sulit dipahami oleh orang lain. Oleh karena itu kemudian
dikembangkan suatu metode lain yang dapat menggambarkan suatu algoritma program
secara lebih mudah dan sederhana yaitu dengan menggunakan flowchart (diagram alir).

Sistem Flowchart
Sistem flowchart merupakan diagram alir yang menggambarkan suatu sistem peralatan
komputer yang digunakan dalam proses pengolahan data serta hubungan antar peralatan
tersebut. Sistem flow chart tidak digunakan untuk menggambarkan urutan langkah untuk
memecahkan masalah , tetapi hanya untuk menggambarkan prosedur dalam sistem yang
dibentuk.

http://siswono0503.blogspot.co.id/2013/10/ciri-dan-kriteria-algoritma-yang-baik.html
http://www.iosinotes.com/2015/06/6-sifat-algoritma-dapat-dikatakan-baik-karakteristik-
algoritma.html

Ciri-ciri Algoritma menurut Donald E. Knuth :

1. Input / Masukan : Suatu algoritma memiliki input atau kondisi awal sebelum
algoritma dilaksanakan dan bisa berupa nilai-nilai pengubah yang diambil dari
himpunan khusus

2. Output / Pengeluaran : Suatu algoritma akan menghasilkan output setelah


dilaksanakan , atau algoritma akan mengubah kondisi awal menjadi kondisi akhir ,
dimana nilai output diperoleh dari nilai input yang diproses melalui algoritma

3. Definiteness / Pendefinisan : langkah-langkah yang dituliskan dalam algoritma


terdefinisi dengan jelas sehingga mudah dilaksanakan oleh pengguna algoritma

4. Finiteness / Penyelesaian : Suatu algoritma harus memberi kondisi akhir atau output
setelah melakukan sejumlah langkah yang terbatas jumlahnya untuk setiap kondisi
awal atau input yang diberikan

5. Effectiveness / Efektifitas : Setiap langkah dalam algoritma bisa dilaksanakan dalam


suatu selang waktu tertentu sehingga pada akhirnya memberi solusi sesuai yang yang
diharapkan
6. Generelity / Umum : Langkah-langkah algoritma berlaku untuk setiap himpunan input
yang sesuai dengan persoalan yang akan diberikan , tidak hanya untuk himpunan
tertentu .

Kriteria Algoritma yang baik :


a. Tepat, benar, sederhana, standard dan efektif
b. Logis, terstruktur dan sistematis
c. Semua operasi terdefinisi
d. Semua proses harus berakhir setelah sejumlah langkah di lakukan
e. Di tulis dengan bahasa yang standar dengan format peprograman agar mudah untuk di
implementasikan dan tidak menimbulkan arti ganda

Ciri penting Algoritma yang baik :

a. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas


b. Setiap langkah harus terdefinisikan dengan tepat dan tidak berarti dua ( Ambiguitas )
c. Algoritma memiliki angka nol atau lebih masukan
d. Algoritma memiiki angka nol atau lebih keluaran
e. Algoritma harus efektif

http://marikitangulik.blogspot.co.id/2010/10/notasi-algoritma.html
http://fahmilatiefmunir.blogspot.co.id/2016/01/pengertian-jenis-jenis-fungsi-dan.html

Ada 3 notasi yang digunakan dalam penulisan algoritma, yaitu :

1. Kalimat Deskriptif

2. Diagram Alir (Flowchart)

3. Pseudo-Code

1. Kalimat Deskriptif
Dengan notasi kalimat deskriptif ini, deskripsi setiap langkah dijelaskan dengan bahasa yang
jelas/gamblang. Notasi ini bagus untuk algoritma yang pendek, namun untuk masalah yang
algoritmanya besar, notasi ini jelas tidak efisien. Selain itu, pengkonversian notasi algoritma
ke notasi bahasa pemrograman relatif sulit.

Contoh algoritma dengan kalimat deskriptif.


Algoritma menghitung luas persegi panjang:
luas persegi panjang = panjang*lebar.

1. mulai.

2. baca panjang

3. baca lebar

4. hitung luas = panjang*lebar

5. cetak luas

6. selesai.

2. Diagram Alir (Flowchart)


Dengan diagram alir, deskripsi setiap langkah dijelaskan dalam sebuah bagan dengan
simbol-simbol tertentu yang menggambarkan urutan proses dalam suatu program.
Notasi diagram alur lebih cocok digunakan untuk masalah yang kecil, untuk masalah
yang besar tidak cocok digunakan karena membutuhkan berlembar halaman kertas.
Selain itu, pengkonversian notasi algoritma ke bahasa pemrograman cenderung relatif
sulit.

Berikut ini adalah gambar dari simbol-simbol yang digunakan pada flowchart
program.

3. Pseudo-code
Dengan notasi pseudocode, deskripsi setiap langkah dijelaskan dengan menggunakan
vacabulary (baku) atau dalam arti lain seperti ini pseudocode merupakan deskripsi tingkat
tinggi informal dan ringkas atas algoritma pemrograman komputer yang menggunakan
konvensi struktural atas suatu bahasa pemrograman, dan ditujukan untuk dibaca oleh manusia
dan bukan oleh mesin. Notasi pseudocode adalah yang paling umum di gunakan dalam
penulisan algoritma karena pengkonversian ke bahasa pemograman relatif mudah.
Notasi pseudo-code terdiri dari :

Head(Judul) : memberikan nama pada algoritma; umumnya nama sudah dapat


memberi gambaran pada prosedur penyelesaian masalah atau masalah yang akan
diselesaikan

Deklarasi : menyatakan jenis dari setiap elemen data (variabel) yang akan digunakan
dalam algoritma.

Deskripsi : merupakan inti prosedur penyelesaian masalah; meliputi


pernyataan/operasi, fungsi, penjelasan, dll.

http://www.gatewan.com/2014/07/pengertian-tipedata-variabel-dan-
konstanta.html

http://regitat.blogspot.co.id/2013/06/tipe-datavariabeldan-konstanta.html

Tipe data adalah tempat untuk menentukan pemberian nilai terhadap suatu variabel sesuai
atau tidak dengan nilai yang diberikan oleh user.

Jenis-jenis tipe data :

1. T ipe Data Numerik


Tipe data Numerik (Angka) adalah tipe data yang hanya dapat menampung data
angka murni (bilangan bulat atau real).

2. Tipe Data NonNumerik


Tipe Data NonNumerik adalah tipe data selai tipe data angka

https://threecahya.wordpress.com/2012/11/22/operator-aritmatika-pada-java/

Operator Aritmatika adalah operator yang digunakan untuk melakukan operasi aritmatika
(perhitungan). Operator ini ada lima macam yaitu :
Operator penambahan (+)

Operator penguranan (-)

Operator perkalian (*)

Operator pembagian (/)

Operator sisa mod (%).

https://kita-aceh.blogspot.com/2011/06/operator-perbandingan-dalam-java.html

Ekspresi yang menggunakan operator relasional akan menghasilkan nilai benar (true)
atau salah (false). Dan operator perbandingan ini hanya dapat digunakan atau hanya
berlaku khusus untuk tipe data primitif saja, seperti integer, double, dan lainnya
(String tidak termasuk).

Variabel adalah merupakan tempat penyimpanan data yang sifatnya sementara. Variabel
dialokasikan oleh computer untuk menampung nilai data dan variable harus memiliki tipe
data atau jenis data. Setiap variable harus mempunyai nama untuk pemberian nama variable
terdapat beberapa syarat yaitu :
Syarat Penamaan Variabel :

Panjang Karakter Maksimal 255 Karakter

Tidak dapat menggunakan Spasi

Tidak dapat dimulai dengan angka

Tidak dapat menggunakan Tanda Baca selain ( _ )


Kontanta adalah tempat penyimpanan data yang sifatnya tetap. Konstanta sama seperti halnya
variable yaitu sama sama sebagai tempat penyimpanan data akan tetapi Konstanta hanya
dapat memiliki satu Data dan tidak memiliki tipe data. Akan tetapi konstanta hanya mengenal
2 tipe data / jenis data yaitu : String dan Double.
Pada saat mendeklarasikan Konstanta terdapat beberapa tempat yang dapat digunakan yaitu :

1. General Declarations Form / Module

2. Didalam Procedure atau Fungsi

http://educationaandeconomic.blogspot.co.id/2008/10/operator-logika-pada-
pemograman-java.html

Operator Logika pada pemograman JAVA

Operator boolean pada JAVA digunakan untuk melakukan operasi terhadap dua operand yang
bertipe boolean. Hasil yang diberikan oleh operasi ini juga akan bertipe boolean. bebrapa
operator pada boolean.

&& = Operasi ANS


|| = Operasi OR
^ = Operasi XOR (Exclusive OR)
! = Operasi NOT (Negasi)

http://agungimam.blogspot.co.id/2013/04/operator-dalam-java.html

Operator assignment dalam Java digunakan untuk memberikan sebuah nilai ke sebuah
variabel. Operator assignment hanya berupa =. namun selain itu dalam Java dikenal beberapa
shortcut assignment operator yang penting, yang digambarkan dalam tabel berikut :

https://kholifahstikom.wordpress.com/rangkuman-oop/perbedaan-for-while-dan-do-while/

1. For
Awal dan akhir perulangan sudah pasti. Pertama, program hanya akan menjalankan bagian 1
sebanyak sekali, lalu dicek pada bagian 2. Bila benar, bagian 3 akan dijalankan, diikuti
bagian 4. Setelah itu, program akan kembali melakukan cek pada bagian 2. Apabila masih
benar, akan dilanjutkan dengan menjalankan bagian 3 dan 4 seperti sebelumnya. Program
akan terus berputar pada bagian 2 3 4. Sampai ketika bagian 2 (kondisi) tidak terpenuhi
(hasil pengecekan bernilai salah).

2. While

Selama kondisi benar akan terus di ulang. Sedangkan while, metode perulanganya di cek
dulu, dan jika benar (true) maka perulangan di kerjakan, jika salah (false) maka perulangan di
hentikan.

3. Do-while

Di jalankan dulu baru kemudian di cek, apanila benar maka akan jalankan lagi. Sedangkan
do-while, metode perulanganya di jalankan dulu satu kali, dan di cek pada baris while, jika
true maka perulangan di kerjakan jika false maka perulangan di hentikan

http://www.root93.co.id/2013/08/pengertian-dan-penggunaan-perintah.html

http://nurhayatiborlub.blogspot.co.id/2013/06/perintah-break-dan-continue-di-java.html

Anda mungkin juga menyukai