क्या कोई समस्या है जिसका सबसे अच्छा ज्ञात एल्गोरिथ्म समय


18

मैंने पहले हर में एक लॉग के साथ एक एल्गोरिथ्म कभी नहीं देखा है, और मैं सोच रहा हूं कि क्या इस फॉर्म के साथ वास्तव में कोई उपयोगी एल्गोरिदम हैं?

मैं बहुत सी चीजों को समझता हूं जिसके कारण रन समय में एक लॉग फैक्टर को गुणा किया जा सकता है, जैसे सॉर्टिंग या ट्री आधारित एल्गोरिदम, लेकिन लॉग फैक्टर द्वारा आपको विभाजित करने का क्या कारण हो सकता है?


24
Mergesort, f(n)=nlog2n
जेफ़

12
@ J @ ɛ ई स्नार्की मैक्स्नस्टर
सुरेश वेंकट

5
मूलांक सॉर्ट - यह वास्तव में O(nlogn/logn) । क्या चल रहा है कि यादृच्छिक अभिगम के कारण, आप एक लॉग फैक्टर को बचाने में सक्षम हैं ....
Sariel Har-Peled

मुझे आश्चर्य है कि अगर DTIME पदानुक्रम प्रमेय, का उपयोग इस तरह के एल्गोरिदम के अस्तित्व के लिए एक तर्क के रूप में किया जा सकता है, तो यह देखते हुए कि कोई रैम मॉडल में कुछ समान अंतरिक्ष-लागत बचत चाल कर सकता है।
चाजिसोप

जवाबों:


41

