संग्रह (सार डेटा प्रकार): Difference between revisions

From Vigyanwiki
(Created page with "{{refimprove|date=October 2014}} कंप्यूटर प्रोग्रामिंग में, एक संग्रह डेटा आइटम्स (स...")
 
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{refimprove|date=October 2014}}
कंप्यूटर प्रोग्रामिंग में, '''संग्रहण (कलेक्शन)''' डेटा आइटम (संभवतः शून्य) की कुछ परिवर्ती संख्या का एक समूह है, जिसका हल की जा रही समस्या के लिए कुछ साझा महत्व है और कुछ नियंत्रित तरीके से एक साथ संचालित करने की आवश्यकता है। सामान्य रूप से, डेटा आइटम समान प्रकार के होंगे या इन्हेरिटेन्स का समर्थन करने वाली भाषाओं में, कुछ सामान्य एन्सेस्टर प्रकार से प्राप्त होंगे। संग्रह अमूर्त डेटा प्रकारों पर प्रयुक्त एक अवधारणा है, और ठोस डेटा संरचना के रूप में एक विशिष्ट कार्यान्वयन निर्धारित नहीं करता है, हालांकि प्रायः एक सांकेतिक (प्ररूप सिद्धांत विचार-विमर्श के लिए कंटेनर देखें) चयन होता है।


[[कंप्यूटर प्रोग्रामिंग]] में, एक संग्रह डेटा आइटम्स (संभवतः शून्य) की कुछ चर संख्या का एक समूह है, जिसका हल की जा रही समस्या के लिए कुछ साझा महत्व है और कुछ नियंत्रित तरीके से एक साथ संचालित करने की आवश्यकता है। आम तौर पर, डेटा आइटम एक ही प्रकार के होंगे या विरासत का समर्थन करने वाली भाषाओं में, कुछ सामान्य पूर्वज प्रकार से प्राप्त होंगे। एक संग्रह [[सार डेटा प्रकार]]ों पर लागू एक अवधारणा है, और एक ठोस [[डेटा संरचना]] के रूप में एक विशिष्ट कार्यान्वयन निर्धारित नहीं करता है, हालांकि अक्सर एक पारंपरिक विकल्प होता है ([[प्रकार सिद्धांत]] चर्चा के लिए [[कंटेनर (प्रकार सिद्धांत)]] देखें)
संग्रह के उदाहरणों में [[सूची (सार डेटा प्रकार)|सूची (अमूर्त डेटा प्रकार)]], [[सेट (कंप्यूटर विज्ञान)]], [[मल्टीसेट|बहु-सेट]], ट्री (डेटा संरचना) और ग्राफ़ (डेटा संरचना) सम्मिलित हैं।


संग्रह के उदाहरणों में [[सूची (सार डेटा प्रकार)]], [[सेट (कंप्यूटर विज्ञान)]], [[मल्टीसेट]], ट्री (डेटा संरचना) और ग्राफ़ (डेटा संरचना) शामिल हैं।
निश्चित आकार की सरणियों (या सारणियों) को सामान्य रूप से संग्रह नहीं माना जाता है क्योंकि वे निश्चित संख्या में डेटा आइटम रखते हैं, हालांकि वे सामान्य रूप से संग्रह के कार्यान्वयन में एक भूमिका निभाते हैं। चर-आकार सरणियों को सामान्य रूप से संग्रह माना जाता है।{{citation needed|date=April 2016}}


निश्चित आकार की सरणियों (या तालिकाओं) को आमतौर पर एक संग्रह नहीं माना जाता है क्योंकि वे निश्चित संख्या में डेटा आइटम रखते हैं, हालांकि वे आमतौर पर संग्रह के कार्यान्वयन में एक भूमिका निभाते हैं। चर-आकार सरणियों को आम तौर पर संग्रह माना जाता है।{{citation needed|date=April 2016}}
== रैखिक संग्रह ==
{{also|रैखिक डेटा संरचना}}


== रैखिक संग्रह ==
कई संग्रह एक या दोनों सिरों तक अभिगम के साथ एक विशेष रैखिक क्रम को परिभाषित करते हैं। इस तरह के संग्रह को प्रयुक्त करने वाली वास्तविक डेटा संरचना को रैखिक होने की आवश्यकता नहीं है - उदाहरण के लिए, एक [[प्राथमिकता कतार|प्राथमिकता क्यू]] को प्रायः हीप (डेटा संरचना) के रूप में प्रयुक्त किया जाता है, जो एक प्रकार का ट्री है। महत्वपूर्ण रैखिक संग्रह में सम्मिलित हैं:
{{also|Linear data structure}}
* सूची (अमूर्त डेटा प्रकार);
कई संग्रह एक या दोनों सिरों तक पहुंच के साथ एक विशेष रैखिक क्रम को परिभाषित करते हैं। इस तरह के संग्रह को लागू करने वाली वास्तविक डेटा संरचना को रैखिक होने की आवश्यकता नहीं है - उदाहरण के लिए, एक [[प्राथमिकता कतार]] को अक्सर हीप (डेटा संरचना) के रूप में लागू किया जाता है, जो एक प्रकार का पेड़ है। महत्वपूर्ण रैखिक संग्रह में शामिल हैं:
* स्टैक (अमूर्त डेटा प्रकार);
* सूची (सार डेटा प्रकार);
* [[कतार (सार डेटा प्रकार)|क्यू (अमूर्त डेटा प्रकार)]];
* ढेर (अमूर्त डेटा प्रकार);
* प्राथमिकता क्यू;
* [[कतार (सार डेटा प्रकार)]];
* डबल-एंडेड क्यू;
* प्राथमिकता कतार;
* डबल-एंडेड (द्विमुखी) प्राथमिकता क्यू।
* [[डबल-एंडेड कतार]]|डबल-एंडेड कतार;
* [[डबल-एंडेड प्राथमिकता कतार]] | डबल-एंडेड प्राथमिकता कतार।


