क्या हर रैखिक-समय एल्गोरिथ्म एक स्ट्रीमिंग एल्गोरिथ्म है?


14

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

इसलिए मेरा सवाल:

क्या प्रत्येक रैखिक-समय के एल्गोरिथ्म को लगातार कई पास के साथ स्ट्रीमिंग एल्गोरिथ्म के रूप में व्यक्त किया जा सकता है?

रैंडम एक्सेस एक सरल (सरल) निर्माण को रोकता है जो एक सकारात्मक उत्तर साबित करता है, लेकिन मैं एक काउंटर उदाहरण के साथ भी नहीं आ पाया हूं।

मशीन मॉडल के आधार पर, रैंडम एक्सेस भी एक मुद्दा नहीं हो सकता है, रनटाइम-वार। मुझे इन मॉडलों के जवाब में दिलचस्पी होगी:

  • ट्यूरिंग मशीन, फ्लैट इनपुट
  • सरणी के रूप में रैम, इनपुट
  • लिंक्ड लिस्ट के रूप में रैम, इनपुट

जैसा कि आप उत्तर में देखते हैं, "स्ट्रीमिंग एल्गोरिदम" अक्सर छोटे (बहुवचन स्थान) का अर्थ है। लेकिन आपकी प्रेरणा, सवाल मैं होना चाहिए लगता दिया: हर रैखिक समय एल्गोरिथ्म है कि का उपयोग करता है सकते हैं कार्यक्षेत्र के शब्दों एक स्ट्रीमिंग एल्गोरिथ्म है कि का उपयोग करता है करने के लिए परिवर्तित किया जा हे ( रों ) शब्द अंतरिक्ष। तो प्रति एक एक समस्या यह है कि के साथ हल किया जा सकता होगा ( n ) रैंडम एक्सेस के साथ अंतरिक्ष किसी भी निरंतर एल्गोरिथ्म स्ट्रीमिंग पास की आवश्यकता है, जबकि Ω ( एन ) अंतरिक्ष। कोई जवाब नहीं दिया है इस तरह के एक उदाहरण अभी तकsO(s)o(n)Ω(n)
Sasho निकोलोव

@ सशाओनिकोलोव: वास्तव में, संपूर्ण अंतरिक्ष मुद्दा स्पर्शरेखा है। मेरा सवाल मुख्य रूप से रनटाइम के बारे में है। यदि उत्तर "हां" था, तो कागज में सिद्ध की गई निचली सीमाएं (अंतरिक्ष जटिलता पर) सभी रैखिक-समय के एल्गोरिदम पर लागू होंगी । कि अंतरिक्ष पर निचली सीमा आकस्मिक है, लेकिन प्रति प्रश्न पर ध्यान केंद्रित नहीं है।
राफेल

मुझे समझ नहीं आता। असीमित समय के साथ एक रैखिक समय एल्गोरिथ्म को "एक पास स्ट्रीमिंग" बनाने के लिए यह तुच्छ है। आपका प्रश्न केवल तभी समझ में आता है जब रूप में "एक रेखीय समय यादृच्छिक अभिगम एल्गोरिथ्म को निरंतर पास स्ट्रीमिंग बनाया जा सकता है जबकि लगभग जटिलता को मापने वाला "। तो आप एक जटिलता उपाय चुनना चाहिए, ओ / डब्ल्यू यह कोई मतलब नहीं है। μ
सैशो निकोलेव

@ सशाओनिकोलोव: मुझे इस बात की जानकारी नहीं थी कि "स्ट्रीमिंग एल्गोरिथ्म" में ऐसी निश्चित समस्याएं थीं। यह देखते हुए कि वे स्ट्रीमिंग एल्गोरिदम के लिए एक रैखिक स्थान को कम से कम दिखाते हैं , मैंने मान लिया कि अंतरिक्ष एक परिभाषा का मूल नहीं था। लेकिन मुझे लगता है कि आप अनुवाद कर सकते हैं कि "कोई स्ट्रीमिंग एल्गोरिथ्म नहीं है ..."। हालांकि, इस परिभाषा के बारे में क्या: "एक स्ट्रीमिंग एल्गोरिथ्म एक एल्गोरिथ्म है जिसे एक बार इनपुट (सूची) एक तत्व दिया जाता है। प्रत्येक नए तत्व के लिए, यह में एक संगणना प्रदर्शन कर सकता है । लगातार ऐसे कई पास होने के बाद। , यह एक अतिरिक्त ( एन ) समय के बाद एक जवाब आउटपुट करने के लिए है । " o(n)o(n)
राफेल