"एक लॉग द्वारा विभाजित करने के लिए आपको क्या कारण हो सकता है?" दो चीजों का एक संयोजन है:

  1. गणना का एक मॉडल जिसमें शब्द-आकार के पूर्णांकों पर निरंतर समय अंकगणितीय संचालन की अनुमति है, लेकिन जिसमें आप शब्द कितने लंबे हैं, इसके बारे में रूढ़िवादी होना चाहते हैं, इसलिए आप प्रति शब्द बिट्स मानते हैं (क्योंकि इससे कम भी नहीं और आप सभी मेमोरी को संबोधित नहीं कर सकते हैं, और यह भी क्योंकि एल्गोरिदम जो टेबल लुकअप का उपयोग करते हैं, यदि शब्द लंबे थे, तो टेबल सेट करने में बहुत अधिक समय लगेगा, औरO(logn)
  2. एक एल्गोरिथ्म जो बिट्स को शब्दों में पैक करके डेटा को संपीड़ित करता है और फिर शब्दों पर काम करता है।

मुझे लगता है कि कई उदाहरण हैं, लेकिन क्लासिक उदाहरण सबसे लंबे समय तक सामान्य आदि के लिए चार रूसी एल्गोरिदम है । यह वास्तव में होने के कारण समाप्त होता है , क्योंकि यह बिट-पैकिंग विचार का उपयोग करता है लेकिन फिर एक सेकंड बचाता है एक अन्य विचार का उपयोग करके लॉग फ़ैक्टर: एक तालिका लुकअप द्वारा O ( लॉग 2 एन ) बिट संचालन के ब्लॉक की जगह ।O(n2/log2n)O(log2n)


35

रूबिक क्यूब एक बहुत ही स्वाभाविक (और मेरे लिए, अप्रत्याशित) उदाहरण है। एक n×n×n घन को हल करने के लिए Θ(n2/logn) चरणों की आवश्यकता होती है । (ध्यान दें कि यह थीटा नोटेशन है, इसलिए यह एक तंग ऊपरी और निचला बाउंड है)।

यह इस पत्र में दिखाया गया है [1]।

यह उल्लेखनीय है कि रूबिक के घन के विशिष्ट उदाहरणों को हल करने की जटिलता खुली है, लेकिन एनपी-हार्ड ( उदाहरण के लिए यहां चर्चा की गई ) एनपी हार्ड [2] होने का अनुमान लगाया गया हैΘ(n2/logn) एल्गोरिथ्म एक समाधान की गारंटी देता है, और यह गारंटी देता है कि सब समाधान asymptotically इष्टतम हैं, लेकिन यह बेहतर विशिष्ट उदाहरण का समाधान नहीं हो सकता है। उपयोगी की आपकी परिभाषा यहां लागू हो सकती है या नहीं भी हो सकती है, क्योंकि रूबिक के क्यूब्स आमतौर पर इस एल्गोरिथ्म के साथ हल नहीं होते हैं ( Kociemba के एल्गोरिथ्म आमतौर पर छोटे क्यूब्स के लिए उपयोग किया जाता है क्योंकि यह अभ्यास में तेज, इष्टतम समाधान देता है)।

[१] एरिक डी। डेमिनेन, मार्टिन एल। डेमिनेन, सारा ईसेनस्टैट, अन्ना लुबिव और एंड्रयू विंसलो। रूबिक के क्यूब्स को हल करने के लिए एल्गोरिदम। एल्गोरिदम पर 19 वीं वार्षिक यूरोपीय संगोष्ठी की कार्यवाही (ईएसए 2011), सितंबर 5-9, 2011, पृष्ठ 989-700

[२] एरिक डी। डेमियन, सारा आइजनस्टैट, और मिखाइल रुडोय। रूबिक क्यूब को वैकल्पिक रूप से हल करना एनपी-पूर्ण है। कंप्यूटर विज्ञान (एसटीएसीएस 2018) के सैद्धांतिक पहलुओं पर 35 वें अंतर्राष्ट्रीय संगोष्ठी की कार्यवाही, फरवरी 28-मार्च 3, 2018, पृष्ठ 24: 1-24: 13।


16

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


5
यह डेविड के उत्तर में वर्णित "फोर रशियन" तकनीक का अधिक जटिल उदाहरण है।
जेफ

13

ठीक उसी तरह से नहीं, जैसा आपने पूछा था, लेकिन एक स्थिति "वाइल्ड" में, जिसमें एक लॉग फैक्टर हर में दिखाई देता है वह है पेपर " पीबल्स एंड ब्रांचिंग प्रोग्राम्स फॉर ट्री इवैलुएशन ", स्टीफन कुक, पियरे मैकेंजी, डैनिन वेहर, मार्क ब्रेवरमैन और राहुल संथानम

पेड़ मूल्यांकन समस्या (TEP) है: एक दिया में -ary पेड़ मूल्यों के साथ एनोटेट { 1 , ... , कश्मीर } लीफ़्स और कार्यों पर { 1 , ... , कश्मीर } d{1,,k} आंतरिक नोड्स पर पेड़ का मूल्यांकन करें। यहां प्रत्येक आंतरिक नोड को अपने बच्चों के मूल्यों पर अपने एनोटेट फ़ंक्शन का मूल्य मिलता है। यह एक आसान समस्या है, और बिंदु यह दिखाना है कि इसे लघुगणक अंतरिक्ष (जब पेड़ की ऊंचाई इनपुट का हिस्सा है) में हल नहीं किया जा सकता है। उस प्रभाव के लिए, हम TEP को हल करने वाले शाखा कार्यक्रमों के आकार में रुचि रखते हैं।{1,,k}d{1,,k}

धारा 5 में, ऊंचाई के पेड़ों के लिए तंग सीमाएं प्रस्तुत की जाती हैं, दोनों टीईपी के लिए और संबंधित समस्या बीईपी के लिए, जिसमें आउटपुट कुछ हद तक मनमाने ढंग से तक ढह जाता है । TEP के लिए बाउंड Θ ( k 2 d - 1 ) है , जबकि BEP के लिए बाउंड Θ ( k 2 d - 1 / log k ) है , यानी आपको लॉग k की सेविंग मिलती है ।{0,1}Θ(k2d1)Θ(k2d1/logk)logk


12

भले ही यह क्रम के बारे में नहीं है, मैंने सोचा कि यह Hopcroft, पॉल, और बहादुर के शास्त्रीय परिणाम उल्लेख के लायक: [1], यह अभी भी है, क्योंकि "एक कारककोबचाने केलिए क्या कारण हो सकता है" की भावना।TIME[t]SPACE[t/logt]

यह उन समस्याओं के बहुत से उदाहरण देता है जिनकी अंतरिक्ष जटिलता पर सबसे अच्छी तरह से ज्ञात ऊपरी सीमा में एक लॉग है। (आपके दृष्टिकोण के आधार पर, मुझे लगता है कि या तो यह उदाहरण बहुत दिलचस्प बना देगा - क्या एक अद्भुत प्रमेय! - या बहुत ही निर्लिप्तता - यह "वास्तव में उपयोगी नहीं है"।)

[१] होपक्रॉफ्ट, पॉल और वैलेन्ट। समय बनाम अंतरिक्ष पर । जे। एसीएम 24 (2): 332-337, 1977।



8

लंबाई दो तारों के बीच संपादित करें (उर्फ लेवेन्सहाइट) दूरी के लिए सबसे अच्छा ज्ञात एल्गोरिथ्म ( ( एन / लॉग एन ) 2 ) लेता है।nO((n/logn)2) समय:

विलियम जे। मसेक, माइक पैटर्सन: ए फास्टर एलगोरिदम कम्प्यूटिंग स्ट्रिंग एडिटिंग डिस्टेंस। जे। कम्प्यूट। Syst। विज्ञान। 20 (1): 18-31 (1980)।


4
फिर से, यह चार रूसी एल्गोरिथ्म का एक रूपांतर है, मुझे लगता है।
डेविड एपस्टीन

7

ग्रेग और पॉल वैलेंट (बिट ट्रिक्स से कोई संबंध नहीं) द्वारा समझी गई समस्या के लिए सही बाध्य के रूप में प्रकट होता है:Θ(n/logn)

ग्रेगरी वैलिएंट, और पॉल वैलिएंट, द लीनियर एसेक्टर्स की शक्ति, 2011. कंप्यूटर विज्ञान की नींव पर 52 वें वार्षिक IEEE संगोष्ठी में, FOCS 2011।


7

यहाँ एक तंग कारक का एक और उदाहरण एक लॉग फैक्टर है। (यह बूलियन फंक्शन कॉम्प्लेक्सिटी से थ्योरम 6.17 है: एडवांस एंड फ्रंटियर्स बाय स्टैस जुकना।)

तत्व भिन्नता समस्या का सूत्र आकार (पूर्ण बाइनरी आधार या डी मॉर्गन आधार पर) , जहां n इनपुट में बिट्स की संख्या है।Θ(n2/logn)n

हर में लॉग फैक्टर दिखाई देने का कारण यह है कि 1 और पॉली ( m ) के बीच पूर्णांक का प्रतिनिधित्व करने के लिए n : = O ( m log m ) बिट्स की आवश्यकता होती है, क्योंकि प्रत्येक पूर्णांक के लिए O ( log m ) बिट्स की आवश्यकता होती है । तो एक ऊपरी कि के मामले में प्राकृतिक दिखता बाध्य मीटर , जैसे Θ ( मीटर 2 लॉग मीटर ) , हो जाता है Θ ( n 2 / लॉग इन करें n ) जब के रूप में व्यक्तmpoly(m)n:=O(mlogm)O(logm)mΘ(m2logm)Θ(n2/logn)nn


2

ट्रायल डिवीजन द्वारा n के प्रमुख कारकों का पता लगाना जब प्रिम्स की सूची पहले से दी गई हो। वहांθ(nलॉग(n)) n से कम primes यदि ये प्राइम आपको दिए जाते हैं, तो उनमें से प्रत्येक के द्वारा n का ट्रायल डिवीजन होता है θ(nलॉग(n)) समय (संभालने वाला विभाजन एक स्थिर समय ऑपरेशन है)


3
वास्तव में, यह मोटे तौर पर देखने के लिए पर्याप्त है 2n/लॉगn नीचे primes n। लेकिन वहाँ कहीं बेहतर एल्गोरिदम हैं।
युवल फिल्मस

-2

कुछ हद तक JG के उत्तर और "बॉक्स के बाहर की सोच" के समान, यह एक संबंधित / प्रासंगिक / एप्रोपोस / मौलिक नकारात्मक परिणाम जैसा लगता है । एक सार्वभौमिक टीएम के साथ विकर्ण के आधार पर, एक मौजूद हैहे((n)) DTIME भाषा जो चल नहीं सकती हे((n)लॉग(n))समय पदानुक्रम प्रमेय के कारण डीटीटाइम । तो यह एक रैखिक DTIME एल्गोरिथ्म पर लागू होता है, जो मौजूद है,(n)=n, कि असंभव में चलाता है हे(nलॉगn) DTIME।


2
on a TM, DTIME(n/logn) is trivial as it doesn't allow the machine to read the whole input. also, the DTIME notation makes the big-oh notation unnecessary.
Sasho Nikolov

?? there is still theory for sublinear time algorithms...
vzn

3
sublinear algorithms make sense in oracle & random access models. DTIME is standardly defined w.r.t. multitape TM, and that's the definition used in the hierarchy theorem for DTIME.
Sasho Nikolov

1
No, @SashoNikolov, DTIME(n/logn) is not trivial. Compare "Are the first n/lgn bits of the input all zeros?" with "Do the first n/lgn bits of the input encode a satisfiable boolean formula?"
Jeffε

5
@JɛffE: You cannot test “Are the first n/lgn bits of the input all zeros?” in O(n/logn) time on a TM, since you do not know what n is without first reading the whole input, which takes time n. It is a standard fact that if f(n)<n, then DTIME(f(n)) contains only languages the membership in which can be determined from the first k bits of input for a constant k (and therefore are computable in constant time).
Emil Jeřábek supports Monica
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.