Fuzzy C-Means

Fuzzy C-Means (FCM): Contoh Perhitungan Clustering Lengkap

Diterbitkan 26 September 2026

Fuzzy C-Means (FCM) adalah algoritma clustering berbasis fuzzy yang memungkinkan satu data memiliki derajat keanggotaan pada lebih dari satu cluster. Berbeda dengan K-Means yang menempatkan satu data hanya pada satu cluster, FCM menghasilkan nilai membership antara 0 sampai 1 untuk setiap data terhadap setiap cluster.

Tutorial ini membahas Fuzzy C-Means secara lengkap menggunakan contoh enam data dua dimensi dan dua cluster. Perhitungan dimulai dari inisialisasi matriks membership, menghitung pusat cluster, menghitung jarak, memperbarui membership, menghitung fungsi objektif, melakukan iterasi sampai konvergen, hingga menentukan cluster dominan setiap data.


Daftar Isi


Pengertian Fuzzy C-Means

Fuzzy C-Means adalah algoritma clustering yang menggunakan konsep fuzzy membership.

Jika terdapat:

Data A

pada FCM data tersebut dapat memiliki:

Cluster 1 = 0.75
Cluster 2 = 0.25

Artinya Data A lebih dekat atau lebih cocok dengan Cluster 1, tetapi masih mempunyai sebagian keanggotaan pada Cluster 2.

Untuk setiap data \(i\):

\[ \sum_{k=1}^{c}u_{ik}=1 \]

dengan:

  • \(u_{ik}\) = membership data ke-\(i\) pada cluster ke-\(k\),
  • \(c\) = jumlah cluster.

Nilai membership memenuhi:

\[ 0\leq u_{ik}\leq1 \]

Konsep Dasar FCM

FCM mencari pusat cluster dan membership secara berulang.

Alurnya:

Data
↓
Inisialisasi Membership
↓
Hitung Pusat Cluster
↓
Hitung Jarak Data ke Pusat
↓
Update Membership
↓
Hitung Fungsi Objektif
↓
Cek Konvergensi
↓
Ulangi jika belum konvergen

Pusat cluster tidak dihitung menggunakan rata-rata biasa, tetapi menggunakan membership yang dipangkatkan dengan parameter fuzziness \(m\).

Data dengan membership tinggi memberikan pengaruh yang lebih besar terhadap posisi pusat cluster.


Perbedaan FCM dan K-Means

K-Means menggunakan hard clustering.

Contoh:

A1 → Cluster 1

FCM menggunakan soft atau fuzzy clustering.

Contoh:

A1:
Cluster 1 = 0.83
Cluster 2 = 0.17

Perbandingan:

Aspek Fuzzy C-Means K-Means
Keanggotaan Fuzzy Tegas
Nilai membership 0 sampai 1 0 atau 1
Satu data pada banyak cluster Bisa Tidak
Pusat cluster Weighted centroid Mean biasa
Parameter tambahan Fuzziness \(m\) Tidak
Interpretasi batas cluster Lebih fleksibel Tegas

Parameter Fuzzy C-Means

Parameter penting:

Parameter Keterangan
\(c\) Jumlah cluster
\(m\) Fuzziness exponent
\(\varepsilon\) Batas perubahan membership
MaxIter Maksimum iterasi
\(U\) Matriks membership
\(V\) Matriks pusat cluster

Nilai \(m\) harus:

\[ m>1 \]

Nilai yang sering digunakan untuk contoh dasar adalah:

\[ m=2 \]

Rumus Pusat Cluster

Pusat cluster ke-\(k\):

\[ v_k = \frac{ \sum_{i=1}^{n} u_{ik}^{m}x_i }{ \sum_{i=1}^{n} u_{ik}^{m} } \]

Jika data memiliki beberapa atribut:

\[ v_{kj} = \frac{ \sum_{i=1}^{n} u_{ik}^{m}x_{ij} }{ \sum_{i=1}^{n} u_{ik}^{m} } \]

Keterangan:

  • \(v_{kj}\) = pusat cluster \(k\) pada atribut \(j\),
  • \(u_{ik}\) = membership data \(i\) pada cluster \(k\),
  • \(m\) = fuzziness,
  • \(x_{ij}\) = nilai data \(i\) pada atribut \(j\).

Rumus Membership

