Brilio.net - Saat ini kemajuan teknologi berkembang sangat pesat dan menjadi suatu hal yang penting bagi setiap orang, terutama pihak yang sedang mengembangkan suatu bisnis. Banyak orang menganggap bahwa kecanggihan teknologi sangat membantu mempermudah penyelesaian aktivitas mereka sehari-hari.
Salah satu kecanggihan teknologi yang dapat kamu gunakan adalah Sistem ERP, di dalamnya terdapat dukungan teknologi algoritma guna mengotomatiskan berbagai proses bisnis dan meminimalisir terjadinya human-error.
Dirangkum brilio.net dari berbagai sumber, Jumat (08/04). Berikut ini ulasan lengkap mengenai algoritma.
Algoritma adalah suatu urutan atau proses yang berguna untuk mencapai tujuan tertentu maupun menyelesaikan suatu masalah. Proses tersebut akan tersaji secara sistematis, terstruktur, dan harus logis. Pada perusahaan keuangan, algoritma digunakan dalam berbagai bidang seperti penetapan harga pinjaman, perdagangan saham, dan lain sebagainya. Namun, perusahaan juga membutuhkan Software Akuntansi yang digunakan untuk mengelola bidang-bidang keuangan tersebut agar lebih efisien dan efektif.
Dalam algoritma ada pengulang proses atau yang biasa disebut dengan iterasi, serta keputusan yang akan selesai apabila sudah berhasil mencapai tujuan tersebut.
1. Abu Ja’far Muhammad Ibnu Musa Al-Khawarizmi
Seorang pakar matematika yang berasal dari Uzbekistan menjelaskan bahwa algoritma adalah suatu cara khusus yang bisa digunakan agar bisa menyelesaikan permasalahan tertentu.
2. Donald Ervin Knuth
Berdasarkan Donald Ervin Knuth, algoritma adalah serangkaian aturan khusus berhingga yang mampu memberikan jejeran operasi agar mampu menyelesaikan suatu masalah tertentu.
3. S. E. Goodman dan S.T. Hedetniemi
Goodman dan Hedetniemi mengatakan, algoritma adalah urutan terbatas dari berbagai operasi yang bisa terdefinisi dengan baik, yang mana setiap hal tersebut memerlukan memori dan juga waktu yang terbatas agar bisa menyelesaikan suatu masalah tertentu.
4. Seymour Lipschutz dan Marc Lipson
Kedua ahli yang berprofesi sebagai praktisi matematika dan komputer ini menjelaskan bahwa algoritma adalah suatu daftar tahapan demi tahapan yang terhingga dari berbagai instruksi yang dijelaskan secara jelas, agar bisa dimanfaatkan untuk memecahkan suatu masalah khusus.
5. Marvin Minsky
Pakar Artificial Intelligence (AI) menjelaskan bahwa algoritma adalah seperangkat aturan tertentu yang mampu memberitahukan dari waktu ke waktu, tepatnya bagaimana untuk berbuat dan bertindak.
Ciri-ciri Algoritma
Algoritma terdiri dari lima ciri utama yang saling berkaitan antara yang satu dengan lainnya. Menurut Donald E. Knuth, kelima ciri-ciri algoritma adalah sebagai berikut:
a. Terdapat input, yakni permasalahan yang dihadapi dan nantinya akan dicarikan solusinya. Algoritma ini mempunyai nilai nol atau lebih input.
b. Terdapat proses, yakni serangkaian tahapan yang memang harus dikerjakan agar bisa mencapai tujuan akhir.
c. Terdapat Output, yakni solusi ataupun tampilan akhir yang bisa diperoleh dari suatu algoritma yang setidaknya mempunyai satu output.
d. Terdapat berbagai instruksi yang jelas, yakni instruksi jelas dalam suatu algoritma agar nantinya tidak akan terjadi kesalahan saat sedang menghasilkan output tertentu.
e. Terdapat tujuan akhir yang memang ingin dicapai, yakni akhir dari suatu program yang mana program tersebut nantinya akan berhenti bila sudah berhasil mencapai tujuan akhir.
Pada dasarnya, fungsi utama dari suatu algoritma adalah agar mampu memecahkan suatu masalah. Sedangkan fungsi dan manfaat lain dari algoritma adalah sebagai berikut ini:
- Membantu menyederhanakan suatu program yang rumit dan juga besar.
- Mempermudah membuat program yang dapat menyelesaikan masalah tertentu.
- Bisa digunakan berulang kali dalam menyelesaikan suatu permasalahan.
- Membantu menyelesaikan suatu masalah dengan logika dan juga sistematis.
- Meminimalisir penulisan program secara berulang-ulang.
- Melakukan pendekatan top-down dan divide and conquer.
- Memudahkan pembuatan program yang lebih rapi dan juga terstruktur.
- Mempermudah proses modifikasi pada suatu program karena bisa dilakukan hanya pada satu modul saja, tanpa merubah modul yang lainnya lagi.
- Mampu membantu menemukan kesalahan karena alur kerjanya yang jelas.
- Mempermudah berbagai proses dokumentasi.
Jenis-Jenis Algoritma
Seorang pakar matematika dan komputer, Dr. Christoph Koutschan mengatakan terdapat setidaknya 32 algoritma di dalam ilmu komputer. Tapi jika dilihat berdasarkan fungsinya, hanya terdapat enam algoritma dasar, yakni:
1. Rekursi
Algoritma rekursi adalah sesuatu yang akan memanggil dirinya sendiri secara berulang-ulang, agar masalahnya bisa diselesaikan dengan baik. Berikut ini adalah beberapa kode yang mampu menemukan faktorial dengan 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 suatu permasalahan yang besar menjadi berbagai permasalahan lain yang lebih kecil. Jenis algoritma ini sebenarnya terdiri dari dua bagian utama, yaitu:
- Memecahkan masalah kedalam beberapa sub-masalah yang lebih independen dan lebih kecil dari jenis lainnya yang sama.
- Menyelesaikan masalah asli setelah sebelumnya mampu 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)
Dynamic Programming ini akan bekerja dengan mengingat hasil dari suatu progres yang lalu dan juga menggunakannya agar bisa menemukan hasil yang baru.
Artinya, pemrograman dinamis akan memecahkan masalah kompleks, dengan cara memecahkanya menjadi beberapa sub masalah yang sederhana. Kemudian memecahkan masing-masing sebanyak satu kali agar kemudian disimpan dan bisa digunakan di masa depan.
Salah satu contoh dynamic programming pemrograman dinamis adalah urutan fibonacci, berikut ini adalah contohnya:
Fibonacci(N) = 0 (for n=0)
= 0 (for n=1)
= Fibonacci(N-1)+Finacchi(N-2)
4. Greedy
Jenis ini bisa digunakan untuk menyelesaikan masalah optimasi. Dalam algoritma ini, akan menemukan solusi yang lebih optimal secara lokal tanpa harus memperhatikan konsekuensi apapun yang akan terjadi di masa depan. Serta bisa menemukan solusi yang lebih maksimal pada tingkatan global.
Namun, metode ini tidak akan menjamin bahwa kamu bisa mendapatkan solusi yang optimal. Terdapat lima komponen yang terdapat pada algoritma ini, yaitu:
- Kumpulan kandidat yang nantinya akan dicari solusinya.
- Fungsi pemilihan yang nantinya akan membantu memilih kandidat terbaik.
- Fungsi kelayakan yang dapat membantu dalam menentukan kandidat yang bisa digunakan agar bisa menemukan solusi.
- Fungsi objektif yang mampu memberikan nilai pada solusi mungkin ataupun solusi parsial.
- Fungsi solusi yang mampu menginformasikan, tentang waktu dalam menemukan solusi dalam masalah tersebut.
5. Brute Force
Konsep algoritma ini sebenarnya sangat sederhana. Dalam prosesnya, brute force akan melakukan integrasi pada seluruh solusi, yang mungkin untuk mencari satu ataupun lebih dari satu solusi yang mampu menjawab suatu permasalahan.
Contoh pencarian sekuensial yang dilakukan dengan menggunakan brute force adalah sebagai berikut:
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 suatu teknik yang mampu memecahkan berbagai masalah secara rekursif. Serta mencobanya agar bisa memperoleh solusi dengan cara menyelesaikan suatu bagian masalah di waktu yang bersamaan. Bila salah satu solusi ternyata gagal, maka kita bisa menghapusnya dan mundur agar bisa menemukan solusi lain.
Artinya, algoritma ini akan memecahkan sub masalah dan bila gagal, maka algoritma ini akan membatalkan langkah terakhir dan mulai lagi agar bisa menemukan solusi atas permasalahan tersebut.