स्पर्शोन्मुख वृद्धि द्वारा छँटाई कार्य


35

उदाहरण के लिए, मेरे पास कार्यों की सूची है

nloglog(n),2n,n!,n3,nlnn,

कैसे मैं उन्हें asymptotically, अर्थात् द्वारा परिभाषित संबंध के बाद हल करते हैं

fOgfO(g) ,

यह मानते हुए कि वे वास्तव में जोड़ीदार हैं ( यहाँ भी देखें )? की परिभाषा का उपयोग करना अजीब लगता है, और उपयुक्त स्थिरांक और के अस्तित्व को साबित करना अक्सर कठिन होता है ।सी एन Ocn0

यह जटिलता के उपायों के बारे में है, इसलिए हम asymptotic व्यवहार में रूप में रुचि रखते हैं , और हम मानते हैं कि सभी फ़ंक्शन केवल गैर-नकारात्मक मान ( ) ।n , f ( n ) 0n+n,f(n)0


4
चूंकि ओपी कभी वापस नहीं आया, इसलिए मैं स्थानीयकृत सामान को हटा रहा हूं और इसे संदर्भ प्रश्न बनाता हूं।
राफेल

जवाबों:


48

यदि आप कठोर प्रमाण चाहते हैं, तो निम्न लीमा अक्सर उपयोगी सम्मान होता है। परिभाषाओं की तुलना में अधिक उपयोगी।

यदि मौजूद है, तोc=limnf(n)g(n)

  • c=0 fo(g) ,
  • c(0,)fΘ(g) और
  • c=   fω(g)

इसके साथ, आपको एल्गोरिथ्म एनालिसिस में आने वाले अधिकांश कार्यों को ऑर्डर करने में सक्षम होना चाहिए। एक अभ्यास के रूप में, इसे साबित करें!

निश्चित रूप से आपको उसके अनुसार सीमाओं की गणना करने में सक्षम होना होगा। बुनियादी लोगों के लिए जटिल कार्यों को तोड़ने के लिए कुछ उपयोगी तरकीबें हैं:

  • दोनों कार्यों को रूप में व्यक्त करें और घातांक की तुलना करें; यदि उनका अनुपात या , तो मूल भागफल होता है। 0 e0
  • अधिक आम तौर पर: यदि आप एक उत्तल, लगातार विभेदक और सख्ती से समारोह में वृद्धि हो, तो आप इतना है कि के रूप में अपने भागफल को फिर से लिख सकते हैंh

    f(n)g(n)=h(f(n))h(g(n)) ,

    साथ और मेंgΩ(1)

    limnf(n)g(n)= ,

    फिर

    limnf(n)g(n)=

    इस नियम (जर्मन में) के कठोर प्रमाण के लिए यहाँ देखें ।

  • लोकों पर अपने कार्यों की निरंतरता पर विचार करें। अब आप L'Hôpital के नियम का उपयोग कर सकते हैं ; इसकी स्थितियों से सावधान रहें!

  • असतत समकक्ष, स्टोलज़-सेसारो पर एक नज़र डालें ।
  • जब तथ्य सामने आते हैं, तो स्टर्लिंग के सूत्र का उपयोग करें :

    n!2πn(ne)n

आपके द्वारा एक बार सिद्ध किए गए बुनियादी संबंधों का एक पूल रखने और अक्सर उपयोग करने के लिए भी उपयोगी है, जैसे:

  • लघुगणक बहुपद की तुलना में धीमी गति से बढ़ता है, अर्थात

    अल्फा , β > 0(logn)αo(nβ) सभी ।α,β>0

  • बहुपद का क्रम:

    अल्फा<βnαo(nβ) सभी ।α<β

  • बहुपद घातीय की तुलना में धीमी गति से बढ़ते हैं:

    अल्फा>1nαo(cn) में सभी और ।αc>1


ऐसा हो सकता है कि उपरोक्त लेम्मा लागू नहीं है क्योंकि सीमा मौजूद नहीं है (उदाहरण के लिए जब कार्य दोलन करते हैं)। इस मामले में, लैंडो कक्षाओं के निम्‍न लक्षण वर्णन पर विचार करें, जो निम्‍नतर / निम्‍न का उपयोग कर रहे हैं :

साथ हमारे पास हैcs:=lim supnf(n)g(n)

  • 0cs<fO(g) और
  • cs=0fo(g)

साथ हमारे पास हैci:=lim infnf(n)g(n)

  • 0<cifΩ(g) और
  • ci=fω(g)

