Algoritma: Pengertian, Sejarah, Fungsi, Karakteristik, Jenis, Contoh, dan Perbedaannya dengan Program

Table of Contents
Pengertian Algoritma
Algoritma

Pengertian Algoritma

Algoritma (algoritme) dalam Kamus Besar Bahasa Indonesia (KBBI) adalah prosedur sistematis untuk memecahkan masalah matematis dalam langkah-langkah terbatas; urutan logis pengambilan keputusan untuk pemecahan masalah.

Dalam ilmu komputer algoritma merupakan proses atau serangkaian aturan yang harus diikuti dalam perhitungan atau operasi pemecahan masalah lainnya. Dengan kata lain, semua susunan logis yang diurutkan berdasarkan sistematika tertentu dan digunakan untuk memecahkan suatu masalah.

Sebagian besar algoritma dimaksudkan untuk diimplementasikan sebagai program komputer. Algoritma pemrograman adalah langkah penyelesaian suatu permasalahan yang menghasilkan sebuah solusi dalam bentuk program komputer.

Algoritma memiliki peran yang sangat penting dalam ilmu Komputer. Bahkan algoritma dapat dikatakan sebagai jantung komputer. Hardware dan software pada komputer hanya dapat dikendalikan melalui sintaks dan kode pemrograman

Algoritma Menurut Para Ahli
1. Seymour Lipschutz dan Marc Lipson, pengertian algoritma adalah suatu daftar langkah demi langkah yang terhingga dari instruksi-instruksi yang terdefinisikan dengan jelas yang digunakan untuk memecahkan permasalahan tertentu.
2. Bitlabs, algoritma adalah instruksi yang ditujukan ke komputer agar dirinya bisa menyelesaikan tugas yang diberikan. Instruksi tersebut harus ditulis secara spesifik agar tugas bisa diselesaikan dengan benar, mulai dari istilah yang dipakai sampai dengan langkah-langkahnya.
3. Tech Target, algoritma adalah prosedur atau formula untuk memecahkan masalah, yang dilakukan berdasarkan urutan tertentu. Sebuah program komputer dapat dilihat sebagai algoritma yang rumit. Dalam matematika dan ilmu komputer, algoritma biasanya berarti prosedur kecil yang memecahkan masalah berulang.
4. Kani (2020), algoritma adalah suatu upaya dengan urutan operasi yang disusun secara logis dan sistematis untuk menyelesaikan suatu masalah untuk menghasilkan suatu output tertentu.
5. Jando & Nani (2018:5), algoritma berasal dari kata algoris dan ritmis yang pertama kali diperkenalkan oleh Abu Ja’far Muhammad Ibn Musa Al Khwarizmi pada 825 M di dalam buku Al-Jabr Wa-al Muqabla. Dalam bidang pemrograman, algoritma didefinisikan sebagai metode yang terdiri dari serangkaian langkah yang terstruktur dan sistematis untuk menyelesaikan masalah dengan bantuan komputer.
6. Munir & Lidya (2016:53), algoritma adalah urutan langkah-langkah untuk menyelesaikan suatu persoalan.
7. Sismoro (2005:29), algoritma merupakan sekumpulan instruksi atau langkah-langkah yang dituliskan secara sistematis dan digunakan untuk menyelesaikan masalah/persoalan logika dan matematika dengan bantuan komputer.

Sejarah Algoritma

Saat itu, Al-Khawarizmi menulis sebuah buku dengan judul Al Jabar wal-Muqabala yang artinya Buku Pemulihan dan Pengurangan (The Book of Restoration and Reduction). Dari judul buku kita juga mendapatkan kata “aljabar” atau lebih dikenal dengan istilah algebra.

Abu Abdullah Ibn Musa al-Khawarizmi (770- 840M) lahir di Khawarizm (Kheva), sebuah kota di selatan Sungai Oxus (sekarang disebut Uzbekistan) pada 770 M. Al Khawarizmi adalah salah satu ilmuwan terkenal pada masanya. Ada beberapa cabang matematika yang ditemukannya antara lain yang disebut astronom dan ahli geografi.

Awalnya, algoritma adalah istilah yang mengacu pada aturan aritmatika yang berguna untuk memecahkan masalah menggunakan angka Arab.

