อัลกอริทึมของ Dijkstra เป็นทางออกที่เหมาะสมสำหรับปัญหาการกำหนดเส้นทางสัญญาณนี้หรือไม่?


12

ฉันอยู่ในกระบวนการพัฒนาการจัดการสัญญาณและโมดูลการกำหนดเส้นทางสำหรับระบบภาพและเสียงแบบบูรณาการและกำลังออกแบบด้วยความตั้งใจที่จะยืดหยุ่นได้มากที่สุดในเครือข่ายการกระจายสัญญาณที่แตกต่างกัน จุดประสงค์ของโมดูลคือการจัดการการจัดเส้นทางข้ามสวิตช์เมทริกซ์แบบซ้อนจำนวน1และจัดการการแปลงรูปแบบที่จำเป็น

ทางออกที่ดีที่สุดที่ฉันได้สำรวจ ณ จุดนี้คือการแมปเครือข่ายกับกราฟโดยมีจุดยอดแยกสำหรับแต่ละประเภทสัญญาณที่สนับสนุนโดยสวิตช์และจากนั้นจะเชื่อมต่อผ่านโหนดที่เป็นตัวแทนของตัวประมวลผลวิดีโอที่จัดการการแปลงรูปแบบ

กราฟตัวอย่าง

สีแสดงถึงรูปแบบสัญญาณ โหนดรอบเป็นสวิตช์แหล่งหรืออ่างล้างจาน Square nodes เป็นตัวประมวลผลวิดีโอซึ่งทำการแปลงรูปแบบ

จากนั้นฉันสามารถใช้การดำเนินการตามอัลกอริธึมของ Dijkstraเพื่อระบุเส้นทางที่จะต้องเกิดขึ้นเพื่อรับอินพุต X ไปยังเอาต์พุต Y ซึ่งควรอนุญาตให้มีข้อมูลเกี่ยวกับการกำหนดค่าอินพุต / เอาต์พุตของสวิตช์และโปรเซสเซอร์ทั้งหมด และโมดูลปรับตาม

นี่เป็นวิธีแก้ปัญหาที่เหมาะสมหรือมีแนวทางอื่นที่อาจคุ้มค่าในการตรวจสอบหรือไม่?

1 aka 'crossbar switch' ซึ่งเป็นเราเตอร์วิดีโอที่มีเอาต์พุต M อินพุต x N ซึ่งรองรับการเชื่อมต่อแบบหนึ่งต่อหลายคน อุปกรณ์ phsyical แต่ละเครื่องอาจรองรับสัญญาณได้หลายรูปแบบและอาจหรือไม่สามารถทำการแปลงรูปแบบใด ๆ

แก้ไข:ดังกล่าวโดยPéterTörökกราฟไม่จำเป็นต้องเป็นต้นไม้แผนภาพเป็นตัวอย่างง่าย ๆ เพื่อแสดงความคิด เมื่อนำไปใช้ในหลายเส้นทาง 'โลกแห่งความจริง' อาจมีอยู่ซึ่งเสนอระดับความหมายที่แตกต่างกัน (DVI> VGA> องค์ประกอบ> คอมโพสิต) ซึ่งฉันวางแผนที่จะนำเสนอด้วยน้ำหนักขอบ

แก้ไข 2:นี่คือตัวอย่างที่ครอบคลุมมากขึ้นเล็กน้อยโดยมีการระบุทิศทางและการแสดงเครือข่ายที่ประกอบด้วยสัญญาณสองประเภท ตัวอย่างเริ่มต้นได้รับการแก้ไขเล็กน้อยเพื่อให้แต่ละอินพุตและเอาต์พุตบนอุปกรณ์ถูกกำหนดเป็นโหนดแบบไม่ต่อเนื่องเนื่องจากจะให้ข้อมูลที่จำเป็นสำหรับการควบคุมการเลือกเส้นทาง / อินพุตเมทริกซ์ ตัวอย่างที่ 2 - สองประเภทสัญญาณสวิตช์ซ้อนกัน


คุณตั้งใจจะให้น้ำหนักที่ขอบมากเกินไปหรือไม่?
Peter Taylor

สารเติมแต่ง ทฤษฏีนี้จะอนุญาตให้มีการนิยามเช่นนั้นยิ่งคำจำกัดความของเส้นทางสัญญาณสูงเท่าใดน้ำหนักก็จะยิ่งต่ำลง ขอบที่เชื่อมต่อโหนดที่ดำเนินการแปลงรูปแบบจะได้รับน้ำหนักที่สูงกว่าที่กำหนดให้กับขอบซึ่งเชื่อมต่อโหนดที่ไม่ได้แปลง วิธีนี้จะกำหนดเส้นทางสัญญาณในรูปแบบดั้งเดิมหากเป็นไปได้เกี่ยวข้องกับการแปลงรูปแบบเท่านั้น (และการย่อยสลายสัญญาณที่เกี่ยวข้องและการใช้อุปกรณ์) เมื่อจำเป็น
Kim Burgess

1
@PeterTaylor: มันจะสำคัญไหมถ้าพวกมันทวีคูณ? พวกเขามีความหมายเช่นเดียวกับสารเติมแต่ง (หากพวกเขาเป็นบวก) โดยใช้ลอการิทึม หรือมันเป็นอะไรที่ซับซ้อนกว่าข้างหลังเหรอ?
herby

