कंप्यूटर विज्ञान में छंटनी बनाम 'वास्तविक' दुनिया में छंटनी


86

मैं सॉफ्टवेयर में एल्गोरिदम को सॉर्ट करने के बारे में सोच रहा था, और संभव तरीके से कोई भी O(nlogn)सड़क को पार कर सकता था । मुझे नहीं लगता कि व्यावहारिक अर्थों में तेजी से छांटना संभव है, इसलिए कृपया यह न सोचें कि मैं ऐसा करता हूं।

उस ने कहा, यह लगभग सभी सॉर्टिंग एल्गोरिदम के साथ लगता है, सॉफ़्टवेयर को प्रत्येक तत्व की स्थिति पता होनी चाहिए। जो समझ में आता है, अन्यथा, यह कैसे पता चलेगा कि प्रत्येक तत्व को कुछ छँटाई मानदंडों के अनुसार कहाँ रखा जाए?

लेकिन जब मैंने इस सोच को वास्तविक दुनिया के साथ पार किया, तो एक अपकेंद्रित्र को पता नहीं है कि प्रत्येक अणु किस स्थिति में है जब यह अणुओं को घनत्व द्वारा 'सॉर्ट' करता है। वास्तव में, यह प्रत्येक अणु की स्थिति के बारे में परवाह नहीं करता है। हालाँकि, यह खरबों वस्तुओं पर अपेक्षाकृत कम समय में खरबों को छाँट सकता है, इस तथ्य के कारण कि प्रत्येक अणु घनत्व और गुरुत्वाकर्षण कानूनों का पालन करता है - जो मुझे सोच में पड़ गए।

क्या सूची के क्रम को 'बल' देने के लिए प्रत्येक नोड पर कुछ ओवरहेड (प्रत्येक नोड पर कुछ मूल्य या विधि) से संभव होगा? एक अपकेंद्रित्र की तरह कुछ, जहां केवल प्रत्येक तत्व अंतरिक्ष में अपनी सापेक्ष स्थिति के बारे में परवाह करता है (अन्य नोड्स के संबंध में)। या, यह गणना में कुछ नियम का उल्लंघन करता है?

मुझे लगता है कि यहां लाए गए बड़े बिंदुओं में से एक प्रकृति के क्वांटम यांत्रिक प्रभाव हैं और वे एक साथ सभी कणों के समानांतर कैसे लागू होते हैं।

शायद शास्त्रीय कंप्यूटर स्वाभाविक रूप से उस क्षेत्र के सॉर्टिंग को प्रतिबंधित करते हैं O(nlogn), जहाँ क्वांटम कंप्यूटर उस दहलीज को पार करने में सक्षम हो सकते O(logn)हैं जो समानांतर में कार्य करते हैं।

एक सेंट्रीफ्यूज मूल रूप से एक समानांतर बुलबुला सॉर्ट होने की बात सही प्रतीत होती है, जिसमें समय की जटिलता है O(n)

मुझे लगता है कि अगला विचार यह है कि अगर प्रकृति में छंटनी हो सकती है O(n), तो कंप्यूटर क्यों नहीं कर सकते?


44
अपकेंद्रित्र सिर्फ एक व्यापक समानांतर बुलबुला सॉर्ट कार्यान्वयन है, कुछ भी नहीं फैंसी।
el.pescado

3
जब nप्रोसेसर (कोर) के पास सिर्फ nवस्तुओं की एक सरणी को छाँटने के लिए आप आसानी से O(n)जटिलता प्राप्त कर सकते हैं । एक कड़वा सच यह है कि हमें आमतौर पर सीपीयू पर केवल 2..10 कोर के साथ लंबी सरणियों (हजारों और लाखों आइटम) को सॉर्ट करना पड़ता है।
दिमित्री बेंसेंको