=== सूची ===
=== सूची ===
{{main|List (abstract data type)}}
{{main|सूची (अमूर्त डाटा प्रकार)}}
किसी सूची में, डेटा आइटम्स का क्रम महत्वपूर्ण होता है। डुप्लिकेट डेटा आइटम की अनुमति है। सूचियों पर संचालन के उदाहरण सूची में डेटा आइटम की खोज करना और उसका स्थान निर्धारित करना (यदि वह मौजूद है), सूची से डेटा आइटम को हटाना, किसी विशिष्ट स्थान पर सूची में डेटा आइटम जोड़ना आदि। सूची में संचालन एक छोर पर डेटा आइटम के अतिरिक्त और दूसरे पर डेटा आइटम को हटाने के लिए होता है, इसे आम तौर पर क्यू (डेटा संरचना) या [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] कहा जाएगा। यदि मुख्य ऑपरेशन केवल एक छोर पर डेटा आइटम को जोड़ना और हटाना है, तो इसे स्टैक (डेटा संरचना) या LIFO (कंप्यूटिंग) कहा जाएगा। दोनों ही मामलों में, डेटा आइटम संग्रह के भीतर एक ही क्रम में बनाए रखा जाता है (जब तक कि उन्हें हटाया नहीं जाता है और कहीं और फिर से डाला जाता है) और इसलिए ये सूची संग्रह के विशेष मामले हैं। सूचियों पर अन्य विशेष संचालन में छँटाई शामिल है, जहाँ, फिर से, डेटा वस्तुओं का क्रम बहुत महत्वपूर्ण है।
 
किसी सूची में, डेटा आइटम का क्रम महत्वपूर्ण होता है। प्रतिलिपि डेटा आइटम की स्वीकृति है। सूचियों पर संचालन के उदाहरण सूची में डेटा आइटम की खोज करना और उसका स्थान (यदि वह सम्मिलित है) निर्धारित करना, सूची से डेटा आइटम को हटाना, किसी विशिष्ट स्थान पर सूची में डेटा आइटम जोड़ना आदि सम्मिलित है। सूची में संचालन एक सिरे पर डेटा आइटम के अतिरिक्त और दूसरे पर डेटा आइटम को हटाने के लिए होता है, इसे सामान्य रूप से क्यू (डेटा संरचना) या [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] कहा जाएगा। यदि मुख्य ऑपरेशन केवल एक सिरे पर डेटा आइटम को जोड़ना और हटाना है, तो इसे स्टैक (डेटा संरचना) या एलआईएफओ (कंप्यूटिंग) कहा जाएगा। दोनों ही स्थितियों में, डेटा आइटम संग्रह के अंदर समान क्रम में बनाए रखा जाता है (जब तक कि उन्हें हटाया नहीं जाता है और कहीं और पुनः निर्दिष्ट किया जाता है) और इसलिए ये सूची संग्रह के विशेष स्थिति हैं। सूचियों पर अन्य विशेष संचालन में वर्गीकरण सम्मिलित है, जहाँ, पुनः, डेटा वस्तुओं का क्रम बहुत महत्वपूर्ण है।
 
=== स्टैक ===
{{main|स्टैक (अमूर्त डेटा प्रकार)}}


=== ढेर ===
स्टैक एक एलआईएफओ डेटा संरचना है जिसमें दो प्रमुख संचालन होते हैं: पुश, जो संग्रह के "शीर्ष" में एक तत्व जोड़ता है, और पॉप, जो शीर्ष तत्व को हटा देता है।
{{main|Stack (abstract data type)}}
एक ढेर एक एलआईएफओ डेटा संरचना है जिसमें दो प्रमुख संचालन होते हैं: धक्का, जो संग्रह के शीर्ष पर एक तत्व जोड़ता है, और पॉप, जो शीर्ष तत्व को हटा देता है।


=== पूंछ ===
=== क्यू ===
{{main|Queue (abstract data type)}}
{{main|क्यू (अमूर्त डेटा प्रकार)}}


