अमूर्त और ठोस डेटा संरचनाओं के बीच अंतर क्या है?


17

मैं साहचर्य सरणी (यानी नक्शा, या शब्दकोश) सोचा और हैशिंग तालिका इसी अवधारणा थे, जब तक में मैं देखा विकिपीडिया कि

बहुत कम संख्या में बाइंडिंग वाले शब्दकोशों के लिए, यह एक एसोसिएशन सूची, बाइंडिंग की एक लिंक्ड सूची का उपयोग करके शब्दकोश को लागू करने के लिए समझ में आ सकता है। ...

साहचर्य सरणी का सबसे अक्सर उपयोग किया जाने वाला सामान्य उद्देश्य कार्यान्वयन हैश तालिका के साथ होता है: बाइंडिंग की एक सरणी, एक हैश फ़ंक्शन के साथ एक सरणी इंडेक्स में प्रत्येक संभावित कुंजी को मैप करता है। ...

शब्दकोशों को बाइनरी सर्च ट्री या डेटा संरचनाओं में एक विशेष प्रकार की कुंजी जैसे कि मूलांक वृक्ष, कोशिश, जुडी एरेस या वैन एम्ड ब्यास पेड़ों के लिए संग्रहित किया जा सकता है। ...

इसलिए, मुझे लगता है, मेरी समस्या यह है कि मैं नहीं जानता कि साहचर्य सरणी (यानी नक्शा, या शब्दकोश) एक सार डेटा प्रकार है और हैशिंग टेबल एक ठोस डेटा संरचना है, और विभिन्न कंक्रीट डेटा संरचनाओं का उपयोग कार्यान्वित करने के लिए किया जा सकता है। समान सार डेटा प्रकार।

मेरे सवाल होंगे

  • अमूर्त डेटा संरचनाओं और कंक्रीट डेटा संरचनाओं के बीच अंतर और संबंध क्या है?

  • उनमें से प्रत्येक (अमूर्त और ठोस डेटा संरचनाओं) के लिए कौन से उदाहरण हैं? अधिक बेहतर।

  • क्या कोई सार डेटा संरचनाओं को लागू करने के लिए क्या ठोस डेटा संरचनाओं की एक सूची है? अच्छा होगा कि कोई एक हो।

जवाबों:


17

अमूर्त डेटा प्रकार (ADT) अनिवार्य रूप से एक एपीआई है, और एक ठोस डेटा संरचना उस API का कार्यान्वयन प्रदान करती है। किसी दिए गए ADT के लिए, अक्सर ठोस डेटा संरचनाओं के कई अलग-अलग विकल्प होते हैं जो ADT द्वारा वर्णित क्वेरी और अपडेट संचालन का समर्थन करते हैं। किसी दिए गए ADT के लिए प्रत्येक ठोस डेटा संरचना को ADT द्वारा वर्णित सभी कार्यों का समर्थन करना चाहिए (संभवतः यादृच्छिक संरचनाओं के मामले में सफलता की कुछ संभावना), लेकिन प्रत्येक कंक्रीट संरचना प्रत्येक ऑपरेशन के चलने के समय की अलग-अलग गारंटी दे सकती है। किसी दिए गए ADT के लिए कौन सी ठोस डेटा संरचना का विकल्प आमतौर पर प्रत्येक ऑपरेशन की दक्षता की प्राथमिकताओं पर निर्भर करता है (संरचना को शुरू करने सहित) और विभिन्न डेटा प्रकारों को लागू करने और बनाए रखने की जटिलता।

एक ही उत्तर में सूचीबद्ध करने के लिए अभी तक बहुत से एडीटी और संबंधित ठोस संरचनाएं हैं, लेकिन यहां कुछ उदाहरण हैं:

  • Find(x)एक्सएक्सInsert(x)Delete(x)

  • Findsuccessor(x)एसएक्सटीएसरों<टी

  • एक प्राथमिकता कतार एक एडीटी कि आवश्यकता है insertऔर delete-min(जैसे और कभी कभी अन्य कार्यों के साथ-साथ, संचालन find-min increase-keyया delete-key)। प्राथमिकता कतार को लागू करने वाले डेटा संरचनाओं में शामिल हैं:

    1. एक लिंक न की गई सूची, जिसमें तेज़ insertलेकिन धीमी गति है delete-min

    2. एक क्रमबद्ध लिंक्ड सूची जो तेज़ delete-minलेकिन धीमी हैinsert

    3. insertdelete-minरोंआरटी(n)

    4. एक बाइनरी हीप जिसमें लॉगरिदमिक insertऔर delete-min, और रैखिक समय आरंभीकरण है।

    5. ढेर कार्यान्वयन के अन्य संस्करण भी हैं ।

  • stabbing(x)एक्स


9

सार डेटा प्रकार बताता है कि कौन से ऑपरेशन उपलब्ध हैं और वे किन कानूनों का पालन करते हैं। जैसे एक शब्दकोश आपको किसी दिए गए कुंजी के तहत एक मूल्य को संग्रहीत करने और एक कुंजी के लिए एक मूल्य को पुनः प्राप्त करने की अनुमति देता है, और वादा करता है कि यदि आप पहले एक मूल्य को संग्रहीत करते हैं और फिर उसी कुंजी के साथ इसे पुनः प्राप्त करते हैं, तो आपको वह मूल्य वापस मिल जाएगा जो आपने संग्रहीत किया था। स्टैक में पुश और पॉप ऑपरेशन होते हैं।

कंक्रीट डेटा प्रकार कहता है कि ये ऑपरेशन वास्तव में कैसे लागू होते हैं।


धन्यवाद! क्या ऐसी सामान्य डेटा संरचना की सूची है जो एक, अमूर्त या ठोस है?
सभी

सामान्य सूची नहीं है, लेकिन आप xlinux.nist.gov/dads
Alexey Romanov
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.