24
ध्यान दें कि एन लॉग एन तुलनाओं की संख्या है जो कि एक तरह से बनाई जानी चाहिए जो आइटमों के जोड़े की तुलना करती है । कोई आवश्यकता नहीं है कि एक सॉर्ट एल्गोरिथ्म वस्तुओं के जोड़े की तुलना करता है ; यदि आप एक ऐसे प्रकार के साथ आ सकते हैं जो युग्मक तुलना नहीं करता है, तो आप इसे एन लॉग एन की तुलना में तेज बना सकते हैं।
एरिक लिपर्ट

7
आपके द्वारा अनुपलब्ध बात यह है कि समाधान में उन अणुओं में से प्रत्येक प्रसंस्करण इकाइयाँ हैं। अणुओं को गिनने वाला कोई एमुलेटर नहीं है - अणु खुद को गिनते हैं। एक अनुरूप कंप्यूटर में कई प्रोसेसर कोर और स्वतंत्र यादें होंगी जैसे कि आपके पास सॉर्ट करने के लिए आइटम हैं। O(n)अपने दम पर आपको कुछ भी नहीं बताता है - यह केवल समान बाधाओं के साथ एल्गोरिदम की तुलना करने और समान आर्किटेक्चर पर चलने के लिए उपयोगी है; एल्गोरिथम जटिलता के लिए परिचयात्मक पाठ्यक्रमों में हम एक बहुत ही सरल मॉडल "कंप्यूटर" का उपयोग करते हैं जिसका सेंट्रीफ्यूज या वास्तविक कंप्यूटरों के साथ बहुत कम संबंध है :)
लुअन

4
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूँ क्योंकि यह cs.stackexchange.com पर है
रॉबर्ट फ्रेजर

जवाबों:


71

संपादित करें: मैंने एक अपकेंद्रित्र के तंत्र को गलत समझा था और ऐसा प्रतीत होता है कि यह तुलनात्मक रूप से, एक व्यापक-समानांतर एक पर करता है। हालाँकि ऐसी भौतिक प्रक्रियाएँ हैं जो दो गुणों की तुलना करने के बजाय निकाले जाने वाली इकाई की संपत्ति पर काम करती हैं। यह उत्तर एल्गोरिदम को कवर करता है जो उस प्रकृति के हैं।

एक अपकेंद्रित्र एक छँटाई तंत्र को लागू करता है जो तत्वों के बीच तुलना के माध्यम से वास्तव में काम नहीं करता है, लेकिन वास्तव में अलगाव में प्रत्येक व्यक्तिगत तत्व पर एक संपत्ति ('केन्द्रापसारक बल') द्वारा होता है। कुछ छंटाई वाले एल्गोरिदम इस विषय में आते हैं, विशेष रूप से मूलांक सॉर्ट । जब यह छँटाई एल्गोरिथ्म समानांतर हो जाता है तो इसे एक अपकेंद्रित्र के उदाहरण से संपर्क करना चाहिए।

कुछ अन्य गैर-तुलनात्मक सॉर्टिंग एल्गोरिदम बकेट सॉर्ट और काउंटिंग सॉर्ट हैं । आप पा सकते हैं कि बाल्टी सॉर्ट भी एक अपकेंद्रित्र के सामान्य विचार में फिट बैठता है (त्रिज्या एक बिन के अनुरूप हो सकता है)।

एक और तथाकथित 'सॉर्टिंग एल्गोरिथ्म' जहां प्रत्येक तत्व अलगाव में माना जाता है स्लीप सॉर्ट है । यहाँ समय केन्द्रापसारक बल के बजाय छँटाई के लिए प्रयुक्त परिमाण का काम करता है।


यह वास्तव में सही उत्तर है - बिन छँटाई / मूलांक छँटाई में O (n) जटिलता है बशर्ते कि डिब्बे और इनपुट को O (1) समय में पहुँचा जा सकता है।
pjc50

5
मैं पूछने जा रहा था "क्या किसी और को नींद के बारे में सोचना ठीक है?"।
स्पष्ट