=== प्राथमिकता कतार ===
=== प्राथमिकता क्यू ===
{{main|Priority queue}}
{{main|प्राथमिकता क्यू}}
एक प्राथमिकता कतार में, संग्रह में न्यूनतम या अधिकतम डेटा आइटम के ट्रैक कुछ ऑर्डरिंग मानदंड के अनुसार रखे जाते हैं, और अन्य डेटा आइटम के क्रम में कोई फर्क नहीं पड़ता। एक प्राथमिकता कतार को एक सूची के रूप में सोच सकते हैं जो हमेशा न्यूनतम या अधिकतम सिर पर रखती है, जबकि शेष तत्वों को एक बैग में रखा जाता है।
 
प्राथमिकता क्यू में, संग्रह में न्यूनतम या अधिकतम डेटा आइटम के पथ कुछ क्रमीकरण मानक के अनुसार रखे जाते हैं, औरऔर अन्य डेटा आइटम्स का क्रम कोई प्रयोजन नहीं रखता है। एक प्राथमिकता क्यू को एक सूची के रूप में विचार कर सकते हैं जो सदैव न्यूनतम या अधिकतम शीर्ष पर रखती है, जबकि शेष तत्वों को एक बैग में रखा जाता है।


=== डबल-एंडेड क्यू ===
=== डबल-एंडेड क्यू ===
{{main|Double-ended queue}}
{{main|डबल-एंडेड क्यू}}


=== डबल-एंडेड प्राथमिकता कतार ===
=== डबल-एंडेड प्राथमिकता क्यू ===
{{main|Double-ended priority queue}}
{{main|डबल-एंडेड  प्राथमिकता क्यू}}


== साहचर्य संग्रह ==
== साहचर्य संग्रह ==
इसके बजाय अन्य संग्रहों को एक प्रकार के कार्य के रूप में व्याख्या किया जा सकता है: एक इनपुट दिए जाने पर, संग्रह एक आउटपुट उत्पन्न करता है। महत्वपूर्ण साहचर्य संग्रह में शामिल हैं:
इसके अतिरिक्त अन्य संग्रहों को एक प्रकार के फ़ंक्शन के रूप में व्याख्या किया जा सकता है: एक इनपुट दिए जाने पर, संग्रह एक आउटपुट उत्पन्न करता है। महत्वपूर्ण साहचर्य संग्रह में सम्मिलित हैं:
* सेट (कंप्यूटर विज्ञान);
* सेट (कंप्यूटर विज्ञान)
* [[मल्टीसेट (अमूर्त डेटा प्रकार)]];
* [[मल्टीसेट (अमूर्त डेटा प्रकार)|बहुसेट; (अमूर्त डेटा प्रकार)]];
* सहयोगी सरणी।
* साहचर्य सरणियाँ।
एक सेट को एक विशेष मल्टीसेट के रूप में व्याख्या किया जा सकता है, जो बदले में एक विशेष [[साहचर्य सरणी]] है, प्रत्येक मामले में संभावित मूल्यों को सीमित करके - एक सेट को इसके संकेतक फ़ंक्शन द्वारा दर्शाया गया है।
सेट को एक विशेष बहुसेट के रूप में व्याख्या किया जा सकता है, जो बदले में एक विशेष [[साहचर्य सरणी]] है, प्रत्येक स्थिति में संभावित मान को सीमित करके - एक सेट को इसके सूचक फ़ंक्शन द्वारा दर्शाया गया है।


=== सेट ===
=== सेट ===
{{main|Set (computer science)}}
{{main|सेट (कंप्यूटर विज्ञान)}}
एक सेट में, डेटा आइटम का क्रम मायने नहीं रखता (या अपरिभाषित है) लेकिन डुप्लिकेट डेटा आइटम की अनुमति नहीं है। सेट पर संचालन के उदाहरण डेटा आइटम को जोड़ना और हटाना और सेट में डेटा आइटम की खोज करना है। कुछ भाषाएँ सीधे सेट का समर्थन करती हैं। दूसरों में, सेट को [[हैश तालिका]] द्वारा डमी मानों के साथ लागू किया जा सकता है; सेट का प्रतिनिधित्व करने के लिए केवल कुंजियों का उपयोग किया जाता है।
 
एक सेट में, डेटा आइटम का क्रम उद्देश्य नहीं रखता (या अपरिभाषित है) लेकिन प्रतिलिपि डेटा आइटम की स्वीकृति नहीं है। सेट पर संचालन के उदाहरण डेटा आइटम को जोड़ना और हटाना और सेट में डेटा आइटम की खोज करना है। कुछ भाषाएँ प्रत्यक्ष रूप से सेट का समर्थन करती हैं। दूसरों में, सेट को [[हैश तालिका|हैश]] सारणी द्वारा मूक मानों के साथ प्रयुक्त किया जा सकता है; सेट का प्रतिनिधित्व करने के लिए केवल कुंजियों का उपयोग किया जाता है।
 
