Kategori
New Technology

Pengertian Algoritma

Definisi Algoritma

Algoritma berhubungan dengan matematika dan pemograman. Algoritma juga erat kaitannya dengan pemograman komputer. Orang-orang yang diharuskan memahami konsep algoritma salah satunya ialah programmer. Hal tersebut lantaran pekerjaan seorang programmer berhubungan dengan coding dan algoritma pada komputer.

Algoritma adalah urutan langkah logis yang digunakan untuk menyelesaikan suatu masalah. Singkatnya, sebuah masalah harus diselesaikan dengan beberapa langkah yang logis. 

Dalam kehidupan sehari-hari, contoh algoritma bisa digambarkan dengan berbagai macam hal. Salah satu contohnya adalah aktivitas memasak air. Algoritmanya tentu saja berhubungan dengan aktivitas dalam memasak air.
 
Misalnya saja yaitu siapkan panci yang sesuai, masukkan air ke dalam panci tersebut, tutup panci, letakkan panci pada kompor, hidupkan kompor dengan nyala api sedang, apabila air mendidih, matikan kompor, angkat panci dari kompor. Deretan langkah tersebut merupakan algoritma dari akitivitas memasak air. Karena urutan yang jelas, langkah diatas dianggap proses yang logis.
 
Sementara itu, di dalam ilmu komputer dan matematika, algoritma didefinisikan sebagai prosedur dari berbagai macam langkah penghitungan, penalaran secara otomatis, sampai pemrosesan data. Algoritma juga diartikan sebagai metode yang diekspresikan lewat rangkaian dan instruksi yang dijabarkan untuk menghitung. Secara garis besar, algoritma dimulai dengan imput dan kondisi awal, deskripsi, eksekusi, dan menghasilkan output.

Sejarah dari Algoritma

Ditinjau dari sisi sejarahnya, algoritma sendiri memiliki asal-usul yang sedikit rumit. Algoritma berasal dari kata “algorist” yang berarti langkah menghitung dengan memanfaatkan angka arab. Sementara itu, orang bisa dikatakan algorist apabila melakukan penghitungan dengan angka arab. Bagaimana dengan pendapat ahli lainnya?
 
Sejarah membuktikan kebanyakan ahli mencoba menemukan asal kata yang tepat namun hasilnya kurang memuaskan. Hingga pada akhirnya, ahli sejarah mematika menemukan asal kata algoritma. Ahli sejarah tersebut menjelaskan asal kata algoritma yaitu berasal dari nama penulis buku arab. Nama penulis buku arab yang dimaksud adalah Abu Jafar Muhammad Ibnu Musa Al Khuwarismi.
 
Kemudian, Al Khuwarizmi dibaca oleh orang barat pada kala itu menjadi Algorism. Buku yang ditulis oleh Al Khuwarizmi yang kemudian menjadi referensi dalam algoritma orang barat yait Al Jabar Wal Muqabala. Bila diterjemahkan buku tersebut merupakan buku tentang pengurangan dan pemugaran. Konon dari judul buku tokoh ternama tersebut masyarakat modern mengenal istilah aljabar.
 
Lantas bagaimana kata algorism berubah menjadi algorithm dan menjadi algoritma pada kala itu? Perubahan tersebut terjadi seiring adanya kekeliruan pada arithmetic. Dengan kata lain, akhiran –sm kemudian berubah menjadi –thm. Karena dahulu penghitungan dengan angka arab adalah hal biasa, maka secara perlahan kata “algorithm” secara umum digunakan untuk metode perhitungan atau komputasi.
 
Sementara itu, di dalam Bahasa Indonesia kata “algorithm” mengalami penyerapan kata yang kemudian berubah menjadi algoritma. Seperti yang sudah disebutkan di awal, algoritma dikatakan sebagai urutan langkah logis dalam penyelesaian masalah. Bahkan kata logis disebut sebagai kunci dari algoritma itu sendiri. Dalam algoritma, terdapat beberapa pertimbangan. Pertimbangan tersebut mempengaruhi ouput yang dihasilkan.
 