इसके अलावा,

  • 0<ci,cs<fΘ(g)gΘ(f) और
  • ci=cs=1fg

यहां और यहां जांचें कि क्या आप मेरी धारणा से भ्रमित हैं।


¹ नोटा नेने: मेरे सहयोगी ने एक गणितज्ञ समारोह लिखा है जो कई कार्यों के लिए सफलतापूर्वक करता है, इसलिए लेम्मा वास्तव में यांत्रिक गणना के लिए कार्य को कम कर देता है।

² भी देखें यहाँ


@ जूहू सार्वजनिक रूप से नहीं, अफाक, लेकिन यह खुद को लिखने के लिए प्राथमिक है; गणना Limit[f[n]/g[n], n -> Infinity]और एक मामले भेद प्रदर्शन करते हैं।
राफेल

20

एक और टिप: कभी-कभी फ़ंक्शन के लिए एक मोनोटोन फ़ंक्शन (जैसे लॉग या एक्सप) को लागू करना चीजों को स्पष्ट करता है।


5
इसे सावधानी से किया जाना चाहिए: , लेकिन । 2 2 nहे ( 2 n )2nO(n)22nO(2n)
शूल

2
Seconded। "लागू मोनोटोन फ़ंक्शन" चीज कुछ प्रकार की लोककथाओं लगती है जो सामान्य रूप से काम नहीं करती है। हम पर्याप्त मानदंडों पर काम कर रहे हैं और मेरे उत्तर के नवीनतम संशोधन में जो मैंने पोस्ट किया है, उसके साथ आया हूं
राफेल

17

स्कीना अपनी पुस्तक द अल्गोरिथम डिज़ाइन मैनुअल में सबसे सामान्य कार्यों के बीच प्रभुत्व संबंधों की एक क्रमबद्ध सूची प्रदान करती है:

n!cnn3n2n1+ϵnlgnnn1/2
lg2nlgnlgnlglgnlglgnα(n)1

यहाँ व्युत्क्रम Ackermann फ़ंक्शन को दर्शाता है ।α(n)


यह एक अजीब तरह से विशिष्ट सूची है। संबंधों (जो भी में से कई साधन बिल्कुल) अधिक सामान्य lemmata के एक मुट्ठी भर के लिए संक्षेप किया जा सकता है।
राफेल

यह एक प्रभुत्व संबंध के लिए उसकी धारणा है।
रॉबर्ट एस। बार्न्स

11

युक्ति: वोल्फ्राम अल्फा जैसी किसी चीज़ का उपयोग करके इन कार्यों के ग्राफ़ को आकर्षित करें कि वे कैसे बढ़ते हैं। ध्यान दें कि यह बहुत सटीक नहीं है, लेकिन यदि आप इसे पर्याप्त रूप से बड़ी संख्या के लिए प्रयास करते हैं, तो आपको विकास के तुलनात्मक पैटर्न को देखना चाहिए। यह निश्चित रूप से एक सबूत के लिए कोई विकल्प नहीं है।

उदाहरण के लिए, कोशिश: 1 से भूखंड लॉग (लॉग (एन)) 10000 एक व्यक्ति ग्राफ या देखने के लिए 10000 1 से भूखंड लॉग (लॉग (एन)) और साजिश लॉग (एन) एक तुलना देखने के लिए।


9
क्या हमें वास्तव में वोडू की सिफारिश करनी चाहिए ?
राफेल

+1 फ़ंक्शंस के ग्राफ़ खींचने का सुझाव देने के लिए, हालाँकि लिंक किए गए ग्राफ़ तब तक भ्रमित होते हैं जब तक कि आप यह नहीं जानते कि उनका क्या मतलब है।
त्सुशी जोतो

1
एक संकेत के रूप में एक ग्राफ लें जो आप साबित करना चाहते हैं। यह संकेत निश्चित रूप से गलत हो सकता है।
gnasher729

8

मैं विभिन्न अधिसूचनाओं की परिभाषाओं के अनुसार आगे बढ़ने का सुझाव देता हूं। कुछ मनमानी जोड़ी के साथ शुरू करें, और नीचे उल्लिखित के रूप में उन के क्रम को निर्धारित करें। फिर, प्रत्येक अतिरिक्त तत्व के लिए, बाइनरी खोज का उपयोग करके और नीचे के रूप में तुलना करके सॉर्ट की गई सूची में अपनी स्थिति का पता लगाएं। तो, उदाहरण के लिए, चलो और सॉर्ट करें , सूची के आरंभ करने के लिए n के पहले दो कार्य। 2 एनnloglogn2n

