Apa itu Algoritma?
Algoritma adalah sekumpulan aturan yang tersusun sistematis untuk memecahkan suatu masalah.
Hal ini mengacu pada langkah-langkah atau proses yang harus diikuti, supaya suatu masalah bisa terpecahkan dan user mendapatkan hasil yang sesuai.
Sebagai ilustrasi, Anda bisa melihat resep membuat mie instan berikut ini.
Anda harus merebus air terlebih dahulu -> siapkan bumbu di piring -> masukan mie dalam air mendidih -> tuangkan mie ke piring -> aduk merata dan mie bisa Anda nikmati.
Algoritma dalam ilmu komputer tentu saja lebih kompleks dari resep mie instan.
Komponennya yaitu: input, output, dan prosedur. Dalam prosedur terdapat suatu masalah yang harus terpecahkan, kendala yang mungkin terjadi dan solusi dari masalah tersebut.
Hal ini pada dasarnya bukan suatu kode komputer. Ini ibarat sebuah skema yang menunjukan alur kerja suatu program.
Fungsi algoritma adalah untuk membantu programmer menuliskan kode program supaya prosesnya berjalan sebagaimana mestinya.
Pada proses programming, programmer biasanya merumuskan hal ini terlebih dahulu dalam suatu bahasa natural, flowchart atau pseudocode.
Programmer akan melakukan coding mengacu pada “skema” tersebut. Harapannya, program komputer yang mereka buat bisa beroperasi dengan tepat sesuai tujuannya.
Apa Karakteristik Algoritma?
Meski menyerupai resep, algoritma bersifat lebih teknis dan spesifik. Setiap instruksi belum tentu sebuah algoritma. Suatu instruksi merupakan sebuah algoritma jika memenuhi karakteristik berikut ini:
- Clear and unambiguous. Setiap proses atau langkah-langkahnya harus benar-benar jelas di setiap aspeknya. Hal tersebut juga wajib mengarah hanya ke satu makna saja.
- Well-defined input. Input harus terdefinisi dengan jelas. Inputnya harus seperti apa supaya program bisa bekerja.
- Well-defined output. Hasil dari outputnya jelas dan terdefinisi dengan baik.
- Finite-ness. Sifatnya terbatas. Hal itu wajib memiliki batasan proses dan merujuk suatu hasil tertentu. Algoritma tidak boleh menuju suatu loop tak terbatas.
- Feasible. Algoritma yang layak harus tersusun secara sederhana, umum, dan praktis. Hal tersebut juga harus bisa beroperasi menyesuaikan sumber daya yang tersedia.
- Language independent. Programmer harus merancang algoritma yang bisa mereka implementasikan di bahasa pemrograman apapun. Apapun bahasa pemrogramannya, hasilnya harus tetap sama.
Itu dia beberapa kriteria algoritma. Dalam ilmu komputer, setidaknya ada 32 jenis algoritma.
Apa saja Jenis Algoritma Pemrograman?
Ada banyak sekali jenis algoritma yang bisa Anda gunakan dalam mengembangkan suatu program. Tapi setidaknya inilah 5 jenis program yang paling umum digunakan:
#1. Binary Search

Contoh pertama ini merupakan salah satu metode pencarian data berurutan dalam suatu array. Konsepnya adalah membagi 2 data array dan mengesampingkan setengahnya. Proses tersebut terjadi secara terus menerus hingga array berisi nilai yang Anda cari.
#2. Merge Sort

Contoh algoritma selanjutnya adalah merge sort. Hal ini bisa Anda terapkan untuk mengurutkan data dalam array secara efisien.
Hal ini menerapkan metode “divide and conquer”. Data array akan dibagi dua secara terus menerus pada setiap bagiannya, hingga data tidak bisa terbagi lagi.
Setelah itu data akan disusun ulang secara urut pada tiap bagian. Hingga akhirnya di bagian akhir data array bisa sepenuhnya urut.
#3: Linked List