=== बहुसेट ===
{{main|बहुसेट (अमूर्त डेटा प्रकार)}}


=== मल्टीसेट्स ===
बहुसेट (या बैग) में, एक सेट की तरह, डेटा आइटम का क्रम उद्देश्य नहीं रखता है, लेकिन इस स्थिति में प्रतिलिपि डेटा आइटम की स्वीकृति है। बहुसेट पर संचालन के उदाहरण डेटा आइटम को जोड़ना और हटाना और यह निर्धारित करना है कि बहुसेट में किसी विशेष डेटा आइटम के कितने प्रतिलिपि सम्मिलित हैं। सॉर्टिंग की क्रिया द्वारा बहुसेट को सूचियों में बदला जा सकता है।
{{main|Multiset (abstract data type)}}
एक मल्टीसेट (या बैग) में, एक सेट की तरह, डेटा आइटम का क्रम मायने नहीं रखता है, लेकिन इस मामले में डुप्लिकेट डेटा आइटम की अनुमति है। मल्टीसेट पर संचालन के उदाहरण डेटा आइटम्स को जोड़ना और हटाना और यह निर्धारित करना है कि मल्टीसेट में किसी विशेष डेटा आइटम के कितने डुप्लिकेट मौजूद हैं। छँटाई की क्रिया द्वारा मल्टीसेट को सूचियों में बदला जा सकता है।


=== साहचर्य सरणियाँ ===
=== साहचर्य सरणियाँ ===
{{Main|Associative array}}
{{Main|साहचर्य सरणियाँ}}
एक साहचर्य सरणी (या मानचित्र, शब्दकोश, लुकअप टेबल) में, एक शब्दकोश की तरह, एक कुंजी पर एक लुकअप (एक शब्द की तरह) एक मान प्रदान करता है (एक परिभाषा की तरह)मान एक यौगिक डेटा संरचना का संदर्भ हो सकता है। एक हैश तालिका आमतौर पर एक कुशल कार्यान्वयन होती है, और इस प्रकार इस डेटा प्रकार को अक्सर हैश के रूप में जाना जाता है।
 
साहचर्य सरणी (या मानचित्र, शब्दकोश, लुकअप टेबल) में, शब्दकोश की तरह, एक कुंजी पर लुकअप (एक शब्द की तरह) मान (परिभाषा की तरह) प्रदान करता है। मान एक संयुक्त डेटा संरचना का संदर्भ हो सकता है। एक हैश सारणी सामान्य रूप से एक सक्षम कार्यान्वयन होती है, और इस प्रकार इस डेटा प्रकार को प्रायः हैश के रूप में जाना जाता है।
 
== ग्राफ़ ==
{{Main|ग्राफ (अमूर्त डेटा प्रकार)}}
 
ग्राफ़ में, डेटा आइटम संग्रह में एक या अधिक अन्य डेटा आइटम के साथ संबंध रखते हैं और अपेक्षाकृत अधिक सीमा तक रूट या पैरेंट-चाइल्ड के संबंध की अवधारणा के बिना ट्री की तरह होते हैं ताकि सभी डेटा आइटम सहकर्मी हों। ग्राफ़ पर संचालन के उदाहरण ट्रैवर्सल और खोज हैं जो कुछ विशिष्ट गुण की जांच में डेटा आइटम के संघों का पता लगाते हैं। ग्राफ़ का उपयोग प्रायः वास्तविक विश्व की स्थितियों को मॉडल करने और संबंधित समस्याओं को हल करने के लिए किया जाता है। एक उदाहरण [[ स्पेनिंग ट्री प्रोटोकॉल |स्पेनिंग ट्री प्रोटोकॉल]] है, जो एक डेटा नेटवर्क का एक ग्राफ (या मेश) प्रतिनिधित्व बनाता है और यह पता लगाता है कि स्विचिंग नोड्स के बीच कौन से संघों को इसे ट्री में बदलने के लिए अलग किया जाना चाहिए और इस प्रकार डेटा को लूप में जाने से प्रतिबंधित करता है।


== रेखांकन ==
=== ट्री ===
{{Main|Graph (abstract data type)}}
{{main|ट्री (डाटा संरचना)|}}
एक ग्राफ़ में, डेटा आइटम संग्रह में एक या अधिक अन्य डेटा आइटम के साथ जुड़ाव रखते हैं और कुछ हद तक जड़ या माता-पिता के रिश्ते की अवधारणा के बिना पेड़ों की तरह होते हैं ताकि सभी डेटा आइटम सहकर्मी हों। ग्राफ़ पर संचालन के उदाहरण ट्रैवर्सल और खोज हैं जो कुछ विशिष्ट संपत्ति की तलाश में डेटा आइटम के संघों का पता लगाते हैं। रेखांकन का उपयोग अक्सर वास्तविक दुनिया की स्थितियों को मॉडल करने और संबंधित समस्याओं को हल करने के लिए किया जाता है। एक उदाहरण [[ स्पेनिंग ट्री प्रोटोकॉल ]] है, जो एक डेटा नेटवर्क का एक ग्राफ (या मेश) प्रतिनिधित्व बनाता है और यह पता लगाता है कि स्विचिंग नोड्स के बीच कौन से संघों को इसे ट्री में बदलने के लिए तोड़ा जाना चाहिए और इस प्रकार डेटा को लूप में जाने से रोकता है।


