Pengenalan Algoritma | Definisi, Jenis, dan Contoh-contoh

November 11, 2023 (1y ago)

Algoritma adalah cara keren komputer bekerja dengan langkah-langkah tertentu. Bayangkan seperti main game dengan aturan khusus. Nah, algoritma juga punya aturannya sendiri!

Kita bisa bilang, algoritma itu pintar kalau bisa berhenti dan kasih hasil yang bener setiap kali diberi tugas.

KENAPA KITA BUTUH ALGORITMA:

Algoritma berguna buat selesaikan masalah atau bantu kerja komputer dengan rapi dan cepat. Ini seperti panduan yang kasih tahu komputer atau perangkat lunak apa yang harus dikerjakan.

Nah, ada beberapa alasan kenapa kita pake algoritma ini:

  1. Cepat dan Akurat: Algoritma bisa selesaikan tugas cepat dan bener, jadi penting banget buat tugas yang banyak hitungan atau olah data.
  2. Selalu Sama: Setiap kali algoritma jalan, hasilnya selalu sama. Ini penting kalau urusan banyak data atau tugas rumit.
  3. Bisa Besar: Algoritma bisa diperbesar buat olah data banyak atau masalah susah. Cocok banget buat aplikasi yang butuh proses data banyak.
  4. Otomatisasi: Algoritma bisa otomatisasi tugas yang berulang, jadi kita gak perlu campur tangan terus dan punya waktu buat tugas lain.
  5. Standar: Algoritma bisa dibikin standar dan dibagi ke tim atau organisasi yang beda. Jadi, orang-orang bisa kerja sama dan berbagi ilmu dengan mudah.

Secara keseluruhan, algoritma adalah alat penting buat selesaikan masalah di banyak bidang, kayak ilmu komputer, teknik, analisis data, finansial, dan banyak lagi.

Contohnya:

Bayangkan kotak yang gak bisa kita lihat isinya, seperti kotak hitam. Kita kasih masukan ke kotak itu, dan dia kasih keluaran yang kita butuhkan. Tapi, gimana si kotak itu bisa ubah masukan jadi keluaran yang kita mau, itu namanya ALGORITMA.

Algoritma ini bisa dipake tanpa peduli bahasa yang dipake. Dia kasih tahu pembuat program tentang logika yang dipake buat selesaikan masalah. Jadi, ini panduan langkah demi langkah yang logis buat pembuat program.

Contoh Nyata Pake Algoritma:

Pikirkan jam. Kita tahu jam terus berjalan, tapi gimana si produsen jam atur baut dan mur biar jarum menit bergerak tiap 60 detik, dan tiap 60 menit, jarum jamnya juga bergerak? Pasti ada algoritma di baliknya.

Lihat orang masak makanan favoritmu? Resepnya penting, kan? Iya, resep itu kayak langkah-langkah berurutan yang ubah kentang mentah jadi kentang pedas. Nah, inilah yang disebut algoritma: ikuti langkah-langkah buat dapetin hasil yang kita mau. Apakah urutannya harus diikuti? Iya, urutan ini paling penting buat dapetin hasil yang diinginkan.

Jenis-Jenis Algoritma:

  1. Pengurutan: Algoritma buat ngurutin kumpulan barang, bisa naik atau turun. Ada banyak jenis algoritma pengurutan, masing-masing punya kelebihan dan kekurangan.
  2. Pencarian: Algoritma buat cari barang atau nilai tertentu dalam daftar. Ada yang cari secara berurutan dan ada juga yang lebih pintar lagi.
  3. Algoritma Graf: Dipakai buat cari solusi masalah kayak nyari jalan terpendek antar kota, atau masalah lain kayak masalah penjual keliling.

Pokoknya, algoritma itu kayak panduan buat ngerjain tugas-tugas keren. Gak peduli itu masalah kecil atau besar, algoritma bisa bantu kita selesaikan dengan hebat.

Kenapa Kita Pake Algoritma?

Pikirin dua anak, Aman dan Rohan, yang ngasah Rubik. Aman tau cara selesaikan dalam langkah pasti. Nah, Rohan cuma tau dia bakal selesai, tapi gak tau cara nya. Aman selesaikan Rubik dalam 2 menit, sedangkan Rohan masih bingung dan baru selesai menjelang sore (mungkin aja curang, soalnya cara penting).

