Review 200 Algoritma


Review mengenai 200 buah algoritma yang sudah dijelaskan pada website ini.

Setelah melakukan riset dan pembelajaran algoritma yang sudah saya lakukan selama beberapa bulan ini, pada hari ini topik algoritma yang sudah saya bahas sudah mencapai 200 buah. Semakin saya mempelajari algoritma-algoritma baru, ternyata semakin banyak algoritma yang tidak saya ketahui, dengan perhitungan yang semakin lama semakin kompleks. Tentunya pembahasan topik algoritma ini akan saya teruskan sampai semua algoritma dapat saya pahami.

Algoritma yang sudah saya bahas sudah saya kategorikan menjadi beberapa macam dan dapat anda pilih dari sidebar Kategori di sebelah kanan pos ini. Saya mendapatkan usulan dari teman saya (yang sama sekali buta tentang algoritma) untuk mereview website ini dan dia menyampaikan hal-hal berikut:

  • Teman saya bingung sebaiknya menggunakan algoritma yang mana dalam masing-masing kategori tersebut, yang mana yang mudah dan sulit untuk dipelajari.
  • Terkadang pembaca menginginkan algoritma yang cukup mudah untuk dipahami, tetapi ada juga yang menginginkan algoritma yang cukup sulit, dengan harapan dosen tidak akan bertanya macam-macam karena algoritma tersebut sulit.
  • Pembaca takut mempelajari algoritma baru yang belum pernah didengar, karena takut algoritma yang dipilih ternyata jauh lebih sulit dari kemampuan pembaca dalam memahami.

Berdasarkan review tersebut, sehingga pada kali ini saya akan melakukan review algoritma dari masing-masing kategori yang sudah saya jelaskan, dengan harapan untuk membantu pembaca dalam menentukan algoritma mana yang dapat digunakan sesuai kemampuan.

Untuk masing-masing pembahasan algoritma dibawah ini, saya akan berikan salah satu dari 3 nilai Tingkat kesulitan: Mudah, Sedang, Sulit. Tentu saja penilaian ini berdasarkan kesimpulan yang saya ambil. Untuk pembaca yang masih awam dengan algoritma, pastinya semua algoritma akan dianggap sulit, dan untuk pembaca yang sudah banyak menguasai algoritma, beberapa algoritma ini mungkin akan dianggap lebih mudah daripada yang saya nilai.

Algoritma Optimasi

Pada kategori ini, semua algoritma bertujuan untuk mencari elemen terbaik dari sebuah ruang pencarian dengan memenuhi kriteria tertentu. Menurut saya, sebagian besar algoritma ini sangat sulit untuk dipelajari dan hanya beberapa saja yang cukup mudah.

