Beberapa algoritma pengelompokan dapat menggunakan struktur indeks spasial. Ini memungkinkan misalnya DBSCAN dan OPTICS untuk berjalan dalam waktu (selama indeks memungkinkan O ( log n ) query).O ( n logn )O ( logn )
Jelas, suatu algoritma yang berjalan dalam kompleksitas ini tidak membangun matriks jarak .O ( n2)
Untuk beberapa algoritma, seperti pengelompokan hierarkis dengan hubungan tunggal dan hubungan lengkap, ada algoritma yang dioptimalkan tersedia (SLINK, CLINK). Hanya saja kebanyakan orang menggunakan apa pun yang mereka dapat dan apa pun yang mudah diterapkan. Dan hirarkis pengelompokan mudah untuk menerapkan naif, menggunakan iterasi atas n 2 matriks jarak (yang mengakibatkan O ( n 3 ) algoritma ...).nn2O ( n3)
Saya tidak mengetahui daftar lengkap yang membandingkan algoritma pengelompokan. Mungkin ada 100+ algoritma clustering. Setidaknya ada selusin varian k-means, misalnya. Plus, ada kompleksitas run-time serta kompleksitas memori; ada kasus rata-rata dan terburuk. Ada perbedaan implementasi yang sangat besar (misalnya, single-link yang disebutkan di atas; dan implementasi DBSCAN yang tidak menggunakan indeks, dan dengan demikian berada di , dan sementara mereka tidak perlu menyimpan matriks jarak n × n penuh , mereka maka masih perlu menghitung semua jarak berpasangan). Plus ada banyak parameter. Untuk k-means, kO ( n2)n × nksangat penting. Untuk hampir semua algoritma, fungsi jarak membuat perbedaan besar (banyak implementasi hanya memungkinkan jarak Euclidean ...). Dan begitu Anda mendapatkan fungsi jarak yang mahal (di luar hal-hal sepele seperti Euclidean), jumlah perhitungan jarak dapat dengan cepat menjadi bagian utama. Jadi, Anda perlu membedakan antara jumlah operasi secara total, dan jumlah perhitungan jarak yang dibutuhkan. Jadi suatu algoritma yang ada dalam operasi tetapi hanya perhitungan jarak O ( n ) yang dapat dengan mudah mengungguli algoritma yang O ( n log n )O ( n2)O ( n )O ( n logn )di keduanya, ketika fungsi jarak benar-benar mahal (katakanlah, fungsi jarak itu sendiri adalah ).O ( n )