Jadi waktu buat selesaikan sesuai dengan aturan/algoritma jauh lebih efektif daripada tanpa aturan. Jadi, perlu banget algoritma.

Waktu mendesain solusi masalah IT, komputer cepat tapi gak tak terbatas. Memori mungkin murah, tapi gak gratis. Jadi, waktu komputasi dan memori ini terbatas. Makanya, kita harus pake dengan bijak dan algoritma yang efisien dalam hal waktu dan memori bisa bantu.

Bikin Algoritma: Karena algoritma gak tergantung bahasa pemrograman, kita tulis langkah-langkah buat tunjukin logika di balik solusi masalah. Tapi, sebelum bikin algoritma, ada hal-hal ini yang harus diperhatikan:

  • Algoritma harus jelas dan gak bikin bingung.
  • Harus ada 0 atau lebih input yang jelas dalam algoritma.
  • Algoritma harus hasilkan satu atau lebih output yang sesuai dengan yang kita mau. Setelah sejumlah langkah tertentu, algoritma harus berhenti.
  • Algoritma harus berhenti dalam jumlah langkah tertentu.
  • Dalam algoritma, instruksi langkah demi langkah harus diberikan, dan gak tergantung kode komputer.
  • Contoh: algoritma buat kali dua angka dan cetak hasilnya:
  1. Langkah 1: Mulai

  2. Langkah 2: Dapatkan input. Di sini kita butuh 3 variabel; a dan b bakal dari input user dan c bakal jadi hasilnya.

  3. Langkah 3: Deklarasi variabel a, b, c.

  4. Langkah 4: Ambil input a dan b dari user.

  5. Langkah 5: Pahami masalah dan cari solusinya pake operator, struktur data, dan logika.

    • Kita perlu kali a dan b jadi kita pake operator _ dan hasilnya masukin ke c. c < - a _ b
  6. Langkah 6: Cek cara kasih output, kita perlu cetak c.

  7. Langkah 7: Selesai

Contoh 1: Bikin algoritma buat cari nilai tertinggi dari semua elemen di dalam array. Ikuti algoritma di bawah ini:

  1. Langkah 1: Mulai program
  2. Langkah 2: Deklarasi variabel max dengan nilai elemen pertama dari array.
  3. Langkah 3: Bandingkan max dengan elemen lainnya pake perulangan.
  4. Langkah 4: Kalau max < nilai elemen array, ganti max dengan max baru.
  5. Langkah 5: Kalau gak ada elemen lagi, kembalikan nilai max atau cetak, kalau masih ada, balik ke langkah 3.
  6. Langkah 6: Selesai

Contoh 2: Bikin algoritma buat cari rata-rata dari 3 pelajaran. Ikuti algoritma di bawah ini:

  1. Langkah 1: Mulai program
  2. Langkah 2: Deklarasi dan baca 3 pelajaran, misalnya S1, S2, S3.
  3. Langkah 3: Hitung jumlah nilai 3 pelajaran dan simpan di variabel Sum (Sum = S1 + S2 + S3).
  4. Langkah 4: Bagi Sum dengan 3 dan simpan di variabel Rata-rata (Rata-rata = Sum / 3).
  5. Langkah 5: Cetak nilai rata-rata 3 pelajaran.
  6. Langkah 6: Selesai

Pahami Kompleksitas Algoritma: Kompleksitas algoritma mengacu pada sumber daya yang dibutuhkan (misalnya waktu atau memori) untuk selesaikan masalah atau kerja tertentu. Ukuran kompleksitas yang paling umum adalah kompleksitas waktu, yang mengacu pada waktu yang dibutuhkan oleh algoritma untuk menghasilkan hasil sebagai fungsi ukuran masukan. Kompleksitas memori mengacu pada memori yang dibutuhkan oleh algoritma. Perancang algoritma berusaha mengembangkan algoritma dengan kompleksitas waktu dan memori terendah, karena ini membuatnya lebih efisien dan scalable.

Kompleksitas algoritma adalah fungsi yang menggambarkan efisiensi algoritma dalam hal sumber daya yang diperlukan.

Biasanya ada unit alami untuk domain dan jangkauan dari fungsi ini.

