Big O Notation, kedengarannya mungkin rumit ya, tapi sebenarnya ini adalah salah satu konsep dasar dalam pemrograman yang bisa membantu kita memahami seberapa “berat” atau “ringan” algoritma yang kita buat. Bayangkan saja kalau kita lagi ngoding aplikasi, tentu kita pengin aplikasi itu bisa jalan dengan cepat dan efisien, kan? Nah, Big O notation ini semacam “pengukur” untuk melihat seberapa baik performa kode kita, terutama kalau data yang diolah makin besar.

Jadi, di artikel ini kita akan bahas Big O dengan cara yang sederhana dan santai, biar makin mudah paham dan nggak bikin kepala pusing. Siap buat belajar? Let’s go!

 

Big O Notation

Big O Notation itu, gampangnya, adalah cara untuk mengukur performa atau efisiensi dari suatu algoritma. Misalnya, kalau kamu punya algoritma yang jalan di aplikasi, Big O akan membantu kamu tahu berapa lama waktu yang dibutuhkan atau seberapa banyak memori yang dipakai ketika algoritma tersebut bekerja. Nah, Big O ini biasanya dipakai untuk menganalisis apa yang terjadi saat data yang diproses makin besar.

Kenapa penting? Karena kadang algoritma yang kelihatannya sederhana bisa jadi lambat banget kalau datanya banyak. Dengan Big O, kita bisa tahu apakah algoritma tersebut bakal tetap “cepat” atau malah jadi super lambat seiring bertambahnya data. Jadi, kita bisa pilih algoritma yang paling efisien buat tugas kita.

Contohnya, kamu mungkin pernah dengar O(1), O(n), O(n²), atau O(log n). Nah, itu semua adalah “label” yang menggambarkan seberapa cepat atau lambat suatu algoritma bekerja dalam skenario terburuknya. Santai aja, nanti kita bahas satu per satu!

 

Hitung Kuy

Big O notation digunakan untuk menggambarkan seberapa cepat atau efisien sebuah algoritma bekerja dalam skenario terburuknya. Dalam penelitian Tsobdjou et al, parameter statis seperti ΔT, N, k, dan j sering kali perlu diatur agar performa algoritma optimal. Pada artikel jurnal yang sedang kita bahas, penyesuaian terhadap parameter-parameter ini sangat penting untuk mendapatkan performa terbaik dalam mendeteksi serangan DDoS berbasis entropi.

Dalam konteks penelitian pada jurnal tersebut, Big O notation dapat digunakan untuk mengukur kompleksitas algoritma yang digunakan untuk mendeteksi serangan DDoS berdasarkan parameter ΔT (time window), k, j, dan N. Berikut adalah bagaimana setiap parameter berkontribusi terhadap analisis kompleksitas:

  1. ΔT (Time Window): Ini adalah interval waktu di mana entropi dihitung untuk mendeteksi aktivitas mencurigakan. Semakin kecil nilai ΔT, semakin sering sistem harus memproses dan menghitung entropi, yang meningkatkan beban komputasi. Namun, jika ΔT terlalu besar, maka deteksi mungkin menjadi lambat. Secara umum, kompleksitas penghitungan untuk satu iterasi entropi bisa diambil sebagai O(ΔT) karena setiap interval waktu harus diproses.
  2. k dan j: Keduanya digunakan dalam perhitungan ambang batas dinamis. Dalam perhitungan threshold, ada pengaruh langsung dari k dan j terhadap jumlah sampel yang perlu diproses, karena mereka menentukan batas bawah dan atas berdasarkan deviasi standar dan rata-rata dari distribusi data. Secara umum, nilai k dan j akan memengaruhi berapa banyak sampel yang perlu diproses, sehingga ini berkontribusi ke dalam kompleksitas. Dalam hal ini, kompleksitas akan bergantung pada O(k + j).
  3. N: Ini merujuk pada jumlah sampel yang digunakan untuk menginisialisasi profil traffic yang sah. Semakin besar N, semakin banyak data yang perlu dianalisis untuk membangun model yang akurat. Kompleksitas untuk memproses N data umumnya linear terhadap N, sehingga O(N).

Total Kompleksitas:

Dengan menggabungkan semua parameter tersebut, kompleksitas keseluruhan dari sistem pendeteksi entropi ini kira-kira dapat direpresentasikan sebagai:

  • ΔT menentukan seberapa sering sistem harus melakukan perhitungan.
  • k + j menentukan tingkat penyesuaian pada ambang batas, dan
  • N menentukan jumlah sampel awal yang perlu diolah untuk membentuk baseline traffic yang sah.