हम उस संपत्ति का उपयोग करते हैं जो रूप में पहली अभिव्यक्ति को फिर से लिखने के लिए । फिर हम उस परिभाषा का उपयोग करने के लिए आगे बढ़ सकते हैं ताकि किसी भी निरंतर बाद से । वहाँ एक है ऐसी है कि के लिए , ।n=2lognnloglogn=(2logn)loglogn=2lognloglognnloglogn=2lognloglogno(2n)c>0n0nn0c(nloglogn)=c(2lognloglogn)<2n

अगला, हम कोशिश करते हैं । हम इसकी तुलना , सबसे बड़ा तत्व जिसे हमने अब तक रखा है। चूंकि , हम इसी तरह से दिखाते हैं ।3n2n3n=(2log3)n=2nlog32no(3n)=o(2nlog3)

आदि।


2

यहां विकिपीडिया से एक सूची , तालिका में बड़ी जटिलता वर्ग के निचले हिस्से;

NameRunning TimeConstant timeO(1)Inverse Ackermann timeO(a(n))Iterated logarithmic timeO(logn)Log-logarithmicO(nlogn)Logarithmic timeO(logn)Polylogarithmic timepoly(logn)Fractional powerO(nc),where 0<c<1Linear timeO(n)"n log star n" timeO(nlogn)Quasilinear timeO(nlogn)Quadratic timeO(n2)Cubic timeO(n3)Polynomial timepoly(n)=2O(logn)Quasi-polynomial time2O(poly(logn))Sub-exponential time (first definition)O(2nϵ),ϵ>0Sub-exponential time (second definition)2o(n)Exponential time(with linear exponent)2O(n)Exponential time2poly(n)Factorial timeO(n!)

नोट:poly(x)=xO(1)


1
यह भी दिलचस्प है कि तालिका कैसे बताती है कि । जब आप जिस तालिका से लिंक करते हैं वह कुछ हद तक सटीक होती है, तो वहां से जुड़ी हुई (और जिसे आपने कॉपी किया है) जटिलता कक्षाओं के बारे में है, जो यहां मिश्रण करने के लिए एक सहायक चीज नहीं है। Landau संकेतन "समय" के बारे में नहीं है। 2nlogno(n!)
राफेल

1
मैंने इसे रखा ताकि जटिलता वर्गों के नाम पर सीधे यहां बात की जा सके। हाँ, लैंडौ क्रिप्टोग्राफी में एक विशिष्ट प्रकार के एल्गोरिदम के बारे में अधिक है।
kalalaka

1
मुझे @ राफेल के कुछ विचारों पर आपत्ति है। मैं कई वर्षों तक गणितज्ञ और प्रशिक्षक रहा। मेरा मानना ​​है कि उन चीजों को साबित करने के अलावा, इस तरह की एक बड़ी तालिका लोगों के अंतर्ज्ञान को आसानी से और बहुत बढ़ा देती है। और स्पर्शोन्मुख वर्गों के नाम लोगों को बहुत याद रखने और संवाद करने में मदद करते हैं।
अपैस.जैक

1
@ Apass.Jack मेरे शिक्षण अनुभव में, जब एक तालिका दी जाती है तो कई छात्र इसे दिल से सीखेंगे और किसी भी कार्य को तालिका में नहीं करने का आदेश देने में विफल रहेंगे। ध्यान दें कि इस साइट पर आने वाले असममित विकास के बारे में कई सवालों के जवाब में यह प्रभाव कैसा लगता है। अगर हम सबूतों को आसान बनाते हैं, तो निश्चित रूप से हम टेबल द्वारा निहित लेम्माटा का उपयोग करेंगे, लेकिन यह टेबल को प्रूफ करने का तरीका सीखने के बाद आता है । (उस बिंदु पर जोर देने के लिए, यहां आने वाले लोगों को टेबल से सामान पढ़ने में मदद की जरूरत नहीं है। उन्हें संबंधों को साबित करने में मदद की जरूरत है ।)
राफेल

1
@kelalaka "हां, लैंडौ क्रिप्टोग्राफी में एक विशिष्ट प्रकार के एल्गोरिदम के बारे में अधिक है।" - इसका कोई मतलब भी नहीं है। Landau संकेतन गणितीय कार्यों के गुणों का वर्णन करने के लिए एक शॉर्टहैंड है। इसका एल्गोरिदम से कोई लेना-देना नहीं है, प्रति क्रिप्टोग्राफी, प्रति से।
राफेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.