हाइपरलॉगलॉग: Difference between revisions
No edit summary |
No edit summary |
||
| Line 33: | Line 33: | ||
===काउंट=== | ===काउंट=== | ||
काउंट एल्गोरिथ्म में {{mvar|m}} रजिस्टरों के हार्मोनिक माध्य की गणना करना और काउंट का अनुमान <math display="inline">E</math> प्राप्त करने के लिए एक स्थिरांक का उपयोग करना सम्मिलित है: | |||
:<math> | :<math> | ||
| Line 47: | Line 47: | ||
===व्यावहारिक विचार=== | ===व्यावहारिक विचार=== | ||
स्थिरांक <math display="inline">\alpha_m</math> की गणना करना आसान नहीं है, और सूत्र के साथ इसका अनुमान लगाया जा सकता है<ref name="flajolet07"/> | |||
:<math> | :<math> | ||
| Line 57: | Line 57: | ||
\end{cases} | \end{cases} | ||
</math> | </math> | ||
हालाँकि, हाइपरलॉगलॉग विधि <math display="inline">\frac{5}{2}m</math> की सीमा से नीचे की छोटी कार्डिनैलिटी के लिए पक्षपाती है। मूल पेपर छोटी कार्डिनिटी के लिए एक अलग एल्गोरिदम का उपयोग करने का प्रस्ताव करता है जिसे लीनियर काउंटिंग के रूप में जाना जाता है।<ref>{{Cite journal |title=डेटाबेस अनुप्रयोगों के लिए एक रैखिक-समय संभाव्य गणना एल्गोरिथ्म|journal=ACM Transactions on Database Systems |volume=15 |number=2 |pages=208–229 |year=1990 |last1=Whang |first1= Kyu-Young |last2= Vander-Zanden |first2=Brad T|last3=Taylor |first3=Howard M |doi=10.1145/78922.78925 |s2cid=2939101 }}</ref> ऐसे स्थितिमें जहां ऊपर दिया गया अनुमान सीमा <math display="inline">E < \frac{5}{2}m</math> से कम है, वैकल्पिक गणना का उपयोग किया जा सकता है: | |||
# | # मान लीजिये <math display="inline">V</math> रजिस्टरों की काउंटी 0 के बराबर हो। | ||
# | # यदि <math display="inline">V = 0</math>, तो ऊपर दिए गए मानक हाइपरलॉग अनुमानक <math display="inline">E</math> का उपयोग करें। | ||
# अन्यथा, रैखिक गणना का उपयोग करें: <math display="inline">E^{\star} = m\log\left(\frac{m}{V}\right)</math> | # अन्यथा, रैखिक गणना का उपयोग करें: <math display="inline">E^{\star} = m\log\left(\frac{m}{V}\right)</math> | ||
इसके अतिरिक्त, रजिस्टरों के आकार की सीमा | इसके अतिरिक्त, रजिस्टरों के आकार की सीमा (32-बिट रजिस्टरों के लिए <math display="inline">E > \frac{2^{32}}{30}</math>) के निकट पहुंचने वाली बहुत बड़ी कार्डिनैलिटी के लिए, कार्डिनैलिटी का अनुमान लगाया जा सकता है: | ||
:<math> | :<math> | ||
E^{\star}=-2^{32}\log\left(1-\frac{E}{2^{32}}\right) | E^{\star}=-2^{32}\log\left(1-\frac{E}{2^{32}}\right) | ||
</math> | </math> | ||
निचली और ऊपरी सीमाओं के लिए उपरोक्त सुधारों के साथ, त्रुटि का अनुमान | निचली और ऊपरी सीमाओं के लिए उपरोक्त सुधारों के साथ, त्रुटि का अनुमान <math display="inline">\sigma=1.04/\sqrt{m}</math> के रूप में लगाया जा सकता है। | ||
=== | ===मर्ज=== | ||
दो HILLs | दो HILLs (<math display="inline">\mathit{hll}_1, \mathit{hll}_2</math>) के लिए मर्ज ऑपरेशन में रजिस्टरों की प्रत्येक जोड़ी के लिए अधिकतम <math display="inline">j: 1..m</math> प्राप्त करना सम्मिलित है | ||
:<math> | :<math> | ||
\mathit{hll}_\text{union}[j] = \max(\mathit{hll}_1[j], \mathit{hll}_2[j]) | \mathit{hll}_\text{union}[j] = \max(\mathit{hll}_1[j], \mathit{hll}_2[j]) | ||
Revision as of 09:08, 3 August 2023
| Part of a series on |
| Probabilistic data structures |
|---|
| Random trees |
| Related |
हाइपरलॉगलॉग काउंट-डिस्टिंक्ट समस्या के लिए एक एल्गोरिदम है, जो मल्टीसेट में भिन्न-भिन्न तत्वों की संख्या का अनुमान लगाता है।[1] मल्टीसेट के भिन्न-भिन्न तत्वों की सटीक कार्डिनैलिटी की गणना के लिए कार्डिनैलिटी के अनुपात में मेमोरी की मात्रा की आवश्यकता होती है, जो बहुत बड़े डेटा सेट के लिए अव्यावहारिक है। हाइपरलॉगलॉग एल्गोरिदम जैसे संभाव्य कार्डिनैलिटी अनुमानक, इससे काफी कम मेमोरी का उपयोग करते हैं, किन्तु केवल कार्डिनैलिटी का अनुमान लगा सकते हैं। हाइपरलॉगलॉग एल्गोरिदम 1.5 केबी मेमोरी का उपयोग करके 2% की विशिष्ट शुद्धता (मानक त्रुटि) के साथ > 109 की कार्डिनैलिटी का अनुमान लगाने में सक्षम है।[1] हाइपरलॉगलॉग पहले के लॉगलॉग एल्गोरिदम का एक विस्तार है,[2] जो स्वयं 1984 फ्लैजोलेट-मार्टिन एल्गोरिदम से प्राप्त हुआ है।[3]
शब्दावली
फ्लैजोलेट एट अल[1] द्वारा मूल पेपर में और काउंटी-विशिष्ट समस्या पर संबंधित साहित्य में, कार्डिनैलिटी शब्द का उपयोग दोहराए गए तत्वों के साथ डेटा स्ट्रीम में भिन्न-भिन्न तत्वों की संख्या के लिए किया जाता है। चूँकि मल्टीसेट के सिद्धांत में यह शब्द मल्टीसेट के प्रत्येक सदस्य की बहुलता के योग को संदर्भित करता है। यह आलेख स्रोतों के साथ एकरूपता के लिए फ्लैजोलेट की परिभाषा का उपयोग करना चुनता है।
एल्गोरिदम
हाइपरलॉगलॉग एल्गोरिदम का आधार यह अवलोकन है कि सेट में प्रत्येक संख्या के बाइनरी प्रतिनिधित्व में अग्रणी शून्य की अधिकतम संख्या की गणना करके समान रूप से वितरित यादृच्छिक संख्याओं के मल्टीसेट की कार्डिनैलिटी का अनुमान लगाया जा सकता है। यदि देखे गए अग्रणी शून्यों की अधिकतम संख्या n है, तो सेट में भिन्न-भिन्न तत्वों की संख्या का अनुमान 2n है।[1]
हाइपरलॉगलॉग एल्गोरिदम में, मूल मल्टीसेट के समान कार्डिनैलिटी के साथ समान रूप से वितरित यादृच्छिक संख्याओं का मल्टीसेट प्राप्त करने के लिए मूल मल्टीसेट में प्रत्येक तत्व पर हैश फंकशन लागू किया जाता है। इस अव्यवस्थित ढंग से वितरित सेट की प्रमुखता का अनुमान उपरोक्त एल्गोरिदम का उपयोग करके लगाया जा सकता है।
उपरोक्त एल्गोरिदम का उपयोग करके प्राप्त कार्डिनैलिटी के सरल अनुमान में बड़े भिन्नता का हानि है। हाइपरलॉगलॉग एल्गोरिथ्म में, मल्टीसेट को कई उपसमूहों में विभाजित करके, इनमें से प्रत्येक उपसमूह में संख्याओं में अग्रणी शून्य की अधिकतम संख्या की गणना करके और प्रत्येक उपसमूह के लिए इन अनुमानों को कार्डिनैलिटी के अनुमान में संयोजित करने के लिए हार्मोनिक माध्य का उपयोग करके भिन्नता को कम किया जाता है।[4]
संचालन
हाइपरलॉगलॉग के तीन मुख्य ऑपरेशन हैं: सेट में नया तत्व जोड़ने के लिए जोड़ें, सेट की कार्डिनैलिटी प्राप्त करने के लिए गिनें और दो सेटों का मिलन प्राप्त करने के लिए मर्ज करें। कुछ व्युत्पन्न परिचालनों की गणना समावेशन-बहिष्करण सिद्धांत का उपयोग करके की जा सकती है जैसे कि प्रतिच्छेदन की कार्डिनैलिटी या मर्ज और काउंटी संचालन के संयोजन वाले दो हाइपरलॉगलॉग के बीच अंतर की कार्डिनैलिटी।
हाइपरलॉगलॉग का डेटा M काउंटरों (या "रजिस्टर") के एरे m में संग्रहीत होता है, जिसे 0 से प्रारंभ किया जाता है। मल्टीसेट S से प्रारंभ किए गए एरे M को S का हाइपरलॉगलॉग स्केच कहा जाता है।
जोड़ें
ऐड ऑपरेशन में हैश फ़ंक्शन h के साथ इनपुट डेटा v के हैश की गणना करना, पहले b बिट्स (जहां b है) प्राप्त करना और संशोधित करने के लिए रजिस्टर का पता प्राप्त करने के लिए उनमें 1 जोड़ना सम्मिलित है। शेष बिट्स के साथ की गणना करें जो सबसे बाईं ओर 1 की स्थिति लौटाता है। रजिस्टर का नया मान रजिस्टर के वर्तमान मान और के बीच अधिकतम होगा।
काउंट
काउंट एल्गोरिथ्म में m रजिस्टरों के हार्मोनिक माध्य की गणना करना और काउंट का अनुमान प्राप्त करने के लिए एक स्थिरांक का उपयोग करना सम्मिलित है:
अंतर्ज्ञान यह है कि n, M की अज्ञात कार्डिनैलिटी होने के कारण, प्रत्येक उपसमुच्चय में तत्व होंगे। फिर अधिकतम के निकट होना चाहिए। इन मात्राओं के लिए 2 का हार्मोनिक माध्य