Varsayarsak (bağlı dersler her iki gibi) sabitlenir, sonra algoritmik seçimler hesaplama alır belirleyecek çalışma zamanını veya çalışma zamanı.O ( n d + k n ) O ( n d k )kO(nd+kn)O(ndk)
İlk olarak, bir çalışma zamanı algoritmasını ele alalım :O(nd+kn)
- Eğitim setindeki tüm gözlemler için başlatiselectedi=0i
- Her eğitim seti gözlemi , hesaplama , yeni gözlem ile eğitim seti gözlemi arasındaki mesafed i s t i iidistii
- For için : Döngü tüm eğitim seti gözlemleri ile indeksi seçilmesi en küçük ile dist_i değer ve kendisi için selected_i = 0 . Seçili_i = 1 ayarını yaparak bu gözlemi seçin .k i d i s t i s e l e c t e d i = 0 s e l e c t e d i = 1j=1kidistiselectedi=0selectedi=1
- İade k seçilen indeksleri
Her mesafe hesaplaması çalışma zamanını gerektirir , bu nedenle ikinci adım çalışma zamanını gerektirir . Üçüncü adımdaki her yineleme için , eğitim seti gözlemleri arasında döngü yaparak çalışması gerçekleştiririz , bu nedenle genel adım çalışması gerektirir . İlk ve dördüncü adımlar yalnızca çalışması gerektirir , bu nedenle çalışma zamanı elde ederiz .O ( n d ) O ( n ) O ( n k ) O ( n ) O ( n d + k n )O(d)O(nd)O(n)O(nk)O(n)O(nd+kn)
Şimdi çalışma zamanı algoritmasını ele alalım :O(ndk)
- Eğitim setindeki tüm gözlemler için başlatiselectedi=0i
- For için tüm eğitim seti gözlemler yoluyla Döngü ve mesafe hesaplamak: seçilen eğitim seti gözlem ve yeni gözlem arasındadır. Seçili_i olan en küçük değerine sahip dizinini seçin . Seçili_i ayarını yaparak bu gözlemi seçin .k d i d s e l e c t e d i = 0 s e l e c t e d i = 1j=1kdidselectedi=0selectedi=1
- İade seçilen indekslerik
İkinci adımdaki her yineleme için, yeni gözlem ile her bir eğitim seti gözlemi arasındaki mesafeyi hesaplayarak, bir yineleme için çalışması ve bu nedenle de genel olarak çalışması gerekir.O ( n d k )O(nd)O(ndk)
İki algoritma arasındaki fark, birincinin mesafeleri önceden hesaplaması ve depolamasıdır ( ekstra bellek gerektirir ), ikincisi ise. Fakat daha önce gerektiren, tüm eğitim dizisini depolamak verilen bellek gibi gerektiren, vektör depolama, iki algoritma depolanması asimptotik aynıdır. Sonuç olarak, için daha iyi asimptotik çalışma zamanı ilk algoritmayı daha çekici hale getirir.O ( n d ) s e l e c t e d O ( n ) k > 1O(n)O(nd)selectedO(n)k>1
Algoritmik bir iyileştirme kullanarak bir çalışma zamanı elde etmenin mümkün olduğunu belirtmek gerekir :O(nd)
- Her eğitim seti gözlemi , hesaplama , yeni gözlem ile eğitim seti gözlemi arasındaki mesafeidistii
- çalışma süresindeki en küçük mesafeyi hesaplamak için hızlı seçim algoritmasını çalıştırınkthO(n)
- Hesaplanan en küçük mesafeden büyük olmayan tüm dizinleri döndürkth
Bu yaklaşım, sıralanmamış bir dizideki en küçük değeri bulmak için etkili yaklaşımların mevcut olmasından yararlanır .kth
quickselect
.