=== पेड़ ===
ट्री में, जो एक विशेष प्रकार का ग्राफ है, एक रूट डेटा आइटम ने इसके साथ कुछ डेटा आइटम जोड़े हैं, जो बदले में उनके साथ कुछ अन्य डेटा आइटम से जुड़े हैं, जिन्हें प्रायः पैरेंट-चाइल्ड के संबंध के रूप में देखा जाता है। प्रत्येक डेटा आइटम (रूट के अतिरिक्त) में एकल पैरेंट (रूट का कोई पैरेंट नहीं है) और कुछ संख्या में चाइल्ड, संभवतः शून्य हैं। ट्री पर संचालन के उदाहरण डेटा आइटम को जोड़ना है ताकि सॉर्टिंग आदि करने के लिए ट्री की एक विशिष्ट गुण को बनाए रखा जा सके और एक विशिष्ट क्रम में डेटा आइटम को देखने के लिए ट्रैवर्सल किया जा सके।
{{main|Tree (data structure)|}}
एक पेड़ में, जो एक विशेष प्रकार का ग्राफ है, एक रूट डेटा आइटम ने इसके साथ कुछ डेटा आइटम जोड़े हैं, जो बदले में उनके साथ कुछ अन्य डेटा आइटम से जुड़े हैं, जिन्हें अक्सर माता-पिता के रिश्ते के रूप में देखा जाता है। प्रत्येक डेटा आइटम (रूट के अलावा) में एक एकल माता-पिता (रूट का कोई माता-पिता नहीं है) और कुछ संख्या में बच्चे, संभवतः शून्य हैं। पेड़ों पर संचालन के उदाहरण डेटा आइटम्स को जोड़ना है ताकि सॉर्टिंग आदि करने के लिए ट्री की एक विशिष्ट संपत्ति को बनाए रखा जा सके और एक विशिष्ट क्रम में डेटा आइटम्स को देखने के लिए ट्रैवर्सल किया जा सके।


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


विशिष्ट पेड़ों का उपयोग विभिन्न एल्गोरिदम में किया जाता है। उदाहरण के लिए, [[ ढेर बनाएं और छांटें ]] एक प्रकार के पेड़ का उपयोग करता है जिसे हीप (डेटा संरचना) कहा जाता है।
विशिष्ट ट्री का उपयोग विभिन्न एल्गोरिदम में किया जाता है। उदाहरण के लिए, हीप सॉर्ट एक प्रकार के ट्री का उपयोग करता है जिसे हीप (डेटा संरचना) कहा जाता है।


== सार अवधारणा बनाम कार्यान्वयन ==
== अमूर्त अवधारणा बनाम कार्यान्वयन ==
जैसा कि यहां बताया गया है, एक संग्रह और विभिन्न प्रकार के संग्रह अमूर्त अवधारणाएं हैं। कंप्यूटर विज्ञान की अमूर्त अवधारणाओं और विभिन्न भाषाओं या भाषाओं के प्रकारों में उनके विशिष्ट कार्यान्वयन के बीच साहित्य में काफी भ्रम मौजूद है। यह दावा कि सूचियों, सेटों, पेड़ों आदि जैसे संग्रह डेटा संरचनाएं हैं, सार डेटा प्रकार या कक्षाएं इसे ध्यान में रखकर पढ़ी जानी चाहिए। संग्रह सबसे पहले और सबसे महत्वपूर्ण सार हैं जो कंप्यूटिंग समस्याओं के समाधान तैयार करने में उपयोगी होते हैं। इस प्रकाश में देखे जाने पर, वे अंतर्निहित गणितीय अवधारणाओं के लिए महत्वपूर्ण लिंक बनाए रखते हैं जो कार्यान्वयन पर ध्यान केंद्रित करने पर खो सकते हैं।
जैसा कि यहां बताया गया है, संग्रह और विभिन्न प्रकार के संग्रह अमूर्त अवधारणाएं हैं। कंप्यूटर विज्ञान की अमूर्त अवधारणाओं और विभिन्न भाषाओं या भाषाओं के प्रकारों में उनके विशिष्ट कार्यान्वयन के बीच साहित्य में अपेक्षाकृत अधिक भ्रम सम्मिलित है। यह दावा कि सूचियों, सेटों, ट्री आदि जैसे संग्रह डेटा संरचनाएं हैं, अमूर्त डेटा प्रकार या या कक्षाएं इस बात को ध्यान में रखकर पढ़ी जानी चाहिए। संग्रह सबसे पहले और सबसे महत्वपूर्ण अमूर्त हैं जो कंप्यूटिंग समस्याओं के समाधान तैयार करने में उपयोगी होते हैं। उपरोत संदर्भ में देखने पर, वे अंतर्निहित गणितीय अवधारणाओं के लिए महत्वपूर्ण लिंक बनाए रखते हैं जो कार्यान्वयन पर ध्यान केंद्रित करने पर नष्ट हो सकते हैं।