तत्वों की तुलना करके केन्द्रापसारक कार्य करते हैं; हैश फ़ंक्शन (मुख्य रूप से) घनत्व है। उदाहरण के लिए, यदि आप एक प्रोपेन-और-एयर मिश्रण को अपकेंद्रित्र करते हैं, तो आप प्रोपेन को सीमाओं के अनुसार हल कर देंगे; लेकिन यदि आप प्रोपेन्यूज प्रोपेन-एंड-वाटर, आप प्रोपेन को केंद्र (पानी के अधिक घने) में छांट लेंगे। यह प्रक्रिया लगभग उसी शारीरिक प्रक्रिया के समान है जिसे "बबल सॉर्ट" नाम दिया गया था।
नेट

क्या SleepSort की जटिलता वास्तव में उस अनुसूचक पर निर्भर नहीं है?
मोरवेन

@ मॉर्नवे पुराने लिनक्स शेड्यूलर O (1) थे जबकि नया O (लॉग एन) है। ये दोनों नींद में लगातार कारकों से
आगे निकल जाते

35

कम्प्यूटेशनल जटिलता को हमेशा कुछ कम्प्यूटेशनल मॉडल के संबंध में परिभाषित किया जाता है। उदाहरण के लिए, एक सामान्य कंप्यूटर पर O ( n ) एक एल्गोरिथ्म, ब्रेनफक में लागू होने पर O (2 n ) हो सकता है ।

अपकेंद्रित्र कम्प्यूटेशनल मॉडल में कुछ दिलचस्प गुण हैं; उदाहरण के लिए:

  • यह मनमाना समानता का समर्थन करता है; कोई फर्क नहीं पड़ता कि कितने कण समाधान में हैं, वे सभी एक साथ सॉर्ट किए जा सकते हैं।
  • यह द्रव्यमान द्वारा सख्त रैखिक प्रकार के कण नहीं देता है, बल्कि एक बहुत करीब (कम-ऊर्जा) सन्निकटन है।
  • परिणाम में व्यक्तिगत कणों की जांच करना संभव नहीं है।
  • विभिन्न गुणों द्वारा कणों को क्रमबद्ध करना संभव नहीं है; केवल जनसमर्थन है।

यह देखते हुए कि हमारे पास सामान्य-प्रयोजन कंप्यूटिंग हार्डवेयर में ऐसा कुछ लागू करने की क्षमता नहीं है, मॉडल में व्यावहारिक प्रासंगिकता नहीं हो सकती है; लेकिन यह अभी भी जांच के लायक हो सकता है, यह देखने के लिए कि क्या इससे कुछ भी सीखा जाना है। Nondeterministic एल्गोरिदम और क्वांटम एल्गोरिदम दोनों अनुसंधान के सक्रिय क्षेत्र रहे हैं, उदाहरण के लिए, भले ही आज वास्तव में लागू नहीं है।


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

29

चाल वहाँ है, कि आप केवल एक अपकेंद्रित्र का उपयोग कर अपनी सूची को सॉर्ट करने की संभावना है। अन्य वास्तविक दुनिया के प्रकारों के साथ [प्रशस्ति पत्र की जरूरत], आप इस संभावना को बदल सकते हैं कि आपकी सूची को छाँट लिया है, लेकिन सभी मूल्यों (परमाणुओं) की जांच के बिना कभी भी निश्चित न हों।

इस प्रश्न पर विचार करें: "आपको अपना अपकेंद्रित्र कब तक चलाना चाहिए?"
यदि आप इसे केवल पिकोसॉकोंड के लिए चलाते हैं, तो आपका नमूना प्रारंभिक अवस्था की तुलना में कम हो सकता है .. या यदि आप इसे कुछ दिनों के लिए चलाते हैं, तो यह पूरी तरह से सॉर्ट हो सकता है। हालाँकि, आप वास्तव में सामग्री की जाँच किए बिना नहीं जानते होंगे।


