Apa yang membuat suatu algoritma dikatakan tidak efektif dan efisien?

Dalam proses membuat suatu program kita dituntut untuk membuat algoritma-nya terlebih dahulu. Dikatakan juga kalau kita ingin membuat suatu program yang bagus maka kita perlu membuat algoritma yang efektif dan efisien. Algoritma yang buruk akan membuat kinerja suatu program menjadi buruk juga, lalu apa-apa saja yang menyebabkan suatu algoritma menjadi tidak efektif dan efisien ?

Syarat-syarat Algoritma Dikatakan Efektif dan Efisien

Adapun syarat-syarat algoritma dikatakan efektif dan efisien yaitu :

  1. Ada output
    Mengacu pada definisi algoritma, algoritma harus mempunyai output yang harus merupakan solusi dari masalah yang sedang diselesaikan.

  2. Efektifitas dan efesiensi
    Dikatakan efektif jika algoritma tersebut menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan, dalam arti algoritma harus tepat guna.
    Dikatakan efisien jika waktu proses suatu algoritma relatif lebih singkat dan penggunakan memori komputernya lebih sedikit.

  3. Jumlah langkahnya berhingga
    Barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.

  4. (semi Algoritma) Berakhir
    Penyelesaian masalah harus berhenti. Dan bisa menimbulkan masalah lain.

  5. Terstruktur
    Penyelesaian masalah menggunakan langkah-langkah tersusun
    Suatu algoritma harus menghasilkan out put yang tepat guna (efektif) dalam waktu yang relatif singkat.

Beberapa persyaratan untuk menjadi algoritma yang baik adalah :

• Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.

• Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.

• Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general.

• Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement/kebutuhan yang ada.

• Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma Anda. Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola).

• Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan di berbagai platform komputer.

• Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan, dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti. Setiap langkah harus jelas dan pasti.
Contoh : Tambahkan 1 atau 2 pada x.
Instruksi di atas terdapat keraguan.

• Jumlah langkah atau instruksi berhingga dan tertentu. Artinya, untuk kasus yang sama banyaknya, langkah harus tetap dan tertentu meskipun datanya berbeda.

• Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya.
Contoh : Hitung akar 2 dengan presisi sempurna.
Instruksi di atas tidak efektif, agar efektif instruksi tersebut diubah.
Misal : Hitung akar 2 sampai lima digit di belakang koma.

• Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan.

Jadi, jika tidak memenuhi syarat-syarat di atas maka algoritma tersebut dikatakan tidak efektif ataupun efisien.

Efektif bisa diartikan sebagai pengukuran keberhasilan dalam pencapaian tujuan-tujuan yang telah ditentukan. Misalnya jika suatu pekerjaan dapat selesai dengan pemilihan cara-cara yang sudah ditentukan, maka cara tersebut adalah benar atau efektif.

Efisien berarti melakukan sesuatu tanpa membuang-buang waktu.