Algoritma dianalisis dengan kompleksitas waktu dan kompleksitas memori. Membuat algoritma efisien membantu menggunakan waktu sebanyak mungkin untuk memproses logika. Untuk algoritma A, itu dinilai berdasarkan dua parameter untuk masukan ukuran n:

  • Kompleksitas Waktu: Waktu yang dibutuhkan algoritma untuk selesaikan masalah. Ini diukur dengan menghitung iterasi loop, jumlah perbandingan, dll.
  • Kompleksitas Waktu adalah fungsi yang menggambarkan jumlah waktu yang diperlukan oleh algoritma dalam hal ukuran masukan.
  • "Waktu" bisa berarti jumlah akses memori yang dilakukan, jumlah perbandingan antara bilangan bulat, jumlah kali loop dalam, atau unit alami lain yang terkait dengan jumlah waktu nyata yang dibutuhkan algoritma.
  • Kompleksitas Memori: Memori yang dibutuhkan algoritma untuk selesaikan masalah. Ini termasuk ruang yang digunakan oleh variabel input yang diperlukan dan ruang tambahan (tidak termasuk ruang yang diambil oleh input) yang digunakan oleh algoritma. Misalnya, jika kita menggunakan tabel hash (jenis struktur data), kita butuh array buat simpan nilai jadi ini ruang tambahan, jadi ini hitung ke kompleksitas memori algoritma. Ruang tambahan ini disebut Ruang Bantu.
  • Kompleksitas Memori adalah fungsi yang menggambarkan jumlah memori (ruang) yang diperlukan oleh algoritma dalam hal ukuran masukan.
  • Kompleksitas Memori kadang-kadang diabaikan karena ruang yang digunakan minimal dan/atau jelas, tapi kadang-kadang bisa jadi masalah waktu.
  • Kompleksitas waktu dari operasi:
  • Pilihan struktur data sebaiknya berdasarkan kompleksitas waktu operasi yang akan dilakukan.
  • Kompleksitas waktu didefinisikan dalam hal berapa kali algoritma berjalan, berdasarkan panjang masukan.
  • Kompleksitas waktu dari sebuah algoritma adalah waktu yang dibutuhkan setiap pernyataan untuk selesai. Ini sangat tergantung pada ukuran data yang diproses.
  • Misalnya, jika kamu sering perlu cari data, sebaiknya pake struktur data pohon pencarian biner.
  • Kompleksitas memori dari operasi:
  • Pilihan struktur data sebaiknya berdasarkan kompleksitas memori operasi yang akan dilakukan.
  • Jumlah memori yang digunakan oleh sebuah program untuk mengeksekusi diwakili oleh kompleksitas memori.
  • Karena program butuh memori buat simpan data masukan dan nilai sementara saat berjalan, kompleksitas memori ada ruang bantu dan ruang masukan.
  • Misalnya, jika kamu perlu simpan banyak data, sebaiknya pake array.

Kasus dalam kompleksitas: Ada dua kasus kompleksitas yang biasa dipelajari dalam algoritma:

  1. Kasus Terbaik: Skenario terbaik untuk sebuah algoritma adalah skenario di mana algoritma melakukan pekerjaan paling sedikit (misalnya, memerlukan waktu paling singkat, memakai memori paling sedikit, dll).
  2. Kasus Terburuk: Skenario terburuk untuk sebuah algoritma adalah skenario di mana algoritma melakukan pekerjaan paling banyak (misalnya, memerlukan waktu paling lama, memakai memori paling banyak, dll).

Ketika menganalisis kompleksitas algoritma, sering kali lebih bermanfaat mempelajari skenario terburuk, karena ini memberikan batas atas yang pasti pada kinerja algoritma. Analisis skenario terbaik terkadang dilakukan, tapi biasanya kurang penting karena memberikan batasan bawah yang sering mudah dicapai.

Keuntungan Algoritma:

  • Mudah dimengerti: Karena dia adalah representasi langkah-demi-langkah solusi untuk masalah tertentu, dia mudah dipahami.
  • Tidak tergantung bahasa: Tidak bergantung pada bahasa pemrograman, jadi bisa dimengerti oleh siapa saja.
  • Deteksi Debug/Kesalahan: Setiap langkah independen/dalam aliran, jadi gampang buat temukan dan perbaiki kesalahan.
  • Masalah Kecil: Dia ditulis dalam aliran, jadi programmer bisa bagi tugas dan membuatnya lebih mudah di-kode.

Kekurangan Algoritma:

  • Membuat algoritma efisien membutuhkan waktu dan keterampilan logika yang baik.
  • Agak susah menunjukkan percabangan dan pengulangan dalam algoritma.