मैं एक डबल कनेक्टेड एज लिस्ट का निर्माण कैसे करूँ जो लाइन सेगमेंट का एक सेट है?


10

किसी दिए गए प्लानर ग्राफ के लिए विमान में एम्बेडेड, लाइन क्षेत्रों के सेट द्वारा परिभाषित , प्रत्येक खंड अपने अंतिम बिंदु का प्रतिनिधित्व करती है । प्लानर उपखंड के लिए एक डीसीईएल डेटा संरचना का निर्माण, एक एल्गोरिथ्म का वर्णन करें, यह साबित करें कि यह शुद्धता है और जटिलता दिखाती है।G(V,E)E={e1,...,em}ei{Li,Ri}

DCEL डेटा संरचना के इस विवरण के अनुसार , DCEL की विभिन्न वस्तुओं (यानी कोने, किनारों और चेहरों) के बीच कई संबंध हैं। तो, एक DCEL का निर्माण और रखरखाव करना कठिन प्रतीत होता है।

क्या आप किसी भी कुशल एल्गोरिथ्म के बारे में जानते हैं जिसका उपयोग DCEL डेटा संरचना के निर्माण के लिए किया जा सकता है?

जवाबों:


8

डेटा संरचना ( विकिपीडिया लेख के अनुरूप कन्वेंशन ):

struct half_edge;

struct vertex {
    struct half_edge *rep;  /* rep->tail == this */
};

struct face {
    struct half_edge *rep;  /* rep->left == this */
};

struct half_edge {
    struct half_edge *prev;  /* prev->next == this */
    struct half_edge *next;  /* next->prev == this */
    struct half_edge *twin;  /* twin->twin == this */
    struct vertex *tail;     /* twin->next->tail == tail &&
                                prev->twin->tail == tail */
    struct face *left;       /* prev->left == left && next->left == left */
};

कलन विधि

  1. प्रत्येक समापन बिंदु के लिए, एक शीर्ष बनाएँ ।

  2. प्रत्येक इनपुट सेगमेंट के लिए, दो आधे-किनारे बनाएं , और उनकी पूंछ के कोने और जुड़वाँ असाइन करें।

  3. प्रत्येक समापन बिंदु के लिए, आधे किनारों को छाँटें जिनकी पूंछ का शीर्ष घड़ी की दिशा में वह समापन बिंदु है।

  4. e1, e2घड़ी की दिशा में आधे किनारों के प्रत्येक जोड़े के लिए, असाइन करें e1->twin->next = e2और e2->prev = e1->twin

  5. आधे किनारों में से एक को चुनें और इसे समापन बिंदु के प्रतिनिधि के रूप में असाइन करें। (डीजेनरेट केस: यदि eसॉर्ट की गई सूची में केवल एक आधा किनारा है, set e->twin->next = eऔर e->prev = e->twin)। अगले बिंदु आधे किनारों पर एक क्रमपरिवर्तन हैं।

  6. हर चक्र के लिए, चेहरे की संरचना को आवंटित और असाइन करें ।


2
मूलतः बहीखाता पद्धति का एक समूह। शायद यही कारण है कि पाठ्यपुस्तक के लेखक विस्तार से जाने के लिए अनिच्छुक हैं।
pshufb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.