Kriteria Pemilihan Algoritma :

  1. Ada output: mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang harus merupakan solusi dari masalah yang sedang diselesaikan.

  2. Efektifitas dan Efisiensi :Dikatakan efektif jika algoritma tersebut menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus tepat guna.Dikatakan efisiensi jika waktu proses suatu algoritma relatif lebih singkat dan penggunaan memori komputernya lebih sedikit.

  3. Jumlah langkahnya berhingga : maksudnya adalah barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.

  4. Berakhir à (Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.

  5. Terstruktur : yaitu urutan barisan langkah-langkah yang digunakan harus disusun sedemikian rupa agar proses penyelesaian tidak berbelit-belit sedemikian sehingga bagian-bagian proses dapat dibedakan dengan jelas mana bagian input, proses dan output sehingga memudahkan user melakukan pemeriksaan ulang.

Jadi, Suatu Algoritma yang terbaik(The Best) : “Suatu algoritma harus menghasilkan output yan tepat guna(efektif) dalam waktu yang relatif singkat & penggunaan memori yang relatif sedikit(efisien) dengan langkah yang berhingga & prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada solusinya”

Contoh
Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.

  1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
  2. Dinyatakan Nilai B adalah 0
  3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
  4. Jika tidak, maka nilai B akan bertambah 1
  5. Kembali ke langkah pada No.3

Untuk melihat faktor efisiensi & efektifitas dari algoritma tersebut , dapat dilakukan terhadap suatu algoritma dengan melihat pada:
Waktu tempu(Running Time) dari suatu algoritma: adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah.

Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah:

  1. Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan dalam menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses tersebut

  2. Besar dan jenis input data: Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double precesion)

  3. Jenis operasi: Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis operasi tersebut meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama dibandingkan operasi penjumlahan atau pengurangan.

  4. Komputer dan kompilator: hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau tahap pembuatan algoritma yang efisien. Algoritma dibuat untuk mencapai waktu tempuh yang seefektif dan seefisien mungkin, tetapi kesemuanya itu akan sangat bergantung pada kemampuan komputer yang tentunya harus sesuai dengan jumlah program atau langkah yang diperlukan oleh algoritma, begitu juga dengan kompilator tersebut, misalnya PC XT 8086 akan kalah cepat dibandingkan 8088 atau dengan AT 80286 atau 80386 atau 80486 dan seterusnya.

kesimpulan :jika suatu algoritma tidak memenuhi faktor efisiensi & efektifitas dari algoritma tersebut maka, algoritma itu dikatakan tidak efektif dan efisien

sumber:

penjelasan singkat tentang algoritma dimana algoritma merupakan suatu proses urutan langkah kerja yang logis dalam memecahkan suatu permasalahan yang bisa dikatakan dalam ilmu komputer. algoritma juga merupakan konsep dasar dari sebuah program yang mana pembuatanya butuh penalaran yang baik dan logis.

Algoritma sendiri memiliki fungsi yaitu untuk menyelsaikan suatu permasalahan tanpa harus memberatkan bagian lain, jadi bisa disimpulkan secara tidak langsung bahwa sebuah algoritma yang tidak efisien juga dapat dikaitkan dengan penggunaan algoritma yang memberatkan bagian lain dari sebuah aplikasi. Misalnya, penggunaan memori atau CPU yang besar, dapat memberatkan aplikasi yang mengimplementasikan algoritma tersebut.

Adapun Menurut Donald Ervin Knuth ( bapa analisis algoritma ), algoritma yang baik mewakili kriteria sebagai berikut :

1. Input

Suatu program diupayakan memiliki nol input atau lebih dari pengguna, yang berarti tidak mendapatkan masukan data dari pengguna lain secara langsung, akan tetapi data tersebut akan digunakan oleh program yang sudah dideklarasikan ke dalam program yang telah dieksekusi.

2. Output

Diupayakan suatu program memiliki minimal 1 output, dikarenakan ada alasan tertentu. Output tersebut dapat berupa file, video, teks atau dapat disimpan dalam clipboard yang nantinya digunakan dalam program lain dan disimpan dalam basis data.

3. Finite / terbatas

Program yang telah dibuat harus pasti dan terbatas. Suatu program yang telah dieksekusi diharuskan untuk berhenti, bukan harus berjalan terus-menerus hingga hang up atau not responding, dan ujung-ujungnya harus di-kill atau dimatikan dengan paksa.

4. Define / pasti

Program yang dibuat harus pasti arah dan tujuannya, jadi harus jelas kapan bisa dimuali dan kapan berakhir. Tujuannya adalah untuk menghasilkan output yang sesuai dengan yang diinginkan.

5. Efisien

Efisien berarti program tidak membtuhkan banyak memori, dan tidak perlu melakukan hal hal yang tidak diperlukan. Alasannya adalah untuk memaksimalkan waktu agar tidak terbuang sia sia dikarenakan mencari sesuatu yang tidak diperlukan dalam pemrograman.

Efisien disini dapat dijabarkan kembali menjadi seperti berikut :

1. Efisien terhadap waktu