Pertimbangan dalam Algoritma

Algoritma disusun secara logis dan sistematis. Setiap langkah di dalam algoritma haruslah memiliki nilai benar maupun salah. Dalam konteks tertentu, algoritma menjadi sebuah urutan langkah dalam melakukan pekerjaan khusus. Pertimbangan pengambilan algoritma juga menjadi hal penting agar output yang dihasilkan baik.
 
Pertama yaitu benar tidaknya algoritma. Hal ini memiliki arti yaitu algoritma nantinya dapat memberikan output yang diinginkan dari beragam masukan yang sudah ada. Karena itu, dari langkah awal, algoritma haruslah memiliki kebenaran. Hal ini mengingat sebagus apapun algoritma yang dibuat, apabila hal tersebut memberikan output yang salah maka algoritma tersebut tidak baik.
 
Pertimbangan kedua yaitu perkiraan pencapaian algoritma. Bagaimana definisi algoritma secara umum? Algoritma adalah langkah yang memiliki pencapaian baik. Seberapa baik hasil yang didapat dari algoritma tersebut maka langkah tersebut dikatakan berhasil. Untuk mendapatkannya, algoritma memelrukan aproksimasi atau hasil pendekatan. Algoritma yang bagus mampu memberikan hasil output sedekat mungkin dari nilai sebenarnya.
 
Pertimbangan ketiga yaitu efisiensi dari algoritma itu sendiri. Efisiensi dalam algoritma bisa dilihat dari dua hal diantaranya efisiensi memori dan waktu. Meski algoritma akan memberikan hasil keluaran yang paling mendekati dari hasil, akan tetapi Anda harus menunggunya. Apabila hasil keluaran lama didapat kemungkinan tetap tidak dipakai. Hal ini mengingat banyak orang menginginkan output yang cepat.
 
Begitu pula dengan memori yang digunakan pada algoritma. Semakin besar kebutuhan memori yang terpakai untuk algoritma maka semakin buruk nilai algoritma tersebut. Walaupun demikian, pada kenyataannya masing-masing orang dapat membuat algoritma yang tidak sama dalam menyelesaikan sebuah permasalahan. Meski berbeda penyusunan algoritma, biasanya output yang diharapkan dari setiap langkahnya adalah sama.
 
Baca juga : Algoritma Dasar Machine Learning

Fungsi Penggunaan Algoritma

Menilik manfaat dari algoritma, tentu membuat Anda sedikit banyak harus mengetahui fungsinya pula. Algoritma pada umumnya digunakan untuk membantu setiap orang yang ingin mengonversikan sebuah permasalahan ke bahasa pemograman. Dari fungsinya ini, algoritma adalah hasil dari pemikiran yang terkonsep sehingga perintah dalam algoritma dapat dilaksanakan oleh komputer lewat bahasa pemograman.
 
Dalam pemanfaatannya, fungsi pembuatan algoritma digunakan pada pemecahan masalah program yang rumit. Baik program sedergana maupun besar, sama-sama dapat dipecahkan dengan algoritma. Fungi lainnya dari pemanfaatan algorima yaitu penggunaannya yang berulang kali. Algoritma juga memudahkan pembuatan program yang dikerjakan programmer. Lewat algoritma, Anda dapat melakukan pendekatan top down maupun divide and conquer.
 