उदाहरण के लिए, एक प्राथमिकता कतार को अक्सर ढेर के रूप में लागू किया जाता है, जबकि एक साहचर्य सरणी को अक्सर हैश तालिका के रूप में कार्यान्वित किया जाता है, इसलिए इन अमूर्त प्रकारों को अक्सर इस पसंदीदा कार्यान्वयन द्वारा हीप या हैश के रूप में संदर्भित किया जाता है, हालांकि यह कड़ाई से नहीं है सही।
उदाहरण के लिए, एक प्राथमिकता क्यू को प्रायः स्टैक के रूप में प्रयुक्त किया जाता है, जबकि एक साहचर्य सरणी को प्रायः हैश सारणी के रूप में कार्यान्वित किया जाता है, इसलिए इन अमूर्त प्रकारों को प्रायः इस चयनात्मक कार्यान्वयन द्वारा <nowiki>''हीप'' या ''हैश''</nowiki> के रूप में संदर्भित किया जाता है, हालांकि यह परिशुद्ध रूप से सही नहीं है।


== कार्यान्वयन ==
== कार्यान्वयन ==
कुछ संग्रह किसी भाषा में [[आदिम डेटा प्रकार]] हो सकते हैं, जैसे कि सूचियाँ, जबकि अधिक जटिल संग्रह पुस्तकालयों में मिश्रित डेटा प्रकारों के रूप में कार्यान्वित किए जाते हैं, कभी-कभी [[मानक पुस्तकालय]] में। उदाहरणों में शामिल:
कुछ संग्रह किसी भाषा में [[आदिम डेटा प्रकार|प्रारंभिक डेटा प्रकार]] हो सकते हैं, जैसे सूचियाँ, जबकि अधिक जटिल संग्रह मानक लाइब्रेरी में या कभी-कभी लाइब्रेरी में समग्र डेटा प्रकारों के रूप में कार्यान्वित किए जाते हैं। उदाहरणों में सम्मिलित:


* सी ++: [[कंटेनर (सार डेटा प्रकार)]] के रूप में जाना जाता है, सी ++ मानक लाइब्रेरी और पहले [[मानक टेम्पलेट लाइब्रेरी]] में लागू किया गया
* C ++: [[कंटेनर (सार डेटा प्रकार)|कंटेनर (अमूर्त डेटा प्रकार)]] के रूप में जाना जाता है, C ++ मानक लाइब्रेरी और पहले [[मानक टेम्पलेट लाइब्रेरी]] में प्रयुक्त किया गया
* जावा: जावा संग्रह ढांचे में लागू किया गया
* जावा: जावा संग्रह रूपरेखा में प्रयुक्त किया गया
* ओरेकल पीएल/एसक्यूएल संग्रह को प्रोग्रामर परिभाषित प्रकारों के रूप में लागू करता है<ref>
* ओरेकल संरचित प्रश्न भाषा के लिए प्रक्रियात्मक भाषा विस्तार (पीएल/एसक्यूएल) संग्रह को प्रोग्रामर परिभाषित प्रकारों के रूप में प्रयुक्त करता है<ref>
{{cite book
{{cite book
| last1 = Feuerstein
| last1 = Feuerstein
Line 103: Line 110:
}}
}}
</ref>
</ref>
* पायथन: कुछ अंतर्निहित, अन्य [https://docs.python.org/3/library/collections.html संग्रह] पुस्तकालय में कार्यान्वित
* पायथन: कुछ अंतर्निहित, अन्य [https://docs.python.org/3/library/collections.html संग्रह] लाइब्रेरी में कार्यान्वित किया जाता है।


==संदर्भ==
==संदर्भ==
Line 118: Line 125:
{{data structures}}
{{data structures}}


{{DEFAULTSORT:Collection}}[[Category: सार डेटा प्रकार]]
{{DEFAULTSORT:Collection}}
 
 


[[Category: Machine Translated Page]]
[[Category:All articles with unsourced statements|Collection]]
[[Category:Created On 13/05/2023]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Collection]]
[[Category:Articles with unsourced statements from April 2016|Collection]]
[[Category:Collapse templates|Collection]]
[[Category:Created On 13/05/2023|Collection]]
[[Category:Machine Translated Page|Collection]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Collection]]
[[Category:Pages with script errors|Collection]]
[[Category:Sidebars with styles needing conversion|Collection]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Collection]]
[[Category:Templates generating microformats|Collection]]
[[Category:Templates that are not mobile friendly|Collection]]
[[Category:Templates using TemplateData|Collection]]
[[Category:Wikipedia metatemplates|Collection]]
[[Category:सार डेटा प्रकार|Collection]]