Beberapa faktor yang dapat mempengaruhi waktu tempuh algoritma :

  • Banyaknya langkah, terlalu banyak langkah dalam menyelesaikan suatu masalah, maka semakin lama juga waktu tempuh dalam proses tersebut, alangkah baiknya diupayakan mengatur waktu dan menganalisis sesuai dengan yang dibutuhkan.

  • Besar dan jenis input data, besar jenis input pada suatu algoritma dapat mempengaruhi proses perhitungan yang terjadi, waktu tempu yang diperuntuka untuk proses perhitungan tersebut menjadi kunci ketepatan waktu tempuh.

  • Jenis oprasi, yang sering digunkan adalah matematika, nalar, ataupun logika. Dan proses perhitungan tergantung dengan tingkat kesulitan dapat menjadi faktor pula dalam kecepatan menyelesaika suatu soal

2. Efisien terhadap memori.

Algoritma yang memerlukan banyak memori, dapat dikatakan bahwa algoritma tersebut memiliki kualitas yang buruk. Sebab semakin banyak memerluka memori yang terpakai maka akan semakin jelek algoritma tersbebut. Salah satu faktor yang mempengaruhi pemakaian memori adalah karena adanya suatu proses langkah langkah pembuatan yang terlalu banyak yang berupa variabel data yang dipakai dalam suatu algoritma.

KESIMPULAN :

Jadi bisa disimpulkan bahwa pnggunaan suatu algoritma bisa dikatakan tidak efektif dikarenaka faktor faktor yang mempegaruhi dan menyebabkan suatu algoritma tidak efisien, seperti misalnya pengaturan waktu dalam penyelesaian masalah yang menyebabkan hasil yang tidak efektif karena adanya penundaan. Selain itu faktor lain yang mempengaruhi adalah memori, sebab apabila penggunaan memori yang terlalu banyak maupun berlebihan, menyebabkan hasil suatu algoritma menjadi buruk dan tidak sesua dengan hrapan.

Refrensi :

Sebelum menjawab mengenai apa yang membuat sebuah program tidak efektif dan efisien, kita terlebih dahulu harus mengetahui apa itu efektif dan apa itu efisien.

  • Algoritma yang efektif memiliki arti bahwa algoritma yang kita buat akan menghasilkan output sesuai dengan apa yang kita inginkan.
  • Algoritma yang efisien memiliki arti bahwa seberapa banyak sumber daya yang dibutuhkan untuk mencapai output , sumber daya yang biasa dijadikan sebagai tolak ukur dari efisiensi adalah waktu yang dibutuhkan, dan berapa memori yang digunakan.

Algoritma yang tidak memenuhi kriteria diatas dapat dikatakan algoritma yang tidak efektif/ efisien. Dalam sebagian besar kasus, algoritma yang efektif tidak selalu efisien dan algoritma yang efisien tidak selalu efektif, sebagai contoh program translator, ada banyak program yang menawarkan kemampuan translasi dari bahasa satu ke bahasa lainnya. Beberapa dapat menghasilkan jawaban dengan cepat namun output yang dihasilkan seringkali tidak sesuai dengan apa yang seharusnya, sedangkan program lain memakan waktu lebih banyak namun output yang dihasilkan mendekati ekspektasi. Namun, ada pula beberapa algoritma yang efektif sekaligus efisien.

Dalam membuat algoritma yang efektif dan efisien, bergantung kepada target yang kita inginkan, lebih cepat atau lebih tepat ? setelah mengetahui target kita, mulai lah kita menyusun algoritma sesuai yang kita inginkan.

Sumber :

https://www.researchgate.net/post/Can_anyone_give_more_clarification_on_the_difference_between_the_effectiveness_and_efficiency_of_an_algorithm

Algortima yang baik adalah algoritma yang efektif dan efisien. Efektif berarti tepat sasaran, artinya algoritma yang efektif adalah algoritma yang berhasil mencapai goal atau tujuan kita. Algoritma yang dikatakan tidak efektif serta efisien adalah algoritma yang tidak berhasil mencapai tujuan akhir dan membuang-buang banyak memori atau melakukan hal-hal yang tidak diperlukan.

sumber : Kriteria Algoritma yang Baik dan Benar - MasIrwin Blog