बी-हीप: Difference between revisions

From Vigyanwiki
m (Deepak moved page बी-ढेर to बी-हीप without leaving a redirect)
(minor changes)
Line 1: Line 1:
बी-हीप एक [[ बाइनरी ढेर ]] है जिसे सबट्रीज़ को एक पेज (कंप्यूटर मेमोरी) में रखने के लिए लागू किया जाता है। यह पारंपरिक कार्यान्वयन की तुलना में [[ आभासी मेमोरी ]] का उपयोग करते समय बड़े ढेर के लिए एक्सेस किए गए पृष्ठों की संख्या को दस गुना तक कम कर देता है।<ref name=":0">{{cite journal
बी-हीप एक [[ बाइनरी ढेर |बाइनरी हीप]] है जिसे एक सिंगल पेज में उपतर कोण रखने के लिए लागू किया जाता है। जब [[ आभासी मेमोरी |वर्चुअल मेमोरी]] का उपयोग करके बड़े हीप के लिए पारंपरिक लागू के संदर्भ में, इससे यह पृष्ठों तक पहुंचे हुए पृष्ठों की संख्या को दस गुना तक कम करता है। प्रायः प्रत्येक स्तर को एक अलग पेज में रखने के लिए एक एरे में तत्वों का मैपिंग पारंपरिक रूप से किया जाता है।<ref name=":0">{{cite journal
  |first=Poul-Henning |last=Kamp
  |first=Poul-Henning |last=Kamp
  |url=https://queue.acm.org/detail.cfm?id=1814327
  |url=https://queue.acm.org/detail.cfm?id=1814327
Line 5: Line 5:
  |journal=[[ACM Queue]]
  |journal=[[ACM Queue]]
  |date=2020-07-26
  |date=2020-07-26
}}</ref> ऐरे डेटा संरचना में स्थानों के तत्वों की पारंपरिक मैपिंग लगभग हर स्तर को एक अलग पृष्ठ में रखती है।
}}</ref>
 
ऐसे अन्य हीप वेरिएंट हैं जो वर्चुअल मेमोरी या कैश का उपयोग करने वाले कंप्यूटर में कुशल हैं, जैसे [[कैश-विस्मृत एल्गोरिथ्म]], के-हीप्स,<ref>{{cite journal |last1=Naor |first1=Dalit |last2=Martel |first2=Charles U. |last3=Matloff |first3=Norman S. |title=वर्चुअल मेमोरी वातावरण में प्राथमिकता कतार संरचनाओं का प्रदर्शन|doi=10.1093/comjnl/34.5.428 |journal=[[The Computer Journal |Comput. J.]] |volume=34 |issue=5 |pages=428–437 |year=1991 |doi-access=free}}</ref> और वैन एम्डे बोस कदम।<ref>{{cite journal |author-link1=Peter van Emde Boas |last1=van Emde Boas |first1=P. |last2=Kaas |first2=R. |last3=Zijlstra |first3=E. |year=1976 |title=एक कुशल प्राथमिकता कतार का डिज़ाइन और कार्यान्वयन|journal=[[Mathematical Systems Theory]] |volume=10 |pages=99–127 |doi=10.1007/BF01683268|s2cid=8105468 }}</ref>
 