यह एक बहुत अच्छा बिंदु है। आपको कैसे मालूम? तो फिर, अगर जगह में नियम काफी अच्छे हैं, तो क्या आप भी जानना चाहेंगे? (यानी, यदि आप संभावना को इतना कम कर देते हैं कि यह नगण्य हो जाता है)।
क्रिस

आप हमेशा गणना कर सकते हैं कि एक कण को ​​अपकेंद्रित्र के अंत तक पहुंचने में कितना समय लगेगा। आप त्वरण को जानते हैं (w ^ 2 * r जहां w कोणीय वेग है) और आप समय की गणना कर सकते हैं।
user1952500

1
यह सच है, लेकिन जैसा कि ब्राउनियन गति , अन्य परमाणु बलों , और क्वांटम भौतिकी (धन्यवाद, छोटी चीजें!) द्वारा भ्रमित किया जाता है , तब भी आप पूरी तरह से निश्चित नहीं हो सकते हैं कि आपने अपनी सूची को तब तक क्रमबद्ध किया है जब तक आप राज्य की जांच नहीं कर लेते।
ti7

1
यदि आपके पास बहुत छोटे कण नहीं हैं, तो आप क्वांटम प्रभावों को अनदेखा कर सकते हैं। यदि आपके पास बहुत छोटे कण हैं, तो छंटाई एल्गोरिथ्म को काम करने की आवश्यकता नहीं है, और वास्तव में, आप क्वांटम प्रभावों के कारण काम करने के लिए उस पर निर्भर नहीं हो सकते हैं। और आप अनिश्चितता सिद्धांत के कारण राज्य की मज़बूती से जाँच नहीं कर सकते हैं (एक कण की जाँच अन्य कणों को स्थानांतरित करने की ओर ले जाएगी)।
user1952500

1
@ क्रिस खैर, हम जानते हैं कि अपकेंद्रित्र पूरी तरह से सॉर्ट नहीं करता है। हम इसे तब तक करते रहते हैं जब तक कि अंतर व्यावहारिक उद्देश्य के लिए मायने नहीं रखता है - जैसे आपके रक्त अपकेंद्रित्र में रक्त के थक्के को रोकना। लेकिन यूरेनियम सेंट्रीफ्यूज को देखें - उन वस्तुओं को छांटने की जरूरत है जो बहुत "करीब" (कठिन से अलग) हैं, और एक बड़ी सुविधा की आवश्यकता होती है जो वांछित सामग्री की छोटी मात्रा का उत्पादन करने के लिए बार-बार भारी खर्च पर छंटनी करते रहते हैं। और अपकेंद्रित्र का एक निश्चित आकार है, और जुदाई का समय ट्यूबों की चौड़ाई के लिए आनुपातिक है, और ... आप बस ओ (एन), याय नहीं कह सकते!
लुआँ

5

कंप्यूटर पर आधारित "ऑर्डरिंग" का एक वास्तविक विश्व उदाहरण स्वायत्त ड्रोन होगा जो सहकारी रूप से एक दूसरे के साथ काम करते हैं, जिन्हें "ड्रोन स्वार्म्स" के रूप में जाना जाता है। ड्रोन दोनों व्यक्तियों और एक समूह के रूप में कार्य करते हैं और संवाद करते हैं, और कई लक्ष्यों को ट्रैक कर सकते हैं। ड्रोन सामूहिक रूप से तय करते हैं कि कौन से ड्रोन किस लक्ष्य का पालन करेंगे और ड्रोन के बीच टकराव से बचने के लिए स्पष्ट आवश्यकता है। इसके शुरुआती संस्करण ड्रोन थे जो गठन में रहते हुए रास्ते के बिंदुओं से गुजरे थे, लेकिन गठन बदल सकता था।

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

कंप्यूटर आधारित सॉर्ट पर वापस जाना, एक मुद्दा यह है कि एक मुख्य मेमोरी बस है, और समानांतर में मेमोरी में स्थानांतरित करने के लिए बड़ी संख्या में ऑब्जेक्ट के लिए कोई रास्ता नहीं है।

