क्या दिज्क्स्ट्रा का एल्गोरिथ्म इस सिग्नल रूटिंग समस्या का एक उपयुक्त समाधान है?


12

मैं एक एकीकृत दृश्य-श्रव्य प्रणाली के लिए एक सिग्नल प्रबंधन और राउटिंग मॉड्यूल विकसित करने की प्रक्रिया में हूं और विभिन्न सिग्नल वितरण नेटवर्क में जितना संभव हो उतना लचीला होने के इरादे से इसे डिजाइन कर रहा हूं। मॉड्यूल का आशय ढेर किए गए मैट्रिक्स स्विचर 1 की एक संख्या में रूटिंग को संभालना और आवश्यक प्रारूप रूपांतरण को संभालना है।

इस बिंदु पर मैंने जो सबसे अच्छा समाधान खोजा है, वह है स्विचर द्वारा समर्थित प्रत्येक सिग्नल प्रकार के लिए असतत कोने के साथ एक ग्राफ के लिए नेटवर्क को मैप करना और फिर प्रारूप रूपांतरण को संभालने वाले वीडियो प्रोसेसर का प्रतिनिधित्व करने वाले नोड्स के माध्यम से जुड़ना।

उदाहरण ग्राफ

रंग संकेत स्वरूपों का प्रतिनिधित्व करते हैं। राउंड नोड्स या तो स्विचर, स्रोत या सिंक हैं। स्क्वायर नोड्स वीडियो प्रोसेसर हैं जो प्रारूप रूपांतरण करते हैं।

वहां से मैं आउटपुट को इनपुट X प्राप्त करने के लिए बनने वाले पथ की पहचान करने के लिए दिज्क्स्ट्रा के एल्गोरिथ्म के कार्यान्वयन का उपयोग कर सकता हूं । यह डेटा को सभी स्विचर और प्रोसेसर के इनपुट / आउटपुट कॉन्फ़िगरेशन के बारे में अनुमति देनी चाहिए। और मॉड्यूल तदनुसार अनुकूलित करते हैं।

क्या यह एक उचित समाधान है या क्या कोई वैकल्पिक दृष्टिकोण है जो जांच के लायक हो सकता है?

1 उर्फ 'क्रॉसबार स्विच', एम इनपुट x एन आउटपुट के साथ एक वीडियो राउटर है जो एक से कई कनेक्शन का समर्थन करता है। प्रत्येक फ़ेसिकल डिवाइस कई सिग्नल प्रारूपों को संभाल सकता है और किसी भी प्रारूप रूपांतरण को करने में सक्षम हो सकता है या नहीं भी हो सकता है।

संपादित करें: जैसा कि Péter Török ने उल्लेख किया है, ग्राफ जरूरी नहीं कि एक पेड़ होगा, आरेख विचार को चित्रित करने के लिए एक सरल उदाहरण है। जब 'वास्तविक दुनिया' में लागू किया जाता है तो कई रास्ते मौजूद हो सकते हैं जो परिभाषा के विभिन्न स्तरों की पेशकश करते हैं (DVI> VGA> घटक> समग्र) जिसे मैं बढ़त भार के साथ प्रतिनिधित्व करने की योजना बना रहा था।

एडिट 2: यहां एक थोड़ा और व्यापक उदाहरण दिया गया है, जिसमें दो सिग्नल प्रकारों से युक्त एक नेटवर्क दिखाया गया है। प्रारंभिक उदाहरण को थोड़ा संशोधित किया गया है ताकि डिवाइस पर प्रत्येक इनपुट और आउटपुट को असतत नोड के रूप में परिभाषित किया जाए क्योंकि यह मैट्रिक्स रूटिंग / इनपुट चयन को नियंत्रित करने के लिए आवश्यक डेटा प्रदान करेगा। उदाहरण 2 - दो सिग्नल प्रकार, स्टैक्ड स्विचर


क्या आप धारियों को गुणा करने का इरादा कर रहे हैं?
पीटर टेलर

Additive। यह होने वाला सिद्धांत इसे इस तरह परिभाषित करने की अनुमति देगा कि सिग्नल पथ की परिभाषा जितनी अधिक होगी, भार उतना ही कम होगा। वे स्वरूप जो नोड्स को जोड़ते हैं जो प्रारूप रूपांतरण करते हैं, फिर उन्हें उन किनारों से अधिक भार दिया जाएगा जो गैर-रूपांतरण नोड्स को जोड़ते हैं। यदि संभव हो तो यह सिग्नल को मूल स्वरूप में रूट कर देगा, जब आवश्यक हो तो केवल प्रारूप रूपांतरण (और संबंधित सिग्नल गिरावट और उपकरण उपयोग) को शामिल करना।
किम बर्गेस

