क्या O (mn) को "रैखिक" या "द्विघात" विकास माना जाता है?


24

यदि मेरा कोई कार्य है जिसकी समय जटिलता O ( mn ) है, जहाँ m और n इसके दो इनपुट के आकार हैं, तो क्या हम इसकी समय जटिलता को "रैखिक" कहेंगे (क्योंकि यह m और n दोनों में रैखिक है ) या "द्विघात" ( चूंकि यह दो आकारों का उत्पाद है)? या कुछ और?

मुझे लगता है कि इसे "रैखिक" कॉलिंग भ्रमित कर रही है क्योंकि O (m + n) भी रैखिक है लेकिन बहुत तेज़ है, लेकिन मुझे ऐसा लगता है कि इसे "द्विघात" कहना भी अजीब है क्योंकि यह प्रत्येक चर में अलग से रैखिक है।


7
क्या में रैखिक कहना महत्वपूर्ण है । यदि, उदाहरण के लिए, हमारे पास m किनारों और n शीर्षकों के साथ एक ग्राफ है , तो O(m+n) किनारों की संख्या में रैखिक है, लेकिन (संभवतः) वर्टिकल संख्याओं में द्विघात है।
राफेल

3
मुझे लगता है कि राफेल की टिप्पणी हाजिर है। "रैखिक" को किसी चीज़ के सापेक्ष उपयोग किया जाना चाहिए, अक्सर इनपुट का आकार। यदि आप एक m×n मैट्रिक्स स्थानांतरित कर रहे हैं तो ( m n )O(mn) इनपुट के आकार बाद से "रैखिक" है O(mn)। यदि आप एक m वर्ण स्ट्रिंग में n वर्ण स्ट्रिंग की घटनाओं को खोज रहे हैं , तो O ( m n ) रैखिक नहीं है --- O ( m + n ) होगा। mO(mn)O(m+n)
1

3
मैं @ राफेल की टिप्पणी से भी सहमत हूं, लेकिन एक ही समय में लोगों को यह कहना असामान्य नहीं है कि किसी विशेष समय जटिलता को "रैखिक" कहा जाता है, जो किसी भी व्यक्ति के सापेक्ष नहीं है। और कुछ मामलों में यह कोई फर्क नहीं पड़ता, उदाहरण के लिए O (m + n) सभी इनपुटों के सापेक्ष रैखिक है, इसलिए मैं इसे रैखिक कहने के बारे में दो बार नहीं सोचूंगा क्योंकि सैमएम ने भी ऊपर किया था। लेकिन यह सवाल भी पैदा होता है: क्या, अगर कुछ भी, O (mn) को रैखिक नहीं बनाता है?
मेहरदाद

3
@ मेहरदाद: मुझे लगता है कि बेसलाइन "इनपुट आकार में है, यह मानते हुए कि इनपुट को बाइनरी स्ट्रिंग (ट्यूरिंग मशीन टेप पर) के रूप में एन्कोड किया गया है"। यह इनपुट आकार तब और m का एक कार्य है। सैमएम अच्छे उदाहरण देता है। nm
राफेल

1
यह भी देखें people.cis.ksu.edu/~rhowell/asymptotic.pdf कई चर में Landau अंकन पर।
जोनास कोल्कर

जवाबों:


18

गणित में, इस तरह के कार्यों को मल्टीलाइनर फ़ंक्शन कहा जाता है। लेकिन कंप्यूटर वैज्ञानिक आमतौर पर इस शब्दावली को नहीं जानते होंगे। इस फ़ंक्शन को निश्चित रूप से रैखिक नहीं कहा जाना चाहिए , या तो गणित या कंप्यूटर विज्ञान में, जब तक कि आप यथोचित रूप से और एन में से एक पर विचार नहीं कर सकते ।mn


और एन में से एक को लगातार उचित मानने से क्या होता है ? mn
user2768

11

टिप्पणियों में चर्चा को स्पष्ट करने के लिए, यह मायने रखता है कि आप विकास के सापेक्ष क्या माप रहे हैं।

जैसा कि @Kaveh द्वारा उल्लेख किया गया है, एक ही समय में दोनों में रैखिक नहीं है, लेकिन रैखिक है यदि एक स्थिर है और दूसरा बढ़ता है।O(mn)

दूसरी ओर, को संभवतः रैखिक माना जाएगा। वास्तव में, यदि एम डबल्स, या यदि एन डबल्स, या यहां तक ​​कि अगर एम और एन दोनों डबल, एम + एन डबल से अधिक नहीं हो सकता है। यह m n का सच नहीं है ; यदि m और n दोनों डबल m n 4 से ऊपर जाते हैं। यही कारण है कि कई संदर्भों में यह चलने का समय द्विघात माना जाएगा। मैं एक जोड़े पैराग्राफ में स्ट्रिंग मिलान के साथ इसका एक उदाहरण देता हूं।O(m+n)mnmnm+nmnmnmn

