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