हान का समय, रैखिक स्थान, पूर्णांक छँटाई एल्गोरिथ्म


38

क्या Yijie Han की , रैखिक स्थान, पूर्णांक छँटाई एल्गोरिथ्म से कोई परिचित है? यह परिणाम काफी छोटे कागज में दिखाई देता है ( समय और रैखिक स्थान में निर्धारणात्मक छँटाई । जे। अल्ग। 50: 96–105, 2004) जो मूल रूप से पहले के बहुत सारे परिणामों को एक साथ जोड़कर उपयुक्त है। रूपांतरों। मेरी समस्या यह है कि यह किसी भी बारीकियों में बहुत गहराई तक जाने के बिना एक हाथ से लहराते हुए तरीके से लिखा गया है। यह पिछले पत्रों पर बहुत अधिक निर्भर करता है, उनमें से हान द्वारा एक और कागज प्रमुख है ( रैखिक अंतरिक्ष में बेहतर तेजी से पूर्णांक छँटाईO ( n लॉग लॉग एन )O(nloglogn)O(nloglogn)। सूचना और संगणना 170 (1): 81–94) बहुत शैली में लिखी गई। मुझे इन दो पत्रों को समझने में महत्वपूर्ण कठिनाइयाँ हो रही हैं, विशेष रूप से जिस तरह से वे पिछले परिणामों का अनुकूलन और उपयोग करते हैं। किसी भी सहायता के लिए धन्यवाद।

यह निश्चित रूप से बहुत व्यापक और अस्पष्ट है जिसे एक उचित प्रश्न माना जाता है, लेकिन मैं कई केंद्रित अच्छी तरह से परिभाषित प्रश्नों और उत्तरों पर चर्चा विकसित करने की उम्मीद कर रहा हूं।

नेतृत्व करने के लिए, यहां मेरा पहला विशिष्ट प्रश्न है। जानकारी के लेम्मा 2 में। अनि। कागज वहाँ एक पुनरावर्ती है का एक सेट में महीने जब छोटी से छोटी पूर्णांक को खोजने के लिए समय एल्गोरिथ्म पैक छोटे पूर्णांक राम शब्द में प्रत्येक। एल्गोरिथ्म का वर्णन यह उल्लेख करने में विफल रहता है कि आधार केस को कैसे संभाला जाता है। इस स्थिति में चयन को समय में करना आवश्यक है । यह कैसे किया जा सकता है?n k k = O ( n ) O ( लॉग k )O(n/klogk)nkk=O(n)O(logk)


13
उसे लिखना पूरी तरह से उचित होगा: hanyij@umkc.edu
जोसेफ ओ'रूर्के ने

हाँ। हमने पहले इस सामान्य मुद्दे पर चर्चा की है, और इसे संबोधित करने का सही तरीका लेखक को ईमेल करना है।
सुरेश वेंकट

17
इसमें एक पेपर के बारे में एक विशिष्ट प्रश्न शामिल है जो 7 साल पुराना है और पहले ही सहकर्मी की समीक्षा प्रक्रिया से गुजर चुका है। जबकि अरी लेखक को ईमेल कर सकता है, यह इस साइट के लिए एक आदर्श प्रश्न लगता है। मैं विक्षेपण नहीं समझता।
हक बेनेट

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

4
सामान्य छंटाई में कम बाउंड नहीं होता है। इसके विपरीत --- यह इस बाउंड की तुलना करने के लिए प्रतिबंधित है। यहां मुद्दा इनपुट को प्रतिबंधित नहीं कर रहा है, बल्कि कम्प्यूटेशनल मॉडल को बढ़ा रहा है। मेरा कम्प्यूटेशनल मॉडल यूनिट कॉस्ट रैम फ्लेवर में से कोई भी है, और मैं किसी भी उचित मान्यताओं (जैसे कि शब्द की लंबाई पर निर्भर स्थिरांक की उपलब्धता) की अनुमति दूंगा। Ω(nlogn)
अरी

जवाबों:


18

मैं बस एक ही बात सोच रहा था।

सौभाग्य से, मैं 2011 में प्रकाशित एक पत्रिका-लेख को खोजने में सक्षम था जो इस बात को स्पष्ट करता है; क्या अधिक है, आपको इसे देखने के लिए किसी सदस्यता की आवश्यकता नहीं है: घातीय वृक्ष की छंटाई का कार्यान्वयन और प्रदर्शन विश्लेषण

