कंप्यूटर विज्ञान में 'की' क्या है?


14

मैं थोड़ा उलझन में हूँ कि कंप्यूटर विज्ञान में 'कुंजी' का अर्थ क्या है। मैं कुंजी-मूल्य जोड़े, प्राथमिक कुंजी आदि को समझता हूं ... लेकिन मुझे इस बात की परिभाषा नहीं मिल रही है कि 'कुंजी' शब्द का अर्थ क्या है।

जहाँ तक मैं बता सकता हूँ यह सिर्फ डेटा का एक टुकड़ा है। सीएलआरएस में, ट्री नोड्स से जुड़े डेटा को 'कुंजियों' के रूप में संदर्भित किया जाता है। हैश टेबल खोजने के लिए डेटा को 'की' कहा जाता है। क्या यह एक 'कुंजी' है?


18
एक विशिष्ट तकनीकी परिभाषा नहीं है। शब्द का उपयोग आमतौर पर इसकी सामान्य, अंग्रेजी परिभाषा से प्रेरित होता है, जैसे कि merriam-webster.com/dEDIA/key या इसके बजाय मुझे "परिभाषा s " कहना चाहिए । सामान्य तौर पर, आपकी अपेक्षा यह होनी चाहिए कि सामान्य अंग्रेजी शब्दों के लिए एक एकीकृत तकनीकी परिभाषा नहीं है जो कि अध्ययन के एक क्षेत्र में भी कई संदर्भों में उपयोग की जाती है।
डेरेक एल्किन्स ने 19

4
यह आपके कीबोर्ड पर उन चीजों में से एक भी हो सकता है :-)
jamesqf

यह वास्तव में सामान्य अंग्रेजी में समान है - कुंजी आकृति = कहानी में प्राथमिक व्यक्ति, साक्ष्य का मुख्य टुकड़ा = प्राथमिक साक्ष्य जो किसी मामले को हल करने के लिए नेतृत्व करते हैं, कुंजी = एक दरवाजे को खोलने के लिए प्राथमिक तंत्र आदि। इसका मतलब है "मुख्य तरीका कुछ का उपयोग करने के लिए "अंग्रेजी में। यह सीएस के लिए विशिष्ट नहीं है
स्लीपबेटमैन

क्रिप्टोग्राफ़िक अर्थों में "कुंजियाँ" भी हैं, जिन्हें मैं आपके द्वारा उल्लिखित डेटा लुकअप उदाहरणों से अलग मानूंगा।
२००/२ 200 अनुगामी २४'१

@slebetman जबकि 'की' का वास्तव में अंग्रेजी भाषा में कई उपयोग हैं, ऐसे कई उपयोग हैं जिनकी एक सटीक परिभाषा है जो CS के लिए बहुत विशिष्ट है।
छिपकली

जवाबों:


30

सबसे सामान्य अर्थों में, एक कुंजी कुछ डेटा को पुनः प्राप्त करने के लिए आवश्यक जानकारी का एक टुकड़ा है। हालाँकि, यह अर्थ अलग-अलग तरीके से चलता है जो इस बात पर निर्भर करता है कि आप किस स्थिति से निपट रहे हैं।

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

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


3
संभावित भ्रम को रोकने के लिए: पुस्तक CLRS में, आमतौर पर कुंजियों को अद्वितीय नहीं माना जाता है, क्योंकि उन्हें कई डेटा संरचनाओं के लिए नहीं होना चाहिए।
छिपकली

फिर, सामान्य तौर पर, डेटा संरचना को नेविगेट करने के लिए एक कुंजी डेटा है? यह मेरे लिए समझ में आता है, जैसे एक बंद बॉक्स से किसी चीज को पुनः प्राप्त करने के लिए एक भौतिक कुंजी का उपयोग किया जाता है।
TheMax

@ TheMax मैं यह नहीं कहूंगा कि परिभाषा क्रिप्टोग्राफी के अनुकूल है, क्योंकि ऐसा करने के लिए कोई "नेविगेशन" नहीं है। यह आपके उदाहरणों की सूची के अनुकूल है, लेकिन मैं इसे उन मामलों में एक भौतिक कुंजी के समानांतर के रूप में नहीं देखता हूं।
jpmc26

@ jpmc26 कि विवरण मौके पर है, डेटा के खिलाफ एक कुंजी के
बिटवेअर

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

12

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

व्यवहार में, हमारा 'वास्तविक' डेटा अक्सर एक कुंजी नहीं होता है, लेकिन कुछ बड़ा और अधिक प्रासंगिक होता है कि एक ही संख्या। इस डेटा को उपग्रह डेटा कहा जाता है और डेटा संरचनाओं पर जोड़तोड़ से निपटने के दौरान इसे अनदेखा किया जा सकता है, जब तक कि कुंजी को स्थानांतरित करने पर उपग्रह डेटा चलता रहता है (अन्यथा, आप अपने डेटा का ट्रैक खो देते हैं)।


कुंजी की अवधारणा डेटाबेस के संदर्भ में समान है, लेकिन अक्सर यह आवश्यक है कि एक कुंजी अद्वितीय है । उदाहरण के लिए एक प्राथमिक कुंजी अद्वितीय होनी चाहिए। यह आवश्यकता अक्सर डेटा-संरचनाओं के संदर्भ में नेस्सेरी है, लेकिन कभी-कभी सरलता के लिए बनाई जाती है।

क्रिप्टोग्राफी में, एक कुंजी आमतौर पर एक (अक्सर गुप्त, लेकिन हमेशा नहीं!) को संदर्भित करती है जो किसी दिए गए एन या डिक्रिप्शन एल्गोरिथ्म के साथ एन्क्रिप्ट या डिक्रिप्ट करने के लिए आवश्यक है। एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए उपयोग की जाने वाली चाबियों को 'संबंधित' (सममित क्रिप्टोग्राफी में, समान होने की आवश्यकता) को एन्क्रिप्शन या डिक्रिप्शन के लिए सफल होने के लिए होना चाहिए।


उपग्रह डेटा और कुंजियों के बीच अंतर क्या है? जो मैं समझता हूं, उपग्रह डेटा डेटा संरचना द्वारा संगठित डेटा है जो वास्तविक संरचना का हिस्सा नहीं है। तो क्या मैं कह सकता हूं कि संरचना में एक कुंजी और उपग्रह डेटा दोनों डेटा हैं, लेकिन चाबियाँ संरचना का हिस्सा हैं और उपग्रह डेटा नहीं है?
TheMax

1
@ TheMax एक तरह से, हाँ। उपग्रह डेटा की सटीक सामग्री डेटा-संरचना पर संचालन के लिए अप्रासंगिक है (लेकिन डेटा संरचना का उपयोग करके एप्लिकेशन के लिए प्रासंगिक है)। कुंजी और डेटा की यह डिकॉप्लिंग कुशल डेटा-संरचनाओं को डिज़ाइन करना आसान बनाती है।
असतत छिपकली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.