वर्चुअल मेमोरी या कैश का उपयोग करने वाले कंप्यूटर में कुछ अन्य हीप वेरिएंट्स भी हैं जो कारगर होते हैं, जैसे [[कैश-विस्मृत एल्गोरिथ्म|कैश-अवेयर एल्गोरिदम]], के-हीप्स<ref>{{cite journal |last1=Naor |first1=Dalit |last2=Martel |first2=Charles U. |last3=Matloff |first3=Norman S. |title=वर्चुअल मेमोरी वातावरण में प्राथमिकता कतार संरचनाओं का प्रदर्शन|doi=10.1093/comjnl/34.5.428 |journal=[[The Computer Journal |Comput. J.]] |volume=34 |issue=5 |pages=428–437 |year=1991 |doi-access=free}}</ref> और वैन एमडे बोएस लेआउट्स।<ref>{{cite journal |author-link1=Peter van Emde Boas |last1=van Emde Boas |first1=P. |last2=Kaas |first2=R. |last3=Zijlstra |first3=E. |year=1976 |title=एक कुशल प्राथमिकता कतार का डिज़ाइन और कार्यान्वयन|journal=[[Mathematical Systems Theory]] |volume=10 |pages=99–127 |doi=10.1007/BF01683268|s2cid=8105468 }}</ref>
== प्रेरणा ==
== प्रेरणा ==
परंपरागत रूप से, [[ द्विआधारी वृक्ष ]] को एक के अनुसार लगातार मेमोरी में रखा जाता है <code>n -> {2n, 2n+1}</code> नियम, जिसका अर्थ है कि यदि कोई नोड स्थिति पर है <code>n</code>, इसके बाएँ और दाएँ बच्चे को स्थिति में लिया जाता है <code>2n</code> और <code>2n+1</code> सरणी में. जड़ स्थिति 1 पर है। बाइनरी पेड़ों पर एक सामान्य ऑपरेशन ऊर्ध्वाधर ट्रैवर्सल है; किसी खोजे गए नोड पर पहुंचने के लिए पेड़ के स्तर से नीचे उतरना। हालाँकि, जिस तरह से आधुनिक कंप्यूटरों पर मेमोरी को वर्चुअल मेमोरी में पृष्ठों में व्यवस्थित किया जाता है, उसके कारण बाइनरी ट्री को बिछाने की यह योजना अत्यधिक अप्रभावी हो सकती है। इसका कारण यह है कि, पेड़ में गहराई से जाने पर, अगले नोड की दूरी तेजी से बढ़ती है, इसलिए पुनर्प्राप्त किया गया प्रत्येक अगला नोड संभवतः एक अलग मेमोरी पेज पर होगा। इससे Cache (कंप्यूटिंग) की संख्या बढ़ जाएगी, जो बहुत महंगी हैं।
पारंपरिक रूप से, [[ द्विआधारी वृक्ष |बाइनरी ट्रीज]] को निरंतर मेमोरी में एक <code>n -> {2n, 2n+1}</code> नियम के अनुसार व्यवस्थित किया जाता है, जिसका अर्थ है कि अगर किसी नोड का स्थान <code>n</code> पर है, तो उसके बाएं और दाएं बच्चे को सरणी में स्थान <code>2n</code> और <code>2n+1</code> पर लिया जाता है। रूट पोज़िशन 1 पर होता है। बाइनरी ट्रीज पर एक सामान्य कार्रवाई उसके लंबवत ट्रावर्सल होती है; यानी एक खोजी गई नोड पर पहुंचने के लिए ट्री के स्तरों के माध्यम से नीचे कदम रखना। हालांकि, आधुनिक कंप्यूटरों में मेमोरी को वर्चुअल मेमोरी में पेजों में व्यवस्थित करने के तरीके के कारण, बाइनरी ट्री को इस तरीके से व्यवस्थित करना अत्यंत अप्रभावी हो सकता है। कारण यह है कि, जब ट्री में गहराई से भ्रमण करते हैं, तो अगले नोड तक की दूरी गणितशास्त्रीय रूप से वृद्धि होती है, इसलिए प्रत्येक अगले नोड को प्राप्त करने पर संभावित रूप से वह अलग मेमोरी पेज पर होगा। यह पेज मिसेज की संख्या बढ़ाएगा, जो बहुत महंगा होता है। बी-हीप इस समस्या का समाधान करता है जिसे बच्चा नोड को मेमोरी में एक अलग तरीके से व्यवस्थित करके किया जाता है, जिससे वह संभवतः संपूर्ण पेज के भीतर उपतर कोण को स्थान देने का प्रयास करता है। इसलिए, जब एक लंबवत ट्रावर्सल प्रारंभ होता है, कई निरंतर प्राप्त नोड एक ही पेज में होते हैं, जिससे पेज मिसेज की संख्या कम होती है।
बी-हीप मेमोरी में चाइल्ड नोड्स को एक अलग तरीके से बिछाकर इस समस्या को हल करता है, एक ही पेज के भीतर उप-वृक्षों को रखने की यथासंभव कोशिश करता है। इसलिए, जैसे-जैसे वर्टिकल ट्रैवर्सल आगे बढ़ता है, लगातार पुनर्प्राप्त किए गए कई नोड एक ही पेज में आ जाएंगे, जिससे पेज मिस होने की संख्या कम हो जाएगी।