Setelah pusat cluster diperoleh, membership diperbarui dengan:

\[ u_{ik} = \frac{ 1 }{ \sum_{j=1}^{c} \left( \frac{ \|x_i-v_k\| }{ \|x_i-v_j\| } \right)^{\frac{2}{m-1}} } \]

Untuk:

\[ m=2 \]

pangkat menjadi:

\[ \frac{2}{2-1}=2 \]

sehingga:

\[ u_{ik} = \frac{ 1 }{ \sum_{j=1}^{c} \left( \frac{d_{ik}}{d_{ij}} \right)^2 } \]

Fungsi Objektif FCM

Fungsi objektif FCM:

\[ J_m = \sum_{i=1}^{n} \sum_{k=1}^{c} u_{ik}^{m} \|x_i-v_k\|^2 \]

Tujuan algoritma adalah meminimalkan fungsi objektif tersebut.

Secara umum:

iterasi berjalan
↓
pusat cluster semakin stabil
↓
membership semakin stabil
↓
fungsi objektif mendekati minimum lokal

Kondisi Konvergensi

Salah satu kondisi berhenti:

\[ \max |u_{ik}^{new}-u_{ik}^{old}| < \varepsilon \]

Contoh:

epsilon = 0.001

Jika perubahan membership terbesar lebih kecil dari 0.001, proses dapat dihentikan.

Selain itu, iterasi harus dihentikan jika:

iterasi >= MaxIter

untuk menghindari proses tanpa batas.


Tahapan Algoritma FCM

Tahapan FCM:

  1. Tentukan data.
  2. Tentukan jumlah cluster \(c\).
  3. Tentukan fuzziness \(m\).
  4. Tentukan epsilon.
  5. Inisialisasi matriks membership.
  6. Pastikan jumlah membership setiap data sama dengan 1.
  7. Hitung pusat cluster.
  8. Hitung jarak setiap data ke setiap pusat cluster.
  9. Update membership.
  10. Hitung fungsi objektif.
  11. Hitung perubahan membership.
  12. Jika belum konvergen, ulangi dari langkah menghitung pusat cluster.
  13. Setelah konvergen, tentukan cluster dominan setiap data.

Contoh Kasus Fuzzy C-Means

Contoh berikut menggunakan enam data dengan dua atribut:

X
Y

dan akan dibentuk:

2 cluster

#01 Menentukan Data

Dataset:

Data X Y
A1 1.0 1.0
A2 1.5 2.0
A3 3.0 4.0
A4 5.0 7.0
A5 3.5 5.0
A6 4.5 5.0

Secara visual, A1 dan A2 berada di bagian kiri bawah, sedangkan A4, A5, dan A6 berada lebih dekat ke kanan atas.

A3 berada di antara kedua kelompok sehingga cocok untuk memperlihatkan sifat fuzzy FCM.


#02 Menentukan Parameter

Gunakan:

Jumlah cluster c = 2
Fuzziness m      = 2
Epsilon          = 0.001
MaxIter          = 100

Jumlah data:

\[ n=6 \]

Jumlah atribut:

\[ p=2 \]

#03 Inisialisasi Membership

Matriks membership awal ditentukan:

Data Cluster 1 Cluster 2 Total
A1 0.90 0.10 1.00
A2 0.80 0.20 1.00
A3 0.60 0.40 1.00
A4 0.10 0.90 1.00
A5 0.30 0.70 1.00
A6 0.20 0.80 1.00

Validasi:

\[ u_{i1}+u_{i2}=1 \]

untuk setiap data.

Karena:

\[ m=2 \]

membership dikuadratkan saat menghitung pusat cluster.

Contoh A1:

\[ u_{11}^2 = 0.9^2 = 0.81 \]
\[ u_{12}^2 = 0.1^2 = 0.01 \]

#04 Menghitung Pusat Cluster Iterasi 1

Cluster 1

Penyebut:

\[ \sum u_{i1}^{2} = 0.9^2+ 0.8^2+ 0.6^2+ 0.1^2+ 0.3^2+ 0.2^2 \]
\[ = 0.81+0.64+0.36+0.01+0.09+0.04 \]
\[ =1.95 \]

Koordinat X:

\[ v_{11} = \frac{ (0.81)(1.0)+ (0.64)(1.5)+ (0.36)(3.0)+ (0.01)(5.0)+ (0.09)(3.5)+ (0.04)(4.5) }{ 1.95 } \]
\[ = \frac{3.395}{1.95} \]
\[ = 1.741026 \]

