Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

डेटा स्ट्रक्चर में स्प्ले ट्रीज़ (Splay Trees)

स्प्ले ट्री (Splay Tree) को एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री (Self-balancing Binary Search Tree) के रूप में परिभाषित किया जाता है जिसमें अतिरिक्त गुण होता है कि हाल ही में एक्सेस किए गए एलिमेंट्स को फिर से एक्सेस करना त्वरित होता है। बेसिक ऑपरेशन्स जैसे सम्मिलन (Insertion), लुक-अप (Look-up) और निष्कासन (Removal) स्प्ले ट्री द्वारा O(log n) परिशोधित समय (Amortized Time) में किए जाते हैं। कई गैर-यादृच्छिक ऑपरेशन सीक्वेंस (Non-random Operation Sequences) के लिए, स्प्ले ट्रीज़ अन्य सर्च ट्रीज़ से बेहतर काम करते हैं, तब भी जब सीक्वेंस का विशिष्ट पैटर्न ज्ञात न हो। बाइनरी सर्च ट्री पर सभी सामान्य ऑपरेशन्स एक बेसिक ऑपरेशन के साथ जुड़े होते हैं, जिसे स्प्लेिंग (Splaying) कहा जाता है।

आइए मान लें कि प्रत्येक नोड a के लिए, हम एक वास्तविक संख्या key(a) स्टोर करते हैं।

किसी भी बाइनरी सर्च ट्री में किसी भी नोड a का लेफ्ट सबट्री उन आइटम्स को समाहित करता है जिनके "की" मान key(a) के मान से छोटे होते हैं और नोड a का राइट सबट्री उन आइटम्स को समाहित करता है जिनके "की" मान key(a) के मान से अधिक होते हैं।

स्प्ले ट्रीज़ में, हम पहले क्वेरी आइटम को खोजते हैं, मान लीजिए a सामान्य बाइनरी सर्च ट्रीज़ की तरह— क्वेरी आइटम की तुलना रूट में मान से करें, यदि कम है तो लेफ्ट सबट्री में पुनरावर्ती खोज करें, अन्यथा यदि अधिक है तो राइट सबट्री में पुनरावर्ती खोज करें, और यदि बराबर है तो हम हो गए। फिर, अनौपचारिक रूप से बोलते हुए, हम a के हर डिसजॉइंट जोड़े क्रमागत पूर्वजों (Disjoint Pairs of Consecutive Ancestors) को देखते हैं, मान लीजिए b = parent(a) और c = parent(b), और रोटेशन के कुछ जोड़े पूरे करते हैं। इन रोटेशन के परिणामस्वरूप, a, c के स्थान पर आ जाता है।

यदि a के विषम संख्या में उचित पूर्वज (Odd Number of Proper Ancestors) हैं, तो a का पूर्वज (जो रूट का बच्चा है), को अलग तरीके से टर्मिनल केस में निपटाया जाएगा— हम a और रूट के बीच के एज को रोटेट करते हैं। इस चरण को जिग स्टेप (Zig Step) कहा जाता है।

यदि a और b दोनों अपने संबंधित पैरेंट के लेफ्ट चाइल्ड हैं या दोनों राइट चाइल्ड हैं, तो हम पहले b और उसके पैरेंट c के बीच के एज को रोटेट करते हैं और फिर a और उसके पैरेंट b के बीच के एज को रोटेट करते हैं। इस चरण को जिग-जिग स्टेप (Zig-Zig Step) कहा जाता है।

यदि a लेफ्ट (क्रमशः राइट) चाइल्ड है और b राइट (क्रमशः लेफ्ट) चाइल्ड है, तो हम पहले a और b के बीच के एज को रोटेट करते हैं और फिर a और c के बीच, इस चरण को जिग-जैग स्टेप (Zig-Zag Step) कहा जाता है।

  1. डेटा स्ट्रक्चर में BSP ट्रीज़ डेटा स्ट्रक्चर में BSP ट्रीज़

    कंप्यूटर साइंस में, बाइनरी स्पेस पार्टीशनिंग (BSP) नामक एक विधि को हाइपरप्लेन्स (Hyperplanes) को पार्टीशन के रूप में लागू करके एक स्पेस को दो कन्वेक्स सेट्स (Convex Sets) में पुनरावर्ती रूप से उप-विभाजित (Recursively Subdividing) करने के लिए लागू किया जाता है। उप-विभाजन की यह प्रक्रिया क्षेत्र में व

  1. डेटा स्ट्रक्चर में रेंज ट्रीज़ डेटा स्ट्रक्चर में रेंज ट्रीज़

    रेंज ट्री (Range Tree) को बिंदुओं की सूची रखने के लिए एक क्रमबद्ध ट्री डेटा स्ट्रक्चर (Ordered Tree Data Structure) के रूप में परिभाषित किया जाता है। यह दिए गए रेंज के भीतर सभी बिंदुओं को कुशलतापूर्वक पुनः प्राप्त करने की अनुमति देता है, और आमतौर पर दो या अधिक आयामों में लागू किया जाता है। यह kd-ट्र

  1. डेटा स्ट्रक्चर में वर्चुअल ट्री में स्प्ले (Splay in Virtual Tree) डेटा स्ट्रक्चर में वर्चुअल ट्री में स्प्ले (Splay in Virtual Tree)

    वर्चुअल ट्री में, कुछ एज को सॉलिड (Solid) माना जाता है और कुछ को डैश्ड (Dashed)। सामान्य स्प्लेिंग (Splaying) केवल सॉलिड ट्रीज़ में की जाती है। वर्चुअल ट्री में नोड y पर स्प्ले करने के लिए, निम्न विधि लागू की जाती है। एल्गोरिदम ट्री को तीन बार देखता है, प्रत्येक पास में एक बार, और इसे बदलता है। पहल