Pada tahun 1950, kata algoritma pertama kali digunakan dalam “Algoritma Euclidean”. Euclid, seorang matematikawan Yunani (lahir pada 350 M). Dalam bukunya Elements menulis langkah-langkah untuk menemukan pembagi persekutuan terbesar (common greatest divisor atau gcd), dari dua bilangan bulat, m dan n [KNU 73] (tentu saja Euclid tidak menyebut metodenya sebagai algoritma, itu hanya di zaman modern orang menyebut metodenya (“algoritma Euclidean”).

Pembagi persekutuan terbesar dari dua bilangan bulat non-negatif adalah bilangan bulat positif terbesar yang membagi dua bilangan sama rata.
Misalnya, m= 80 dan n =12. Semua faktor pembagi 80 adalah 1,2,4,5,8,10,16,20,40,80
dan semua faktor pembagi 12 adalah 1,2,3,4,6,12,
maka gcd (80,12) = 4.

Langkah-langkah mencari gcd (80,12) dengan algoritma Euclidean sebagai berikut:
80 dibagi 12 hasilnya =6, sisa 8   (atau:80 =6.12+8)
12 dibagi 8 hasilnya = 1, sisa = 4 (atau:12 =1.8+4)
8 dibagi 4 hasilnya = 2, sisa =0   (atau:8 =4.2+0)
karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4, menjadi gcd (80,12). Jadi, gcd (80,12) = gcd (12,8) = gcd (8,4) = gcd (4,0)=4.

Fungsi Algoritma

Pada dasarnya fungsi utama dari algoritma adalah untuk memecahkan suatu masalah. Lebih jelasnya, adapun beberapa fungsi dan manfaat algoritma di antaranya,
1. Untuk membantu menyederhanakan suatu program yang rumit dan besar.
2. Untuk memudahkan dalam membuat sebuah program untuk masalah tertentu.
3. Algoritma dapat kita gunakan berkali-kali untuk menyelesaikan suatu permasalahan.
4. Membantu memecahkan suatu permasalahan dengan logika dan sistematis.
5. Untuk meminimalisir penulisan program secara berulang-ulang.
6. Agar dapat melakukan pendekatan top-down dan divide and conquer.
7. Untuk memudahkan membuat program yang lebih rapi dan terstruktur sehingga lebih mudah kalian pahami dan kembangkan.
8. Memudahkan proses modifikasi pada program karena bisa kita lakukan hanya pada satu modul tanpa harus mengubah modul lainnya.
9. Ketika terjadi kesalahan, algoritma dapat membantu menemukannya karena alur kerja yang jelas.
10. Memudahkan proses dokumentasi.

Karakteristik Algoritma

Menurut Donald E. Knuth, algoritma harus memiliki lima karakteristik penting yang saling berhubungan satu dengan lainnya. Adapun kriteria algoritma ini di antaranya,
1. Finiteness (keterbatasan)
Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas, dengan kata lain ada tujuan akhir yang dicapai, sehingga suatu program akan berhenti ketika tujuan akhir telah tercapai. Program yang tidak pernah berhenti mengindikasikan bahwa program tersebut berisi algoritma yang salah.

2. Definiteness (kepastian)
Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (ambiguous). Ada intruksi-intruksi yang jelas dan juga tidak ambigu, sehingga tidak terjadi kesalahan di dalam menghasilkan output.

3. Input (masukan)
Input ini merupakan suatu permasalahan yang dihadapi serta akan dicarikan solusinya. Algoritma ini mempunyai nol atau lebih input, yaitu besaran yang diberikan kepada algoritma untuk diproses.

4. Output (keluaran)
Algoritma memiliki nilai nol atau lebih keluaran (output). Output ini tentunya harus berupa solusi atau penyelesaian dari suatu masalah. Output dapat berupa pesan atau besaran yang berhubungan dengan input.

5. Effectiveness (keefektivitasan)
Algoritma harus sangkil (effective), setiap urutan atau langkah harus sesederhana mungkin, sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.

Jenis Algoritma

Seorang matematikawan dan ilmuwan komputer bernama Dr. Christoph Koutschan mengatakan bahwa setidaknya ada 32 algoritma dalam ilmu komputer. Namun jika dilihat dari fungsinya, hanya ada enam algoritma dasar di antaranya,
1. Rekursi
Sebuah algoritma rekursi adalah sesuatu yang akan memanggil dirinya sendiri berulang-ulang sehingga masalah dapat diselesaikan dengan benar. Berikut adalah beberapa kode yang dapat menemukan faktorial menggunakan algoritma rekursi.
Fact(y)
If y is 0
return 1
return (y*Fact(y-1)) /* this is where the recursion happens*/

2. Divide and Conquer
Divide and Conquer akan membagi masalah besar menjadi banyak menjadi masalah kecil. Jenis algoritma ini sendiri sebenarnya terdiri dari dua bagian utama di antaranya,
a. Memecah masalah menjadi submasalah yang lebih independen dan lebih kecil dari masalah lain yang sejenis.
b. Memecahkan masalah asli setelah dapat menyelesaikan masalah yang lebih kecil secara terpisah.

Berikut ini adalah contoh kode semu dari algoritma divide and conquer:
MergeSorting(ar[], l,  r)
If r > l
Find the mid-point to divide the given array into two halves:
middle m = (l+r)/2
Call mergeSorting for the first half:
Call mergeSorting(ar, l, m)
Call mergeSorting for the second half:
Call mergeSorting(ar, m+1, r)
Merge the halves sorted in step 2 and 3:
Call merge(ar, l, m, r)

3. Dynamic Programming
Dynamic Programming akan bekerja dengan mengingat hasil dari proses masa lalu dan juga menggunakannya untuk menemukan hasil baru.

Dari penjelasan di atas, berarti bahwa Dynamic Programming memecahkan masalah kompleks dengan memecahnya menjadi banyak submasalah sederhana, kemudian menyelesaikannya satu per satu, lalu menyimpannya untuk digunakan di masa mendatang.

Contoh Dynamic Programming adalah terdiri dari urutan Fibonacci, berikut adalah contohnya:
Fibonacci(N) = 0 (for n=0)
= 0 (for n=1)
= Fibonacci(N-1)+ Finacchi(N-2)

4. Greedy
Tipe ini dapat digunakan untuk menyelesaikan masalah optimasi. Dalam algoritma ini, kita akan menemukan solusi yang lebih optimal secara lokal tanpa mengkhawatirkan konsekuensi yang akan terjadi di masa depan dan kita dapat menemukan solusi yang lebih optimal secara global.

Namun, cara ini tidak menjamin Anda bisa mendapatkan solusi yang optimal. Ada lima komponen yang terdapat dalam algoritma ini, yaitu:
a. Himpunan kandidat yang solusinya akan dicari kemudian.
b. Fungsi seleksi terakhir akan membantu memilih kandidat terbaik.
c. Fitur kelayakan dapat membantu Anda mengidentifikasi kandidat mana yang dapat digunakan untuk menemukan solusi.
d. Fungsi tujuan mampu memberikan nilai ke solusi yang mungkin atau solusi parsial.
e. Fungsi solusi dapat memberitahu Anda tentang waktu yang diperlukan untuk menemukan solusi untuk masalah tersebut.

5. Brute Force
Konsep dari algoritma ini sebenarnya sangat sederhana. Selama proses ini, brute force mengintegrasikan semua solusi yang mungkin untuk menemukan satu atau lebih solusi yang mungkin untuk memecahkan masalah.

Berikut adalah contoh pencarian sekuensial yang dilakukan menggunakan brute force:
Algorithm S_Search (A[0..n], X)
A[n] ← X
i ← 0
While A [i] ≠ X do
i ← i + 1
if i < n return i
else return -1

6. Algoritma Backtracking
Backtracking adalah teknik yang dapat memecahkan masalah yang berbeda secara rekursi dan mencoba mereka untuk menemukan solusi dengan memecahkan satu bagian dari masalah pada waktu yang sama. Jika solusi gagal, kita dapat menghapusnya dan kembali mencari solusi lain.

Artinya algoritma ini akan menyelesaikan sub masalah dan jika gagal maka algoritma akan membatalkan langkah terakhir dan memulai kembali untuk mencari solusi dari masalah tersebut.

Contoh Algoritma

Agar lebih mendapatkan gambaran tentang algoritma, perlu diketahui bahwa algoritma tidak hanya diterapkan pada pemrograman saja, akan tetapi di bisa diterapkan dalam kehidupan sehari-hari.
Jika persoalannya adalah sebagai berikut:
Diberikan data berupa nama karyawan dan hasil penilaian kinerja. Jika hasil penilaian kinerja lebih besar atau sama dengan 75 maka karyawan tersebut dinyatakan berhasil mencapai KPI. Sedangkan jika nilainya lebih kecil dari 75, maka karyawan tersebut dinyatakan tidak berhasil mencapai KPI.

Maka contoh penulisan algoritmanya adalah seperti berikut:
1. Algoritma Narasi
Algoritmanya akan sebagai berikut:
baca nama dan nilai karyawan.
jika nilai >= 75 maka
keterangan = berhasil
tetapi jika =< 75
keterangan = tidak berhasil.
tulis nama dan keterangan

2. Algoritma Pseudo Code
Deklarasi dari tipe datanya akan seperti berikut:
Nama = string
Nilai = integer
Keterangan = string
Algoritmanya akan seperti berikut:
read (nama, nilai)
if nilai >= 75 then
keterangan = ‘berhasil’
else
keterangan = ‘tidak berhasil’
write(nama, keterangan)

3. Algoritma Flowchart
Algoritma Flowchart
Algoritma Flowchart
Perbedaan Algoritma dan Program
Melansir Geeks for Geeks, program adalah instruksi yang harus diikuti komputer. Perbedaan keduanya Algoritma sejatinya adalah panduan yang ditulis dalam bahasa manusia. Istilah untuk jenis bahasa ini adalah natural language.

Hal tersebut berbeda dengan program. Ia ditulis langsung menggunakan berbagai jenis bahasa pemrograman oleh seorang programmer.

Dari berbagai sumber

Download

Aletheia Rabbani
Aletheia Rabbani “Barang siapa yang tidak mampu menahan lelahnya belajar, maka ia harus mampu menahan perihnya kebodohan” _ Imam As-Syafi’i

Post a Comment