ऊपरी और निचले सीमा की "सही" परिभाषा क्या है?


19

बता दें कि साइज इनपुट पर किसी समस्या का सबसे खराब समय चल रहा है । चलिए हम समस्या को थोड़ा अजीब बनाते हैं for लेकिन for ।f(n)nf(n)=n2n=2kf(n)=nn=2k+1

  1. तो, समस्या की निचली सीमा क्या है? जिस तरह से मैं समझ गया कि यह सिर्फ की निचली सीमा है । लेकिन हम जानते हैं कि अर्थ है कि निरंतर , ऐसा है जो सभी , , जो कि सत्य नहीं है। इस प्रकार ऐसा लगता है कि हम केवल कह सकते हैं । लेकिन आमतौर पर, हम समस्या को कम सीमा कहते हैं , है ना?f(n)f(n)=Ω(n2)kn0n>n0f(n)>kn2f(n)=Ω(n)Ω(n2)

  2. मान लें कि , जिसका अर्थ है कि निरंतर , ऐसा है जो सभी , । चलो यह भी मान लें कि एक समस्या चल रही है समय । अगर हम इस समस्या को कम कर सकते हैं सभी primes लिए दूसरी समस्या (समान इनपुट आकार के साथ), तो क्या हम कह सकते हैं कि दूसरी समस्या के चलने का समय ?k n 0 n > n 0 g ( n ) > k n 2g(n)=Ω(n2)kn0n>n0g(n)>kn2एन Ω ( एन 2 )g(n)nΩ(n2)


12
यही कारण है कि गणितज्ञ लिम सुपर और लिम इन का उपयोग करते हैं।
पीटर शोर

1
इसलिए मुझे लगता है कि मैं अंतर को समझता हूं। मुझे लगता है कि पोस्ट के लोग ओमेगा को अक्सर असीम रूप से समझेंगे। लेकिन अगर मैं एक स्पष्ट अंतर बनाना चाहता हूं, तो क्या मैं ऐसी कोई भी धारणा है जिसका मैं विस्तार करने के अलावा अन्य उपयोग कर सकता हूं?
वी यू

3
@Wei यू: लिम सुपर और लिम inf। आप कहते हैं कि कुछ स्थिर कश्मीर के लिए यदि आप यह कहना चाहते हैं कि जी (n) \ geq kn ^ 2 असीम बार, और \ liminf \ fc {g n)} {n ^ 2} \ geq k यदि आप सभी पर्याप्त बड़े n के लिए g (n) \ geq kn ^ 2 कहना चाहते हैं । \ आप गणितज्ञों के लिए बात कर रहे हैं विशेष रूप से अगर।
lim supg(n)n2k
जी ( एन ) कश्मीर एन 2 लिम inf जी ( एन )kg(n)kn2जी(एन)कश्मीरएन2n
lim infg(n)n2k
g(n)kn2n
 
पीटर शोर

12
@Wei: अधिकांश जटिलता सिद्धांतकारों के लिए (नीचे लांस देखें), आपका कार्य n (n ^ 2) है; अधिकांश एल्गोरिदमवादियों (नथ या सीएलआरएस देखें) के लिए, आपका फ़ंक्शन n (n ^ 2) और Ω (n) है। दोनों संकेतन लगभग हैं, लेकिन पूरी तरह से नहीं, उनकी उप-इकाइयों में मानक; चीजों को बदतर बनाने के लिए, इन दो उप-संप्रदायों को बहुत अधिक ओवरलैप किया जाता है! इसलिए यदि यह मायने रखता है कि आप किस संकेतन का उपयोग करते हैं, तो आपको स्पष्ट रूप से कहना चाहिए कि आप किस संकेतन का उपयोग कर रहे हैं। (सौभाग्य से, यह शायद ही कभी मायने रखता है।)
जेफunately

2
@ जेफ। मेरा मानना ​​है कि आपको उत्तर के रूप में अपनी टिप्पणी पोस्ट करनी चाहिए।
चेज़िसोप

जवाबों:


13

की सही परिभाषा यह है कि कुछ ऐसे मौजूद हैं जो असीम रूप से कई , । निचले सीमा के लिए असीम-अक्सर परिभाषा आपके मुद्दों को संभालती है और यह है कि हम इसे अभ्यास में कैसे उपयोग करते हैं।कश्मीर > 0 एन एफ ( एन ) कश्मीर एन 2f(n)=Ω(n2)k>0nf(n)kn2

मैंने 2005 में इस पर एक पोस्ट किया।

कुछ पाठ्यपुस्तकों को यह परिभाषा ठीक लगती है, कुछ को नहीं।


14
नथ आपके साथ असहमत हैं: portal.acm.org/citation.cfm?id=1008329
Jeff11

4
सीएलआरएस और विकिपीडिया भी आपसे असहमत हैं। अनंत-अक्सर परिभाषा एक उल्लेखनीय विकल्प है, लेकिन कम व्यापक रूप से उपयोग किया जाता है।
बेनामी

मुझे लगता है कि इन सभी परिभाषाओं से सहमत हैं जब अपवादों का सेट 0. मापा जाता है
कार्टर ताज़ियो शोनवल्ड