@SashoNikolov: यह "इनपुट को कॉपी करेगा और कुछ भी करेगा" धारणा से एल्गोरिदम, लेकिन इसे समय तक सीमित करें । क्या यह आमतौर पर निरूपित वर्ग के लिए उपयुक्त है? यदि नहीं, तो मुझे नहीं लगता कि "स्ट्रीमिंग" को एक उपयोगी समय या अंतरिक्ष जटिलताओं के साथ परिभाषित किया जा सकता है। यह बल्कि एक रणनीति है, बहुत लालची या विभाजित और जीत की तरह। o(n2)
राफेल

जवाबों:


15

एल्गोरिदम को सार्थक बनाने के लिए, उन्हें इनपुट की तुलना में काफी कम मात्रा में काम करना पड़ता है। उदाहरण के लिए, यदि आप इनपुट के समान कार्य स्थान की अनुमति देते हैं, तो आप किसी भी एल्गोरिथ्म को "एकल-पास स्ट्रीमिंग एल्गोरिथ्म" के रूप में बता सकते हैं, जो इनपुट को कार्य स्थान में एकल पास में कॉपी करता है और उसके बाद ही कार्य का उपयोग करता है अंतरिक्ष।

मुझे लगता है कि स्ट्रीमिंग एल्गोरिदम के बारे में बात करते समय इनपुट आकार में अधिकांश पॉलीग्लारिथमिक पर कार्य स्थान को प्रतिबंधित करना विशिष्ट है। इस धारणा के तहत, मंझले चयन में मुनरो और पैटरसन [MP80] के परिणाम द्वारा O (1) -पास स्ट्रीमिंग एल्गोरिथ्म नहीं है: N तत्वों पर माध्य चयन के लिए किसी भी P -pass स्ट्रीमिंग एल्गोरिदम को Ω ( N 1 / P) स्टोर करना होगा ) तत्व। दूसरी ओर, मंझले चयन में एक प्रसिद्ध नियतात्मक रैखिक-समय एल्गोरिथ्म [BFPRT73] है।

[बीएफपीआरटी 73] मैनुअल ब्लम, रॉबर्ट डब्ल्यू फ्लॉयड, वॉन प्रैट, रोनाल्ड एल रिवेस्ट और रॉबर्ट ई। टारजन। चयन के लिए समय सीमा। कंप्यूटर और सिस्टम विज्ञान के जर्नल , 7 (4): 448-461, अगस्त 1973. DOI: 10.1016 / S0022-0000 (73) 80033-9

[MP80] जे। इयान मुनरो और माइक एस। पीटरसन। सीमित भंडारण के साथ चयन और छंटनी। सैद्धांतिक कंप्यूटर विज्ञान , 12 (3): 315–323 , नवंबर 1980। डीओआई: 10.1016 / 0304-3975 (80) 90061-4


6

स्ट्रीमिंग मॉडल में आपको केवल इनपुट के माध्यम से स्कैन करते समय निरंतर या पॉली-लॉगरिदमिक अतिरिक्त-डेटा संग्रहीत करने की अनुमति है। यदि आप एक रैखिक समय एल्गोरिथ्म पर विचार
करते हैं जो विभाजन का अनुसरण करता है और प्रतिमान को जीतता है, तो आपको अधिक जानकारी संग्रहीत करने की आवश्यकता है और / या आपको अपने डेटा के माध्यम से कई बार पुनरावृत्ति की गहराई के रूप में स्कैन करना चाहिए।

एक उदाहरण एक पाठ T के प्रत्यय सरणी के निर्माण के लिए DC3 एल्गोरिथ्म है (RAM मॉडल में सरणी के रूप में दिया गया है)। एक प्रत्यय सरणी का निर्माण करने के लिए, आप वर्णों को त्रिगुणों में समूहित करते हैं, इसलिए आपको नए सुपर-पात्रों के साथ एक पाठ मिलता है । आप इसे 0 , 1 , 2 की ऑफसेट के साथ कर सकते हैं , जिसके परिणामस्वरूप तीन नए ग्रंथों T 1 , T 2 , T 3 का परिणाम होगाT0,1,2T1,T2,T3 । दिलचस्प बात यह है कि आप प्रत्यय सरणी की गणना करता है, तो आप में से प्रत्यय सरणी हो सकता है रैखिक समय में। इसलिए एल्गोरिथ्म की जरूरत हैT1T2