==कार्यान्वयन==
==कार्यान्वयन==
विस्तार से, बी-हीप को निम्नलिखित तरीके से लागू किया जा सकता है। पॉल-हेनिंग काम्प<ref>{{Cite web|url=http://phk.freebsd.dk/B-Heap/queue.html |title=आपके द्वारा गलत किया जा रहा है|first=Poul-Henning |last=Kamp |website=phk.freebsd.dk |access-date=2019-06-08}}</ref> नोड्स के लेआउट के लिए दो विकल्प देता है: एक जिसमें प्रति पृष्ठ दो स्थितियां बर्बाद हो जाती हैं, लेकिन पेड़ की सख्त बाइनरी संरचना संरक्षित होती है, और दूसरा जो पृष्ठों के पूरे उपलब्ध स्थान का उपयोग करता है, लेकिन पेड़ का विस्तार करने में विफल रहता है एक नए पृष्ठ में प्रवेश करने पर एक स्तर के लिए (उस स्तर के नोड्स में केवल एक बच्चा होता है)। किसी भी मामले में, एक महत्वपूर्ण बिंदु यह है कि एक पृष्ठ छोड़ने पर, दोनों बच्चे नोड हमेशा एक सामान्य दूसरे पृष्ठ में होते हैं, क्योंकि ऊर्ध्वाधर ट्रांसवर्सल में एल्गोरिदम आम तौर पर आगे बढ़ने के तरीके को जानने के लिए दोनों बच्चों की तुलना माता-पिता से करेगा। इस कारण से, यह कहा जा सकता है कि प्रत्येक पृष्ठ में दो समानांतर उपवृक्ष हैं, जो एक-दूसरे से जुड़े हुए हैं। पृष्ठों को स्वयं एक एम-एरी वृक्ष के रूप में देखा जा सकता है, और चूंकि प्रत्येक पृष्ठ में आधे तत्व पत्तियां (पृष्ठ के भीतर) होंगे, पृष्ठों के वृक्ष में विभाजन कारक होता है <code>pagesize/2</code>.
विस्तार से कहें तो, एक बी-हीप को निम्नलिखित तरीके से लागू किया जा सकता है। पौल-हेनिंग कैंप<ref>{{Cite web|url=http://phk.freebsd.dk/B-Heap/queue.html |title=आपके द्वारा गलत किया जा रहा है|first=Poul-Henning |last=Kamp |website=phk.freebsd.dk |access-date=2019-06-08}}</ref> ने नोडों के लेआउट के लिए दो विकल्प दिए हैं: एक विकल्प में पेज प्रति दो स्थान बर्बाद होते हैं, लेकिन ट्री की सख्त बाइनरी संरचना को संरक्षित रखा जाता है, और एक दूसरा विकल्प जिसमें पेजों के सभी उपलब्ध स्थान का उपयोग किया जाता है, लेकिन ट्री एक पेज में एक स्तर तक ही विस्तारित होती है (उस स्तर पर नोडों के पास केवल एक बच्चा होता है)। किसी भी स्थिति में, एक महत्वपूर्ण बिंदु यह है कि एक पेज छोड़ने पर, दोनों बच्चे नोड हमेशा एक सामान्य दूसरे पेज में होते हैं, क्योंकि लंबवत ट्रावर्सल में एल्गोरिदम सामान्य रूप से माता-पिता के साथ दोनों बच्चों की तुलना करता है जारी रखने के लिए। इस कारण से, प्रत्येक पेज में कहा जा सकता है कि वह दो समानांतर उपतर कोण को संबोधित करती है, जो एक दूसरे के साथ आपस में घुसे हुए होते हैं। पेज खुद को m-वारी ट्री के रूप में देखा जा सकता है, और क्योंकि प्रत्येक पेज में केरों का आधा अंश होगा (पेज के भीतर), "पेज का ट्री" <code>pagesize/2</code> का विभाजन कारक रखता है।


===मूल कार्य===
===मूल कार्य===
क्लासिक ऐरे-जैसे लेआउट के विपरीत, बी-हीप में पैरेंट फ़ंक्शन अधिक जटिल है क्योंकि नोड के पेरेंट के सूचकांक की गणना इस बात पर निर्भर करती है कि यह पृष्ठ में कहां है। यह मानते हुए कि किसी पृष्ठ के अंदर की स्थितियों को 0 से लेबल किया गया है <code>pagesize</code>, मूल कार्य इस प्रकार हो सकता है।
बिना-हीप के विभिन्न लेआउट के खिलाफ, एक क्लासिक एरे-जैसे व्यवस्था के मुकाबले, बिना-हीप में पैरेंट (parent) फ़ंक्शन अधिक जटिल होता है क्योंकि नोड के पैरेंट का इंडेक्स पेज में जहां है, उस पर निर्भर करता है। पेज के भीतर स्थानों को 0 से <code>pagesize</code> तक नामकरण के तौर पर मानते हुए, पैरेंट फ़ंक्शन निम्नलिखित रूप में हो सकता है।


नोड 0 और 1 के लिए, इनका उपयोग केवल उस संस्करण में किया जाता है जो सभी संभावित स्थान का शोषण कर रहा है। इस मामले में, दोनों नोड्स का मूल सूचकांक समान है, यह एक अलग पृष्ठ में है, और उस पृष्ठ के भीतर इसकी विशिष्ट ऑफसेट केवल वर्तमान पृष्ठ संख्या पर निर्भर करती है। विशेष रूप से, मूल पृष्ठ संख्या की गणना करने के लिए, बस वर्तमान नोड के पृष्ठ संख्या को पृष्ठ वृक्ष के विभाजन कारक से विभाजित करें, जो है <code>pagesize/2</code>. पृष्ठ के भीतर सही ऑफसेट प्राप्त करने के लिए, विचार करें कि यह मूल पृष्ठ के भीतर लीफ नोड्स में से एक होना चाहिए, इसलिए ऑफसेट से शुरू करें <code>pagesize/2</code>. फिर वर्तमान पृष्ठ संख्या और मूल पृष्ठ संख्या के बीच का अंतर जोड़ें, मूल पृष्ठ के सूचकांक में मूल नोड होने के बाद पहले पृष्ठ से एक घटाएं (<code>pagesize/2</code>).
नोड्स 0 और 1 के लिए, इनका उपयोग केवल उस वैरिएंट में किया जाता है जो सभी संभावित स्थान का शोषण कर रहा है। इस स्थिति में, दोनों नोड्स का मूल सूचकांक समान है, यह एक अलग पृष्ठ में है, और उस पृष्ठ के भीतर इसकी विशिष्ट ऑफसेट केवल वर्तमान पृष्ठ संख्या पर निर्भर करती है। विशेष रूप से, मूल पृष्ठ संख्या की गणना करने के लिए, बस वर्तमान नोड के पृष्ठ संख्या को "पेज ट्री" विभाजन कारक से विभाजित करें, जो कि <code>pagesize/2</code> है। पृष्ठ के भीतर सही ऑफसेट प्राप्त करने के लिए, विचार करें कि यह मूल पृष्ठ के भीतर लीफ नोड्स में से एक होना चाहिए, इसलिए ऑफसेट <code>pagesize/2</code> से प्रारंभ करें। फिर वर्तमान पृष्ठ संख्या और मूल पृष्ठ संख्या के बीच का अंतर जोड़ें, मूल पृष्ठ के सूचकांक में मूल नोड होने के बाद पहले पृष्ठ से एक घटाएं (<code>pagesize/2</code>)


नोड 2 और 3 के लिए, मोड के आधार पर पैरेंट भिन्न होता है। स्पेस-सेविंग मोड में, पैरेंट्स क्रमशः 0 और 1 नोड होते हैं, इसलिए किसी को केवल 2 से घटाना होता है। दूसरी ओर, स्ट्रिक्ट-बाइनरी-ट्री-मोड में, ये नोड पेज की जड़ें होते हैं 0 और 1 का, और इसलिए उनके सामान्य माता-पिता की गणना ऊपर वर्णित तरीके से की जाती है।
नोड 2 और 3 के लिए, पैरेंट मोड के आधार पर भिन्न होते हैं। स्थान बचाने वाले मोड में, पैरेंट सिर्फ नोड 0 और 1 होते हैं, इसलिए केवल 2 से घटाना होता है। दूसरी ओर, सख्त-बाइनरी-ट्री-मोड में, ये नोड नोड 0 और 1 के बजाय पेज की रूट्स होते हैं, और इसलिए उनका समान पैरेंट उसी तरीके से गणना किया जाता है जैसा कि पहले विवरणित किया गया है।


अन्य सभी नोड्स के लिए, उनके माता-पिता एक ही पृष्ठ के भीतर होंगे, और यह पृष्ठ संख्या को बदले बिना, उनके पृष्ठ के भीतर उनके ऑफसेट को 2 से विभाजित करने के लिए पर्याप्त है।
बाकी सभी नोडों के लिए, उनके पैरेंट समान पेज के भीतर होगा, और उनके पेज के भीतरी स्थान को 2 से विभाजित करना पर्याप्त है, पेज संख्या को बदलते हुए नहीं।


==यह भी देखें==
==यह भी देखें==
* [[डी-एरी ढेर]]
* [[डी-एरी ढेर|डी-एरी हीप]]


==संदर्भ==
==संदर्भ==

Revision as of 22:45, 23 July 2023

बी-हीप एक बाइनरी हीप है जिसे एक सिंगल पेज में उपतर कोण रखने के लिए लागू किया जाता है। जब वर्चुअल मेमोरी का उपयोग करके बड़े हीप के लिए पारंपरिक लागू के संदर्भ में, इससे यह पृष्ठों तक पहुंचे हुए पृष्ठों की संख्या को दस गुना तक कम करता है। प्रायः प्रत्येक स्तर को एक अलग पेज में रखने के लिए एक एरे में तत्वों का मैपिंग पारंपरिक रूप से किया जाता है।[1]

वर्चुअल मेमोरी या कैश का उपयोग करने वाले कंप्यूटर में कुछ अन्य हीप वेरिएंट्स भी हैं जो कारगर होते हैं, जैसे कैश-अवेयर एल्गोरिदम, के-हीप्स[2] और वैन एमडे बोएस लेआउट्स।[3]

प्रेरणा

पारंपरिक रूप से, बाइनरी ट्रीज को निरंतर मेमोरी में एक n -> {2n, 2n+1} नियम के अनुसार व्यवस्थित किया जाता है, जिसका अर्थ है कि अगर किसी नोड का स्थान n पर है, तो उसके बाएं और दाएं बच्चे को सरणी में स्थान 2n और 2n+1 पर लिया जाता है। रूट पोज़िशन 1 पर होता है। बाइनरी ट्रीज पर एक सामान्य कार्रवाई उसके लंबवत ट्रावर्सल होती है; यानी एक खोजी गई नोड पर पहुंचने के लिए ट्री के स्तरों के माध्यम से नीचे कदम रखना। हालांकि, आधुनिक कंप्यूटरों में मेमोरी को वर्चुअल मेमोरी में पेजों में व्यवस्थित करने के तरीके के कारण, बाइनरी ट्री को इस तरीके से व्यवस्थित करना अत्यंत अप्रभावी हो सकता है। कारण यह है कि, जब ट्री में गहराई से भ्रमण करते हैं, तो अगले नोड तक की दूरी गणितशास्त्रीय रूप से वृद्धि होती है, इसलिए प्रत्येक अगले नोड को प्राप्त करने पर संभावित रूप से वह अलग मेमोरी पेज पर होगा। यह पेज मिसेज की संख्या बढ़ाएगा, जो बहुत महंगा होता है। बी-हीप इस समस्या का समाधान करता है जिसे बच्चा नोड को मेमोरी में एक अलग तरीके से व्यवस्थित करके किया जाता है, जिससे वह संभवतः संपूर्ण पेज के भीतर उपतर कोण को स्थान देने का प्रयास करता है। इसलिए, जब एक लंबवत ट्रावर्सल प्रारंभ होता है, कई निरंतर प्राप्त नोड एक ही पेज में होते हैं, जिससे पेज मिसेज की संख्या कम होती है।

कार्यान्वयन

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

मूल कार्य

बिना-हीप के विभिन्न लेआउट के खिलाफ, एक क्लासिक एरे-जैसे व्यवस्था के मुकाबले, बिना-हीप में पैरेंट (parent) फ़ंक्शन अधिक जटिल होता है क्योंकि नोड के पैरेंट का इंडेक्स पेज में जहां है, उस पर निर्भर करता है। पेज के भीतर स्थानों को 0 से pagesize तक नामकरण के तौर पर मानते हुए, पैरेंट फ़ंक्शन निम्नलिखित रूप में हो सकता है।

नोड्स 0 और 1 के लिए, इनका उपयोग केवल उस वैरिएंट में किया जाता है जो सभी संभावित स्थान का शोषण कर रहा है। इस स्थिति में, दोनों नोड्स का मूल सूचकांक समान है, यह एक अलग पृष्ठ में है, और उस पृष्ठ के भीतर इसकी विशिष्ट ऑफसेट केवल वर्तमान पृष्ठ संख्या पर निर्भर करती है। विशेष रूप से, मूल पृष्ठ संख्या की गणना करने के लिए, बस वर्तमान नोड के पृष्ठ संख्या को "पेज ट्री" विभाजन कारक से विभाजित करें, जो कि pagesize/2 है। पृष्ठ के भीतर सही ऑफसेट प्राप्त करने के लिए, विचार करें कि यह मूल पृष्ठ के भीतर लीफ नोड्स में से एक होना चाहिए, इसलिए ऑफसेट pagesize/2 से प्रारंभ करें। फिर वर्तमान पृष्ठ संख्या और मूल पृष्ठ संख्या के बीच का अंतर जोड़ें, मूल पृष्ठ के सूचकांक में मूल नोड होने के बाद पहले पृष्ठ से एक घटाएं (pagesize/2)।

नोड 2 और 3 के लिए, पैरेंट मोड के आधार पर भिन्न होते हैं। स्थान बचाने वाले मोड में, पैरेंट सिर्फ नोड 0 और 1 होते हैं, इसलिए केवल 2 से घटाना होता है। दूसरी ओर, सख्त-बाइनरी-ट्री-मोड में, ये नोड नोड 0 और 1 के बजाय पेज की रूट्स होते हैं, और इसलिए उनका समान पैरेंट उसी तरीके से गणना किया जाता है जैसा कि पहले विवरणित किया गया है।

बाकी सभी नोडों के लिए, उनके पैरेंट समान पेज के भीतर होगा, और उनके पेज के भीतरी स्थान को 2 से विभाजित करना पर्याप्त है, पेज संख्या को बदलते हुए नहीं।

यह भी देखें

संदर्भ

  1. Kamp, Poul-Henning (2020-07-26). "You're Doing It Wrong". ACM Queue.
  2. Naor, Dalit; Martel, Charles U.; Matloff, Norman S. (1991). "वर्चुअल मेमोरी वातावरण में प्राथमिकता कतार संरचनाओं का प्रदर्शन". Comput. J. 34 (5): 428–437. doi:10.1093/comjnl/34.5.428.
  3. van Emde Boas, P.; Kaas, R.; Zijlstra, E. (1976). "एक कुशल प्राथमिकता कतार का डिज़ाइन और कार्यान्वयन". Mathematical Systems Theory. 10: 99–127. doi:10.1007/BF01683268. S2CID 8105468.
  4. Kamp, Poul-Henning. "आपके द्वारा गलत किया जा रहा है". phk.freebsd.dk. Retrieved 2019-06-08.


बाहरी संबंध