2
"असीम रूप से अक्सर" परिभाषाओं के साथ समस्या यह है कि वे आमतौर पर "असीम रूप से अक्सर नहीं" को बाहर नहीं करते हैं। इसलिए हमारे पास भयानक परिणाम है कि इस परिभाषा के साथ लेकिन यह भी , जहां और कुछ में सख्त आदेश हैं समझ। मुझे वास्तव में यह नापसंद है। कम से कम @ कार्टर के सुझाव 0 अपवाद थोड़ा कम भयानक है, जबकि अभी भी सामान्य से एक बेहतर आदेश की अनुमति है। f ( n ) = o ( n + 1 ) Ω of(n)=Ω(n2) f(n)=o(n+1)Ωo
एंड्रे सलामोन

2
@ जुक्का: नहीं, मैं यहाँ का दुरुपयोग कर रहा हूँ । आप संकेत के रूप में मैं करने के लिए उपयोग मेरी तर्क को सही करने के लिए है बजाय । इसलिए मुझे या का उपयोग किए बिना वास्तविक आपत्ति को शांत करना चाहिए । "अक्सर" के साथ, एक विसंगति है कि , , फिर भी । तो एक प्रीऑर्डर भी नहीं बनाता है। एन = Ω ( ( एन ) ) ( एन ) = Ω ( एन 2 ) n Ω ( एन 2 ) ΩoOooOn=Ω(f(n))f(n)=Ω(n2)nΩ(n2)Ω
एन्द्रस सलामोन

4

साथ नुथ की परिभाषा आप केवल जोर कर सकते हैं । जैसा कि आप देखते हैं, यह सहज नहीं है और फ़ंक्शंस के लिए होता है विटैनी और मेर्टेंस "वाइल्ड" कहते हैं। वे परिभाषित करने का प्रस्ताव करते हैंf(n)Ω(n)

Ω(f(n))={gδ>0:n0>0:n>n0:g(n)δf(n)}.

(यह लांस की परिभाषा के समान है।) इस परिभाषा के साथ ।f(n)Ω(n2)


2

मैं सबसे व्यापक रूप से उपयोग किए जाने के बारे में नहीं जानता, लेकिन मेरा मानना ​​है कि मुझे सबसे पुराने उपयोग (वैसे भी कंप्यूटर विज्ञान के लिए) का पता है।

1965 में हार्टमैनिस एंड स्टर्न्स द्वारा "एल्गोरिथम की कम्प्यूटेशनल जटिलता पर" कोरोलरी 2.1:

यदि और ऐसे टाइम-फ़ंक्शंस हैं, जैसे कि तोUTinfnT(n)U(n)0SUST

जहाँ में गणना करने योग्य सभी समस्याओं की जटिलता वर्ग है । T (n) को कुछ पूर्णांक और सभी और लिए पालन ​​करना चाहिए , लेकिन इसका समय-निर्माण करने योग्य नहीं है।SKO(K(n))T(n)n/kknT(n)T(n+1)

आपका फ़ंक्शन लिए पहले नियम का पालन करता है, लेकिन दूसरे नियम का पालन करने में विफल रहता है।k=1

कोरोलरी 2.2 उपरोक्त का पारस्परिक है और सीमा वर्चस्व का उपयोग करता है, लेकिन फिर भी इन आवश्यकताओं की आवश्यकता है। मुझे लगता है कि एल्गोरिदम वर्षों से अधिक जटिल हो गया है, यह संभव है कि आवश्यकताओं को आराम दिया गया हो।


2

मुझे लगता है कि हमें दो चीजों में अंतर करना चाहिए:

  • एक समारोह के लिए एक नीच
  • एक समस्या के लिए एक निम्नतर (एल्गोरिथ्म)

फ़ंक्शंस के लिए, जब हम एक ऑर्डर को ठीक करते हैं, तो निम्नतर / ऊपरी स्तर की परिभाषा इससे मिलती है। यदि आदेश संबंध स्पर्शोन्मुख स्थिरीकरण है (निरंतर कारकों की अनदेखी)

fg:c,nm>n. f(x)cg(x)

फिर परिभाषा और की सामान्य परिभाषा है । इन दोनों का उपयोग बड़े पैमाने पर अन्य क्षेत्रों में किया जाता है जैसे कि कॉम्बिनेटरिक्स।ΩOΩ

लेकिन जब हम किसी समस्या (एक एल्गोरिथ्म) के लिए एक निम्नतर के बारे में बात करते हैं, तो हम वास्तव में जो कहना चाहते हैं वह यह है कि समस्या को कुछ निश्चित मात्रा में संसाधनों की आवश्यकता होती है (एल्गोरिथ्म को हल करने के लिए समस्या को हल करने के लिए)। अक्सर जटिलता वर्ग जैसे कार्यों द्वारा , और हम सरल रूप से कहते हैं कि समस्या एक फ़ंक्शन द्वारा कम होती है, लेकिन यह केवल अच्छे कार्यों के लिए काम करती है (उदाहरण के लिए एल्गोरिथ्म का चल रहा समय) मोनोटोन है, आदि)। इन मामलों में हम जो कहना चाहते हैं वह यह है कि हमें समस्या को हल करने के लिए रनिंग समय की आवश्यकता है, अर्थात से कम चलने का समय पर्याप्त नहीं है, जो औपचारिक रूप से लांस की परिभाषा बन जाता है कि एल्गोरिथ्म का चलने का समय में नहीं है ।n 2 n 2 o ( t ( n ) )Time(t(n))n2n2o(t(n))

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