Latest revision as of 16:20, 25 May 2023

कंप्यूटर प्रोग्रामिंग में, संग्रहण (कलेक्शन) डेटा आइटम (संभवतः शून्य) की कुछ परिवर्ती संख्या का एक समूह है, जिसका हल की जा रही समस्या के लिए कुछ साझा महत्व है और कुछ नियंत्रित तरीके से एक साथ संचालित करने की आवश्यकता है। सामान्य रूप से, डेटा आइटम समान प्रकार के होंगे या इन्हेरिटेन्स का समर्थन करने वाली भाषाओं में, कुछ सामान्य एन्सेस्टर प्रकार से प्राप्त होंगे। संग्रह अमूर्त डेटा प्रकारों पर प्रयुक्त एक अवधारणा है, और ठोस डेटा संरचना के रूप में एक विशिष्ट कार्यान्वयन निर्धारित नहीं करता है, हालांकि प्रायः एक सांकेतिक (प्ररूप सिद्धांत विचार-विमर्श के लिए कंटेनर देखें) चयन होता है।

संग्रह के उदाहरणों में सूची (अमूर्त डेटा प्रकार), सेट (कंप्यूटर विज्ञान), बहु-सेट, ट्री (डेटा संरचना) और ग्राफ़ (डेटा संरचना) सम्मिलित हैं।

निश्चित आकार की सरणियों (या सारणियों) को सामान्य रूप से संग्रह नहीं माना जाता है क्योंकि वे निश्चित संख्या में डेटा आइटम रखते हैं, हालांकि वे सामान्य रूप से संग्रह के कार्यान्वयन में एक भूमिका निभाते हैं। चर-आकार सरणियों को सामान्य रूप से संग्रह माना जाता है।[citation needed]

रैखिक संग्रह

कई संग्रह एक या दोनों सिरों तक अभिगम के साथ एक विशेष रैखिक क्रम को परिभाषित करते हैं। इस तरह के संग्रह को प्रयुक्त करने वाली वास्तविक डेटा संरचना को रैखिक होने की आवश्यकता नहीं है - उदाहरण के लिए, एक प्राथमिकता क्यू को प्रायः हीप (डेटा संरचना) के रूप में प्रयुक्त किया जाता है, जो एक प्रकार का ट्री है। महत्वपूर्ण रैखिक संग्रह में सम्मिलित हैं:

  • सूची (अमूर्त डेटा प्रकार);
  • स्टैक (अमूर्त डेटा प्रकार);
  • क्यू (अमूर्त डेटा प्रकार);
  • प्राथमिकता क्यू;
  • डबल-एंडेड क्यू;
  • डबल-एंडेड (द्विमुखी) प्राथमिकता क्यू।

सूची

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

स्टैक

स्टैक एक एलआईएफओ डेटा संरचना है जिसमें दो प्रमुख संचालन होते हैं: पुश, जो संग्रह के "शीर्ष" में एक तत्व जोड़ता है, और पॉप, जो शीर्ष तत्व को हटा देता है।

क्यू

प्राथमिकता क्यू

प्राथमिकता क्यू में, संग्रह में न्यूनतम या अधिकतम डेटा आइटम के पथ कुछ क्रमीकरण मानक के अनुसार रखे जाते हैं, औरऔर अन्य डेटा आइटम्स का क्रम कोई प्रयोजन नहीं रखता है। एक प्राथमिकता क्यू को एक सूची के रूप में विचार कर सकते हैं जो सदैव न्यूनतम या अधिकतम शीर्ष पर रखती है, जबकि शेष तत्वों को एक बैग में रखा जाता है।

डबल-एंडेड क्यू

डबल-एंडेड प्राथमिकता क्यू

साहचर्य संग्रह

इसके अतिरिक्त अन्य संग्रहों को एक प्रकार के फ़ंक्शन के रूप में व्याख्या किया जा सकता है: एक इनपुट दिए जाने पर, संग्रह एक आउटपुट उत्पन्न करता है। महत्वपूर्ण साहचर्य संग्रह में सम्मिलित हैं:

सेट को एक विशेष बहुसेट के रूप में व्याख्या किया जा सकता है, जो बदले में एक विशेष साहचर्य सरणी है, प्रत्येक स्थिति में संभावित मान को सीमित करके - एक सेट को इसके सूचक फ़ंक्शन द्वारा दर्शाया गया है।

सेट

एक सेट में, डेटा आइटम का क्रम उद्देश्य नहीं रखता (या अपरिभाषित है) लेकिन प्रतिलिपि डेटा आइटम की स्वीकृति नहीं है। सेट पर संचालन के उदाहरण डेटा आइटम को जोड़ना और हटाना और सेट में डेटा आइटम की खोज करना है। कुछ भाषाएँ प्रत्यक्ष रूप से सेट का समर्थन करती हैं। दूसरों में, सेट को हैश सारणी द्वारा मूक मानों के साथ प्रयुक्त किया जा सकता है; सेट का प्रतिनिधित्व करने के लिए केवल कुंजियों का उपयोग किया जाता है।