Algoritma yang digunakan juga dapat meminimalisir kesalahan dalam penulisan program yang berulang-ulang. Penggunaan algoritma juga dimanfaatkan agar pemecahan masalah diatasi secara urut dan dengan logika yang tepat. Bahkan program yang sudah ada akan menjadi rapi dan terstruktur dan mudah dikembangkan lewat pemanfaatkan algoritma yang benar. Apabila terjadi kesalahan, Anda bisa lebih cepat mengenalinya.
 
 
Bila dilihat dari segi keuntungannya, algoritma merupakan pemecah masalah yang efektif dan efisien digunakan. Algoritma melibatkan beberapa hal diantaranya proses, poin dalam keputusan utama, dan variabel pemecahan masalah. Lewat algoritma pemecahan masalah tersaji dengan jelas dan terperinci sehingga kelemahan dalam proses dapat teridentifikasi. Lebih dari itu, Algoritma memberikan kejelasan dalam evaluasi, kontrol hingga analisis.
 
Bila melihat dari penjelasan di atas, algoritma menjadi suatu hal yang penting dalam pemecahan masalah maupun pemograman. Keduanya saling berhubungan meski memiliki pemahaman yang berbeda. Dalam dunia komputer dan matematika, algoritma menjadi pokok pembelajaran yang sudah semestinya dipahami oleh setiap orang yang mempelajarinya. Penjelasan algoritma seperti yang sudah dijelaskan di atas dapat menjadi referensi Anda.
 
Berikut ini terdapat beberapa fungsi algoritma, terdiri atas:
  1. Menggunakan fungsi algoritma bisa digunakan untuk memecahkan program yang rumit.
  2. Menggunakan fungsi algoritma bisa menjadikan program yang besar menjadi program yang lebih sederhana.
  3. Fungsi algoritma bisa digunakan secara berulang atau lebih dari satu kali penggunaan.
  4. Memudahkan dalam pembuatan program.
  5. Bisa mengatasi segala masalah dengan logika dan urut.
  6. Menggunakan fungsi algoritma bisa melakukan pendekatan top-down dan juga devide and conguer.
  7. Meminimalisir penulisan program yang berulang-ulang.
  8. Program yang ada menjadi lebih terstruktur dengan rapi sehingga dapat lebih mudah untuk dipahami ataupun dikembangkan.
  9. Ketika terjadi kesalahan bisa dicari dengan mudah karena dengan fungsi algoritma bisa mendapatkan alur yang jelas.
  10. Ketika ingin melakukan modifikasi pada program bisa dilakukan hanya pada satu modul saja tanpa harus merubah dan mengganggu modul yang lain.
  11. Dokumentasi yang lebih mudah.

Jenis-jenis Algoritma

Berikut ini terdapat beberapa jenis-jenis algoritma, terdiri atas:
 
1. Divide and Conquer
Paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkanpermasalahan-permasalahan kecil yang terbentuk.
 
2. Dynamic programming
Paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih. Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.
 
3. Metode serakah
Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu.
 
4. 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.
 
 
5. Pseudocode (Kode Semu)
Pseudocode (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).

Ciri Algoritma

Adapun ciri algoritma sebagai berikut:
  • Ada Input
  • Ada proses
  • Ada Output
  • Memiliki Instruksi-Instruksi yang jelas dan tidak Ambigu
  • Harus mempunyai Stoping Role

Manfaat Algoritma

Adapun manfaat algoritma sendiri yaitu untuk membantu seseorang dalam menyelesaikan suatu masalah berdasarkan pada pola pikirnya masing-masing.

Sifat Algoritma

Adapun sifat algoritma sebagai berikut:
  • Tidak menggunakan simbol atau sintaks dari suatu bahasa pemograman.
  • Tidak tergantung pada suatu bahasa pemograman.
  • Notasi-notasinya dapat digunakan untuk seluruh bahasa pemograman.

Struktur Dasar Algoritma

Struktut algoritma adalah urutan bagaimana pemrosesan instruksi dalam algoritma dilakukan dan juga bagaimana struktur instruksi algoritma tersebut dibangun.
 
Struktur dasar algoritma dibagi menjadi 3 bagian sebagai berikut:
 