मैं यह जानने के लिए पूरे लेख को पढ़ने की सलाह देता हूं कि इसे कैसे लागू किया जा सकता है और इसके अंतर्निहित सिद्धांत को बेहतर ढंग से समझने के लिए। यह यह भी दर्शाता है कि कैसे त्वरित पेड़ त्वरित-क्रमबद्ध और द्विआधारी पेड़ों के खिलाफ ढेर हो जाते हैं। यहाँ संबंधित प्रासंगिक अंश है हान समय, रैखिक स्थान, पूर्णांक एल्गोरिथ्मO(nloglogn) :

Yijie Han ने एक विचार दिया है जो रैखिक स्थान में अपेक्षित समय की जटिलता को कम करता है। [६] उनके द्वारा प्रयोग की जाने वाली तकनीक को एंडरसन के घातीय खोज वृक्ष [8] पर पूर्णांक और पूर्णांक के बिट्स के रैखिक समय के बहु-विभाजन के समन्वित पास के रूप में देखा जाता है। घातीय खोज वृक्ष में एक समय में एक पूर्णांक सम्मिलित करने के बजाय, उसने एक बार में घातीय खोज वृक्ष के सभी स्तरों को पूर्ण कर दिया। इस तरह के समन्वित पासिंग, रैखिक समय में बहु-विभाजन के प्रदर्शन और इसलिए एल्गोरिथ्म को गति देने का मौका प्रदान करते हैं। यह विचार गति प्रदान कर सकता है, लेकिन व्यावहारिक कार्यान्वयन में पूर्णांक को बैचों में संभालना बहुत मुश्किल है।

[६] वाई हान, ओ (एन लॉग लॉग एन) समय और रैखिक स्थान, ३४ वें एसटीओसी, २००२ में नियतात्मक छँटाई।