लेकिन आमतौर पर जब आप बिग- नोटेशन का उपयोग कर रहे होते हैं, तो आप विशेष रूप से किसी चीज के संदर्भ में इसका उपयोग कर रहे होते हैं। चूंकि हम ज्यादातर सिद्धांतवादी हैं, यह आम तौर पर समस्या के इनपुट का आकार है।O

उदाहरण के लिए, मैट्रिक्स एडिशन लेते हैं। दो matrices जोड़ने में O ( m n ) समय लगता है। लेकिन हमारे इनपुट के प्रत्येक तत्व को केवल एक बार छुआ जाता है, इसलिए इसे आमतौर पर रैखिक कहा जाएगा। दूसरे शब्दों में कहें तो हमारा इनपुट O ( m n ) का है , इसलिए O ( m n ) का रनिंग टाइम इनपुट के आकार में रैखिक है।m×nO(mn)O(mn)O(mn)

अब हम स्ट्रिंग मिलान को देखते हैं - अर्थात्, हमें आकार एक स्ट्रिंग और आकार n की एक स्ट्रिंग दी जाती है और हम यह देखना चाहते हैं कि क्या बड़ी स्ट्रिंग के भीतर छोटे स्ट्रिंग की घटना है। हम इस भोलेपन को O ( m n ) समय में देख सकते हैं; इसे आम तौर पर द्विघात माना जाएगा। क्यूं कर? यदि m और n कुछ भी हो सकता है, तो m = n सेट करें । तब हमारा चलने का समय O ( m 2 ) है और हमारा इनपुट आकार 2 m हैmnO(mn)mnm=nO(m2)2m

दूसरी ओर, अगर हम का उपयोग राबिन-कार्प एल्गोरिथ्म , हम (औसतन) मिलता समय। हमारे इनपुट में दोनों तार शामिल थे, इसलिए हमारा इनपुट O ( m + n ) के आकार का था । इसलिए, यह आमतौर पर रैखिक के रूप में जाना जाएगा।O(m+n)O(m+n)

संक्षेप में: आमतौर पर मैट्रिक्स गुणा जैसी चीजों के लिए रैखिक कहा जाता है क्योंकि यह इनपुट के आकार में रैखिक है, लेकिन इसे आम तौर पर छोटे इनपुट के कारण स्ट्रिंग मिलान जैसी चीजों के लिए द्विघात कहा जाता है। कौन सा शब्द उपयुक्त है यह उस संदर्भ पर निर्भर करता है जिसका आप इसमें उपयोग कर रहे हैं।O(mn)


8

आप में चल रहे समय को मापने रहे हैं तो हे ( एम एन ) है नहीं में एक रेखीय समारोह ( मीटर , n ) । यदि m और n के बीच कोई संबंध नहीं है, तो यह फ़ंक्शन सामान्य रूप से द्विघात रूप से बढ़ सकता है ।(m,n)O(mn)(m,n)mn

हालाँकि, यह उनमें से प्रत्येक में अलग से एक रैखिक कार्य है, यानी यदि आप उनमें से एक को ठीक करते हैं और दूसरे चर में वृद्धि को देखते हैं तो यह अन्य में एक रैखिक कार्य है।


3

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


2
उदाहरण के लिए एक प्रमुख चर नहीं हो सकता है, उदाहरण के लिए यदि आपके पास नोड्स और किनारों की संख्या है।
राफेल

0

कुछ भाषा और एक समारोह ऐसी है कि मिनट { | डब्ल्यू | , | डब्ल्यू 2 | } ( | w | ) हर के लिए डब्ल्यू = डब्ल्यू 1 # डब्ल्यू 2एलL={w1#w2|wi(Σ{#}),}fmin{|w1|,|w2|}f(|w|)w=w1#w2Lआप एक का चलने का समय का अनुमान कर सकते एल्गोरिथ्म जो पहचानता एल के रूप में हे ( ( | w | ) ( | w | - ( | w | ) ) = हे ( ( | w | ) | w | - ( | w | )O(|w1||w2|)L |O(f(|w|)(|w|f(|w|))=O(f(|w|)|w|f(|w|)2)=O(f(|w|)|w|)

इसका मतलब है कि आपको रैखिक समय मिलता है, यदि आपके इनपुट का छोटा हिस्सा स्थिर (पूरे इनपुट के सापेक्ष) है, तो बीच में कुछ (जैसे ) यदि यह सबलाइनर और द्विघात रनटाइम है यदि यह रैखिक है।O(nlogn)

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