Я нахожусь в процессе разработки модуля управления сигналами и маршрутизации для интегрированной аудиовизуальной системы и проектирую его с целью обеспечения максимальной гибкости в различных сетях распределения сигналов. Целью модуля является обработка маршрутизации через несколько стековых матричных коммутаторов 1 и обработка необходимого преобразования формата.
Лучшее решение, которое я исследовал в этой точке, - это отобразить сеть на графике с дискретными вершинами для каждого типа сигнала, поддерживаемого коммутаторами, и затем соединить через узлы, представляющие видеопроцессоры, которые обрабатывают преобразование формата.
Цвета представляют форматы сигналов. Круглые узлы являются либо переключателями, источниками или приемниками. Квадратные узлы - это видеопроцессоры, которые выполняют преобразование формата.
Оттуда я могу использовать реализацию алгоритма Дейкстры, чтобы определить путь, который должен быть сформирован, чтобы получить вход X для вывода Y. Это должно позволить передавать данные о конфигурации ввода / вывода всех коммутаторов и процессоров в и модуль адаптируется соответственно.
Это подходящее решение или есть альтернативный подход, который стоит изучить?
1 aka 'crossbar switch', видеомаршрутизатор с M входом x N выходов, который поддерживает соединения «один ко многим». Каждое физическое устройство может обрабатывать несколько форматов сигналов и может или не может выполнять любое преобразование формата.
редактировать: как упоминал Петер Török, график не обязательно будет деревом, диаграмма является простым примером, чтобы проиллюстрировать идею. При реализации в «реальном мире» могут существовать несколько путей, которые предлагают различные уровни определения (DVI> VGA> компонент> композитный), которые я планировал представить с использованием граничных весов.
редактировать 2: Вот немного более полный пример с указанием направленности и изображением сети, состоящей из двух типов сигналов. Первоначальный пример был слегка изменен, так что каждый вход и выход на устройстве определяется как отдельный узел, поскольку он будет предоставлять данные, необходимые для управления маршрутизацией матрицы / выбором входа.