Koordinat Y:

\[ v_{12} = \frac{ (0.81)(1.0)+ (0.64)(2.0)+ (0.36)(4.0)+ (0.01)(7.0)+ (0.09)(5.0)+ (0.04)(5.0) }{ 1.95 } \]
\[ = \frac{4.250}{1.95} \]
\[ = 2.179487 \]

Sehingga:

\[ V_1 = (1.741026,\ 2.179487) \]

Cluster 2

Penyebut:

\[ \sum u_{i2}^{2} = 0.1^2+ 0.2^2+ 0.4^2+ 0.9^2+ 0.7^2+ 0.8^2 \]
\[ = 2.15 \]

Hasil perhitungan:

\[ V_2 = (4.276744,\ 5.604651) \]

Pusat cluster iterasi pertama:

Cluster X Y
C1 1.741026 2.179487
C2 4.276744 5.604651

#05 Menghitung Jarak Iterasi 1

Gunakan Euclidean Distance:

\[ d_{ik} = \sqrt{ (x_i-v_{kx})^2+ (y_i-v_{ky})^2 } \]

A1 ke Cluster 1

\[ d_{11} = \sqrt{ (1-1.741026)^2+ (1-2.179487)^2 } \]
\[ d_{11} = 1.392950 \]

A1 ke Cluster 2

\[ d_{12} = \sqrt{ (1-4.276744)^2+ (1-5.604651)^2 } \]
\[ d_{12} = 5.651537 \]

Hasil seluruh jarak:

Data Jarak ke C1 Jarak ke C2
A1 1.392950 5.651537
A2 0.300515 4.550145
A3 2.213432 2.050605
A4 5.818785 1.571654
A5 3.324046 0.984345
A6 3.945533 0.644551

Perhatikan A3 memiliki jarak yang relatif mirip terhadap kedua cluster.


#06 Memperbarui Membership Iterasi 1

Karena:

\[ m=2 \]

gunakan:

\[ u_{ik} = \frac{ 1 }{ \sum_{j=1}^{2} \left( \frac{d_{ik}}{d_{ij}} \right)^2 } \]

Membership A1 ke Cluster 1

\[ u_{11} = \frac{ 1 }{ 1+ \left( \frac{1.392950}{5.651537} \right)^2 } \]
\[ u_{11} = 0.942730 \]

Membership A1 ke Cluster 2

\[ u_{12} = 1-u_{11} \]
\[ u_{12} = 0.057270 \]

Hasil update seluruh membership:

Data C1 C2
A1 0.942730 0.057270
A2 0.995657 0.004343
A3 0.461869 0.538131
A4 0.067994 0.932006
A5 0.080622 0.919378
A6 0.025994 0.974006

Nilai A3:

C1 = 46.19%
C2 = 53.81%

menunjukkan bahwa A3 berada dekat batas kedua cluster.


#07 Menghitung Fungsi Objektif

Gunakan:

\[ J_m = \sum_i \sum_k u_{ik}^{m}d_{ik}^{2} \]

Pada iterasi pertama, dengan membership awal dan pusat cluster hasil iterasi pertama, diperoleh:

\[ J_1 \approx 9.910688 \]

Nilai fungsi objektif dapat digunakan untuk mengamati proses optimasi.

Pada iterasi selanjutnya, nilai ini umumnya menurun sampai mendekati nilai stabil.


#08 Iterasi Selanjutnya

Membership baru digunakan untuk menghitung pusat cluster berikutnya.

Ringkasan proses:

Iterasi C1 X C1 Y C2 X C2 Y Perubahan Membership Maks. Fungsi Objektif
1 1.741026 2.179487 4.276744 5.604651 0.219378 9.910688
2 1.455739 1.801704 4.210079 5.485376 0.124739 7.252572
3 1.363974 1.666754 4.143832 5.406394 0.049034 6.948780
4 1.335748 1.624657 4.114078 5.370349 0.017607 6.902968
5 1.326895 1.611402 4.102835 5.356585 0.006110 6.896986
6 1.324013 1.607086 4.098841 5.351675 0.002097 6.896257
7 1.323050 1.605646 4.097456 5.349969 0.000717 6.896171