Kesimpulannya, perhitungan sistem ini bersifat linear terhadap parameter-parameter tersebut, di mana semakin besar nilai masing-masing parameter, semakin tinggi pula beban komputasi yang diperlukan untuk deteksi serangan secara efektif​

 

Big O notation dari algoritma berdasarkan nilai parameter N, ΔT, k, dan j yang diberikan dalam penelitian ini, kita dapat melihat seperti apa kompleksitasnya secara langsung dari kombinasi parameter-parameter tersebut.

Parameter-parameter yang disebutkan dalam penelitian adalah:

  • N = 1 hingga 20
  • ΔT = 1 hingga 4 detik
  • k = 1 hingga 16
  • j = 1 hingga 101

Langkah-Langkah untuk Menghitung Kompleksitas:

  1. Kompleksitas untuk N: Jumlah sampel N bervariasi dari 1 hingga 20. Kompleksitasnya adalah O(N), artinya untuk jumlah sampel N yang lebih besar, waktu komputasi meningkat secara linear. Jadi, dalam kasus terburuk:

  2. Kompleksitas untuk ΔT: ΔT adalah ukuran time window yang berkisar dari 1 hingga 4 detik. Semakin besar ΔT, semakin banyak waktu yang dibutuhkan untuk memproses data dalam satu window. Kompleksitasnya adalah O(ΔT), dan dalam kasus terburuk:

  3. Kompleksitas untuk k dan j: Meskipun k dan j berkontribusi dalam menghitung ambang batas (threshold), mereka dianggap sebagai konstanta dalam kompleksitas Big O, sehingga dapat diabaikan dalam perhitungan skala besar. Oleh karena itu:

Kompleksitas Total:

Dengan menggabungkan semua faktor di atas, kita dapat menentukan kompleksitas total algoritma deteksi sebagai berikut:

Namun, dalam Big O notation, kita mengabaikan konstanta yang kecil, jadi kompleksitas akhirnya adalah:

Ini berarti bahwa dalam kasus terburuk, kompleksitas algoritma ini berada pada tingkat O(80)

 

Threshold

Dalam konteks Big O notation, konsep threshold biasanya tidak digunakan secara eksplisit seperti dalam analisis kinerja algoritma berbasis data atau sistem entropi. Big O notation menggambarkan batas atas dari kompleksitas algoritma, bukan minimum atau maksimum spesifik, tetapi lebih kepada bagaimana waktu komputasi bertambah seiring bertambahnya input.

Namun, jika kita berbicara tentang “threshold” dalam arti batas minimum dan maksimum kinerja dari algoritma dalam penelitian ini, mari kita evaluasi dalam dua dimensi:

1. Minimal Threshold Big O (Batas Minimal)

Berdasarkan parameter N dan ΔT, jika kita mengasumsikan nilai minimum untuk kedua variabel:

  • N = 1 (satu sampel)
  • ΔT = 1 detik

Maka kompleksitasnya dalam kasus terendah akan dihitung sebagai:

Ini adalah batas minimal yang berarti sistem hanya perlu menghitung untuk satu sampel dalam interval waktu 1 detik, sehingga kompleksitasnya sangat rendah dan bisa dibilang konstan. Ini mencerminkan skenario di mana sangat sedikit data yang diproses.

2. Maximal Threshold Big O (Batas Maksimal)

Untuk kasus maksimal, kita mengasumsikan nilai tertinggi dari variabel:

  • N = 20 (20 sampel)
  • ΔT = 4 detik

Dalam hal ini, kompleksitasnya akan menjadi:

Ini mencerminkan skenario di mana sistem harus memproses data dalam jumlah yang lebih besar (20 sampel dalam interval waktu 4 detik). Kompleksitas ini menunjukkan bahwa meskipun jumlah data bertambah, kompleksitasnya tetap dalam batas yang dapat diprediksi, yaitu linear.

Kesimpulan:

  • Minimal Big O: O(1) – Ketika jumlah sampel dan time window kecil (1 sampel dalam 1 detik).
  • Maksimal Big O: O(80) – Ketika sistem harus memproses 20 sampel dalam time window 4 detik.

Sehingga, algoritma ini dapat bekerja dalam kisaran linear dari O(1) hingga O(80) tergantung pada jumlah sampel dan panjang time window yang digunakan.

By Juri Pebrianto

IT and software developer From 2014, I focus on Backend Developers with the longest experience with the PHP (Web) programming language, as I said above, I open myself up to new technologies about programming languages, databases and everything related to programming or software development. I have a new experience for React-Js, React-Native, Go-Lang, by the way, this website juripebrianto.my.id is made with React-Js technology as the frontend and Go-Lang as the API and CMS and uses MongoDB as the database.