Linked list atau data tertaut merupakan dasar dari struktur data pada ilmu komputer. Hal ini sangat berguna dalam waktu yang konstan untuk melakukan tugas menyisipkan dan menghapus data.
Linked list terdiri dari node dan pointer. Setiap node memiliki bagian data. Pointer akan menghubungkan ke node selanjutnya.
Dengan linked list, Anda bisa menghapus item yang ada di tengah tanpa harus menggeser struktur data lain.
#4. Branch & Bound

Branch and bound bisa Anda aplikasikan untuk mencari suatu jalur atau rute terbaik. Misalnya, rute tercepat atau rute dengan biaya rendah, dll.
Seperti namanya, Branch & Bound menerapkan dua prinsip.
Pertama, proses branch. Jadi, algoritma ini akan melakukan penghitungan rekursif. Masalah-masalah akan dipecah jadi bagian lebih kecil, sambil terus menghitung nilai terbaik.
Kedua, bound. Bound merupakan batasan dalam setiap penghitungan. Jadi, jawaban di luar batasan yang ada, akan langsung tersingkir.
Dengan demikian, pencarian rutenya bisa lebih efektif dan efisien.
#5. Dynamic Programming


Teknik dynamic programming untuk memecahkan masalah kompleks dengan cara memecah permasalahan dalam beberapa sub.
Hasil kalkulasi dari sub-masalah yang sebelumnya sudah dilakukan, akan tersimpan. Jadi, pada saat muncul sub-masalah yang sama, hasil kalkulasi tadi bisa digunakan lagi.
#6. Quick Sort

Quick sort bisa melakukan pengurutan dengan proses yang cukup cepat. Bahkan lebih cepat daripada MergeSort.
Pada metode ini, data akan dipecah menjadi dua bagian berdasarkan nilai pivot tertentu. Pengurutan terjadi secara rekursif pada bagian kiri pivot dan kanan pivot.
Itu dia beberapa contoh algoritma.
Bagaimanapun, Anda pasti tidak akan bisa menguasai semua jenisnya.
Ini merupakan konsep yang cukup sulit dipahami. Anda perlu terus berlatih dan terus eksplor lebih banyak jenis, supaya bisa memilih tipe yang paling tepat.
Apa Perbedaan Algoritma, Program dan Pemrograman?
Beberapa orang awam dan pemula, kurang memahami perbedaan algoritma dan program komputer. Meski saling berkaitan, hal-hal itu bukanlah satu hal yang sama.
Program komputer adalah suatu perangkat lunak yang terbentuk dari rangkaian instruksi untuk menjalankan suatu fungsi spesifik dalam komputer.
Pemrograman adalah proses membuat program komputer dengan menuliskan serangkaian instruksi.
Rangkaian instruksinya berbentuk code komputer atau bahasa pemrograman dengan struktur data tertentu. Hal ini tersusun secara sistematis mengacu pada desain algoritma program.
Dengan kata lain, algoritma hanya salah satu elemen yang membentuk program komputer.
Mengenal Algoritma, Langkah Awal Belajar Programming
Algoritma merupakan alur proses dari suatu program. Hal ini bukanlah kode komputer. Ini ibarat sebuah skema program komputer.
Suatu program bisa berfungsi dengan baik jika programmer melakukan coding dengan mengikuti alur proses tersebut.
Programmer bisa merumuskannya menggunakan bahasa natural, flowchart atau pseudocode.
Setiap instruksi dalam program komputer bisa disebut sebagai algoritma jika memenuhi beberapa kriteria yaitu: tidak ambigu, input-output yang terdefinisi dengan baik, memiliki batasan, menyesuaikan sumber daya, dan bisa beroperasi dengan segala bahasa pemrograman.
Algoritma ada banyak jenisnya. Setiap jenis bisa Anda gunakan untuk tujuan yang spesifik.