Pada iterasi ke-7:

\[ 0.000717<0.001 \]

sehingga algoritma memenuhi kriteria konvergensi.


#09 Kondisi Konvergen

Setelah pembaruan terakhir, pusat cluster berada sangat dekat dengan:

\[ V_1 \approx (1.322725,\ 1.605159) \]
\[ V_2 \approx (4.096980,\ 5.349383) \]

Membership yang digunakan pada akhir iterasi:

Data Membership C1 Membership C2
A1 0.983746 0.016254
A2 0.989710 0.010290
A3 0.261567 0.738433
A4 0.076635 0.923365
A5 0.028640 0.971360
A6 0.012992 0.987008

Fungsi objektif akhir mendekati:

\[ J_m \approx 6.896161 \]

Nilai tersebut lebih kecil dibanding iterasi awal:

\[ 9.910688 \]

yang menunjukkan proses optimasi telah bergerak menuju solusi yang lebih baik.


#10 Menentukan Cluster Dominan

Untuk memperoleh label cluster, pilih membership terbesar pada setiap data.

Data C1 C2 Cluster Dominan
A1 0.983746 0.016254 Cluster 1
A2 0.989710 0.010290 Cluster 1
A3 0.261567 0.738433 Cluster 2
A4 0.076635 0.923365 Cluster 2
A5 0.028640 0.971360 Cluster 2
A6 0.012992 0.987008 Cluster 2

Jika hasil diubah menjadi hard cluster:

Cluster 1:
A1
A2
Cluster 2:
A3
A4
A5
A6

Namun informasi fuzzy tetap penting.

Contohnya A3 memiliki:

C1 = 26.16%
C2 = 73.84%

sehingga A3 masih memiliki hubungan yang cukup berarti dengan Cluster 1 dibanding A4, A5, atau A6.


Interpretasi Nilai Membership

Membership yang sangat tinggi:

0.98

menunjukkan data sangat dekat dengan karakteristik cluster tersebut.

Membership yang mendekati:

0.50 : 0.50

menunjukkan data berada dekat batas antar-cluster.

Contoh A3 pada iterasi pertama:

C1 = 0.461869
C2 = 0.538131

menunjukkan posisi A3 masih sangat ambigu.

Setelah pusat cluster semakin stabil, membership A3 menjadi:

C1 = 0.261567
C2 = 0.738433

sehingga kecenderungannya terhadap Cluster 2 menjadi lebih jelas.


Pengaruh Nilai Fuzziness m

Parameter \(m\) menentukan tingkat fuzziness.

Syarat:

\[ m>1 \]

Jika \(m\) mendekati 1:

membership menjadi lebih tegas

dan perilakunya semakin mendekati hard clustering.

Jika \(m\) lebih besar:

membership antar-cluster cenderung lebih merata

sehingga clustering menjadi lebih fuzzy.

Nilai:

\[ m=2 \]

sering digunakan sebagai nilai awal atau contoh, tetapi bukan nilai yang selalu optimal untuk semua dataset.

Pemilihan \(m\) sebaiknya disesuaikan dengan:

  • karakteristik data,
  • tujuan clustering,
  • hasil evaluasi cluster,
  • dan eksperimen parameter.

Pseudocode Fuzzy C-Means

input:
    data X
    jumlah cluster c
    fuzziness m
    epsilon
    max_iteration

inisialisasi U secara acak

normalisasi setiap baris U
agar:
    sum(U[i]) = 1

for iteration = 1 to max_iteration:

    U_old = U

    # Hitung pusat cluster

    for k = 1 to c:

        numerator = 0
        denominator = 0

        for i = 1 to n:

            weight = U[i][k] ^ m

            numerator +=
                weight * X[i]

            denominator +=
                weight

        V[k] =
            numerator / denominator

    # Update membership

    for i = 1 to n:

        for k = 1 to c:

            denominator = 0

            for j = 1 to c:

                denominator +=
                    (
                        distance(X[i],V[k])
                        /
                        distance(X[i],V[j])
                    ) ^ (2/(m-1))

            U[i][k] =
                1 / denominator

    # Fungsi objektif

    J = 0

    for i = 1 to n:

        for k = 1 to c:

            J +=
                U[i][k]^m
                *
                distance(X[i],V[k])^2

    diff =
        max(abs(U - U_old))

    if diff < epsilon:
        break