@herby จุดดีไม่ได้คิดอย่างนั้น แขวนหัวอย่างน่าละอาย
Peter Taylor

คำตอบ:


4

นี่คือต้นไม้ Dijkstra คือ O ( n ^ 2 ) overkill O ( n ) การค้นหาแบบกว้างแรก ๆ ก็เพียงพอแล้ว

แก้ไข: เริ่ม BFS ในโหนดใด ๆ ที่มีระดับอย่างน้อยสอง

แก้ไข 2: เนื่องจากกราฟไม่ได้รับประกันว่าจะเป็นต้นไม้ให้ใช้ Dijkstra หากคุณต้องการเพิ่มประสิทธิภาพเล็ก ๆ น้อย ๆ คุณสามารถ "ตัด" กราฟที่จุดยอดทั้งหมดของระดับที่หนึ่ง (สำหรับพวกเขาเส้นทางนั้นเล็กน้อย) ที่เกิดขึ้นเพื่อรับปริญญาหนึ่งเนื่องจากการลอกอดีตเพื่อนบ้านของพวกเขาและทำ Dijkstra ในส่วนที่เหลือ (ซึ่งเป็นส่วนที่ "ไม่ใช่ต้นไม้")

นอกจากนี้ฉันจะบอกว่าคุณต้องการเส้นทางจากทุกโหนดถึงกันใช่มั้ย อัลกอริทึมของ Dijsktra ทำเส้นทางจากที่หนึ่งไปยังที่อื่น ๆ ทั้งหมดเท่านั้น อาจจะทำอัลกอริทึม Floyd-Warshall ในส่วนที่เหลือปล้น แน่นอนว่าถ้าโทโพโลยีนั้นมีความเคลื่อนไหวมากมันจะดีที่สุดที่จะทำ (การปอกและ) Dijkstra, เฉพาะกิจ


2
ฉันเชื่อว่ากราฟที่แสดงด้านบนเป็นตัวอย่างที่ง่าย (ified) และในชีวิตจริงมักจะมีทางเลือกหลายเส้นทางระหว่างสองโหนด (รูปแบบ) นั่นคือคุณอาจไม่ได้นับบนกราฟเสมอว่าเป็นต้นไม้
PéterTörök

ดำเนินการอย่างเหมาะสมอัลกอริทึมของ Dijkstra จะเป็น O ( n ) เช่นกันแม้ว่าจะซับซ้อนและยังเกินขนาด
Peter Taylor

@ PéterTörök: ในกรณีนั้นใช่ มีเพียงผู้ถามเท่านั้นที่รู้แน่ แต่เมื่อมันเป็นต้นไม้ bfs ก็เพียงพอแล้ว (และตายง่าย)
herby

@PeterTaylor: น่าสนใจ แหล่งใดก็ได้โปรด
herby

@ PéterTörökถูกต้อง ดูคำถามที่แก้ไขแล้ว
Kim Burgess

2

คุณอาจใช้ A * (อัลกอริทึมของ Dijkstra ที่เป็นรูปแบบทั่วไปมากขึ้น) สำหรับการค้นหากราฟที่เป็นปัญหา คุณพูดถึงต้นทุนของน้ำหนักในความคิดเห็นของคุณ:

สารเติมแต่ง ทฤษฏีนี้จะอนุญาตให้มีการนิยามเช่นนั้นยิ่งคำจำกัดความของเส้นทางสัญญาณสูงเท่าใดน้ำหนักก็จะยิ่งต่ำลง ขอบที่เชื่อมต่อโหนดที่ดำเนินการแปลงรูปแบบจะได้รับน้ำหนักที่สูงกว่าที่กำหนดให้กับขอบซึ่งเชื่อมต่อโหนดที่ไม่ได้แปลง สิ่งนี้จะกำหนดเส้นทางสัญญาณในรูปแบบดั้งเดิมหากเป็นไปได้เกี่ยวข้องกับการแปลงรูปแบบเท่านั้น (และการย่อยสลายสัญญาณที่เกี่ยวข้องและการใช้อุปกรณ์) เมื่อจำเป็น

หากฉันเข้าใจอย่างถูกต้องคุณต้องการค้นหาเส้นทางพา ธ ต้นทุนต่ำสุดตั้งแต่ต้นจนถึงเป้าหมาย หากคุณให้แต่ละโหนดทั้งต้นทุนจริงและประมาณการ (ฮิวริสติก) ไปยังเป้าหมาย (นั่นคือทั้งที่ยอมรับได้และสอดคล้องกัน) ดังนั้น A * จึงรับประกันว่าจะให้ทางออกที่ดีที่สุด มันอาจจะเกินกำลัง แต่ขึ้นอยู่กับว่าฉันเข้าใจปัญหาของคุณดีแค่ไหน


+1: เช่นกัน IIRC ฮิวริสติกจะต้องประเมินราคาที่แย่กว่าต้นทุนจริงเสมอเพื่อรับประกันเส้นทางที่ดีที่สุด ในกรณีที่เลวร้ายที่สุดหากคุณไม่สามารถรับฮิวริสติกได้เพียงแค่คืนค่า 0 จากฮิวริสติกและคุณมีอัลกอริทึมของ dijkstra
Steven Evers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.