प्रत्येक तत्व की स्थिति को जानें

टेप सॉर्ट के मामले में, प्रत्येक तत्व (रिकॉर्ड) की स्थिति केवल "टेप" के लिए "ज्ञात" है, कंप्यूटर के लिए नहीं। एक टेप आधारित सॉर्ट को केवल एक समय में दो तत्वों के साथ काम करने की आवश्यकता होती है, और एक टेप पर रन सीमाओं को चिह्नित करने का एक तरीका है (फ़ाइल चिह्न, या विभिन्न आकार का एक रिकॉर्ड)।


4

IMHO, लोग लॉग (n) से आगे निकल जाते हैं। O (nlog (n)) IS व्यावहारिक रूप से O (n) है। और आपको डेटा पढ़ने के लिए O (n) की आवश्यकता है।

क्विकोसर्ट जैसे कई एल्गोरिदम तत्वों को सॉर्ट करने के लिए बहुत तेज़ तरीका प्रदान करते हैं। आप क्विकॉर्ट के बदलावों को लागू कर सकते हैं जो व्यवहार में बहुत तेज़ होंगे।

स्वाभाविक रूप से सभी भौतिक प्रणालियां असीम रूप से समानांतर हैं। आपके पास रेत के एक दाने में परमाणुओं का एक भार हो सकता है, प्रकृति के पास यह पता लगाने के लिए पर्याप्त कम्प्यूटेशनल शक्ति है कि प्रत्येक परमाणु में प्रत्येक इलेक्ट्रॉन कहां होना चाहिए। इसलिए यदि आपके पास पर्याप्त कम्प्यूटेशनल संसाधन (O (n) प्रोसेसर) हैं तो आप लॉग (n) समय में n नंबर सॉर्ट कर सकते हैं।

टिप्पणियों से:

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

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


लेकिन सिर्फ यह गणना नहीं है - कुछ काम करने के लिए प्रकृति के भौतिक गुणों का उपयोग करना? मैं यहां क्वांटम कंप्यूटिंग में पार हो सकता हूं, लेकिन अगर यह शारीरिक रूप से किया जा सकता है, तो यह कम्प्यूटेशनल रूप से किया जा सकता है? शायद शास्त्रीय अभिकलन O (nlogn) और O (logn) के बीच का सड़क खंड है।
क्रिस

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

क्या यह सीमा QM वस्तुओं पर भी लागू होती है? जिज्ञासा से बाहर
Kris

1
@ क्रिस मैं इसका जवाब देने के लिए पर्याप्त गहराई में क्यूएम को नहीं समझता।
एलकमिना

कोई चिंता नहीं! मैं बहुत जिज्ञासु हूं और मुझे नींद नहीं आ रही है। दिलचस्प जवाब के लिए धन्यवाद।
क्रिस

4

जब मैंने कॉलेज शुरू किया तो मैंने हाई स्कूल के बाद एक ऑफिस समर में काम किया। मैंने एपी कंप्यूटर साइंस में पढ़ाई की थी, अन्य चीजों के अलावा, छँटाई और खोज की

मैंने इस ज्ञान को कई भौतिक प्रणालियों में लागू किया जिन्हें मैं याद कर सकता हूं:

प्राकृतिक मर्ज को शुरू करने के लिए…

फ़ाइल-कार्ड के आकार के आंसू बंद करने सहित एक सिस्टम मुद्रित मल्टीपार्ट फॉर्म, जिसे दराज के बैंक में दाखिल करने की आवश्यकता होती है।

मैंने उनमें से एक ढेर के साथ शुरुआत की और ढेर को छांटना शुरू किया। पहला कदम 5 या तो उठा रहा है, कुछ काफी आसानी से आपके हाथ में रखा जा सकता है। क्रमबद्ध पैकेट को नीचे रखें, उन्हें अलग रखने के लिए प्रत्येक स्टैक को काटें।