return U, V, J

Jika sebuah data memiliki jarak 0 tepat terhadap salah satu pusat cluster, implementasi perlu menangani pembagian nol secara khusus.


FCM vs K-Means

Aspek Fuzzy C-Means K-Means
Jenis clustering Fuzzy Hard
Keanggotaan 0–1 Satu cluster
Pusat Weighted centroid Mean
Parameter fuzziness Ada Tidak
Batas cluster Fleksibel Tegas
Komputasi Lebih berat Lebih sederhana
Informasi ambiguitas Ada Tidak

FCM cocok ketika batas kelompok tidak benar-benar tegas.


FCM vs K-Medoids

Aspek Fuzzy C-Means K-Medoids
Pusat cluster Centroid Data aktual sebagai medoid
Membership Fuzzy Tegas
Sensitif outlier Cukup sensitif Umumnya lebih tahan
Data numerik Sangat umum Sangat umum
Pusat harus data asli Tidak Ya
Soft clustering Ya Tidak

Kelebihan dan Kekurangan FCM

Kelebihan Fuzzy C-Means

  • Satu data dapat memiliki membership pada beberapa cluster.
  • Cocok untuk data dengan batas cluster tidak tegas.
  • Membership memberikan informasi tambahan dibanding hard clustering.
  • Pusat cluster diperbarui secara iteratif.
  • Dapat digunakan untuk segmentasi dan eksplorasi pola data.
  • Konsep matematis relatif jelas.

Kekurangan Fuzzy C-Means

  • Jumlah cluster harus ditentukan di awal.
  • Sensitif terhadap inisialisasi membership.
  • Sensitif terhadap outlier karena menggunakan centroid dan Euclidean Distance.
  • Hasil dapat berhenti pada minimum lokal.
  • Memerlukan parameter fuzziness.
  • Lebih mahal dibanding K-Means karena menghitung membership seluruh cluster.
  • Atribut dengan skala berbeda dapat mendominasi jarak jika tidak dinormalisasi.

Kapan FCM Cocok Digunakan?

FCM cocok digunakan ketika:

  • data dapat memiliki karakteristik beberapa cluster sekaligus;
  • batas antar-kelompok tidak tegas;
  • dibutuhkan nilai derajat keanggotaan;
  • data dominan numerik;
  • clustering digunakan sebagai eksplorasi;
  • atau hard clustering dianggap terlalu kaku.

Contoh penerapan:

  • segmentasi pelanggan,
  • segmentasi citra,
  • pengelompokan wilayah,
  • analisis karakteristik mahasiswa,
  • pengelompokan produk,
  • segmentasi risiko,
  • dan berbagai kasus data mining.

Kesalahan Umum Implementasi

1. Jumlah membership tidak sama dengan 1

Untuk setiap data:

\[ \sum_k u_{ik}=1 \]

2. Lupa memangkatkan membership dengan m

Pusat cluster menggunakan:

\[ u_{ik}^{m} \]

bukan hanya:

\[ u_{ik} \]

3. Salah menggunakan pangkat pada rumus membership

Pangkat:

\[ \frac{2}{m-1} \]

Untuk:

\[ m=2 \]

nilainya:

\[ 2 \]

4. Tidak menormalisasi atribut

Misalnya:

Umur = 20–60
Pendapatan = 1.000.000–50.000.000

Jika digunakan langsung, pendapatan dapat mendominasi Euclidean Distance.

Normalisasi atau standardisasi sering diperlukan.

5. Menganggap membership sebagai probabilitas

Membership FCM adalah derajat keanggotaan fuzzy.

Nilai:

0.80

tidak otomatis berarti probabilitas 80% dalam pengertian statistik.

6. Tidak menangani jarak nol

Jika:

\[ d_{ik}=0 \]

rumus rasio jarak dapat menyebabkan pembagian nol.

Data tersebut dapat diberi membership 1 pada cluster tersebut dan 0 pada cluster lainnya.

7. Hanya berhenti berdasarkan jumlah iterasi

Lebih baik gunakan juga kriteria:

\[ \max|U^{new}-U^{old}|<\varepsilon \]

8. Menentukan cluster hanya dari nilai centroid tanpa membership

Keunggulan FCM justru berada pada informasi membership.