ACO (Ant Colony Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku semut dalam mencari sumber makanan. Proses perhitungan cukup kompleks dan banyak memerlukan parameter.

AIS (Artificial Immune System) dengan teknik CLONALG (Clonal Selection Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku sistem kekebalan tubuh. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

AMO (Amoeba Method Optimization) / Nelder-Mead Method
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku perkembangbiakan amoeba. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

Analisis Diskriminan
Tingkat kesulitan: Sulit
Analisis Diskriminan merupakan salah satu ilmu statistika yang digunakan untuk menentukan jawaban. Yang menyebabkan Analisis Diskriminan termasuk sulit adalah karena diperlukannya perhitungan operasi matriks, seperti transpos, invers, dan dekomposisi matriks yang semuanya sulit untuk dilakukan.

Antlion Optimizer
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari spesies Antlion dalam berburu mangsa. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

BBO (Biogeography-based Optimization)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan prinsip individu dalam bermigrasi ke tempat lain. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

CBBO (Chaotic Biogeography-based Optimization): Chaotic Selection
Tingkat kesulitan: Sulit
Algoritma ini merupakan variasi dari BBO (Biogeography-based Optimization), dengan penambahan sistem Chaotic. Versi yang dibahas pada kasus ini adalah versi Chaotic Selection, dimana sistem Chaotic hanya diterapkan pada saat proses seleksi saja. Proses perhitungan cukup kompleks dan banyak memerlukan parameter.

CBBO (Chaotic Biogeography-based Optimization): Chaotic Migration
Tingkat kesulitan: Sulit
Algoritma ini merupakan variasi dari BBO (Biogeography-based Optimization), dengan penambahan sistem Chaotic. Versi yang dibahas pada kasus ini adalah versi Chaotic Migration, dimana sistem Chaotic hanya diterapkan pada saat proses migrasi saja. Proses perhitungan cukup kompleks dan banyak memerlukan parameter.

CBBO (Chaotic Biogeography-based Optimization): Chaotic Mutation
Tingkat kesulitan: Sulit
Algoritma ini merupakan variasi dari BBO (Biogeography-based Optimization), dengan penambahan sistem Chaotic. Versi yang dibahas pada kasus ini adalah versi Chaotic Mutation, dimana sistem Chaotic hanya diterapkan pada saat proses mutasi saja. Proses perhitungan cukup kompleks dan banyak memerlukan parameter.

CBBO (Chaotic Biogeography-based Optimization): Hybrid
Tingkat kesulitan: Sulit
Algoritma ini merupakan variasi dari BBO (Biogeography-based Optimization), dengan penambahan sistem Chaotic. Versi yang dibahas pada kasus ini adalah versi Hybrid, dimana sistem Chaotic akan diterapkan pada semua proses seleksi, migrasi dan mutasi. Proses perhitungan cukup kompleks dan banyak memerlukan parameter.

BCO (Bee Colony Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku lebah dalam mencari sumber makanan. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

BFO (Bacterial Foraging Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku perkembangbiakan bakteri. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

CSA (Crow Search Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari burung gagak / dalam hal ini dinamakan sebagai Crow dalam melakukan migrasi. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

DEA (Differential Evolution Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini memiliki kemiripan struktur dengan GA (Genetic Algorithm), hanya terdapat perbedaan pada saat proses perhitungan mutasi dan crossover. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

EAO (Earthworm Algorithm Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari hewan cacing tanah (Earthworm) dalam berkembang biak. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

EHO (Elephant Herding Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari hewan gajah (Elephant) dalam bermigrasi. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

EO (Evolutionary Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku evolusi dalam sebuah ekosistem. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

FAO (Fireworks Algorithm Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru model kembang api yang sedang meledak di langit. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

FA (Firefly Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku kunang-kunang untuk menarik kunang-kunang lain menuju dirinya. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

GA (Genetic Algorithm) / Algoritma Genetika
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku gen dalam berevolusi. Algoritma ini sedikit mirip dengan EO (Evolutionary Optimization), proses perhitungan cukup kompleks dan banyak memerlukan parameter.

GSA (Gravitational Search Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini terinspirasi dari sebuah teori hukum gravitasi yaitu teori Newton. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

GWO (Grey Wolf Optimizer)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari spesies Grey Wolf dalam berburu. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

GSS (Golden Section Search)
Tingkat kesulitan: Sedang
Algoritma ini menggunakan teori Golden Ratio, dimana 2 buah garis / bidang (misalkan a dan b) dikatakan sebagai Golden Ratio apabila rasio ((a + b) / a) sama dengan (a / b). Pemahaman teori Golden Ratio tersebut cukup sulit, tetapi setelah memahami alurnya, proses implementasinya cukup mudah, sehingga algoritma ini memiliki tingkat kesulitan ditengah-tengah (sedang).

HS (Harmony Search)
Tingkat kesulitan: Sedang
Algoritma ini meniru tingkah laku dari seorang pemain musik dalam mencari nada untuk menghasilkan sebuah harmonisasi. Algoritma ini sifatnya berbanding terbalik dengan GSS (Golden Section Search), teorinya cukup mudah untuk dipahami, tetapi implementasinya cukup sulit, sehingga algoritma ini juga berada pada tingkat kesulitan sedang.

Hill Climbing
Tingkat kesulitan: Mudah
Algoritma ini bekerja dengan melakukan pergeseran posisi salah satu dimensi secara terus menerus sampai tidak lagi ditemukan posisi yang lebih baik. Proses perhitungan cukup mudah.

ICA (Imperialist Competitive Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini mengambil prinsip kompetisi kerajaan dalam menaklukan kerajaan lain, yang dalam hal ini disebut sebagai imperial. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

IWO (Invasive Weed Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku weed atau rumput liar dalam berkembang biak. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

LSA (Lightning Search Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini terinspirasi dari fenomena petir pada alam. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

MBO (Monarch Butterfly Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari spesies Monarch Butterfly pada saat bermigrasi ke tempat lain. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

Moth Optimizer
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku dari spesies Moth dalam navigasi pada saat terbang. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

MVO (Multi-Verse Optimizer)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan topik perpindahan posisi alam semesta atau dinamakan dengan universe. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

PSO (Particle Swarm Optimization)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku sekumpulan partikel untuk mencari posisi yang lebih baik. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

MSO (Multi Swarm Optimization)
Tingkat kesulitan: Sulit
Algoritma ini merupakan pengembangan dari PSO (Particle Swarm Optimization), dimana pada algoritma ini digunakan beberapa kumpulan partikel dalam sekali perhitungan. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

Permasalahan Knapsack
Tingkat kesulitan: Mudah
Knapsack adalah pemecahan permasalahan agar seseorang dapat membawa sejumlah barang yang tidak melebihi kapasitas, tetapi dengan nilai barang yang paling tinggi. Cukup mudah untuk dipelajari karena proses yang dilakukan tidak banyak.

Random Search: ASSRS (Adaptive Step Size Random Search)
Tingkat kesulitan: Sedang
Sesuai namanya, Random Search adalah pencarian posisi yang dilakukan secara acak dengan memenuhi kriteria tertentu. Teorinya cukup mudah, dan implementasi yang tidak terlalu sulit.

Random Search: FSSRS (Fixed Step Size Random Search)
Tingkat kesulitan: Sedang
Sesuai namanya, Random Search adalah pencarian posisi yang dilakukan secara acak dengan memenuhi kriteria tertentu. Teorinya cukup mudah, dan implementasi yang tidak terlalu sulit.

Regresi Logistik
Regresi Logistik sendiri biasanya digunakan untuk menentukan probabilitas suatu peristiwa. Tetapi dalam menentukan jawaban tersebut, biasanya diperlukan teknik pembelajaran, dan teknik pembelajaran tersebut biasanya menggunakan algoritma lain, tetapi dapat pula menggunakan salah satu algoritma optimasi yang sudah dijelaskan. Sehingga untuk topik ini, pembaca mau tidak mau harus mempelajari 2 algoritma, yaitu tentang Regresi Logistik itu sendiri dan teknik pembelajaran yang digunakan.
Regresi Logistik dengan teknik Gradient Descent
Tingkat kesulitan: Sulit
Teknik Gradient Descend itu sendiri memiliki tingkat kesulitan yang sedang, tetapi karena pembahasannya harus digabung dengan Regresi Logistik, menyebabkan algoritma ini menjadi sulit.

Regresi Logistik dengan teknik MSO (Multi Swarm Optimization)
Tingkat kesulitan: Sulit
Teknik MSO (Multi Swarm Optimization) memiliki kesulitan tersendiri, dan harus digabung dengan Regresi Logistik, yang menjadikan kesulitan berlipat ganda.

Regresi Logistik dengan teknik Newton-Raphson
Tingkat kesulitan: Sulit
Kesulitan teknik Newton-Raphson adalah pada perhitungan operasi matriks. Sama seperti Regresi Linier, teknik ini banyak sekali melakukan perhitungan matriks seperti transpos, tilda, invers, dan lain-lain yang tidak mudah untuk dilakukan. Digabung dengan Regresi Logistik, menjadikan kesulitan yang didapatkan berlipat ganda.

Multi Regresi Logistik
Tingkat kesulitan: Sulit
Perbedaan kata “Multi” adalah algoritma ini dapat menghasilkan nilai jawaban lebih dari 1 kriteria, sehingga dapat digunakan untuk menyelesaikan kasus yang membutuhkan nilai output lebih dari satu untuk menentukan jawaban. Tingkat kesulitan juga menjadi berlipat ganda.
SA (Simulated Annealing)
Tingkat kesulitan: Sulit
Algoritma ini meniru tingkah laku molekul logam pada saat logam tersebut mengalami penurunan suhu setelah dipanaskan. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

SCA (Sine Cosine Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan 2 buah fungsi, yaitu fungsi sinus dan kosinus dalam melakukan pergerakan dari masing-masing individu. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

Tabu Search
Tingkat kesulitan: Mudah
Algoritma ini bekerja dengan cara memasukkan jawaban yang lebih buruk ke dalam daftar tabu sehingga tidak dapat digunakan kembali. Prosesnya tidak banyak dan mudah untuk dipahami.

TLBO (Teaching-Learning-based Optimization)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan konsep guru sebagai pemberi pelajaran dan murid sebagai pelajar. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

WDO (Wind Driven Optimization)
Tingkat kesulitan: Sulit
Algoritma ini terinspirasi dari pergerakan sekumpulan partikel udara yang disebut Air Parcel. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

WOA (Whale Optimization Algorithm)
Tingkat kesulitan: Sulit
Algoritma ini terinspirasi dari spesies Humpback Whale dalam menangkap mangsa. Sama seperti algoritma sebelumnya, proses perhitungan cukup kompleks dan banyak memerlukan parameter.

Algoritma Pengelompokan / Klasifikasi Data

Pada kategori ini, semua algoritma bertujuan untuk mengelompokkan data ke dalam beberapa kelompok, sehingga data-data yang lebih memiliki kemiripan akan bergabung dalam 1 kelompok dibandingkan dengan data lain yang akan bergabung di kelompok lain. Menurut saya, semua algoritma pengelompokan data sulit untuk dipelajari, dan hanya ada 1 yang mudah.

K-Means Clustering
Tingkat kesulitan: Sulit
Algoritma ini sangat populer dipakai dalam memecahkan masalah pengelompokan data. Implementasi dan proses perhitungan cukup kompleks.

K-Means++ Clustering
Tingkat kesulitan: Sulit
Pengembangan dari K-Means Clustering dimana pemilihan nilai awal cluster tidak dilakukan secara acak, melainkan melalui perhitungan tertentu. Sisa perhitungan sama seperti Algoritma K-Means Clustering

FCM (Fuzzy C-Means) Clustering
Tingkat kesulitan: Sulit
Penggabungan dari Fuzzy Logic dan K-Means Clustering untuk melakukan pengolahan citra berupa segmentasi gambar ke dalam beberapa kelompok. Penggabungan tersebut menyebabkan tingkat kesulitan menjadi berlipat ganda.

CUC (Category Utility Clustering)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan nilai CU (Category Utility) untuk menentukan nilai pengelompokan data, jika pengelompokan lebih cocok, maka nilai CU akan semakin tinggi dan sebaliknya. Implementasi dan proses perhitungan cukup kompleks.

EMC (Entropy Minimization Clustering)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan nilai Entropi untuk menentukan nilai pengelompokan data, jika pengelompokan lebih cocok, maka nilai Entropi akan semakin rendah dan sebaliknya. Implementasi dan proses perhitungan cukup kompleks.

NBIC (Naive Bayes Inference Clustering)
Tingkat kesulitan: Sulit
Naive Bayes yang biasanya digunakan untuk pengambilan keputusan, kali ini digunakan untuk memecahkan permasalahan pengelompokan data. Implementasi dan proses perhitungan cukup kompleks.

DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
Tingkat kesulitan: Sulit
Algoritma ini mengelompokan data berdasarkan tingkat kepadatan antar kelompok, dan kelompok data yang tidak memenuhi tingkat kepadatan tertentu akan dianggap sebagai Noise / data yang dibuang. Implementasinya cukup sulit, tetapi tidak sesulit algoritma clustering yang sudah dijelaskan diatas

QT (Quality Threshold) Clustering
Tingkat kesulitan: Sulit
Algoritma ini melakukan pengelompokan data berdasarkan radius kualitas pada masing-masing data. Implementasinya cukup sulit, tetapi tidak sesulit algoritma clustering yang sudah dijelaskan diatas

Associate Rule / Analisa Asosiasi
Tingkat kesulitan: Sulit
Analisa Asosiasi adalah salah satu metode yang cukup terkenal dalam menentukan hubungan antara variabel dalam suatu basis data yang besar. Implementasi dan proses perhitungan cukup kompleks.

ART (Adaptive Resonance Theory)
Tingkat kesulitan: Sulit
Pengelompokan data dilakukan dengan sistem resonansi apabila data saling ditukar menuju kelompok lainnya. Implementasi dan proses perhitungan cukup kompleks.

ID3 (Iterative Dichotomiser 3)
Tingkat kesulitan: Sulit
Algoritma ini menggunakan teknik pembuatan pohon keputusan untuk mengelompokan semua data. Implementasi dan proses perhitungan cukup kompleks.

k-NN (k-Nearest Neighbors)
Tingkat kesulitan: Mudah
Pengelompokan data dihitung dari seberapa banyak titik tetangga yang dekat dengan titik awal. Nilai mayoritas tetangga tersebut menentukan nilai akhir. Teori dan implementasi cukup mudah untuk dipahami.

Algoritma Pencarian Jalur

Pada kategori ini, semua algoritma bertujuan untuk menentukan jalur yang harus diambil yang memenuhi kriteria tertentu, seperti biaya terendah atau poin tertinggi. Ada beberapa macam teknik pencarian, yaitu pencarian list, pencarian pohon dan pencarian graf. Menurut saya, sebagian besar algoritma pencarian jalur cukup mudah untuk dipelajari.

BFS (Breadth First Search)
Tingkat kesulitan: Mudah
Pencarian jalur dihitung dari titik pertama ke titik terakhir, kemudian anak cabang titik pertama ke anak cabang titik terakhir, dan berlanjut sampai semua titik terhitung. Teori dan implementasi cukup mudah untuk dipahami.

DFS (Depth First Search)
Tingkat kesulitan: Mudah
Pencarian jalur dihitung dari titik pertama ke titik terakhir, kemudian semua anak cabang titik terakhir akan dihabiskan, dan mundur pelan-pelan sampai pada titik pertama. Teori dan implementasi cukup mudah untuk dipahami.

DLS (Depth Limited Search)
Tingkat kesulitan: Mudah
Sama seperti DFS (Depth First Search), tetapi ada batasan anak cabang yang dapat dikunjungi. Perhitungan akan mundur ke titik sebelumnya apabila sudah mencapai batasan ini. Teori dan implementasi cukup mudah untuk dipahami.

IDDFS (Iterative Deepening Depth First Search)
Tingkat kesulitan: Mudah
Sama seperti DLS (Depth Limited Search), dengan batasan anak cabang yang dikunjungi akan ditambah terus menerus sampai jawaban ditemukan. Teori dan implementasi cukup mudah untuk dipahami.

BiDi Search (BiDirectional Search) / Pencarian Dwiarah
Tingkat kesulitan: Sedang
Penggabungan dari BFS (Breadth First Search), DFS (Depth First Search), dan DLS (Depth Limited Search). Pencarian akan dilakukan dari titik awal dan titik tujuan dan akan bertemu di tengah-tengah. Masing-masing algoritma cukup mudah untuk dipahami, tetapi jika digabungkan akan menjadi kesulitan tersendiri, sehingga tingkat kesulitan menjadi sedang.

A* (A-Star)
Tingkat kesulitan: Mudah
Salah satu algoritma yang cukup populer digunakan untuk menyelesaikan permasalahan jalur. Teori dan implementasi cukup mudah untuk dipahami.

Dijkstra
Tingkat kesulitan: Mudah
Salah satu algoritma yang cukup populer digunakan untuk menyelesaikan permasalahan jalur. Teori dan implementasi cukup mudah untuk dipahami.

Boruvka
Tingkat kesulitan: Sulit
Pencarian jalur dilakukan dengan menghubungkan semua titik-titik terpendek yang ditemui, kemudian berlanjut ke titik terpendek yang belum dilalui jalur lain, sampai semua titik terhubung. Implementasi dan proses perhitungan cukup kompleks.

Kruskal
Tingkat kesulitan: Sedang
Pencarian jalur dilakukan dengan menghubungkan masing-masing titik terpendek, kemudian berlanjut ke masing-masing titik terpendek berikutnya, sampai ditemukan bobot dengan nilai paling minimal. Teori nya cukup mudah dipahami, tetapi implementasinya cukup sulit, sehingga algoritma ini berada di tingkat sedang.

Prim
Tingkat kesulitan: Sedang
Pencarian jalur dilakukan dengan menghubungkan 2 titik terpendek, kemudian berlanjut ke titik terpendek berikutnya, sampai semua titik terhubung. Teori nya cukup mudah dipahami, tetapi implementasinya cukup sulit, sehingga algoritma ini berada di tingkat sedang.

Bellman-Ford
Tingkat kesulitan: Sedang
Keunggulan dari algoritma ini adalah dapat mengatasi permasalahan pencarian jalur yang bernilai negatif, karena jarak antar titik tidak dihitung berdasarkan nilai input, tetapi menggunakan perhitungan nilai bobot tersendiri pada masing-masing jalur. Teori dan implementasi tidak mudah, tetapi tidak sesulit algoritma lainnya, sehingga algoritma ini berada di tingkat sedang.

B&B (Branch and Bound)
Tingkat kesulitan: Sedang
Teknik yang digunakan adalah branching, dimana pencarian akan dilakukan secara bercabang menuju semua titik lain, dan dilakukan pengecekan bound pada masing-masing cabang yang terjadi. Teori dan implementasi tidak mudah, tetapi tidak sesulit algoritma lainnya, sehingga algoritma ini berada di tingkat sedang.

Floyd-Warshall
Tingkat kesulitan: Mudah
Algoritma yang paling mudah, dimana semua kemungkinan akan dibandingkan satu per satu untuk menentukan jalur terbaik.

Held-Karp
Tingkat kesulitan: Sulit
Algoritma ini menggunakan perhitungan secara rekursif, dimana pemasalahan akan diselesaikan dari permasalahan terkecil menuju permasalahan terbesar. Proses rekursif yang dilakukan menyebabkan algoritma ini menjadi sulit untuk diimplementasikan.

Johnson
Tingkat kesulitan: Sedang
Penggabungan dari Bellman-Ford dan Dijkstra, dimana Algoritma Bellman-Ford digunakan untuk menghilangkan nilai negatif, kemudian algoritma Dijkstra digunakan untuk pencarian jalur terbaik. Setelah itu, nilai jalur dikembalikan ke nilai semula untuk mendapatkan nilai sebenarnya. Teori dan implementasi tidak mudah, tetapi tidak sesulit algoritma lainnya, sehingga algoritma ini berada di tingkat sedang.

Q-Learning
Tingkat kesulitan: Sedang
Inti perhitungan adalah untuk menghitung matriks Q, yang menyimpan nilai terbaik untuk setiap jalur yang ditemukan. Teori dan implementasi tidak mudah, tetapi tidak sesulit algoritma lainnya, sehingga algoritma ini berada di tingkat sedang.

Algoritma Berbasis Jaringan Saraf

Pada kategori ini, semua algoritma menggunakan sistem jaringan saraf tiruan dalam perhitungannya. Kegunaan algoritma ini biasanya dipakai sebagai pengambilan keputusan. Sama seperti Regresi Logistik, algoritma ini memerlukan algoritma optimasi sebagai teknik pembelajaran, sehingga pembaca mau tidak mau harus mempelajari 2 algoritma, yaitu tentang sistem jaringan saraf itu sendiri dan teknik pembelajaran yang digunakan. Menurut saya, semua sistem jaringan saraf sulit untuk dipelajari, dan ditambah dengan teknik pembelajaran yang harus dilakukan menyebabkan tingkat kesulitan menjadi berlipat ganda.

Perceptron
Tingkat kesulitan: Sulit
Perceptron adalah versi dasar dari sistem jaringan saraf dimana hanya terdapat 1 saraf input dan 1 saraf output. Meskipun versi dasar tetap memiliki implementasi yang sulit.

JST (Jaringan Saraf Tiruan) dengan teknik PSO (Particle Swarm Optimizaion)
Tingkat kesulitan: Sulit
Jaringan saraf tiruan digabung dengan teknik pembelajaran PSO (Particle Swarm Optimization)

JST (Jaringan Saraf Tiruan) dengan teknik EO (Evolutionary Optimization)
Tingkat kesulitan: Sulit
Jaringan saraf tiruan digabung dengan teknik pembelajaran EO (Evolutionary Optimization)

JST (Jaringan Saraf Tiruan) dengan teknik SA (Simulated Annealing)
Tingkat kesulitan: Sulit
Jaringan saraf tiruan digabung dengan teknik pembelajaran SA (Simulated Annealing)

JST (Jaringan Saraf Tiruan) dengan teknik Simplex Optimization
Tingkat kesulitan: Sulit
Jaringan saraf tiruan digabung dengan teknik pembelajaran Simplex Optimization. Simplex Optimization adalah nama lain dari AMO (Amoeba Method Optimization) / Nelder-Mead Method

Back-Propagation
Tingkat kesulitan: Sulit
Jaringan saraf tiruan digabung dengan teknik pembelajaran Gradient Descent. Teknik yang juga digunakan dalam pembahasan Regresi Logistik.

OCR (Optical Character Recognition)
Tingkat kesulitan: Sulit
Algoritma Back-Propagation digunakan untuk mengenali pola karakter baru berdasarkan contoh karakter yang sudah ada

RProp (Resilient Back-Propagation)
Tingkat kesulitan: Sulit
Pengembangan lebih lanjut dari Algoritma Back-Propagation, dimana ada 2 teknik perhitungan utama yang diubah, yaitu teknik pengambilan nilai gradien dan penggunaan bobot delta yang terpisah antara matriks bobot dan bias

DNN (Deep Neural Networks)
Tingkat kesulitan: Sulit
Pengembangan dari sistem jaringan saraf yang biasa, dimana jika pada sistem jaringan saraf yang biasa hanya terdapat 1 layer tersembunyi, maka pada algoritma ini terdapat lebih dari 1 layer tersembunyi

RBF (Radial Basis Function) / Radial Nets
Tingkat kesulitan: Sulit
Struktur algoritma ini mirip dengan struktur jaringan saraf yang biasa, tetapi menggunakan cara perhitungan yang berbeda, dimana nilai bobot akan ditentukan berdasarkan nilai centroid dan nilai width yang harus dihitung sebelumnya.

Pengenalan Pola (Pattern Recognition) dengan teknik Hopfield Network
Tingkat kesulitan: Sulit
Pola baru akan dihitung berdasarkan banyaknya jumlah pola yang cocok pada masing-masing contoh pola. Implementasi jauh lebih mudah dibandingkan algoritma jaringan saraf lainnya, tetapi tetap sulit, dan hasilnya tidak seakurat algoritma jaringan saraf lainnya.

Algoritma Peramalan / Prediksi

Pada kategori ini, semua algoritma digunakan untuk menentukan prediksi nilai data baru berdasarkan data-data yang sudah ada sebelumnya. Menurut saya, sebagian besar Algoritma Peramalan / Prediksi cukup sulit untuk dipelajari.

AdaBoost (Adaptive Boosting)
Tingkat kesulitan: Sulit
Algoritma ini bekerja dengan membuat aturan-aturan yang memiliki tingkat kesalahan tertentu. Kemudian nilai data yang baru akan dihitung dengan menjumlahkan setiap bobot pada aturan yang benar. Implementasi dan proses perhitungan cukup kompleks.

Exponential Smoothing
Tingkat kesulitan: Sedang
Algoritma ini digunakan untuk memprediksi periode berikutnya berdasarkan data-data pada periode sebelumnya. Teorinya cukup sulit untuk dipahami, tetapi implementasinya cukup mudah, sehingga algoritma ini, sehingga algoritma ini berada di tingkat sedang.

Moving Average / Rata-rata Bergerak
Tingkat kesulitan: Mudah
Sama seperti Exponential Smoothing, algoritma ini digunakan untuk memprediksi periode berikutnya berdasarkan data-data pada periode sebelumnya. Teori dan implementasi nya cukup mudah.

Naive Bayes
Tingkat kesulitan: Sulit
Algoritma ini menggunakan Teorema Bayes dengan variabel asumsi kebebasan (independence) diantara masing-masing fitur. Implementasi dan proses perhitungan cukup kompleks.

Pengenalan Pola (Pattern Recognition) dengan Perceptron
Tingkat kesulitan: Sedang
Perceptron yang sudah dibahas pada Kategori Algoritma berbasis Jaringan Saraf akan digunakan untuk menyelesaikan permasalahan pengenalan pola. Teori dan implementasinya tidak sesulit seperti implementasi sebelumnya.

Probit Model (Probability Unit)
Tingkat kesulitan: Sulit
Probit Model sangat mirip dengan Regresi Logistik. Kedua algoritma ini cenderung memberikan hasil yang mirip, dan tentu saja memiliki tingkat kesulitan yang sama. Probit Model biasanya digunakan pada bidang ekonomi dan keuangan, dan Regresi Logistik digunakan pada bidang lainnya. Karena keuda algoritma ini mirip, maka implementasi dan proses perhitungan juga cukup kompleks.

Regresi Linier / Analisis Regresi
Tingkat kesulitan: Sulit
Mirip seperti Analisis Diskriminan, yang menyebabkan Regresi Linier termasuk sulit adalah karena diperlukannya perhitungan operasi matriks, seperti transpos, invers, dan dekomposisi matriks yang semuanya sulit untuk dilakukan.


Regresi Linier dengan Dekomposisi LU
Tingkat kesulitan: Sulit
Teknik ini disebut juga faktorisasi LU, dan yang dilakukan adalah mendekomposisi sebuah matriks A menjadi 2 matriks L dan U. L adalah matriks segitiga bawah dan U adalah matriks segitiga atas.

Regresi Linier dengan Dekomposisi QR
Tingkat kesulitan: Sulit
Teknik ini disebut juga faktorisasi QR, dan yang dilakukan adalah mendekomposisi sebuah matriks A menjadi 2 matriks Q dan R. Q adalah matriks ortogonal dan R adalah matriks segitiga atas. Matriks ortogonal adalah matriks yang matriks yang memenuhi persamaan Q’*Q = I, dimana I adalah matriks identitas, yaitu matriks yang berisi nilai 1 untuk diagonal matriks tersebut.

Regresi Linier dengan Dekomposisi Cholesky
Tingkat kesulitan: Sulit
Teknik ini mendekomposisi sebuah matriks A menjadi sebuah matriks L, yaitu matriks segitiga bawah. Teknik ini juga memiliki batasan bahwa matriks input harus dalam keadaan simetris dan positif definite. Matriks simetris adalah matriks yang hasil transpos sama dengan matriks awal. Matriks positif definite adalah matriks yang semua elemennya bernilai positif.

Regresi Linier dengan Dekomposisi SIngular
Tingkat kesulitan: Sulit
Teknik ini mendekomposisi sebuah matriks A menjadi 3 matriks U, S, dan V. U adalah matriks unitary kiri, yang disebut juga vektor singular kiri, S adalah matriks persegi dengan nilai positif real pada elemen diagonal, dan V adalah matriks unitary kanan, yang disebut juga vektor singular kanan.

Regresi Linier dengan Dekomposisi Eigen
Tingkat kesulitan: Sulit
Teknik ini mendekomposisi sebuah matriks A menjadi 2 matriks V dan D. V adalah matriks persegi yang masing-masing kolomnya berisi eigenvector, dan D adalah matriks persegi dengan nilai pada elemen diagonal adalah merupakan eigenvalue dari masing-masing baris data.

Regresi Linier dengan Dekomposisi Polar
Tingkat kesulitan: Sulit

Teknik ini mendekomposisi sebuah matriks A menjadi 2 matriks U dan P. U adalah matriks unitary, dan P adalah matriks Hermitian positif semi-definitif. Secara kasar, dekomposisi ini membagi A menjadi komponen yang tersebar dalam sumbu axis ortogonal yang diwakili dengan P, dan tingkat rotasi yang diwakili dengan U

Slope One
Tingkat kesulitan: Sedang
Algoritma ini lebih cocok digunakan dalam penentuan rating berdasarkan data-data yang sudah ada. Teori cukup mudah untuk dipahami, tetapi implementasi tidak semudah yang dibayangkan.

Winnow
Tingkat kesulitan: Sulit
Jika diartikan secara langsung, Winnow berarti membuang sesuatu yang tidak diinginkan. Sehingga pengambilan keputusan dilakukan dengan cara mencari data yang paling tidak cocok untuk kemudian dibuang. Implementasi dan proses perhitungan cukup kompleks.

Custom Classifier (tanpa nama)
Tingkat kesulitan: Sulit
Algoritma buatan sendiri sehingga tidak ada jurnal penelitian yang digunakan. Algoritma ini mencampur beberapa teknik algoritma prediksi seperti Adaptive Boosting, Naive Bayes, dan Winnow. Pencampuran tersebut menyebabkan kesulitan tersendiri dalam melakukan implementasi.

Algoritma Pengambilan Keputusan

Pada kategori ini, semua algoritma digunakan untuk mengambil keputusan. Perbedaan dengan Algoritma Peramalan / Prediksi adalah algoritma ini tidak digunakan untuk meramal, melainkan untuk mendapatkan jawaban menggunakan perhitungan tertentu. Biasanya digunakan untuk menghitung nilai / skor. Menurut saya, Tingkat kesulitan algoritma ini cukup rata. Ada yang mudah dan sulit untuk dipelajari.

AHP (Analytic Hierarchy Process)
Tingkat kesulitan: Mudah
Nilai akhir dihitung dengan menggunakan Eigenvector. Teori dan Implementasi cukup mudah untuk dipahami.

Dempster-Shafer
Tingkat kesulitan: Sedang
Nilai akhir dihitung dari tingkat kepercayaan kriteria yang memiliki gabungan data tertentu. Teori cukup mudah untuk dipahami, tetapi implementasi tidak semudah yang dibayangkan.

AIS (Artificial Immune System) dengan teknik Negative Selection
Tingkat kesulitan: Sulit
Nilai akhir ditentukan dari apakah limfosit terstimulasi karena mendeteksi pola berbahaya sebanyak beberapa kali atau tidak. Implementasi dan proses perhitungan cukup kompleks.

Forward Chaining / Backward Chaining
Tingkat kesulitan: Mudah
Pengambilan keputusan diambil dengan cara pemilihan jawaban yang memenuhi keputusan-keputusan sebelumnya. Forward Chaining melakukan pemilihan dimulai dari data awal, sedangkan Backward Chaining melakukan pemilihan dimulai dari hasil kesimpulan yang ada. Teori dan Implementasi cukup mudah untuk dipahami.

Fuzzy Logic

Algoritma ini menggunakan Teori Fuzzy, dimana dalam kasus benar/salah, sebuah data dapat dikatakan benar meskipun hanya memiliki sebagian nilai benar dan sebagian nilai salah. Sama halnya dalam pemilihan warna, sebuah warna dapat dikatakan sebagai merah meskipun warna tersebut memiliki sebagian nilai biru dan kuning didalamnya.

FIS (Fuzzy Inference System): Tipe Mamdani
Tingkat kesulitan: Sulit
Salah satu Fuzzy yang populer digunakan. Nilai akhir dihitung menggunakan Teori Fuzzy yang ditemukan oleh Mamdani. Implementasi dan proses perhitungan cukup kompleks.

FIS (Fuzzy Inference System): Tipe Sugeno
Tingkat kesulitan: Sulit
Salah satu Fuzzy yang populer digunakan. Nilai akhir dihitung menggunakan Teori Fuzzy yang ditemukan oleh Sugeno. Implementasi dan proses perhitungan cukup kompleks.

FIS (Fuzzy Inference System): Tipe Tsukamoto
Tingkat kesulitan: Sedang

Fuzzy tipe ini jarang digunakan untuk menyelesaikan permasalahan karena hasilnya kalah akurat dengan kedua Fuzzy sebelumnya, tetapi implementasinya jauh lebih mudah dibandingkan kedua Fuzzy tersebut.

Khi-kuadrat / Chi-squared
Tingkat kesulitan: Sedang
Nilai akhir dihitung menggunakan teori Khi-Kuadrat dalam statistika. Teori dan implementasi tidak mudah, tetapi tidak sesulit algoritma yang lain.

Kompresi Data

Algoritma ini berfokus pada kompresi data, yaitu bagaimana cara untuk menghasilkan sebuah output data dengan ukuran yang lebih rendah dari ukuran data awal, tetapi hasil kompresi tidak menghilangkan semua nilai data yang terkandung pada data awal, sehingga sewaktu data dikembalikan seperti semula, pengembalian data berhasil 100% dan data kembali seperti semula

Rice Coding / Rice-Golomb Coding
Tingkat kesulitan: Sedang
Rice Coding menggunakan sistem yang diperoleh dari teknik Golomb Coding, dimana teknik ini dapat menghasilkan kode prefix yang lebih mudah, tetapi dengan kemungkinan untuk tidak optimal. Ketika Golomb Coding memiliki parameter yang dapat diubah menjadi sebuah nilai positif apa saja, Rice Coding memiliki parameter yang dapat diubah hanya menjadi kelipatan dari angka 2 saja. Hal ini menyebabkan teknik Rice Coding mudah diimplementasikan dalam kasus aritmatika biner secara efisien.

RLE (Run Length Encoding)
Tingkat kesulitan: Sedang
RLE (Run Length Encoding) adalah bentuk paling mudah dari teknik kompresi data lossless dimana sederetan data dengan nilai yang sama secara berurutan akan disimpan menjadi sebuah nilai data dan jumlahnya. Algoritma ini sangat berguna pada data yang memiliki banyak data dengan nilai yang sama secara berurutan seperti file ikon, gambar garis, dan animasi. Algoritma ini tidak cocok diterapkan pada data normal karena akan hal tersebut akan mengakibatkan semakin bertambahnya ukuran data kompresi dibandingkan data awalnya

Shannon-Fano Coding
Tingkat kesulitan: Sedang
Shannon-Fano Coding adalah sebuah teknik untuk membuat kode prefiks berdasarkan beberapa set simbol dan kemungkinan simbol tersebut. Algoritma ini tidak mencapai panjang kode optimal yang seharusnya, tetapi algoritma ini menjamin bahwa semua panjang huruf kode adalah dalam 1 bit pada ide logPX

Huffman Coding
Tingkat kesulitan: Sedang

Huffman Coding adalah sebuah kode prefiks yang sudah teroptimasi yang biasanya digunakan pada kompresi data lossless. Algoritma ini menggunakan metode khusus untuk memilih perwakilan dari masing-masing simbol, yang akhirnya menghasilkan sebuah kode prefiks. Algoritma ini merupakan metode yang sangat terkenal untuk membuat kode prefiks sehingga “Huffman Code” digunakan secara luas sebagai sinonim dari “kode prefiks” bahkan untuk sesuatu skrip yang tidak dihasilkan dari perhitungan Huffman Coding

Levenshtein Distance / Edit Distance
Tingkat kesulitan: Mudah
Biasanya digunakan sebagai sistem autocomplete pada mesin pencarian. Digunakan untuk memprediksikan kata yang paling mendekati dengan kata yang sedang diketik. Teori dan Implementasi cukup mudah untuk dipahami.

Monte Carlo
Tingkat kesulitan: Mudah
Nilai akhir dihitung dari rata-rata contoh nilai acak yang dilakukan selama beberapa perulangan tertentu. Teori dan Implementasi cukup mudah untuk dipahami.

Pencarian String

Algoritma ini berfokus pada pencarian string, dimana tujuan utama dari algoritma adalah melakukan pencarian string (dalam kasus ini dinamakan sebagai pola) apakah ditemukan di dalam kumpulan string lain dengan ukuran yang lebih besar.

Naive String Search
Tingkat kesulitan: Mudah
Naive String adalah pencarian yang paling mudah diterapkan, tetapi merupakan pencarian yang paling tidak efisien, dimana pencarian dilakukan dengan cara pengecekan setiap posisi yang ada. Jadi pengecekan dimulai dari posisi pertama apakah ditemukan pola yang dimaksud, dilanjutkan ke posisi kedua, ketiga, dan seterusnya.

Rabin-Karp
Tingkat kesulitan: Sedang
Untuk mempercepat pencarian pola dalam kalimat, Rabin-Karp menggunakan teknik fungsi hash. Fungsi ini mengubah setiap string menjadi angka, yang dinamakan nilai hash. Apabila 2 string adalah sama persis, maka nilai hashnya juga akan sama, sehingga pencarian string dapat diturunkan dengan cara menghitung nilai hash dari pola, dan kemudian melakukan pencarian pola dengan nilai hash yang sama pada data input.

FSA (Finite State Automaton) based Search
Tingkat kesulitan: Sedang
Algoritma ini melakukan pencarian dengan cara menyusun DFA (Deterministic Finite Automaton) yang mengenali string yang disimpan. Penyusunan DFA membutuhkan waktu yang cukup lama, tetapi pencarian akan menjadi cepat setelah sistem telah terbentuk. Pendekatan ini biasanya sering digunakan secara umum pada pencarian Regular Expression (REGEX)

KMP (Knuth–Morris–Pratt)
Tingkat kesulitan: Sedang
Knuth–Morris–Pratt menggunakan pendekatan pengamatan bahwa ketika sebuah ketidakcocokan terjadi, data input tersebut akan mengambil informasi tertentu untuk menentukan dimanakah selanjutnya pencarian dilakukan, dengan demikian pengecekan dapat dilakukan secara tidak berurutan tetapi tetap akan melewati pengecekan string yang sudah dicek sebelumnya.

Boyer-Moore Search
Tingkat kesulitan: Sedang
Boyer-Moore adalah algoritma pencarian string yang paling efisien dan sudah menjadi standar dari sistem pencarian string. Algoritma ini melakukan pendeteksian pola dalam string dengan melakukan perbandingan karakter pada deretan yang berbeda. Proses ini dinamakan Shift, dan aturan shift dihitung dengan menerapkan 2 aturan, yaitu aturan bad character dan aturan good suffix. Nilai maksimum dari panjang shift yang dapat dilakukan dihitung dengan aturan ini, kemudian pencarian karakter dilakukan dari awal sampai dengan pergeseran shift sebanyak panjang shift.

Bitap
Tingkat kesulitan: Sedang
Bitap akan memberitahu apakah data input memliki pola yang “kira-kira sama dengan” pola yang sedang dicari, dimana perkiraan ditentukan dengan menggunakan Levenshtein Distance. Algoritma dimulai dengan melakukan perhitungan bitmask yang mengandung 1 bit untuk setiap elemen dalam pola, kemudian pencarian akan dilakukan dengan cara operasi bitwise, dimana pencarian tersebut sangat cepat dilakukan.

Fuzzy Bitap
Tingkat kesulitan: Sedang
Bitap akan memberitahu apakah data input memliki pola yang “kira-kira sama dengan” pola yang sedang dicari, dimana perkiraan ditentukan dengan menggunakan Levenshtein Distance. Algoritma dimulai dengan melakukan perhitungan bitmask yang mengandung 1 bit untuk setiap elemen dalam pola, kemudian pencarian akan dilakukan dengan cara operasi bitwise, dimana pencarian tersebut sangat cepat dilakukan.

Aho-Corasick
Tingkat kesulitan: Sedang

Aho-Corasick adalah algoritma berbasis kamus yang mencari beberapa set pola pada data input. Pencocokan juga dilakukan secara bersamaan, sehingga kejadian pencocokan dapat ditemukan selama beberapa kali untuk setiap substring yang terdapat dalam data input. Secara informal, algoritma ini melakukan penyusunan FSM (Finite State Machine) yang menyerupai pohon dengan beberapa link diantara node internalnya. Link internal ini memungkinkan perpindahan secara cepat diantara string yang tidak cocok pada cabang lain yang memliki prefiks yang sama. Hal ini menyebabkan sistem dapat berpindah secara cepat tanpa perlu melakukan backtracking / penelusuran ulang.

Profile Matching
Tingkat kesulitan: Mudah
Pencarian nilai akhir dilakukan dengan perhitungan nilai bobot yang diambil dari selisih data dengan nilai terbaik. Teori dan Implementasi cukup mudah untuk dipahami.

SAW (Simple Additive Weighting)
Tingkat kesulitan: Mudah
Nilai akhir ditentukan dari penambahan nilai bobot, yang dihitung dari nilai data tersebut dibagi dengan nilai terbaik. Teori dan Implementasi cukup mudah untuk dipahami.

TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution)
Tingkat kesulitan: Mudah
Nilai akhir ditentukan dari nilai solusi ideal positif dan solusi ideal negatif. Teori dan Implementasi cukup mudah untuk dipahami.

Algoritma Enkripsi

Pada kategori ini, semua algoritma digunakan untuk melakukan enkripsi dari sebuah obyek. Tujuan dari enkripsi adalah agar obyek tersebut tidak dapat diketahui isinya oleh orang lain yang tidak memiliki hak untuk melihat obyek tersebut, sehingga isi obyek tersebut hanya dapat diketahui oleh pengirim dan penerima obyek. Nantinya penerima obyek akan memiliki kunci yang diinformasikan oleh pengirim obyek untuk membuka obyek, sehingga penerima obyek dapat melihat isi yang sesungguhnya dari obyek tersebut.

AES (Advanced Encryption Standard)
Tingkat kesulitan: Mudah
Algoritma ini beroperasi dengan menggunakan urutan matriks bertipe byte berukuran 4×4, yang dinamakan sebagai state. AES kemudian melakukan perulangan transformasi untuk mengkonversi input (dinamakan teks mentah) menjadi output (dinamakan teks cipher) sesuai dengan besarnya ukuran byte yang digunakan.

Blowfish
Tingkat kesulitan: Sulit
Blowfish memiliki ukuran blok 64 bit dan panjang key dari 32 sampai 448 bit. Blowfish menggunakan cipher Feistel dan menggunakan parameter SBOX yang sangat besar dan nilainya bergantung dari key. Strukturnya sangat mirip dengan struktur CAST-128, yang menggunakan SBOX dengan nilai tetap.

Twofish
Tingkat kesulitan: Sulit
Twofish memiliki ukuran blok 128 bit dan panjang key sampai pada 256 bit. Fitur unik dari Twofish adalah penggunaan parameter SBOX yang sangat besar dan bergantung dari key. Setengah bagian dari bit key akan digunakan sebagai key enkripsi dan setengah sisanya akan digunakan untuk memodifikasi data pada proses enkripsi. Twofish juga banyak menggunakan elemen lain seperti teknik PHT (pseudo-Hadamard Transform), struktur Feistel, dan matriks MDS (Maximum Distance Seperable).

DES (Data Encryption Standard)
Tingkat kesulitan: Mudah
Merupakan pendahulu dari AES (Advanced Encryption Standard), dan dulunya pernah menjadi algoritma enkripsi yang populer dipakai. Tetapi ukuran key yang hanya berukuran 56 bit menjadikan algoritma ini dianggap semakin lama semakin kurang aman untuk digunakan, sampai akhirnya ditemukan AES untuk memperbaiki celah keamanan algoritma ini.

3DES (Triple Data Encryption Standard)
Tingkat kesulitan: Mudah
Pada awal mulanya DES (Data Encryption Standard) dirancang dengan menggunakan key berukuran 56 bit, dan ukuran tersebut dirasa cukup untuk menjalankan teknik enkripsi yang aman. Tetapi seiring berjalannya waktu, maka kemampuan perhitungan komputer semakin bertambah sehingga menjadikan cara membobol keamanan data dengan cara brute force menjadi lebih mungkin untuk dilakukan. Algoritma ini menyediakan solusi sederhana tanpa perlu menciptakan algoritma yang baru, yaitu menjalankan Algoritma DES (Data Encryption Standard) sebanyak 3 kali untuk masing-masing blok data. Proses tersebut menyebabkan ukuran key bertambah dari 56 bit menjadi 168 bit, dan menjadikan algoritma ini lebih aman dibanding pendahulunya.

Rijndael
Tingkat kesulitan: Mudah
Sama dengan AES (Advanced Encryption Standard) yang sudah dijelaskan sebelumnya, hanya perbedaan dengan implementasi sebelumnya adalah kata kunci yang digunakan dapat berjumlah bebas.

RC2 (Ron’s Code / Rivest’s Cipher)
Tingkat kesulitan: Mudah
RC2 menggunakan blok cipher 64 bit dan ukuran key yang bervariasi. Struktur jaringan yang digunakan adalah jaringan Feistel, dengan perulangan sebanyak 18 kali, dengan 16 kali proses Mixing dan 2 kali proses Mashing.

RC4 (Ron’s Code / Rivest’s Cipher)
Tingkat kesulitan: Sulit
Merupakan pengembangan dari RC2 dan dikembangkan oleh penemu algoritma tersebut yaitu Ronald Rivest. Perbedaan dengan algoritma sebelumnya adalah ukuran blok, ukuran key, dan jumlah round yang dilakukan, dengan nilai yang direkomendasikan adalah ukuran blok 64 bit, ukuran key 128 bit, dan jumlah round 12 kali.

Skipjack
Tingkat kesulitan: Sulit
Skipjack adalah algoritma yang dikembangkan oleh NSA (National Security Agency), tetapi sekarang sudah tidak dipakai lagi karena sudah dianggap kurang memenuhi syarat keamanan NSA; menggunakan key 80 bit untuk melakukan enkripsi dan dekripsi blok 64 bit, dan menggunakan struktur jaringan Feistel dengan jumlah round 32 kali. Algoritma ini dulunya digunakan untuk mengirimkan paket data pada saat melakukan percakapan di telepon.

Serpent
Tingkat kesulitan: Sulit
Serpent memiliki ukuran blok 128 bit dan mendukung ukuran key 128, 192, dan 256 bit. Teknik cipher yang dilakukan menggunakan struktur jaringan substitusi permutasi dengan jumlah round 32 kali pada 4 blok dengan ukuran masing-masing 32 bit. Dalam masing-masing round akan dilakukan penerapan 1 dari 8 SBOX berukuran 4 bit x 4 bit sebanyak 32 kali secara paralel.

TEA (Tiny Encryption Algorithm)
Tingkat kesulitan: Sulit
TEA memiliki ukuran blok 32 bit unsigned (yang dapat diperoleh dari blok data 64 bit) dan menggunakan ukuran key 128 bit. Algoritma ini menggunakan jaringan Feistel dengan jumlah round yang direkomendasikan adalah 64 kali.

XTEA (eXtended Tiny Encryption Algorithm)
Tingkat kesulitan: Sulit
Merupakan pengembangan dari TEA (Tiny Encryption Algorithm) dan dikembangkan untuk memperbaiki kelemahan dari algoritma tersebut. Perbedaan dengan algoritma sebelumnya adalah penggunakan key yang lebih kompleks dan pengaturan urutan dari operasi shift, XOR, dan penambahan.

Algoritma Pengolahan Citra

Pada kategori ini, semua algoritma digunakan untuk melakukan pengolahan pada citra. Hanya ada 2 sub bagian pada kategori ini, yaitu pengolahan untuk melakukan konversi data dari bentuk spasial menjadi bentuk frekuensi dan sebaliknya (mirip seperti proses enkripsi – dekripsi), dan pengolahan untuk melakukan deteksi tepi pada citra.

Pengolahan Citra
Tingkat kesulitan: Sedang
Ini bukanlah sebuah algoritma, hanya melakukan proses pengolahan gambar secara sederhana, misalnya mode menggambar, ubah ukuran, potong gambar, dan lain-lain.

DCT (Discrete Cosine Transform)
Tingkat kesulitan: Sulit
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Implementasi dan proses perhitungan cukup kompleks.

DFT (Discrete Fourier Transform)
Tingkat kesulitan: Sulit
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Implementasi dan proses perhitungan cukup kompleks.

DST (Discrete Sine Transform)
Tingkat kesulitan: Sulit
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Implementasi dan proses perhitungan cukup kompleks.

FFT (Fast Fourier Transform)
Tingkat kesulitan: Sulit
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Implementasi dan proses perhitungan cukup kompleks.

DHWT (Discrete Haar Wavelet Transform)
Tingkat kesulitan: Sulit
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Implementasi dan proses perhitungan cukup kompleks.

Deteksi Tepi dengan Operator Sobel
Tingkat kesulitan: Sedang
Algoritma ini akan melakukan perhitungan perkiraan gradien dari intensitas sebuah citra.

Deteksi Tepi dengan Operator Prewitt
Tingkat kesulitan: Sedang
Algoritma ini akan melakukan perhitungan perkiraan gradien dari intensitas sebuah citra.

Deteksi Tepi dengan Operator Roberts cross
Tingkat kesulitan: Sedang
Algoritma ini akan melakukan perhitungan perkiraan gradien dari intensitas sebuah citra.

Deteksi Tepi dengan Operator Kirsch
Tingkat kesulitan: Sedang
Algoritma ini akan melakukan perhitungan perkiraan gradien dari intensitas sebuah citra.

[Bonus Algoritma]

Ini bukan sebuah kategori khusus melainkan hanya kumpulan algoritma yang tidak saya bahas menggunakan bahasa pemrograman Visual Basic .NET disebabkan karena kesulitan dalam mengkonversi ke dalam bahasa Visual Basic .NET sebagai bahasa pemrograman yang paling saya kuasai. Disini saya hanya mempelajari dan memahami alur program yang telah ada. Menurut saya, semua algoritma ini sulit untuk dipelajari, karena tidak diimplementasikan dalam bahasa utama yang paling saya kuasai.

BA (Bat Algorithm)
Algoritma optimasi yang meniru tingkah laku dari kelelawar untuk menemukan tempat terbaik untuk didiami.

MOBA (Multi-Objective Bat Algorithm)
Pengembangan dari BA (Bat Algorithm) yang digunakan untuk melakukan optimasi dengan lebih dari 1 tujuan / batasan yang harus dipenuhi.

BSA (Backtracking Search Algorithm)
Backtracking adalah istilah untuk mencari solusi dengan cara membuat calon solusi baru secara terus menerus, dan calon solusi yang lebih baik akan menggantikan solusi yang sudah dianggap tidak dapat menghasilkan solusi yang lebih baik.

CA (Cultural Algorithm)
Algoritma optimasi yang meniru pola kultur situasional.

CMA-ES (Covariance Matrix Adaptation – Evolution Strategy)
Algoritma optimasi yang menggunakan kovarians dari matriks sebagai dasar untuk mencari nilai terbaik.

Conjugate Gradient
Salah satu cara pengambilan keputusan yang mampu melakukan perhitungan lebih cepat daripada Regresi Linier / Analisis Regresi

CSO (Cuckoo Search Optimization)
Algoritma optimasi yang meniru tingkah laku spesies Cuckoo dalam berkembang biak.

DA (Dragonfly Algorithm)
Algoritma ini meniru tingkah laku dari hewan capung dalam mencari sumber makanan.

DSA (Differential Search Algorithm): B-DSA (BIJECTIVE DSA)
Algoritma optimasi yang menggunakan teknik differensial. Pada Variasi B-DSA, saat proses morfogenesis, setiap individu atau superorganisme akan bergerak menuju ke arah superorganisme lain secara acak

DSA (Differential Search Algorithm): S-DSA (SURJECTIVE DSA)
Algoritma optimasi yang menggunakan teknik differensial. Pada Variasi S-DSA, saat proses morfogenesis, setiap individu atau superorganisme akan bergerak menuju ke arah superorganisme yang cukup baik.

DSA (Differential Search Algorithm): E1-DSA (Elitist DSA jenis pertama)
Algoritma optimasi yang menggunakan teknik differensial. Pada Variasi E1-DSA (ELITIST DSA jenis pertama), saat proses morfogenesis, setiap individu atau superorganisme akan menuju ke salah satu superorganisme acak dengan indeks yang cukup baik

DSA (Differential Search Algorithm): E2-DSA (Elitist DSA jenis kedua)
Algoritma optimasi yang menggunakan teknik differensial. Pada Variasi E2-DSA (ELITIST DSA jenis kedua), saat proses morfogenesis, setiap individu atau superorganisme akan menuju ke salah satu superorganisme acak dengan indeks terbaik

DSA (Differential Search Algorithm): Hybrid-DSA
Algoritma optimasi yang menggunakan teknik differensial. Hybrid-DSA adalah perpaduan antara metode B-DSA (BIJECTIVE DSA) dan S-DSA (SURJECTIVE DSA). Sehingga dalam setiap perulangan akan digunakan salah satu dari metode tersebut

Edmonds
Algoritma pencarian jalur yang dapat digunakan untuk menghitung jalur searah, yaitu biaya antara titik A dan titik B berbeda dengan biaya antara titik B dan titik A.

EM (Expectation–Maximization)
Algoritma pengelompokan data yang dihitung menggunakan 2 proses utama, yaitu proses Expectation (E) dan proses Maximization (M).

Fisherface
Algoritma ini melakukan pengenalan wajah baru berdasarkan data wajah yang sudah ada.

FPAO (Flower Pollination Algorithm Optimization)
Algoritma optimasi yang meniru tingkah laku serangga dalam melakukan penyerbukan

Fuzzy AHP
Penggabungan antara Fuzzy dan AHP (Analytic Hierarchy Process)

Fuzzy k-NN (k-Nearest Neighbors)
Penggabungan antara Fuzzy dan k-NN (k-Nearest Neighbors)

Jonker-Volgenant
Pengembangan dari Kuhn-Munkres / Hungaria yang sudah dijelaskan sebelumnya.

K-Medoids Clustering
Algoritma pengelompokan data yang memiliki kemiripan dengan K-Means Clustering, tetapi terdapat perbedaan pada beberapa perhitungan.

Kalman Filter
Algoritma ini biasanya digunakan untuk melakukan estimasi data sebenarnya berdasarkan data observasi yang mengandung noise dan beberapa faktor ketidaktepatan lainnnya.

Extended Kalman Filter
Pengembangan dari Kalman Filter, dimana algoritma ini dapat digunakan dalam permasalahan non-linier.

Unscented Kalman Filter
Algoritma ini bekerja dengan menggunakan data sample yang disebut dengan sigma yang kemudian akan dilakukan proses transformasi Unscented untuk mendapatkan estimasi rata-rata dan kovarians non-linier.

Kuhn-Munkres / Hungaria
Merupakan salah satu algoritma yang digunakan dalam pencarian pohon / graf. Alternatif lain yang sudah dibahas sebelumnya adalah Boruvka / Kruskal / Prim.

Levenberg-Marquardt / Levenberg-Marquardt-Fletcher
Algoritma ini biasa digunakan dalam menyelesaikan permasalahan nonlinier yang menggunakan prinisip pencarian nilai minimum berdasarkan jumlah kuadrat terendah.

Mean Shift
Algoritma pengelompokan data dimana setiap rata-rata (mean) dalam sebuah kelompok akan selalu digeser (shift) sampai tidak ada data yang bergeser terlalu banyak.

Pengolahan Citra dengan Mean Shift
Penerapan algoritma Mean Shift dalam melakukan pengolahan citra, yaitu segmentasi gambar. Mirip dengan FCM (Fuzzy C-Means) Clustering.

Pengenalan Wajah dengan Eigenface
Algoritma ini melakukan pengenalan wajah baru berdasarkan data wajah yang sudah ada.

Regresi Kernel
Tujuan utama dari Regresi Kernel adalah untuk menemukan hubungan / relasi non-linier diantara pasangan peubah acak x dan y.

Regresi Kernel Multivariate
Pengembangan dari Regresi Kernel, dimana keunggulannya adalah jumlah peubah acak yang digunakan bisa lebih dari 1.

Regresi Kernel Lokal Linier
Pengembangan dari Regresi Kernel, dimana perbedaannya adalah untuk meningkatkan performa regresi pada bagian awal dan akhir data.

SCE (Shuffled Complex Evolution)
Algoritma optimasi yang menggunakan prinsip evolusi dari obyek kompleks.

SFLA (Shuffled Frog Leaping Algorithm)
Algoritma optimasi yang meniru tingkah laku katak untuk melompati katak yang lain.

Spectral Clustering: Tipe Matriks Kemiripan (A)
Algoritma pengelompokan data yang berdasarkan pada Eigen Vector dan Eigen Value. Teknik yang digunakan dalam perhitungan adalah menggunakan matriks kemiripan untuk mendapatkan Eigen Vector.

Spectral Clustering: Tipe Matriks Laplacian (L)
Algoritma pengelompokan data yang berdasarkan pada Eigen Vector dan Eigen Value. Teknik yang digunakan dalam perhitungan adalah menggunakan matriks Laplacian untuk mendapatkan Eigen Vector.

Spectral Clustering: Tipe Matriks Normalisasi Laplacian (NL)
Algoritma pengelompokan data yang berdasarkan pada Eigen Vector dan Eigen Value. Teknik yang digunakan dalam perhitungan adalah menggunakan matriks Normalisasi Laplacian untuk mendapatkan Eigen Vector.

Spectral Clustering: Tipe Matriks Q
Algoritma pengelompokan data yang berdasarkan pada Eigen Vector dan Eigen Value. Teknik yang digunakan dalam perhitungan adalah menggunakan matriks Q, yang diperoleh dari matriks normalisasi Eigen Vector.

SVR (Support Vector Regression)
Merupakan perbaikan dari Regresi Linier / Analisis Regresi

Transformasi Wavelet / Wavelet Transform

Berikut adalah algoritma yang menggunakan teknik wavelet dalam melakukan proses perhitungan.

BWT (Berkeley Wavelet Transform)
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya.

DWT (Discrete Wavelet Transform)
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya.

Gabor Filter
Algoritma ini melakukan pengenalan wajah baru berdasarkan data wajah yang sudah ada.

Gabor Filter dengan teknik GDA (Generalized Discriminant Analysis)
Pengembangan lebih lanjut dari Gabor Filter, yaitu dengan menambahkan sebuah metode yang dinamakan GDA (General Discriminant Analysis).

Kekre’s Transform
Algoritma ini melakukan pengenalan wajah baru berdasarkan data wajah yang sudah ada.

LWT (Lifting Wavelet Transform) dengan filter CDF 9/7
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Dalam kasus ini filter wavelet yang digunakan adalah filter Cohen-Daubechies-Feauveau 9/7 atau biasa disingkat dengan CDF 9/7. Filter ini merupakan filter yang paling umum digunakan dalam proses Lifting.

LWT (Lifting Wavelet Transform) dengan filter Spline 5/3
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya. Dalam kasus ini filter wavelet yang digunakan adalah filter Spline 5/3. Filter ini merupakan salah satu alternatif yang dapat digunakan dalam proses Lifting.

MSWTD (Multiscale Wavelet Transform Decomposition)
Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya.

MSWPD (Multiscale Wavelet Packet Decomposition)

Salah satu cara melakukan transformasi terhadap gambar untuk dibandingkan dengan gambar lainnya.

Top Ranking

Masih bingung dalam menentukan pilihan algoritma yang tepat? Berikut adalah beberapa algoritma dengan jumlah download modul / skrip yang paling banyak. Jumlah download ini saya jadikan sebagai acuan algoritma mana saja yang populer / lebih banyak dicari.

1. GWO (Grey Wolf Optimizer)
Tingkat kesulitan: Sulit
Bulan pos terbit: Desember 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 2,566
Jumlah download modul / skrip sampai bulan ini: 2,568

2. Fuzzy AHP
Bulan pos terbit: Desember 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 1,232
Jumlah download modul / skrip sampai bulan ini: 1,235

3. PSO (Particle Swarm Optimization)
Tingkat kesulitan: Sulit
Bulan pos terbit: Agustus 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 1,217
Jumlah download modul / skrip sampai bulan ini: 1,226

4. LBP (Local Binary Pattern)
Bulan pos terbit: Agustus 2016
Jumlah download modul / skrip sampai bulan sebelumnya: 1,075
Jumlah download modul / skrip sampai bulan ini: 1,076

5. ACO (Ant Colony Optimization)
Tingkat kesulitan: Sulit
Bulan pos terbit: Agustus 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 1,016
Jumlah download modul / skrip sampai bulan ini: 1,020

6. K-Means Clustering
Tingkat kesulitan: Sulit
Bulan pos terbit: Agustus 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 969
Jumlah download modul / skrip sampai bulan ini: 970

7. K-Medoids Clustering
Bulan pos terbit: November 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 965
Jumlah download modul / skrip sampai bulan ini: 965

8. GA (Genetic Algorithm) / Algoritma Genetika
Tingkat kesulitan: Sulit
Bulan pos terbit: April 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 956
Jumlah download modul / skrip sampai bulan ini: 958

9. Pengenalan Wajah dengan Eigenface
Bulan pos terbit: Oktober 2015
Jumlah download modul / skrip sampai bulan sebelumnya: 947
Jumlah download modul / skrip sampai bulan ini: 949

* Terakhir diupdate: Januari 2024



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada pertanyaan mengenai algoritma-algoritma diatas, silahkan berikan komentar Anda pada masing-masing pos algoritma yang dapat anda akses dengan melakukan klik pada judul algoritma yang ingin anda tanyakan.