Mengenal Algoritma

Konon istilah algoritma pertama kali diperkenalkan oleh Al Khwarizmi, seorang matematikawan Persia, sejak tahun 825 M di dalam kitab Al-Jabr wal Muqabala. Dalam bahasa Latin abad pertengahan, kata algorismus yang merupakan adaptasi dari namanya, menjadi kata yang bermakna “sistem bilangan desimal”. Dalam bahasa Inggris, kata algorithm pertama kali digunakan pada sekitar tahun 1230 dan kemudian oleh Chaucer pada 1391. Bahasa Inggris mengadopsi istilah tersebut dari bahasa Prancis, akan tetapi baru pada abad ke-19 kata “algorithm” mulai memiliki makna seperti sekarang yang ada dalam bahasa Inggris modern.

Secara istilah, algoritma adalah metode atau langkah yang direncanakan secara tersusun dan berurutan untuk menyelesaikan atau memecahkan permasalahan. Kata kuncinya: metode, berurutan, memecahkan masalah.

Maka munculnya algoritma dilatar-belakangi oleh motivasi untuk memecahkan masalah dengan langkah-langkah yang terukur dan berurutan.

Contoh algoritma

Untuk menggambarkan bagaimana algoritma digunakan, kita buat contoh masalah menghitung jumlah total yang harus dibayarkan seorang pembeli di minimarket. Maka algoritma sederhananya adalah sebagai berikut:

1. Input harga semua barang yang dibeli
2. Jumlahkan harga semua barang
3. Kurangi dengan diskon
4. Tambahkan pajak 1% dari total belanjaan
5. Tampilkan total yang harus dibayarkan

Ini sekedar contoh sederhana saja, biasanya suatu algoritma digambarkan dalam bentuk diagram alir (flowchart).

Komponen Algoritma

Jika anda telah memahami penjelasan di atas, maka suatu algoritma memiliki beberapa komponen di dalamnya yang harus diperhatikan.

Berikut adalah beberapa komponen dalam algoritma:

  • masalah atau tugas yang harus diselesaikan
  • masukan (input) untuk menyelesaikan tugas
  • keluaran (output) yang diharapkan
  • kendala yang mungkin muncul saat ingin melakukan tugas atau menyelesaikan masalah
  • solusi masalah atau tugas jika ada kendala

Ciri-ciri Algoritma

Ilmuwan komputer terkenal dan profesor emeritus di Universitas Stanford, Donald E. Knuth, mengatakan bahwa algoritma harus memiliki lima ciri penting yang saling berhubungan satu dengan lainnya. Yaitu:

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 tersebut tercapai. Suatu proses yang tidak pernah berhenti mengindikasikan bahwa program tersebut memiliki algoritma yang keliru.

2. Definiteness (kepastian)

Setiap langkah harus didefinisikan dengan tepat dan tidak boleh ambigu. Ada instruksi-instruksi yang jelas, sehingga tidak terjadi kesalahan di dalam menghasilkan output.

3. Input (masukan)

Algoritma harus bisa menerima input. Karena input ini merupakan bagian dari suatu permasalahan yang dihadapi serta akan dicarikan solusinya.

4. Output (keluaran)

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

5. Effectiveness (efektifitas)

Suatu algoritma harus efektif. Setiap urutan atau langkah harus sesederhana mungkin, sehingga dapat dikerjakan dalam sejumlah waktu yang seminimal mungkin. Karena tujuan adanya algoritma adalah mencari solusi dari suatu permasalahan dengan lebih mudah dan pasti.

Macam-macam algoritma

Ada beberapa jenis algoritma yang dikenal dalam dunia pemrograman. Di antaranya:

1. Algoritma Brute Force

Algoritma brute force adalah algoritma yang memungkinkan kita untuk mencoba suatu solusi yang mungkin dari suatu masalah.

Contoh: Jika password terdiri dari 4 karakter. Dengan algoritma brute force, akan dicoba semua kemungkinan kombinasi satu persatu seperti aaaa, aaab, aaac, aaad, dan seterusnya sampai kita mendapatkan password yang diinginkan.

2. Algoritma Divide and Conquer

Tujuan dari algoritma ini adalah untuk memecahkan masalah dalam dua bagian, yakni:

  • Membagi masalah menjadi sub-masalah dengan jenis yang sama.
  • Menyelesaikan masalah yang lebih kecil secara mandiri dan kemudian menambahkan hasil gabungan untuk menghasilkan jawaban akhir untuk masalah tersebut.

Contoh dari algoritma Divide and Conquer adalah algoritma Binary Search, algoritma Merge Sort, algoritma Quick Sort, dan algoritma Strassen’s Matrix Multiplication.

3. Algoritma Dynamic Programming

Algoritma Dynamic Programming adalah suatu 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

Contoh algoritma Dynamic Programming di antaranya adalah algoritma Knapsack Problem, algoritma Weighted Job Scheduling, algoritma Floyd Warshall, dan lain lain.

4. Algoritma Greedy

Algoritma greedy merupakan jenis algoritma yang menggunakan pendekatan penyelesaian masalah dengan mencari nilai maksimum sementara pada setiap langkahnya

Beberapa contoh dari algoritma greedy adalah algoritma jalur terpendek Dijkstra, algoritma Prim, algoritma Kruskal, Huffman Coding, dan sebagainya.

5. Algoritma Backtracking

Algoritma backtracking adalah algoritma yang berbasis pada Depth First Search. Backtracking merunut balik dari simpul tujuan untuk melihat apakah solusi yang sedang dicari menuju pada simpul tujuan yang diinginkan.

Beberapa algoritma backtracking adalah algoritma Hamiltonian Cycle, algoritma M-Coloring Problem, algoritma N Queen Problem, dan algoritma Rat in Maze Problem.

6. Algoritma Sorting (pengurutan)

Algoritma sorting digunakan untuk mengurutkan data baik dalam urutan ascending (urutan naik) ataupun descending (urutan menurun). Algoritma jenis ini juga digunakan untuk mengatur data dengan cara yang efisien dan bermanfaat.

Contoh algoritma sorting adalah algoritma Bubble Sort, algoritma Insertion Sort, algoritma Merge Sort, algoritma Selection Sort, dan algoritma Quick Sort.

7. Algoritma Searching (pencarian)

Algoritma searching adalah algoritma yang digunakan untuk mencari kunci tertentu pada kumpulan data.

Beberapa contoh algoritma searching adalah algoritma Binary Search dan algoritma Linear Search.

Cara belajar algoritma

Cara mempelajari algoritma secara mendasar biasanya dimulai dengan belajar mengimplementasikan solusi dari suatu contoh kasus dalam diagram alir (flowchart). Tentunya di sini pelajar harus mengetahui cara menggambar diagram alir dan simbol-simbolnya.

Kemudian setelah memahami cara menggambar diagram alir, pelajar algoritma berusaha mengimplementasikan diagram alir ke dalam bahasa pemrograman yang sederhana. Di banyak kampus, digunakan bahasa pemrograman Turbo Pascal atau Turbo C untuk mempelajari algoritma. Hal ini karena syntax-nya yang sederhana dan mudah dipahami oleh pemula.

Jika pemula sudah menguasai hal-hal di atas, barulah mempelajari algoritma yang lebih rumit lagi dengan bahasa pemrograman yang lebih kompleks lagi, seperti Java, PHP, Python, ReactJs, Ruby, dan semisalnya.

Demikian uraian ringkas tentang algoritma, semoga menambah wawasan kita semua.

***

Penulis: Yulian Purnama, S.Kom

Similar Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *