वृक्ष, द्विआधारी खोज वृक्ष, ढेर व ग्राफ निरूपण
शीर्ष, पत्तियाँ व आकृतियाँ गिनना
| राशि | सूत्र | उदाहरण |
|---|---|---|
| ऊँचाई h पर अधिकतम शीर्ष | 2h+1 − 1 | h = 3 → 15 |
| ऊँचाई h पर न्यूनतम शीर्ष | h + 1 | h = 3 → 4 (एक पथ) |
| n शीर्षों के पूर्ण वृक्ष की ऊँचाई | ⌊log₂n⌋ | n = 100 → 6 |
| पत्तियाँ बनाम दो-संतान शीर्ष | n₀ = n₂ + 1 | प्रत्येक आकृति पर लागू |
| n भिन्न कुंजियों पर भिन्न BST | कैटलन Cₙ | n = 5 → 42 |
सरणी में ढेर, तथा उसे बनाना रैखिक क्यों है
| राशि | मान | n = 100 हेतु |
|---|---|---|
| पत्तियाँ | ⌈n/2⌉ — अंतिम आधा | 50 |
| आंतरिक शीर्ष | ⌊n/2⌋ — प्रथम आधा | 50 |
| ऊँचाई | ⌊log₂n⌋ | 6 |
| अवर्गीकृत सरणी से निर्माण | O(n) | O(n log n) नहीं |
| n क्रमागत सम्मिलन | O(n log n) | भिन्न संक्रिया |
एक और ढेर-तथ्य पर्याप्त बार पूछा जाता है कि कहने योग्य है: अधिकतम-ढेर का न्यूनतम पत्ती ही होगा, क्योंकि कोई भी आंतरिक शीर्ष अपनी संतानों से बड़ा है। अतः उसे ढूँढ़ने हेतु सभी ⌈n/2⌉ पत्तियाँ देखनी पड़ती हैं — 100-अवयवी ढेर हेतु 50 तुलनाएँ — और कोई लघु-मार्ग नहीं, और यही कीमत ढेर पूर्ण क्रम के बजाय आंशिक क्रम होने की चुकाता है।
ग्राफ संचित करने के दो तरीके
| संक्रिया | आव्यूह | सूची |
|---|---|---|
| स्थान | सदा O(V²) | O(V + E) |
| कोर (u, v) है क्या? | O(1) | O(u की कोटि) |
| u के सभी पड़ोसी सूचीबद्ध करना | O(V) | O(u की कोटि) |
| कोर जोड़ना | O(1) | शीर्ष पर O(1) |
| उपयुक्त | घने ग्राफ, E ≈ V² | विरल ग्राफ, E ≪ V² |
चुनाव घनत्व से तय होता है, और संक्रमण-बिंदु सूक्ष्म नहीं है: दस लाख शीर्षों व बीस लाख कोरों वाले ग्राफ को लगभग तीस लाख सूची-प्रविष्टियाँ चाहिए और दस खरब आव्यूह-कोष्ठ चाहिए होते। इसीलिए प्रत्येक व्यावहारिक ग्राफ कलनविधि सन्निकटता सूचियों के विरुद्ध लिखी जाती है, और इसीलिए भ्रमण को O(V²) के बजाय O(V + E) कहा जाता है — परिबंध कलनविधि के विषय में जितना है उतना ही निरूपण के विषय में कथन है।
मुख्य बिंदु
- ऊँचाई की परिपाटी पहले तय करें: कोरों में गिनने पर एकल शीर्ष की ऊँचाई 0 है।
- ऊँचाई h के द्विआधारी वृक्ष में अधिकतम 2h+1 − 1 शीर्ष व न्यूनतम h + 1 होते हैं।
- प्रत्येक द्विआधारी वृक्ष में n₀ = n₂ + 1 — पत्तियाँ दो-संतान शीर्षों से एक अधिक, आकृति चाहे कोई।
- n भिन्न कुंजियों पर भिन्न BST n-वीं कैटलन संख्या है: n = 3, 4, 5 हेतु 5, 14, 42।
- पूर्वक्रम व मध्यक्रम वृक्ष तय करते हैं; पूर्वक्रम व पश्चक्रम नहीं, सिवाय पूर्ण द्विआधारी वृक्ष के।
- n के सरणी-ढेर में पत्तियाँ अंतिम ⌈n/2⌉ हैं और आंतरिक शीर्ष प्रथम ⌊n/2⌋।
- Heapify, O(n) है; n अवयव एक-एक सम्मिलित करना O(n log n) — दो भिन्न संक्रियाएँ।
- अधिकतम-ढेर का न्यूनतम पत्ती है, अतः उसे ढूँढ़ने की लागत ⌈n/2⌉ तुलनाएँ हैं।
- आव्यूह: O(V²) स्थान, O(1) कोर-परीक्षण। सूची: O(V + E) स्थान, O(कोटि) कोर-परीक्षण।
अभ्यास प्रश्न (8)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
5 भिन्न कुंजियों से कितने भिन्न द्विआधारी खोज वृक्ष बनाए जा सकते हैं?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 42
गणना पाँचवीं कैटलन संख्या है, 42। पुनरावृत्ति कारण है: किसी भी कुंजी को मूल चुनें, और यदि i कुंजियाँ उसके बाएँ पड़ें तो Cᵢ × C₄₋ᵢ वृक्ष निकलते हैं, मूल के सभी पाँच चुनावों पर योग। अनुक्रम 1, 2, 5, 14, 42, 132 चलता है। ध्यान दें कि यह 5-शीर्षी द्विआधारी वृक्ष की भिन्न आकृतियाँ भी गिनता है — वही 42 — क्योंकि आकृति तय होने पर BST गुण तय कर देता है कि कौन-सी कुंजी कहाँ जाएगी, कोई स्वतंत्रता शेष नहीं। अंकित द्विआधारी वृक्षों की गणना भिन्न प्रश्न है: 42 × 5! = 5040, और "अंकित" कहता प्रश्न उसे ही पूछ रहा है।किसी द्विआधारी वृक्ष में 20 पत्तियाँ हैं। उसके कितने शीर्षों की ठीक दो संतानें हैं?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 19
प्रत्येक द्विआधारी वृक्ष में n₀ = n₂ + 1, अतः n₂ = 20 − 1 = 19। संबंध कोरों को दो बार गिनने से आता है: n शीर्षों के वृक्ष में n − 1 कोर होते हैं, और कोरों का योग n₁ + 2n₂ भी है, तथा n हटाने पर n₁ के लुप्त होने सहित परिणाम मिलता है। वही लोप कारण है कि उत्तर को आकृति या एक-संतान शीर्षों की संख्या की कोई सूचना नहीं चाहिए — विश्वास योग्य तथ्य, क्योंकि प्रश्न जान-बूझकर दोनों रोक लेता है। कुल शीर्ष-संख्या तय नहीं होती: कोई भी n₁ ≥ 0, 20 पत्तियों के अनुरूप है।मानक नीचे-से-ऊपर heapify से n अवयवों की अवर्गीकृत सरणी से द्विआधारी ढेर बनाने में लगता है:
उत्तर देखें
उत्तर: B — O(n)
O(n)। शिथिल विश्लेषण n शीर्षों को प्रति छनन O(log n) से गुणा कर O(n log n) तक पहुँचता है, पर वह बहुत अधिक गिनता है: आधे शीर्ष पत्तियाँ हैं और कुछ नहीं छनते, चौथाई अधिकतम एक स्तर, आठवाँ भाग अधिकतम दो। स्तरों पर (n/2k+1) × k जोड़ने पर वह लगभग 2n पर अभिसरित होता है। विकल्प A भिन्न संक्रिया का सही उत्तर है — n अवयवों को एक-एक सम्मिलित करना, जहाँ प्रत्येक नया अवयव पत्ती से ऊपर छनता है और गहरे स्थान सामान्य स्थिति हैं, जो वास्तविक O(n log n) देता है। दोनों ढेर बनाते हैं और log गुणक से भिन्न हैं, अतः प्रश्न के शब्द उत्तर तय करते हैं।एक अधिकतम-ढेर सरणी में 100 अवयव रखता है। निकृष्टतम स्थिति में न्यूनतम ढूँढ़ने हेतु कितने अवयव देखने पड़ेंगे?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 50
अधिकतम-ढेर का न्यूनतम पत्ती ही होगा, क्योंकि प्रत्येक आंतरिक शीर्ष अपनी संतानों से बड़ा है। n के सरणी-ढेर में पत्तियाँ अंतिम ⌈n/2⌉ स्थान हैं, अतः n = 100 हेतु उनमें 50 हैं और सभी की तुलना करनी होगी — पत्तियों के बीच दोहन योग्य कोई क्रम नहीं। यह ढेर के आंशिक क्रम होने की लागत है: वह अधिकतम तक O(1) पहुँच देता है और दूसरे सिरे पर कुछ नहीं, इसीलिए दोनों सिरे चाहती संरचना दो ढेर या पूर्णतः भिन्न अभिकल्प प्रयोग करती है। 1 या log n उत्तर देना ढेर को वर्गीकृत मानता है, जो वह नहीं है।भ्रमणों का कौन-सा युग्म द्विआधारी वृक्ष को सदा अद्वितीय रूप से तय करता है?
उत्तर देखें
उत्तर: B — पूर्वक्रम व मध्यक्रम
पूर्वक्रम व मध्यक्रम। पूर्वक्रम मूल बताता है; मध्यक्रम बताता है कि उसके बाएँ कितनी कुंजियाँ हैं, जो शेष अनुक्रम को दो उपवृक्षों में बाँटता है, और तर्क पुनरावर्ती होता है। मध्यक्रम ही वह एकमात्र भ्रमण है जो वह विभाजन-सूचना वहन करता है, इसीलिए प्रत्येक कार्यशील युग्म में वह सम्मिलित है — पश्चक्रम व मध्यक्रम भी काम करते हैं। पूर्वक्रम व पश्चक्रम नहीं करते: केवल बाईं संतान वाला मूल तथा वही मूल केवल दाईं संतान सहित दोनों में समान अनुक्रम देते हैं, अतः दो भिन्न वृक्ष उन्हें साझा करते हैं। अपवाद पूर्ण द्विआधारी वृक्ष है, जहाँ किसी शीर्ष की ठीक एक संतान नहीं होती और अस्पष्टता उत्पन्न ही नहीं हो सकती — "पूर्ण" शब्द जोड़ता प्रश्न उत्तर को A कर देता है।सन्निकटता आव्यूह की तुलना में सन्निकटता सूची के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक सही हो सकते हैं।)
उत्तर देखें
उत्तर: A — वह O(V²) के बजाय O(V + E) स्थान प्रयोग करती है; B — कोई विशिष्ट कोर विद्यमान है या नहीं यह जाँचना धीमा है; C — विरल ग्राफ हेतु किसी शीर्ष के पड़ोसी सूचीबद्ध करना तेज़ है
A, B व C, जो मिलकर सम्पूर्ण सौदा हैं। सूची केवल विद्यमान कोर संचित करती है, अतः स्थान O(V + E) है (A) और एक शीर्ष के पड़ोसियों पर चलने की लागत V कोष्ठों की पूरी पंक्ति देखने के बजाय O(कोटि) है (C)। कीमत यह है कि "(u, v) कोर है क्या?" का उत्तर देने का अर्थ u की सूची खोजना है, O(कोटि), जहाँ आव्यूह O(1) में उत्तर देता है (B)। D असत्य है — दिष्ट ग्राफ सूची में यदि कुछ हो तो अधिक स्वाभाविक है, क्योंकि कोर केवल एक बार, केवल u की सूची में संचित होता है। उनमें चुनाव घनत्व है: दस लाख शीर्षों व बीस लाख कोरों वाला ग्राफ आव्यूह के रूप में अनिरूपणीय और सूची के रूप में साधारण है।ऊँचाई कोरों में गिनने पर, ऊँचाई 4 के द्विआधारी वृक्ष में शीर्षों की अधिकतम संख्या है:
उत्तर देखें
उत्तर: B — 31
स्तर 0 से 4 अधिकतम 1, 2, 4, 8 व 16 शीर्ष रखते हैं, कुल 2⁵ − 1 = 31। सूत्र 2h+1 − 1 है, ऊँचाई कोरों में। विकल्प A ऊँचाई 3 का उत्तर है, और वही उसी सूत्र से दूसरी परिपाटी में मिलता है, जहाँ ऊँचाई शीर्ष गिनती है और एकल शीर्ष की ऊँचाई 1 होती है — ठीक इसीलिए प्रश्न का उत्तर देने से पूर्व परिपाटी बतानी पड़ती है। विकल्प D, −1 छोड़ देता है, यह भूलकर कि 16 का पूरा स्तर पहले से विद्यमान 15 के ऊपर बैठता है।निकृष्टतम स्थिति में n शीर्षों के द्विआधारी खोज वृक्ष में खोज लेती है:
उत्तर देखें
उत्तर: B — O(n), क्योंकि वृक्ष पथ में अपह्रासित हो सकता है
BST खोज की लागत O(h) है, और h, ⌊log₂n⌋ से n − 1 तक कुछ भी हो सकता है: कुंजियाँ वर्गीकृत क्रम में सम्मिलित करने पर वह वृक्ष बनता है जो एक लंबा पथ है, और उसमें खोज संकेतक-पीछा उपरिव्यय सहित रैखिक अवलोकन है। अतः निकृष्टतम स्थिति O(n) है। विकल्प A संतुलित स्थिति है और संरचना प्रायः उसी पर बेची जाती है, इसीलिए भेद महत्व रखता है — और ठीक वही अंतर है जिसे बंद करने हेतु AVL व लाल-काले वृक्ष हैं, प्रत्येक सम्मिलन पर पुनर्संतुलन काम की कीमत पर O(log n) ऊँचाई लागू करके। "संतुलित" या "AVL" कहता प्रश्न O(log n) पूछ रहा है; साधारण BST उसका अधिकारी नहीं।