t(n)=t(2/3n)+O(n)

समय। यह पुनरावर्तन को स्पष्ट रूप से हल करता है । मैं यह नहीं देखता कि इसे स्ट्रीमिंग एल्गोरिथ्म में कैसे बदला जा सकता है।t(n)=O(n)

एक अन्य प्रसिद्ध उदाहरण शास्त्रीय रैखिक-समय चयन एल्गोरिथ्म है।


यहाँ एक और संभावित उदाहरण है। एक ढेर का निर्माण ओ (एन) लेता है और आंतरिक रूप से विभाजन को विभाजित करता है और आधारित हीफीफाई () सबरूटीन को जीतता है।
मासिमो काफ़ारो

लेकिन यह एक प्रमाण नहीं है, क्या यह है? आप बस कह रहे हैं कि एक भोला अनुकरण काम नहीं करेगा। लेकिन कभी
सैशो निकोलेव

O(n)

"मुझे नहीं लगता कि इसे स्ट्रीमिंग एल्गोरिथ्म में कैसे बदल दिया जा सकता है" मुझे विश्वास है कि आप इसके अलावा कुछ कह रहे हैं "यह एल्गोरिथ्म संशोधन के बिना स्ट्रीमिंग नहीं है"
सशो निकोलेव

4

P

  • R(P)P
  • S(P)P

इसलिए मुझे लगता है कि आप बीच का अंतर कितना बड़ा हैआर(पी) तथा एस(पी) हो सकता है।

स्पेक्ट्रम के निचले छोर पर मुथु की स्ट्रीमिंग पुस्तक में एक उत्तर है । पहेली को देखो 3. समस्या है, की एक सरणी दीn पूर्णांक, सभी रेंज में [1,n-1], एक डुप्लिकेट पूर्णांक खोजें। वहाँ एक यादृच्छिक पहुँच रैखिक समय समाधान के साथ मौजूद हैहे(लॉगn) बिट्स (समकक्ष, O(1) number of words): basically pointer-chasing. But a constant pass algorithm must necessarily have ω(logn) space complexity.

There is an aspect of the model that we have not quite fixed: what direction do the passes go? I.e., once we feed the streaming algorithm the entire array, does the next pass start from the end or the beginning? Interestingly, this can make a big difference. Consider the problem of recognizing a well-parenthesizes expression where there are two types of parentheses. Say we want the probability of error to be O(1/log2n). Then Chakrabarti et al. show that if we restrict all passes to go in one direction, we have ps=Ω(n), where p is the number of passes and s is the space complexity. On the other hand, Magniez et al. give a simple algorithm that uses O(log2n) space, has polynomially small probability of a false positive, and makes one pass forward and one backwards.


1

Even in the simplest definition of "streaming algorithm" (an algorithm which, after every incremental iteration on the source, results in the immediate knowledge of the next incremental piece of the result), I can think of a few linear algorithms that don't behave that way. Hashing algorithms are a big one; FNV-1a is linear to the number of bytes in the source, but we don't know any part of the final hash until the full source has been processed.

RadixSort aka BucketSort is O(N) (technically O(NlogM) where M is the maximum value in the N items, which is considered small), and must run in its entirety to guarantee that any individual item is in its final place.

To be a "streaming" algorithm, at its simplest, an algorithm must have the following two properties, neither of which are expressly time-bound:

  • Better than O(N) space complexity (stated equivalently, the entire source doesn't have to be known and the entire result doesn't have to be stored)
  • O(N) I/O relationship (the algorithm produces a number of outputs linearly proportional to its inputs)

Therefore, the main class of algorithms that stream is that of algorithms that perform "projections" (incremental transformations of one input to X>0 outputs).


Why would O(logn) space usage not be okay? The papers linked in the other question play around with plenty of streaming algorithms that use ω(1) space.
Raphael

logN is fine too; the point was that the algorithm shouldn't need knowledge of the entire input or output at once.
KeithS

An Ω(n) space requirement does not imply it needs the whole input handy (i.e. it's not a streaming algorithm). But I get your point.
Raphael
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.