1. Runtunan (Sequence)
Sequence atau runtunan dalam struktur algoritma adalah bahwa instruksi-insturksi dalam algoritma diproses secara beruntun langkah demi langkah dari awal sampai akhir dimulai dari langkah pertama hingga langkah terakhir.
 
Harus selalu diingat, bahwa Runtunan ini juga berlaku di dalam bahsa pemrograman, ketika instruksi bahasa pemrograman yang kita tulis di proses oleh komputer, maka komputer akan memproses dan menterjemahkan bahasa pemrograman tersebut secara beruntun dari awal hingga akhir dimulai dari instruksi pada baris pertama hingga baris terakhir.
 
Dengan struktur runtunan ini, akan menentukan bagaimana insturksi harus ditulis, intruksi mana yang harus didahulukan dan intruksi mana yang harus diakhirkan.
 
2. Pemilihan (Selection)
Pada umumnya instruksi algoritma setidaknya akan mengandung pemilihan, atau selection, instruksi ini akan muncul apabila ada kasus yang memiliki 2 atau lebih alternatif penyelesaian.
 
Misalkan dalam kehidupan sekali-kali, untuk kasus menyalakan komputer. Langkah-langkah cara menyalakan komputer sebenarnya sangat mudah, namun pada prosesnya bisa terjadi 2 atau lebih alternatif penyelesaian.
 
Contoh:
 
langkah 1: colokan kabel listrik,
 
langkah 2: tekan tombol power pada cashing.
 
langkah 3: jika setelah power ditekan komputer mati, maka periksa listrik atau periksa kabel dll, jika komputer menyala, lanjutkan ke langkah berikutnya.
 
….
 
….
 
Langkah 3 di atas merupakan salah satu bentuk pemilihan atau selection, bahwa pada saat proses menyalakan komputer bisa kemungkinan terjadi 2 kondisi, komputer tatap mati atau hidup, dimana kedua kondisi tersebut akan memiliki alternatif penyelesaian yang berbeda.
 
Di dalam struktur algoritma pemilihan atau selection tersebut akan kerap sekali ditemukan, sehingga struktur algoritma tidak lepas dari pemilihan/ selection. pemilihan atau selection dipelajari di bab algoritma Selection / Flow Control).
 
3. Pengulangan (Repetition)
Struktur dasar algoritma yang ketiga adalah pengulangan atau repitition, artinya kasus-kasus pemecahan masalah dalam algoritma maupun bahasa pemrograman pada kenyataannya tidak akan lepas dari kasus-kasus yang membutuhkan pengulangan.
 
Di algoritma sendiri untuk mengatasi kasus pengulangan data, memiliki intruksi tersendiri, dengan intruksi tersebut pengulangan akan lebih mudah ditulis secara singkat dan praktis daripada harus di tulis satu-persatu.
 
Contoh:
 
Di kasus di algoritma yang membuat sebuah data harus diulang beberapa kali, misal untuk kasus mencetak angka 1 sampai 5.
 
Penyelesaian pengulangan sebenarnya sangat mudah, bisa saja kita tulis satu persatu misal;
 
langkah 1: tulis angka 1
 
langkah 2: tulis angka 2
 
langkah 3: tulis angka 3
 
 
 
langkah 5: tulis angka 5.
 
Membuat instruksi pengulangan dengan menuliskannya satu persatu tentunya bukanlah cara praktis, jika hanya 5 baris mungkin saja bisa dibuat secara manual, ditulis satu-satu, namun bagaimana jika yang harus diulang sebanyak 1.000 (seribu baris misalnya), saya yakin anda akan kerepotan menuliskannya.
 
Oleh karena itu karena kerap sekali pengulangan ditemukan di kasus-kasus pemecahan masalah terkomputerisasi, maka di algoritma dikenal struktur pengulangan yang akan lebih memudahkan dan mempercepat penulisan proses pengulangan secara praktis dan cepat. (pengulangan ini biasanya dipelajari di materi algoritma Looping/ pengulangan).
 
Baca juga : Data Mining