बोलते समय, मैं कैसे कह सकता हूं कि एल्गोरिथ्म का समय जटिलता क्रम ओ (एन लॉग एन) है?


22

ओ (एन लॉग एन) जटिलता के साथ कुछ का वर्णन करने के लिए मैं किस शब्द का उपयोग कर सकता हूं?

उदाहरण के लिए:

  • ओ (1): लगातार

  • ओ (लॉग एन): लॉगरिदमिक

  • ओ (एन): रैखिक

  • O (N log N): ??????

  • O (N 2 ): द्विघात

  • ओ (एन 3 ): घन


5
मैं अक्सर यहाँ व्यापक शब्द "अर्ध-रैखिक" का अर्थ है O(n · f(n))जहां f(n) << n। लेकिन यह मैच भी चीजों की तरह है O(n · log log n)और एकरमैन फ़ंक्शन का उलटा O(n α(n))कहां α(n)है।
बकुरीउल


34
"ओह एनएन लॉग एनएन" शायद काफी अच्छा है।
user253751

जवाबों:


60

"एन लॉग एन" जितना आप प्राप्त करने जा रहे हैं उतना ही अच्छा है, और पेशेवर प्रोग्रामर द्वारा अच्छी तरह से समझा जाना चाहिए। आप हर जटिलता वर्ग का वर्णन करने के लिए एक शब्द होने की उम्मीद नहीं कर सकते।


6
"हर जटिलता वर्ग का वर्णन करने के लिए एक शब्द होने की उम्मीद नहीं की जा सकती है" - निश्चित रूप से नहीं। लेकिन But ( n n log n ) एक ऐसा महत्वपूर्ण वर्ग है जो अपने स्वयं के, IMO के नाम के लायक है; और जैसा कि स्टीव जेसोप ने कहा है, रैखिकता पहले से ही बहुत आम है।
लेफ्टरनैबाउट

@leftaroundabout यह वास्तव में काफी सामान्य है कि आप बहस कर सकते हैं, कि यह एक नाम के लायक है। लेकिन "एन लॉग एन" उच्चारण (केवल तीन शब्दांश) के लिए पर्याप्त है कि यह एक नाम के रूप में ठीक काम करता है। तुलना के लिए "लॉगरिदमिक" चार शब्दांश हैं। जब आप बाहरी एल्गोरिदम में जाते हैं तो यह अधिक दिलचस्प होता है, जहां "एन लॉग एन" एल्गोरिदम में से अधिकांश को $ एन लॉग_B (एन / बी) $ की जटिलता मिलती है, जो निश्चित रूप से एक छोटे नाम के लिए एक जटिलता वर्ग के योग्य होगा।
कास्परड

10
एक कंप्यूटर साइंस मास्टर डिग्री छात्र के रूप में, मैंने अपने कॉलेज की पढ़ाई के दौरान "एनएन लॉग एनएन" सुना है। मैंने "लीनियरथिमिक" कभी नहीं सुना है और समझ में नहीं आएगा कि पहले इसका क्या मतलब था।
केविन - मोनिका

@ केविन: लॉगरिदमिक चार शब्दांश हैं, लेकिन "लॉग-एनएन" केवल दो हैं। इसी तरह, ओ (एन ^ 2) "एनन-स्क्वायर्ड" है, न कि "द्विघात"। मुझे लगता है कि "क्यूबिक" में "एनन-क्यूबेड" की तुलना में कम स्वर हैं, लेकिन मुझे लगता है कि बाद का शब्द अभी भी अधिक सामान्य है।
सुपरकैट

51

वहाँ एक शब्दजाल शब्द रैखिक अर्थ का अर्थ है।

मुझे विश्वास नहीं है कि यह सार्वभौमिक रूप से सभी प्रोग्रामर द्वारा समझा जाता है, इसलिए यदि आप सावधान नहीं हैं तो यह सूचित करने की तुलना में अधिक अस्पष्ट होगा। व्यक्तिगत रूप से मैं आमतौर पर इसका उपयोग नहीं करता हूं, और अगर मैंने किया, तो मैं शायद इसे पहले उपयोग पर परिभाषित करूंगा, उदाहरण के लिए "यह लेख लीनरिथमिक ( O(N log N)) एल्गोरिदम" पर विचार करता है।


11
कभी यह भी नहीं पता था कि अस्तित्व में!
डेविड का कहना है कि मोनिका

12

इसे कभी-कभी "लॉगलाइनर" कहा जाता है, हालांकि यह शब्द वास्तव में कुछ अलग है। मैं बस "एन लॉग एन" के साथ रहना चाहूंगा, हालांकि, @ फिलिप का जवाब बताता है।


1
लॉग-लीनियर का वैकल्पिक अर्थ क्या है? अगर मुझे 'एन लॉग एन' के अलावा कोई अन्य नाम चाहिए, तो लॉग-लीनियर वह शब्द है जिसका मैं उपयोग करूंगा।
जोनाथन लेफलर

2
@JonathanLeffler: मैं मानती हूं कि en.wikipedia.org/wiki/Log-linear_analysis कभी-कभी हाइफ़न के बिना वर्तनी की जाती है। बेशक उचित नामस्थान के साथ आप खुशी से एक जटिलता वर्ग के लिए एक ही शब्द का उपयोग कर सकते हैं।
स्टीव जेसोप

@SteveJessop: यह निश्चित रूप से एक Google खोज के माध्यम से आया है। मुझे यकीन नहीं है कि मैं Google / विकिपीडिया कॉम्बो को आधिकारिक रूप से स्वीकार करने के लिए तैयार हूं, हालांकि मुझे शून्य संदेह है कि लॉग-लीनियर विश्लेषण वर्णित है।
जोनाथन लेफलर

1
@JonathanLeffler: का अर्थ यह भी हो सकता है कि मैं लिन-लॉग या लॉग-लिन प्लॉट (या, क्योंकि मैं आलसी हूं, वास्तव में मैं उन्हें अक्सर लॉग-लॉग से अलग के रूप में लॉग प्लॉट कहता हूं) कह सकता हूं। हम शायद पूछ सकते हैं कि इस उत्तर का कौन सा वैकल्पिक अर्थ है :-)
स्टीव जेसोप

2

क्योंकि कारक log n धीरे-धीरे बढ़ता है, इसके लिए एक गुणात्मक विवरण O(n log n)"लगभग रैखिक" होगा। आपके दर्शकों के आधार पर O(n log n)एल्गोरिदम का वर्ग अच्छी तरह से जाना जा सकता है, उदाहरण के लिए nतुलनाओं द्वारा वस्तुओं पर तेजी से छंटनी के साथ यह मामला है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.