[[] ए। एंडरसन, फास्ट नियतात्मक छँटाई और रेखीय स्थान में खोज, कंप्यूटर विज्ञान की नींव पर IEEE संगोष्ठी, १ ९९ ६।


क्यों होता है पतन?
सुरेश वेंकट

1
मैंने इस पत्रिका-लेख को एक्सपेन्शियल ट्री विकिपीडिया पृष्ठ से जोड़ा है । FYI करें: यह लेख प्रश्न पूछे जाने के बाद प्रकाशित किया जा सकता है।
एटी

@AT, क्या आप कृपया अपने उत्तर को थोड़ा विस्तारित कर सकते हैं और बता सकते हैं कि यह प्रश्न का उत्तर कैसे देता है। अभी यह केवल एक चीज देता है जो किसी पत्रिका में एक लेख का लिंक है।
केव

1
खैर, मैंने पहले ही हान के पेपर को छोड़ दिया है, इसलिए मुझे खुशी है कि आप यह सहायता प्रदान करने में सक्षम हैं। जब मैं आज यहां वापस आया तो मुझे कुछ भी देखने की उम्मीद नहीं थी। धन्यवाद! मैं इस नए पेपर को पढ़ूंगा और देखूंगा कि क्या यह हान के कागज पर प्रगति करने में मेरी मदद करता है।
अरी

2
खैर, मैंने अब इसे पढ़ा है, और मैं अनुमति दूंगा कि संभवतः मैं इसे पूरी तरह से गलत समझ रहा हूं, लेकिन इस पर रोक लगाने से थोड़ी परेशानी होती है। लेखकों का दावा है कि उनके पेड़ की ऊँचाई O , लेकिन यदि पेड़ की ऊँचाई , तो यहपत्ते, और इसलिए कम से कमकुल में नोड्स। आइए उदारतापूर्वक मान लें कि प्रत्येक नोड कुंजी रखता है । तब पेड़ में से कमचांबियाँ। यदि तो । वैसे भी, यदि लेखक सही हैं, तो वे न तो O छांटते हैं, न हान को समझाते हैं, इसलिए उपयोगी नहीं है।(loglogn)h(h+1)!2(h+1)!h+22(h+2)!2(h+2)!=nh=Ω(logn/loglogn)(loglogn)
एर

1

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

इसी तरह ऊपर का उपयोग करके हम O (log k) टाइम (बिटोनिक सॉर्ट) में k नंबर वाले किसी भी शब्द को सॉर्ट कर सकते हैं।

संपादित करें: श्रेणी 0 से m-1 में 2k संख्याओं को एक शब्द में पैक करने के लिए एल्गोरिदम जहां प्रत्येक संख्या आकार का L = लॉग (m + k) +2 लेती है।

K1 होना 1: 000000 1: 000000 1: 000000 1: 000000 ....... इसलिए जहां बृहदान्त्र से पहले बिट को ध्वज बिट भी कहा जाता है और प्रत्येक अनुक्रम L बिट लंबा होता है और K_1 शब्द में 2k बार दोहराया जाता है। (बृहदान्त्र केवल समझने के लिए है)

K2 है (2k-1) (2k-2) .... 1 बाइनरी में लिखा गया है। एल्गोरिथ्म का स्केच:

T = log k से 0 के लिए दोहराएं।

भाग 1 - मूल शब्द Z को दो शब्दों A और B में अलग करें।

  1. T को , (L-1-t स्थान) को बाईं ओर शिफ्ट करके और K_1 के साथ परिणाम को किया । M = T- (T ने L-1 स्थानों को स्थानांतरित कर दिया)।K2K1

  2. और Z के साथ M और परिणाम ( ) को दाईं ओर शिफ्ट करें । यह ए।2tL

  3. बी = Z- (जेड एंड एम)।

भाग 2

  1. K1K1

  2. M = M- (M ने बाएँ L-1 स्थानों को स्थानांतरित कर दिया)।

  3. MIN = (B & M) OR (A- (A & M))

  4. MAX = (A & M) OR (B- (B & M))

  5. 2tL

  6. अंत में उचित रूप से MAX और MIN हम Z वापस प्राप्त करते हैं।

मैंने स्केच दिया है, आशा है कि आप आवश्यक आवश्यक विवरण भर सकते हैं।


मैं सुझाव नहीं दे रहा हूं कि आप क्या सुझाव दे रहे हैं। धारणा यह है कि पूर्णांक पहले से ही छोटे हैं और उनमें से k पहले से ही एक शब्द में पैक हैं। क्या आप उनके आकार को और कम करने का प्रस्ताव दे रहे हैं? यदि हां, तो आप क्या करते हैं? इसके अलावा, मुझे पता है कि ओ (लॉग के) समय में एक एकल शब्द में पैक किए गए एक बिटोनिक अनुक्रम को कैसे सॉर्ट करना है, या ओ (लॉग ^ 2 के) समय में एक सामान्य (गैर-बिटोनिक) अनुक्रम को सॉर्ट करना है। यदि आप एक एल्गोरिथ्म जानते हैं जो O (लॉग k) समय में एक सामान्य अनुक्रम को क्रमबद्ध करता है, तो क्या आप इसे और अधिक विस्तार से बता सकते हैं? (इस तरह का एक एल्गोरिथ्म निश्चित रूप से चयन समस्या को हल करेगा।)
अरी

im आकार को और कम नहीं कर रहा है, मैं सुझाव दे रहा था कि कैसे आकार को कम किया जाए जो आपके उत्तर में आवश्यक नहीं था। गलतफहमी के लिए खेद है।
सिंहसुमित

जब तक मैंने इसे गलत नहीं समझा, यह बिटकॉइन अनुक्रमों को छांटने के लिए एल्गोरिथ्म जैसा दिखता है। यह सामान्य दृश्यों को क्रमबद्ध नहीं करता है। उदाहरण के लिए, क्या यह अनुक्रम 3,0,2,0 को क्रमबद्ध करता है, जहां 3 सबसे बाईं ओर (सबसे महत्वपूर्ण) क्षेत्र में है?
अरी

3 0 2 0 को अलग किया जाता है। हमें A = 3 2 मिलता है और B = 0 0 तब MAX 3 2 हो जाता है और MIN 0 0 होता है। तब हमारे पास 3 Z 0 के रूप में नया Z होता है। किसी भी सामान्य अनुक्रम में 2 का बिटोनिक अनुक्रम होता है। प्रत्येक पुनरावृत्ति के साथ ये आकार डबल हो जाते हैं और अंत में लॉग के समय में हमारे पास हमारा उत्तर होता है।
सिंहसुमित

नहीं, संख्याओं को संकुचित नहीं किया जाता है, केवल नीचे स्थानांतरित कर दिया जाता है। पहले पुनरावृत्ति में हम संख्याओं के जोड़ को उनकी स्थिति के उच्च बिट में भिन्न करते हैं, इसलिए हमें A = 0 3 0 2 और B = 0 0 0 0 मिलता है, इसलिए MIN = 0 0 0 0 0, MAX = 0 3 0 2, और Z = 3 0 2 0. दूसरी पुनरावृत्ति में हम अलग-अलग जोड़े को उनकी स्थिति के कम बिट में विभाजित करते हैं, इसलिए फिर से हमें A = 0 3 0 2, B = 0 0 0 0 मिलता है, और फिर Z अपरिवर्तित रहता है।
अरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.