मैं ग्राफ़ के अपेक्षाकृत संतुलित फैले हुए वृक्ष को बनाए रखने के तरीकों की तलाश कर रहा हूं, क्योंकि मैं ग्राफ़ में नए नोड्स / किनारों को जोड़ता हूं।
मेरे पास एक अप्रत्यक्ष ग्राफ है जो एकल नोड, "रूट" के रूप में शुरू होता है।
प्रत्येक चरण में, मैं ग्राफ़ में या तो एक नया नोड जोड़ता हूं और एक किनारा इसे ग्राफ़ से जोड़ता है, या बस एक नया किनारा, दो पुराने नोड्स को जोड़ता है। जैसा कि मैं ग्राफ बढ़ता हूं, मैं एक फैले हुए पेड़ को बनाए रखता हूं। अधिकांश समय, इसका मतलब यह है कि जब मैं एक नया नोड और किनारे जोड़ता हूं, तो मैं नए नोड को उस पुराने नोड के बच्चे के रूप में सेट करता हूं जो इसे जोड़ता है।
जिस क्रम में नए नोड जोड़े जाते हैं उस क्रम पर मेरा कोई नियंत्रण नहीं है, इसलिए उपरोक्त ट्री-बिल्डिंग एल्गोरिदम स्पष्ट रूप से असंतुलित पेड़ों की ओर बढ़ सकता है।
क्या किसी को ऑनलाइन हेयुरेटिक्स के बारे में पता है जो फैले हुए पेड़ को "अपेक्षाकृत संतुलित" बनाए रखेगा, जबकि पुन: वृक्षारोपण में किए गए काम की मात्रा को कम करेगा? पेड़ की संरचना पर मेरा पूरा नियंत्रण है। मैं जो नियंत्रण नहीं करता वह ग्राफ़ कनेक्टिविटी है, या जिस क्रम में नए नोड जोड़े जाते हैं।
ध्यान दें कि "संतुलित" "फैले" और "पेड़" जैसे शब्दों के लिए मानक Google प्रतिक्रियाएं बाइनरी पेड़ और बी-पेड़ लगती हैं, जिनमें से कोई भी लागू नहीं होता है। मेरे ग्राफ नोड्स में पड़ोसियों की संख्या हो सकती है, इसलिए ट्री नोड्स में किसी भी संख्या में बच्चे हो सकते हैं, बाइनरी पेड़ों की तरह 2 नहीं। बी-ट्री अपनी आसन्न सूचियों को बदलकर संतुलन बनाए रखते हैं, और मैं ग्राफ़ कनेक्टिविटी नहीं बदल सकता।