संक्षिप्त उत्तर: आप नहीं कर सकते।
थोड़ा लंबा जवाब:
आप की आवश्यकता होगी स्टोर करने के लिए जो आप समान प्राथमिकताओं के बीच भेद करने की अनुमति देगा अपने प्रवेश की "उम्र" अतिरिक्त स्थान। और अगर आप की आवश्यकता होगी Ω ( एन ) जानकारी है कि तेजी से सम्मिलन और retrievals की अनुमति देगा के लिए जगह। साथ ही आपका पेलोड (मूल्य और प्राथमिकता)।Ω ( एन )Ω ( एन )
और, आपके द्वारा संग्रहीत प्रत्येक पेलोड के लिए, आप पते में कुछ जानकारी को छिपाने में सक्षम होंगे (उदाहरण के अर्थ है Y, X से पुराना है)। लेकिन उस "छिपी" जानकारी में, आप या तो "उम्र", या "तेज पुनर्प्राप्ति" जानकारी छिपाएंगे। दोनों नहीं।a dघआर ( एक्स)) < a dघआर ( वाई)
बहुत ही लंबा जवाब
नोट: दूसरे भाग का बहुत अंत स्केच है, जैसा कि उल्लेख किया गया है। अगर कुछ गणित आदमी एक बेहतर संस्करण प्रदान कर सकता है, तो मैं आभारी रहूंगा।
आइए रिकॉर्ड (मूल्य और प्राथमिकता) मशीन शब्दों के साथ एक्स-बिट मशीन (32 या 64-बिट कहो) पर शामिल होने वाले डेटा की मात्रा के बारे में सोचते हैं ।पी
आप संभावित रिकॉर्ड का एक सेट है कि आंशिक रूप से आदेश दिया है: और ( एक , 1 ) = ( एक , 1 ) , लेकिन आप तुलना नहीं कर सकते ( एक , 1 ) और ( ख , 1 ) ।( ए , 1 ) < ( ए , 2 )( ए , 1 ) = ( ए , 1 )( ए , 1 )( बी , १ )
हालाँकि, आप अपने रिकॉर्ड के सेट से दो गैर-तुलनीय मूल्यों की तुलना करने में सक्षम होना चाहते हैं, जब वे सम्मिलित किए गए थे। इसलिए आपके पास यहां मानों का एक और सेट है: जिन्हें सम्मिलित किया गया है, और आप इसे एक आंशिक क्रम के साथ बढ़ाना चाहते हैं: iff X को Y से पहले डाला गया था ।एक्स< यएक्सY
बुरी से बुरी हालत में, अपनी स्मृति प्रपत्र के रिकॉर्ड के साथ भरा जाएगा (साथ ? हर एक के लिए अलग) है, तो आप जो एक तय करने के लिए चला जाता है में प्रविष्टि समय पर पूरी तरह भरोसा करना होगा पहले बाहर।( ? , 1 )?
- सम्मिलन का समय (संरचना में अभी भी अन्य रिकॉर्ड के सापेक्ष) के लिए सूचना के बिट्स (P-byte पेलोड और मेमोरी के 2 X सुलभ बाइट्स) की आवश्यकता होती है।एक्स- एल ओ जी2( पी)2एक्स
- पेलोड (आपके रिकॉर्ड के मूल्य और प्राथमिकता) में जानकारी के मशीन शब्दों की आवश्यकता होती है ।पी
इसका मतलब है कि आपको किसी भी तरह से स्टोर किए गए प्रत्येक रिकॉर्ड के लिए अतिरिक्त बिट्स की जानकारी को स्टोर करना होगा। और वह के हे ( एन ) के लिए एन रिकॉर्ड।एक्स- एल ओ जी2( पी)ओ ( एन )n
अब, प्रत्येक मेमोरी "सेल" हमें कितनी जानकारी प्रदान करती है?
- बिट्स ऑफ़ डेटा ( W मशीन की चौड़ाई होने के कारण)।डब्ल्यूडब्ल्यू
- पता के एक्स बिट्स।एक्स
अब, मान लेते हैं कि ( 1 (पेलोड कम से कम एक मशीन शब्द चौड़ा (आमतौर पर एक ऑक्टेट) है)। इसका मतलब है कि एक्स - एल ओ जी 2 ( पी ) < एक्स , इसलिए हम सेल के पते में प्रविष्टि आदेश की जानकारी फिट कर सकते हैं। एक स्टैक में यही हो रहा है: सबसे कम पते वाली कोशिकाएं पहले स्टैक में प्रवेश करती हैं (और अंतिम निकल जाएगी)।पी≥ १एक्स- एल ओ जी2( पी) < एक्स
इसलिए, हमारी सभी जानकारी को संग्रहीत करने के लिए, हमारे पास दो संभावनाएँ हैं:
- पते में प्रविष्टि क्रम और मेमोरी में पेलोड स्टोर करें।
- मेमोरी में दोनों को स्टोर करें और कुछ अन्य उपयोग के लिए एड्रेस फ्री छोड़ दें।
जाहिर है, कचरे से बचने के लिए, हम पहले समाधान का उपयोग करेंगे।
अब संचालन के लिए। मुझे लगता है आप चाहते हैं:
- के साथ हे ( एल ओ जी एन ) समय जटिलता।मैंn s e r t ( t a s k , p r i o r i t t y)O ( l o g)n )
- के साथ हे ( एल ओ जी एन ) समय जटिलता।एसt a b l e Ex t r a c t Mमैं n ( )O ( l o g)n )
आइये :एसt a b l e Ex t r a c t Mमैं n ( )
वास्तव में सामान्य एल्गोरिथ्म इस तरह से जाता है:
- न्यूनतम प्राथमिकता और न्यूनतम "प्रविष्टि समय" के साथ रिकॉर्ड का पता लगाएं ।O ( l o g)n )
- इसे में संरचना से निकालें ।O ( l o g)n )
- इसे लौटा दो।
उदाहरण के लिए, एक ढेर के मामले में, यह थोड़ा अलग तरीके से आयोजित किया जाएगा, लेकिन काम समान है: 1. में न्यूनतम रिकॉर्ड का पता लगाएं
2. इसे ओ ( 1 ) में संरचना से निकालें
3. ठीक करें सब कुछ इतना है कि अगली बार # 1 और # 2 अभी भी ओ ( 1 ) हैं "अर्थात ढेर को ठीक करें"। यह "ओ (लॉग एन)" में किया जाना चाहिए 4. तत्व वापस लौटाएं।0 ( 1 )ओ ( 1 )ओ ( 1 )
सामान्य एल्गोरिथ्म में वापस जा रहे हैं, हम देखते हैं कि समय में रिकॉर्ड खोजने के लिए , हमें 2 ( एक्स - एल ओ जी 2 ( पी ) ) उम्मीदवारों के बीच सही एक का चयन करने के लिए एक तेज़ तरीका चाहिए (सबसे खराब ) मामला, स्मृति पूर्ण है)।O ( l o g)n )2(एक्स- एल ओ जी2( पी) )
इसका मतलब यह है कि हमें उस तत्व को पुनः प्राप्त करने के लिए सूचना के बिट्स को संग्रहीत करने की आवश्यकता है (प्रत्येक बिट उम्मीदवार स्थान को bisects करता है, इसलिए हमारे पास O ( l o g n n ) द्विभाजन है, जिसका अर्थ O ( l o) है g n ) समय जटिलता)।एक्स- एल ओ जी2( पी)O ( l o g)n )O ( l o g)n )
जानकारी के इन बिट्स को तत्व के पते के रूप में संग्रहीत किया जा सकता है (हीप में, मिनट एक निश्चित पते पर है), या, उदाहरण के लिए पॉइंटर्स के साथ (एक बाइनरी सर्च ट्री में (पॉइंटर्स के साथ), आपको का पालन करने की आवश्यकता है ( l o g n ) औसतन मिनट के लिए)।O ( l o g)n )
अब, उस तत्व को हटाते समय, हमें अगले मिनट के रिकॉर्ड को बढ़ाने की आवश्यकता होगी , ताकि अगली बार पुनर्प्राप्ति की अनुमति देने के लिए उसके पास सही मात्रा में जानकारी हो , इसलिए उसके पास X - l o g 2 है ( पी ) जानकारी के बिट्स इसे अन्य उम्मीदवारों से भेदभाव करते हैं।O ( l o g)n )एक्स- एल ओ जी2( पी)
यही है, अगर यह पहले से ही पर्याप्त जानकारी नहीं है, तो आपको कुछ जोड़ना होगा। एक (गैर-संतुलित) बाइनरी सर्च ट्री में, जानकारी पहले से ही है: आपको एलिमेंट को डिलीट करने के लिए एक NULL पॉइंटर लगाना होगा, और आगे किसी भी ऑपरेशन के बिना BST में खोजा जा सकेगा औसतन समय।O ( l o g)n )
एक्स- एल ओ जी2( पी)O ( l o g)n )
सम्मिलन एल्गोरिथ्म को आमतौर पर केवल इस जानकारी के भाग को अपडेट करने की आवश्यकता होती है, मुझे नहीं लगता कि इसे तेजी से प्रदर्शन करने के लिए अधिक (मेमोरी-वार) खर्च होंगे।
एक्स- एल ओ जी2( पी)
- एक्स- एल ओ जी2( पी)
- पी
- एक्स- एल ओ जी2( पी)
Ω ( एन )