Sto sviluppando un modulo di gestione e instradamento del segnale per un sistema audiovisivo integrato e lo sto progettando con l'intento di essere il più flessibile possibile su diverse reti di distribuzione del segnale. L'intento del modulo è gestire il routing attraverso un numero di switcher di matrici impilate 1 e gestire la conversione di formato necessaria.
La migliore soluzione che ho esplorato a questo punto è mappare la rete su un grafico con vertici discreti per ciascun tipo di segnale supportato dagli switcher e che vengono poi uniti tramite nodi che rappresentano i processori video che gestiscono la conversione del formato.
I colori rappresentano i formati del segnale. I nodi rotondi sono switcher, origini o sink. I nodi quadrati sono processori video che eseguono la conversione del formato.
Da lì posso usare un'implementazione dell'algoritmo di Dijkstra per identificare il percorso che deve essere formato per ottenere l'input X all'output Y. Ciò dovrebbe consentire il passaggio dei dati sulla configurazione input / output di tutti gli switcher e processori e il modulo si adatta di conseguenza.
È una soluzione appropriata o esiste un approccio alternativo che potrebbe valere la pena di indagare?
1 aka "interruttore a barra", un router video con ingresso M x uscite N che supporta connessioni da uno a molti. Ogni dispositivo fisico può gestire più formati di segnale e può o meno essere in grado di eseguire qualsiasi conversione di formato.
modifica: Come menzionato da Péter Török, il grafico non sarà necessariamente un albero, il diagramma è un semplice esempio per illustrare l'idea. Se implementati nel "mondo reale", possono esistere più percorsi che offrono diversi livelli di definizione (DVI> VGA> componente> composito) che stavo pianificando di rappresentare con la ponderazione dei bordi.
modifica 2: ecco un esempio leggermente più completo con la direttività indicata e che mostra una rete composta da due tipi di segnale. L'esempio iniziale è stato leggermente modificato in modo tale che ogni input e output su un dispositivo sia definito come un nodo discreto poiché fornirà i dati richiesti per controllare il routing / selezione degli input della matrice.