मैं एक ऐसा फ़ंक्शन लिखने का प्रयास कर रहा हूं जो हैश का उपयोग करता है (ए * के कार्यान्वयन के लिए)।डेटा की एल्गोरिदमिक जटिलता। हैशटेबल
थोड़ा सा शोध करने के बाद, मैंने पाया है कि डिफैक्टो मानक Data.Map
है।
हालांकि, जब API दस्तावेज़ पढ़ने, मैंने पाया कि: O(log n). Find the value at a key.
https://downloads.haskell.org/~ghc/6.12.2/docs/html/libraries/containers-0.3.0.0/Data-Map.html
वास्तव में प्रलेखन आम तौर पर बड़ी हे बार काफी एक मानक हैश की हे (1) से हीन पता चलता है।
तो मुझे Data.HashTable
मिला। https://hackage.haskell.org/package/base-4.2.0.2/docs/Data-HashTable.html यह प्रलेखन सीधे बड़े ओ का उल्लेख नहीं करता है, जिससे मुझे विश्वास होता है कि यह शायद मेरी अपेक्षाओं को पूरा करता है।
मेरे पास कई प्रश्न हैं: 1) क्या यह सही है? ओ है (lookupInDataHashTable) = ओ (1)? 2) मैं कभी भी Data.Map
का उपयोग अपनी अक्षमता के बिना क्यों करना चाहूंगा? 3) क्या मेरी डेटा संरचना आवश्यकताओं के लिए कोई बेहतर लाइब्रेरी है?
अभ्यास में आप चाहिए बेंचमार्क हे (1) हे बनाम (लॉग एन) एल्गोरिदम (पूर्व एक बड़ा निरंतर हो सकता है), 'Data.Map' या' Data.IntMap' एक अच्छा विकल्प हो सकता है। यदि आप 'डेटा। हैशटेबल' की जांच करना चाहते हैं तो https://hackage.haskell.org/package/hashtables सामान्य रूप से मुझे लगता है कि अंतिम स्मृति उपयोग सबसे महत्वपूर्ण है। – josejuan