Cluster dominan boleh ditentukan menggunakan membership terbesar, tetapi nilai membership sebaiknya tetap disimpan.


Ringkasan

Pada contoh digunakan enam data:

Data X Y
A1 1.0 1.0
A2 1.5 2.0
A3 3.0 4.0
A4 5.0 7.0
A5 3.5 5.0
A6 4.5 5.0

Parameter:

c = 2
m = 2
epsilon = 0.001

Setelah iterasi, pusat cluster mendekati:

C1 = (1.322725, 1.605159)
C2 = (4.096980, 5.349383)

Membership akhir:

Data C1 C2
A1 0.983746 0.016254
A2 0.989710 0.010290
A3 0.261567 0.738433
A4 0.076635 0.923365
A5 0.028640 0.971360
A6 0.012992 0.987008

Cluster dominan:

Cluster 1 = A1, A2
Cluster 2 = A3, A4, A5, A6

Namun A3 tetap memiliki membership sekitar 26.16% pada Cluster 1, sehingga informasi fuzzy memberikan gambaran yang lebih kaya dibanding hard clustering.


FAQ Fuzzy C-Means

Apa itu Fuzzy C-Means?

Fuzzy C-Means adalah algoritma clustering yang memungkinkan satu data memiliki derajat keanggotaan pada beberapa cluster.

Apa kepanjangan FCM?

FCM adalah singkatan dari Fuzzy C-Means.

Apakah FCM termasuk data mining?

Ya. FCM merupakan salah satu algoritma clustering pada data mining dan machine learning.

Apa perbedaan FCM dan K-Means?

K-Means menggunakan hard clustering, sedangkan FCM memberikan nilai membership untuk setiap data pada setiap cluster.

Apa fungsi parameter m?

Parameter \(m\) mengatur tingkat fuzziness membership.

Berapa nilai m yang digunakan?

Nilai harus lebih besar dari 1. Nilai 2 sering digunakan untuk contoh dan sebagai titik awal eksperimen.

Apa fungsi epsilon?

Epsilon menentukan batas perubahan membership yang digunakan sebagai kondisi konvergensi.

Apakah FCM membutuhkan jumlah cluster?

Ya. Jumlah cluster \(c\) biasanya ditentukan sebelum algoritma dijalankan.

Apa fungsi membership?

Membership menunjukkan derajat kedekatan atau keanggotaan suatu data terhadap cluster.

Apakah total membership satu data harus 1?

Ya:

\[ \sum_k u_{ik}=1 \]

Bagaimana menentukan cluster akhir?

Jika dibutuhkan hard label, pilih cluster dengan membership terbesar.

Apakah membership sama dengan probabilitas?

Tidak. Membership adalah derajat keanggotaan fuzzy dan tidak otomatis memiliki interpretasi probabilistik.

Apakah data perlu dinormalisasi?

Sebaiknya dilakukan jika atribut memiliki skala yang sangat berbeda karena FCM umumnya menggunakan distance.

Apakah FCM sensitif terhadap outlier?

Ya. Penggunaan centroid membuat FCM dapat dipengaruhi oleh data ekstrem.

Bagaimana mengetahui FCM sudah konvergen?

Salah satu cara adalah memeriksa perubahan membership maksimum. Jika lebih kecil dari epsilon, proses dihentikan.


Referensi

  1. Dunn, J. C. (1973). A Fuzzy Relative of the ISODATA Process and Its Use in Detecting Compact Well-Separated Clusters. Journal of Cybernetics, 3(3), 32–57.
  2. Bezdek, J. C. (1981). Pattern Recognition with Fuzzy Objective Function Algorithms. Plenum Press.
  3. Bezdek, J. C., Ehrlich, R., & Full, W. (1984). FCM: The Fuzzy C-Means Clustering Algorithm. Computers & Geosciences, 10(2–3), 191–203.

Source Code Fuzzy C-Means

Berikut source code yang menggunakan metode Fuzzy C-Means pada RumahSourceCode.

Ada yang Ditanyakan?

Jika masih ada kesulitan atau kekeliruan tentang metode di atas, silakan hubungi kami melalui halaman Kontak.

Perhitungan Excel tersedia melalui halaman Download, sedangkan aplikasi terkait dapat dilihat pada halaman Daftar Source Code.

Donasi digunakan untuk biaya server dan mendukung pembuatan tutorial metode atau algoritma lainnya.