बहुसेट

बहुसेट (या बैग) में, एक सेट की तरह, डेटा आइटम का क्रम उद्देश्य नहीं रखता है, लेकिन इस स्थिति में प्रतिलिपि डेटा आइटम की स्वीकृति है। बहुसेट पर संचालन के उदाहरण डेटा आइटम को जोड़ना और हटाना और यह निर्धारित करना है कि बहुसेट में किसी विशेष डेटा आइटम के कितने प्रतिलिपि सम्मिलित हैं। सॉर्टिंग की क्रिया द्वारा बहुसेट को सूचियों में बदला जा सकता है।

साहचर्य सरणियाँ

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

ग्राफ़

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

ट्री

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

ट्री संग्रह का उपयोग स्वाभाविक रूप से पदानुक्रमित डेटा को संग्रहीत करने के लिए किया जा सकता है, जो एक ट्री की तरह तरीके से प्रस्तुत किया जाता है, जैसे मेनू सिस्टम और डेटा भंडारण सिस्टम पर निर्देशिकाओं में फ़ाइलें प्रस्तुत की जाती है।

विशिष्ट ट्री का उपयोग विभिन्न एल्गोरिदम में किया जाता है। उदाहरण के लिए, हीप सॉर्ट एक प्रकार के ट्री का उपयोग करता है जिसे हीप (डेटा संरचना) कहा जाता है।

अमूर्त अवधारणा बनाम कार्यान्वयन

जैसा कि यहां बताया गया है, संग्रह और विभिन्न प्रकार के संग्रह अमूर्त अवधारणाएं हैं। कंप्यूटर विज्ञान की अमूर्त अवधारणाओं और विभिन्न भाषाओं या भाषाओं के प्रकारों में उनके विशिष्ट कार्यान्वयन के बीच साहित्य में अपेक्षाकृत अधिक भ्रम सम्मिलित है। यह दावा कि सूचियों, सेटों, ट्री आदि जैसे संग्रह डेटा संरचनाएं हैं, अमूर्त डेटा प्रकार या या कक्षाएं इस बात को ध्यान में रखकर पढ़ी जानी चाहिए। संग्रह सबसे पहले और सबसे महत्वपूर्ण अमूर्त हैं जो कंप्यूटिंग समस्याओं के समाधान तैयार करने में उपयोगी होते हैं। उपरोत संदर्भ में देखने पर, वे अंतर्निहित गणितीय अवधारणाओं के लिए महत्वपूर्ण लिंक बनाए रखते हैं जो कार्यान्वयन पर ध्यान केंद्रित करने पर नष्ट हो सकते हैं।

उदाहरण के लिए, एक प्राथमिकता क्यू को प्रायः स्टैक के रूप में प्रयुक्त किया जाता है, जबकि एक साहचर्य सरणी को प्रायः हैश सारणी के रूप में कार्यान्वित किया जाता है, इसलिए इन अमूर्त प्रकारों को प्रायः इस चयनात्मक कार्यान्वयन द्वारा ''हीप'' या ''हैश'' के रूप में संदर्भित किया जाता है, हालांकि यह परिशुद्ध रूप से सही नहीं है।

कार्यान्वयन

कुछ संग्रह किसी भाषा में प्रारंभिक डेटा प्रकार हो सकते हैं, जैसे सूचियाँ, जबकि अधिक जटिल संग्रह मानक लाइब्रेरी में या कभी-कभी लाइब्रेरी में समग्र डेटा प्रकारों के रूप में कार्यान्वित किए जाते हैं। उदाहरणों में सम्मिलित:

  • C ++: कंटेनर (अमूर्त डेटा प्रकार) के रूप में जाना जाता है, C ++ मानक लाइब्रेरी और पहले मानक टेम्पलेट लाइब्रेरी में प्रयुक्त किया गया
  • जावा: जावा संग्रह रूपरेखा में प्रयुक्त किया गया
  • ओरेकल संरचित प्रश्न भाषा के लिए प्रक्रियात्मक भाषा विस्तार (पीएल/एसक्यूएल) संग्रह को प्रोग्रामर परिभाषित प्रकारों के रूप में प्रयुक्त करता है[1]
  • पायथन: कुछ अंतर्निहित, अन्य संग्रह लाइब्रेरी में कार्यान्वित किया जाता है।

संदर्भ

  1. Feuerstein, Steven; Pribyl, Bill; Dawes, Chip (2007) [1999]. "Collections in PL/SQL". Oracle PL/SQL Language Pocket Reference. Pocket Reference (4 ed.). Sebastopol, California: O'Reilly Media, Inc. p. 63. ISBN 9780596551612. Retrieved 2017-06-26. Collections are implemented as TYPEs. As with any programmer-defined type, you must first define the type; then you can declare instances of that type.


बाहरी संबंध