Estoy en el proceso de desarrollar un módulo de enrutamiento y gestión de señal para un sistema audiovisual integrado y lo estoy diseñando con la intención de ser lo más flexible posible en diferentes redes de distribución de señal. La intención del módulo es manejar el enrutamiento a través de varios conmutadores de matriz apilados 1 y manejar la conversión de formato necesaria.
La mejor solución que he explorado en este punto es mapear la red en un gráfico con vértices discretos para cada tipo de señal compatible con los conmutadores y que luego se unen a través de nodos que representan los procesadores de video que manejan la conversión de formato.

Los colores representan formatos de señal. Los nodos redondos son conmutadores, fuentes o sumideros. Los nodos cuadrados son procesadores de video que realizan conversión de formato.
A partir de ahí, puedo usar una implementación del algoritmo de Dijkstra para identificar la ruta que debe formarse para que la entrada X salga Y. Esto debería permitir que se pasen los datos sobre la configuración de entrada / salida de todos los conmutadores y procesadores. y el módulo se adapta en consecuencia.
¿Es esta una solución apropiada o hay un enfoque alternativo que valga la pena investigar?
1 también conocido como 'interruptor de barra cruzada', un enrutador de video con M entradas x N salidas que admite conexiones de uno a muchos. Cada dispositivo físico puede manejar múltiples formatos de señal y puede o no ser capaz de realizar cualquier conversión de formato.
editar: Como mencionó Péter Török, el gráfico no será necesariamente un árbol, el diagrama es un ejemplo simple para ilustrar la idea. Cuando se implementa en el "mundo real", pueden existir múltiples caminos que ofrecen diferentes niveles de definición (DVI> VGA> componente> compuesto) que estaba planeando representar con ponderación de borde.
editar 2: Aquí hay un ejemplo un poco más completo con directividad indicada y que muestra una red que consta de dos tipos de señal. El ejemplo inicial se ha modificado ligeramente para que cada entrada y salida en un dispositivo se defina como un nodo discreto, ya que esto proporcionará los datos necesarios para controlar el enrutamiento de la matriz / selección de entrada.