फिर, ढेर के प्रत्येक जोड़े को मर्ज करें , एक बड़ा स्टैक का निर्माण। तब तक दोहराएं जब तक कि केवल एक स्टैक न हो।

… प्रविष्टि को पूरा करने के लिए

सॉर्ट किए गए कार्ड को फाइल करना आसान है, क्योंकि प्रत्येक अगले एक ही खुले दराज से थोड़ा दूर है।

मूलांक छाँटे

यह कोई और नहीं समझ पाया कि मैंने इसे इतनी जल्दी कैसे किया, बार-बार इसे सिखाने की कोशिश के बावजूद।

चेक स्टब्स (पंच कार्ड के आकार) के एक बड़े बॉक्स को क्रमबद्ध करने की आवश्यकता है। ऐसा लगता है कि एक बड़े टेबल पर सॉलिटेयर खेल रहा है- डील आउट, स्टैक अप, रिपीट।

सामान्य रूप में

30 साल पहले, मैंने नोटिस किया था कि आप किस बारे में पूछ रहे हैं: विचारों को भौतिक प्रणालियों में सीधे स्थानांतरित किया जाता है क्योंकि तुलना और रिकॉर्ड को संभालने और कैशिंग के स्तर की सापेक्ष लागत होती है ।

अच्छी तरह से समझा समकक्षों से परे जा रहे हैं

मुझे आपके विषय के बारे में एक निबंध याद है, और इसने स्पेगेटी की तरह काम किया । आप कुंजी मान को इंगित करने के लिए सूखे नूडल की लंबाई ट्रिम करते हैं, और इसे रिकॉर्ड आईडी के साथ लेबल करते हैं। यह O (n) है, बस प्रत्येक आइटम को एक बार संसाधित करना है।

फिर आप बंडल को पकड़ते हैं और मेज पर एक छोर पर टैप करते हैं। वे निचले किनारों पर संरेखित करते हैं, और वे अब क्रमबद्ध हैं। आप तुच्छ रूप से सबसे लंबे समय तक उतार सकते हैं, और दोहरा सकते हैं। पठन-पाठन भी O (n) है।

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

दूसरा, किनारों को संरेखित करना एक प्रकार को कैसे पूरा करता है? असली छँटाई रीड-आउट में होती है जो आपको एक कदम में सबसे लंबा लगता है, भले ही आपने किया हो उन सभी को सबसे लंबे समय तक खोजने के लिए की तुलना करें। फिर, n के एक कारक से विभाजित करें, इसलिए सबसे बड़ा खोजना अब O (1) है।

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


स्पेगेटी की तरह एक मजेदार पढ़ा गया था। मुझे इसके बारे में सोचने में मज़ा आया, लेकिन मैं सबसे लंबे समय तक नूडल के लिए स्कैनिंग की कार्रवाई की आलोचना करता हूं। यह वास्तव में एक O (1) ऑपरेशन नहीं है क्योंकि आप नूडल्स स्कैन करते हैं। दस हजार नूडल्स की कल्पना करें और कुछ जो लंबाई में समान हैं ... यह एक ओ (1) "नेत्रगोलक" ऑपरेशन नहीं है। वास्तव में, किसी को सबसे लंबे समय तक खोजने के लिए सभी नूडल्स को स्कैन करना चाहिए।
ThisClark

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

1
@ThisClark आपको अधिक सटीक जिग की आवश्यकता है: तल पर स्टॉप के समानांतर एक समतल विमान जो नूडल्स को संरेखित करता है। सावधानी से इसे कम करें जब तक कि एक नूडल (सबसे लंबा) को छुआ न जाए और संपीड़न के तहत रखा जाए। प्रत्येक नूडल के खिलाफ विमान की ऊंचाई की तुलना समानांतर रूप से उस नूडल द्वारा की जाती है। आप सुझाव दे रहे हैं कि एक उच्च गुणांक की आवश्यकता है, लेकिन यह तर्क बिग-ओ को नहीं बदलता है।
जडलुगोज़

