पीक (डेटा प्रकार ऑपरेशन)
कंप्यूटर विज्ञान में, पीक कुछ अमूर्त डेटा प्रकारों पर एक ऑपरेशन है, विशेष रूप से अनुक्रमिक संग्रह (सार डेटा प्रकार) जैसे स्टैक (सार डेटा प्रकार) और कतार (सार डेटा प्रकार), जो शीर्ष (सामने) के मान को लौटाता है। संग्रह से तत्व को हटाए बिना संग्रह। इस प्रकार यह पॉप या डेक्यू जैसे संचालन के समान मान लौटाता है, लेकिन डेटा को संशोधित नहीं करता है।
पीक नाम स्टैक पर बुनियादी पुश और पॉप संचालन के समान है, लेकिन इस ऑपरेशन का नाम डेटा प्रकार और भाषा के आधार पर भिन्न होता है। पीक को आम तौर पर डेटा जोड़ने और हटाने के अधिक बुनियादी संचालन की तुलना में एक अनावश्यक ऑपरेशन माना जाता है, और जैसे कि इन डेटा प्रकारों की मूल परिभाषा में शामिल नहीं है। हालाँकि, चूंकि यह एक उपयोगी ऑपरेशन है और आम तौर पर आसानी से लागू किया जाता है, इसे अक्सर प्रथाओं में शामिल किया जाता है, और कुछ परिभाषाओं में पीक को बेसिक के रूप में शामिल किया जाता है, पॉप (या एनालॉग) को पीक के संदर्भ में परिभाषित किया जाता है; #सार परिभाषा देखें।
डेटा प्रकार
अनुक्रमिक प्रकार जिसके लिए अक्सर तिरछी नज़र को लागू किया जाता है इसमें शामिल हैं:
- ढेर (सार डेटा प्रकार)
- कतार (सार डेटा प्रकार)
- प्राथमिकता कतार (जैसे हीप (डेटा संरचना))
- डबल-एंडेड कतार (डीक्यू)
- डबल-एंडेड प्राथमिकता कतार (DEPQ)
एकल-समाप्त प्रकार, जैसे स्टैक, आम तौर पर केवल एक झलक स्वीकार करते हैं, अंत में जो संशोधित होता है। डबल-एंडेड प्रकार, जैसे डेक, दो पीक स्वीकार करते हैं, प्रत्येक छोर पर एक।
झांकने के लिए नाम अलग-अलग होते हैं। स्टैक के लिए पीक या टॉप सामान्य हैं, जबकि क्यू के लिए फ्रंट सामान्य है। डबल-एंडेड कतार # ऑपरेशन के अलग-अलग नाम होते हैं, अक्सर आगे और पीछे या पहले और आखिरी। नाम शिखर भी कभी-कभी शीर्ष, शिखर सम्मेलन के अर्थ में पाया जाता है, हालांकि यह क्रिया के लिए वर्तनी त्रुटि के रूप में भी होता है।
सार परिभाषा
सहज रूप से, पीक पॉप के समान मान लौटाता है, लेकिन डेटा को नहीं बदलता है। संग्रह खाली होने पर व्यवहार भिन्न होता है - अक्सर यह एक खाली संग्रह पर एक पॉप के समान एक अंडरफ्लो त्रुटि उत्पन्न करता है, लेकिन कुछ कार्यान्वयन एक फ़ंक्शन प्रदान करते हैं जो बदले में (त्रुटि के बिना) अनिवार्य रूप से लागू करते हैं if isempty then return, else peek.
इस व्यवहार को विभिन्न तरीकों से सिद्ध किया जा सकता है। उदाहरण के लिए, स्टैक का एक सामान्य VDM (वियना विकास पद्धति) विवरण शीर्ष (पीक) को परिभाषित करता है और एटॉमिक के रूप में हटाता है, जहां शीर्ष शीर्ष मान देता है (स्टैक को संशोधित किए बिना), और स्टैक को संशोधित करता है (बिना मान लौटाए)।[1] इस मामले में पॉप को शीर्ष और हटाने के संदर्भ में परिभाषित किया गया है।
वैकल्पिक रूप से, दिए गए पॉप, ऑपरेशन पीक को स्वयंसिद्ध किया जा सकता है:
- पीक (डी) = पॉप (डी)
- तिरछी नज़र (डी), डी = डी
meaning पॉप के समान मान लौटाता है, और अंतर्निहित डेटा को नहीं बदलता है (पीक के बाद डेटा का मान पहले जैसा ही होता है)।
कार्यान्वयन
पॉप ऑपरेशन के एक साधारण संस्करण द्वारा पीक को आम तौर पर ओ (1) समय और कोई अतिरिक्त स्थान नहीं लेते हुए सरल दिनचर्या में बहुत आसानी से लागू किया जा सकता है। अधिकांश अनुक्रमिक डेटा प्रकारों को एक डेटा संरचना द्वारा कार्यान्वित किया जाता है जिसमें एक संदर्भ (कंप्यूटर विज्ञान) अंत तक होता है, और इस प्रकार पीक को डेरेफरेंस ऑपरेटर द्वारा कार्यान्वित किया जाता है। हालांकि कुछ मामलों में यह अधिक जटिल है।
कुछ डेटा प्रकारों के लिए, जैसे कि ढेर, इसे अधिक बुनियादी संचालन के संदर्भ में दोहराया जा सकता है, लेकिन अन्य डेटा प्रकारों जैसे कि कतारों के लिए, यह नहीं हो सकता। यहां तक कि अगर अन्य कार्यों के संदर्भ में पीक को दोहराया जा सकता है, तो इसे अलग से लागू करना लगभग हमेशा अधिक कुशल होता है, क्योंकि यह डेटा को संशोधित करने से बचता है, और इसे लागू करना आसान होता है, क्योंकि इसमें पॉप के समान मान लौटाना होता है ( या अनुरूप ऑपरेशन), लेकिन फिर डेटा को संशोधित नहीं करना।
स्टैक, प्राथमिकता कतार, डेक और डीईपीक्यू प्रकारों के लिए, पीक को पॉप और पुश के संदर्भ में लागू किया जा सकता है (यदि एक ही छोर पर किया जाता है)। ढेर और डेक के लिए यह आम तौर पर कुशल है, क्योंकि अधिकांश कार्यान्वयन में ये ऑपरेशन ओ (1) हैं, और स्मृति आवंटन की आवश्यकता नहीं है (क्योंकि वे डेटा के आकार को कम करते हैं) - डेक के दो सिरों में से प्रत्येक स्टैक के रूप में कार्य करता है। प्राथमिकता कतारों और डीईपीक्यू के लिए, हालांकि, डीक्यूइंग और एनक्यूइंग में अक्सर ओ (लॉग एन) समय लगता है (उदाहरण के लिए यदि द्विआधारी ढेर के रूप में लागू किया जाता है), जबकि ओ (1) पीक का प्रदर्शन (यहां आमतौर पर फाइंड-मिन या फाइंड-मैक्स कहा जाता है) प्राथमिकता कतारों की एक प्रमुख वांछित विशेषता है, और इस प्रकार तिरछी नज़र को लगभग हमेशा अलग से लागू किया जाता है।
कतार के लिए, क्योंकि एनक्यूइंग और डीक्यूइंग विपरीत छोर पर होते हैं, पीक को बुनियादी संचालन के संदर्भ में लागू नहीं किया जा सकता है, और इस प्रकार अक्सर इसे अलग से लागू किया जाता है।
एक मामला जिसमें झांकना तुच्छ नहीं है, एक स्व-संतुलन बाइनरी सर्च ट्री द्वारा कार्यान्वित एक आदेशित सूची प्रकार (यानी, तत्वों को क्रम में पहुँचा जा सकता है) में है। इस मामले में फाइंड-मिन या फाइंड-मैक्स ओ (लॉग एन) समय लेते हैं, जैसा कि किसी अन्य तत्व तक पहुंचता है। खोज-मिनट या खोज-अधिकतम टेक ओ (1) समय बनाना न्यूनतम या अधिकतम मानों को कैश करके किया जा सकता है, लेकिन यह डेटा संरचना और तत्वों को जोड़ने या हटाने के संचालन के लिए ओवरहेड जोड़ता है।
संदर्भ
- ↑ Jones: "Systematic Software Development Using VDM"
- Horowitz, Ellis: "Fundamentals of Data Structures in Pascal", Computer Science Press, 1984, p. 67