1
@PeterTaylor: यदि वे गुणक होते तो क्या यह मायने रखता है? योजक के रूप में लगाने से उनका योगात्मक के समान सटीक शब्दार्थ होता है (बशर्ते वे सकारात्मक हों)। या इसके पीछे कुछ और जटिल है?
इसके बाद

@herby, अच्छी बात है, उस के बारे में सोचा नहीं था। शर्म से सिर लटक जाता है
पीटर टेलर

जवाबों:


4

यह एक पेड़ है, दिक्जस्त्र O ( n ^ 2 ) ओवरकिल है। तुच्छ ओ ( n ) चौड़ाई-पहली खोज पर्याप्त है।

संपादित करें: कम से कम दो डिग्री के साथ किसी भी नोड में बीएफएस शुरू करें।

EDIT2: चूंकि ग्राफ को पेड़ होने की गारंटी नहीं है, दिज्क्स्त्र का उपयोग करें, यदि आप थोड़ा अनुकूलन करना चाहते हैं, तो आप पहले ग्राफ को डिग्री एक के सभी छोरों को "पट्टी" कर सकते हैं (उनके लिए, पथ तुच्छ है), उन सहित अपने पूर्व पड़ोसियों को छीनने के कारण डिग्री हासिल करने के लिए ऐसा होता है, और बाकी हिस्सों पर दीक्जस्त्र करते हैं (जो वास्तव में "गैर-पेड़" हिस्सा है)।

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


2
मेरा मानना ​​है कि ऊपर प्रदर्शित ग्राफ एक सरल (ified) उदाहरण है और वास्तविक जीवन में अक्सर दो नोड्स (प्रारूप) के बीच कई वैकल्पिक रास्ते हो सकते हैं, यानी आप हमेशा एक पेड़ होने वाले ग्राफ पर भरोसा नहीं कर सकते हैं।
Péter Török

उपयुक्त रूप से लागू किया गया, दिज्क्स्ट्रा का एल्गोरिथ्म O ( n ) होगा, हालांकि अधिक जटिल और अभी भी ओवरकिल होगा।
पीटर टेलर

@ PéterTörök: उस मामले में, हाँ। केवल पूछने वाला निश्चित रूप से जानता है। लेकिन जब यह एक पेड़ होता है, तो बीएफएस पर्याप्त (और मृत सरल) होता है।
herby

@PeterTaylor: दिलचस्प। किसी भी स्रोत, कृपया?
हर्बी

@ PéterTörök सही है। संपादित प्रश्न देखें।
किम बर्गेस

2

आप प्रश्न में ग्राफ की खोज के लिए ए * (दिज्क्स्ट्रा के एल्गोरिथ्म का अधिक सामान्य रूप) का उपयोग करने में सक्षम हो सकते हैं। आप अपनी टिप्पणी में भारों की लागतों का उल्लेख करते हैं:

Additive। यह होने वाला सिद्धांत इसे इस तरह परिभाषित करने की अनुमति देगा कि सिग्नल पथ की परिभाषा जितनी अधिक होगी, भार उतना ही कम होगा। वे स्वरूप जो नोड्स को जोड़ते हैं जो प्रारूप रूपांतरण करते हैं, फिर उन्हें उन किनारों से अधिक भार दिया जाएगा जो गैर-रूपांतरण नोड्स को जोड़ते हैं। यदि संभव हो तो यह सिग्नल को मूल स्वरूप में बदल देगा, जब आवश्यक हो तो केवल प्रारूप रूपांतरण (और संबंधित सिग्नल गिरावट और उपकरण उपयोग) को शामिल करना

यदि मैं इसे सही ढंग से समझता हूं, तो आप शुरू से लेकर लक्ष्य तक के सबसे कम लागत वाले पथ को खोजना चाहते हैं। यदि आप प्रत्येक नोड को एक वास्तविक लागत और लक्ष्य के लिए एक अनुमान (हेयुरिस्टिक) दोनों प्रदान करते हैं (जो स्वीकार्य और सुसंगत दोनों है), तो A * को एक इष्टतम समाधान प्रदान करने की गारंटी है। यह ओवरकिल हो सकता है, हालांकि मैं आपकी समस्या को अच्छी तरह से समझता हूं।


+1: साथ ही, IIRC, हेयुरिस्टिक को हमेशा एक लागत का अनुमान लगाना होता है जो एक इष्टतम पथ की गारंटी देने के लिए वास्तविक लागत से भी बदतर है। सबसे खराब स्थिति में, यदि आप हेयुरिस्टिक अधिकार प्राप्त नहीं कर सकते हैं, तो हेयुरिस्टिक से 0 वापस लौटाएं और आपको डाइजेक्स्ट्रा का एल्गोरिथ्म मिल गया है।
स्टीवन एवर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.