3

कुल समय अभी भी O (n) है। यह कि समानांतर की वजह से यह तेजी से है

आप एक सीट के रूप में एक अपकेंद्रित्र देख सकते हैं n परमाणुओं के के हैं, n कोर पर समानांतरित (प्रत्येक परमाणु एक प्रोसेसर के रूप में कार्य करता है)।

आप समानांतर से तेजी से छँटाई कर सकते हैं लेकिन केवल एक स्थिर कारक के कारण क्योंकि प्रोसेसर की संख्या सीमित है, O (n / C) अभी भी O (n) है (CPU में आमतौर पर <10 कोर और GPU <6000 हैं)


2

सेंट्रीफ्यूज नोड्स को सॉर्ट नहीं कर रहा है, यह उन पर एक बल लागू करता है फिर वे इसके समानांतर प्रतिक्रिया करते हैं। इसलिए यदि आप एक बबल सॉर्ट को लागू करने के लिए थे, जहां प्रत्येक नोड अपने आप में "घनत्व" के आधार पर समानांतर या नीचे चल रहा है, तो आपको एक अपकेंद्रित्र कार्यान्वयन होगा।

ध्यान रखें कि वास्तविक दुनिया में आप बहुत बड़ी मात्रा में समानांतर कार्यों को चला सकते हैं जहां कंप्यूटर में आपके पास अधिकतम वास्तविक समानांतर कार्य हो सकते हैं जो भौतिक प्रसंस्करण इकाइयों की संख्या के बराबर हैं।

अंत में, आप तत्वों की सूची तक पहुंच के साथ भी सीमित होंगे क्योंकि इसे दो नोड्स द्वारा एक साथ संशोधित नहीं किया जा सकता है ...


1

क्या सूची के क्रम को 'बल' देने के लिए प्रत्येक नोड पर कुछ ओवरहेड (प्रत्येक नोड पर कुछ मूल्य या विधि) से संभव होगा?

जब हम कंप्यूटर प्रोग्राम का उपयोग करते हैं, तो हम सॉर्ट किए जा रहे मूल्यों की एक संपत्ति का चयन करते हैं। यह आमतौर पर संख्या या वर्णमाला के क्रम का परिमाण है।

एक अपकेंद्रित्र जैसा कुछ, जहां केवल प्रत्येक तत्व अंतरिक्ष में अपनी सापेक्ष स्थिति के बारे में परवाह करता है (अन्य नोड्स के संबंध में)

यह सादृश्यता मुझे साधारण बबल सॉर्ट की याद दिलाती है। प्रत्येक पुनरावृत्ति में छोटी संख्या कितनी अधिक होती है। अपने अपकेंद्रित्र तर्क की तरह।

तो इसका जवाब देने के लिए, क्या हम वास्तव में उस तरह का कुछ सॉफ्टवेयर आधारित छँटाई में नहीं करते हैं?


1
मुझे लगता है कि आप सही हैं। मुझे लगता है कि जहां मैंने अपना सादृश्य खो दिया है, मैं भूल गया हूं कि प्रत्येक अणु समानांतर में कार्य करता है। तो, यह एक समानांतर बबल सॉर्ट की तरह होगा ...
क्रिस

1

सबसे पहले, आप दो अलग-अलग संदर्भों की तुलना कर रहे हैं, एक तर्क (कंप्यूटर) है और दूसरा भौतिकी है जो (अब तक) सिद्ध है कि हम गणितीय सूत्रों का उपयोग करके इसके कुछ हिस्सों को मॉडल कर सकते हैं और प्रोग्रामर के रूप में हम इस सूत्रों का उपयोग अनुकरण करने के लिए कर सकते हैं (तर्क के काम में भौतिकी के कुछ भाग) (जैसे खेल इंजन में भौतिकी इंजन)।

