मान लिया जाए कि तय हो गया है (जैसा कि दोनों जुड़े हुए व्याख्यान करते हैं), तो आपके एल्गोरिदमिक विकल्प यह निर्धारित करेंगे कि क्या आपकी गणना O ( n d + k n ) रनटाइम या O ( n d k ) रनटाइम लेती है।kO(nd+kn)O(ndk)
पहले, आइए रनटाइम एल्गोरिदम पर विचार करें:O(nd+kn)
- प्रारंभ सभी टिप्पणियों के लिए मैं प्रशिक्षण सेट मेंselectedi=0i
- प्रत्येक प्रशिक्षण सेट अवलोकन के लिए , गणना घ मैं रों टी मैं , प्रशिक्षण सेट अवलोकन करने के लिए नए अवलोकन से दूरी मैंidistii
- के लिए के लिए k लूप सभी प्रशिक्षण सेट टिप्पणियों के माध्यम से, सूचकांक का चयन: मैं छोटी से छोटी के साथ घ मैं रों टी मैं मूल्य और जिसके लिए रों ईj=1kidisti । S e l e c t e d i = 1 सेट करके इस अवलोकन का चयन करें।selectedi=0selectedi=1
- चयनित सूचकांकों को वापस करेंk
प्रत्येक दूरी की गणना के लिए रनटाइम की आवश्यकता होती है, इसलिए दूसरे चरण में O ( n d ) रनटाइम की आवश्यकता होती है। तीसरे चरण में प्रत्येक पुनरावृत्ति के लिए, हम प्रशिक्षण सेट टिप्पणियों के माध्यम से लूपिंग करके ओ ( एन ) कार्य करते हैं, इसलिए समग्र रूप से ओ ( एन के ) कार्य के लिए चरण की आवश्यकता होती है । पहले और चौथे चरण में केवल O ( n ) कार्य की आवश्यकता होती है , इसलिए हमें O ( n d + k n ) रनटाइम मिलता है।O(d)O(nd)O(n)O(nk)O(n)O(nd+kn)
अब, आइए एक रनटाइम एल्गोरिदम पर विचार करें:O(ndk)
- प्रारंभ सभी टिप्पणियों के लिए मैं प्रशिक्षण सेट मेंselectedi=0i
- के लिए के लिए k : लूप सभी प्रशिक्षण सेट टिप्पणियों के माध्यम से और गणना दूरी घ चयनित प्रशिक्षण सेट अवलोकन और नए अवलोकन के बीच। इंडेक्स I को सबसे छोटे d मान के साथ चुनें जिसके लिए s e l e c c t e d i = 0 है । S e l e c t e d i = 1 सेट करके इस अवलोकन का चयन करें ।j=1kdidselectedi=0selectedi=1
- चयनित सूचकांकों को वापस करेंk
दूसरे चरण में प्रत्येक पुनरावृति के लिए, हम नए अवलोकन और प्रत्येक प्रशिक्षण सेट अवलोकन के बीच की दूरी की गणना करते हैं, इसमें पुनरावृत्ति के लिए कार्य की आवश्यकता होती है और इसलिए O ( n d k ) समग्र रूप से कार्य करते हैं।O(nd)O(ndk)
दो एल्गोरिदम के बीच का अंतर यह है कि पहला प्रीकम्प्यूट करता है और दूरस्थ ( अतिरिक्त मेमोरी की आवश्यकता होती है ) स्टोर करता है, जबकि दूसरा नहीं करता है। हालाँकि, यह देखते हुए कि हम पहले से ही पूरे प्रशिक्षण सेट को स्टोर करते हैं, जिसमें O ( n d ) मेमोरी की आवश्यकता होती है , साथ ही s e l l e c t e d वेक्टर, O ( n ) स्टोरेज की आवश्यकता होती है , दो एल्गोरिदम का संग्रहण असमान रूप से होता है। वही। परिणामस्वरूप, k > 1 के लिए बेहतर स्पर्शोन्मुख रनटाइम पहले एल्गोरिथ्म को अधिक आकर्षक बनाता है।O(n)O(nd)selectedO(n)k>1
यह ध्यान देने योग्य है कि एक एल्गोरिथम सुधार का उपयोग करके रनटाइम प्राप्त करना संभव है :O(nd)
- प्रत्येक प्रशिक्षण सेट अवलोकन के लिए , गणना घ मैं रों टी मैं , प्रशिक्षण सेट अवलोकन करने के लिए नए अवलोकन से दूरी मैंidistii
- ओ ( n ) रनटाइम में k t h सबसे छोटी दूरी की गणना करने के लिए क्विकसेक एल्गोरिथम चलाएंkthO(n)
- सभी सूचकांकों कोई गणना की तुलना में बड़ा लौटें छोटी से छोटी दूरीkth
यह दृष्टिकोण इस तथ्य का लाभ उठाता है कि एक अनियोजित सरणी में सबसे छोटे मान को खोजने के लिए कुशल दृष्टिकोण मौजूद है ।kth
quickselect
।