दूसरा हमारे पास कंप्यूटर (तर्क) की दुनिया में कुछ संभावनाएं हैं जो भौतिकी में लगभग असंभव है उदाहरण के लिए हम स्मृति तक पहुंच सकते हैं और प्रत्येक समय प्रत्येक इकाई का सटीक स्थान पा सकते हैं लेकिन भौतिकी में एक बड़ी समस्या है हिसबर्ग का अनिश्चितता सिद्धांत

तीसरा यदि आप कंप्यूटर की दुनिया में सेंट्रीफ्यूज और इसके संचालन को वास्तविक दुनिया में मैप करना चाहते हैं, तो यह किसी (भगवान) की तरह है जिसने आपको भौतिकी के सभी नियमों के साथ एक सुपर-कंप्यूटर दिया है और आप इसमें अपनी छोटी छंटाई कर रहे हैं ( सेंट्रीफ्यूज का उपयोग करते हुए) और यह कहकर कि आपकी सॉर्टिंग समस्या o (n) में हल हो गई थी, आप पृष्ठभूमि में चल रहे विशाल भौतिकी सिमुलेशन को अनदेखा कर रहे हैं ...


0

एक और परिप्रेक्ष्य यह है कि आप जिस सेंट्रीफ्यूज के साथ वर्णन कर रहे हैं वह "स्पेगेटी सॉर्ट" ( https://en.wikipedia.org/wiki/Spaghetti_sort ) कहलाता है । मान लें कि आपके पास अलग-अलग लंबाई की बिना छीले स्पेगेटी की छड़ें हैं। उन्हें अपनी मुट्ठी में पकड़ो, और अपने हाथ को उन्हें लंबवत रूप से कम करने के लिए ढीला करें ताकि छोर एक क्षैतिज तालिका पर आराम कर रहे हों। बूम! वे ऊंचाई से हल कर रहे हैं। ओ (निरंतर) समय। (या O (n) यदि आप ऊँचाई से छड़ को बाहर निकालते हैं और उन्हें एक में डालते हैं। स्पेगेटी, मुझे लगता है?)

आप यह नोट कर सकते हैं कि स्पेगेटी के टुकड़ों की संख्या में यह ओ (स्थिर) है, लेकिन, स्पेगेटी में ध्वनि की सीमित गति के कारण, यह सबसे लंबी स्ट्रैंड की लंबाई में O (n) है। तो मुफ्त में कुछ भी नहीं आता है।


यही बात मैंने 11 घंटे पहले कही थी। और मैं यह समझाने के लिए गया कि भौतिक प्रणालियाँ आपको n या n से विभाजित करने की अनुमति कैसे देती हैं और algoritms और संगणना के मॉडल को बनाए रखती हैं।
JDługosz

0

विचार करें: "सेंट्रीफ्यूज सॉर्ट" वास्तव में बेहतर स्केलिंग है? जैसे-जैसे आप स्केल करते हैं, उसके बारे में सोचें।

  • परीक्षण ट्यूबों को लंबा और लंबा होना पड़ता है।
  • भारी सामान को नीचे जाने के लिए आगे और आगे की यात्रा करनी पड़ती है।
  • जड़ता का क्षण बढ़ता है, अधिक शक्ति की आवश्यकता होती है और छँटाई गति में तेजी लाने के लिए अधिक समय तक।

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

निश्चित रूप से यहाँ वास्तविक उत्तर यह है कि कम्प्यूटेशनल जटिलता कुछ कम्प्यूटेशनल मॉडल के सापेक्ष है, जैसा कि अन्य उत्तर में उल्लेखित है। और "सेंट्रीफ्यूज सॉर्ट" आम कम्प्यूटेशनल मॉडल के संदर्भ में कोई मतलब नहीं रखता है, जैसे कि रैम मॉडल या आईओ मॉडल या मल्टीटैप ट्यूरिंग मशीन।

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