У меня проблема:
У меня есть класс A и класс B, чьи объекты экземпляров можно проверять программно, чтобы они были похожи или отличались друг от друга в различных количествах. Например, они могут идеально совпадать или быть совершенно разными (даже если классы разные, они все равно могут представлять одну и ту же информацию и могут быть одинаковыми).
Теперь, учитывая две коллекции, одну из A и одну из B, что было бы лучшим способом объединить As и B таким образом, чтобы они лучше подходили друг другу, оставляя некоторых сирот, если любая коллекция больше другой или если некоторые из As или B просто слишком разные, чтобы их можно было сопоставить?
Моей первой попыткой было создание 2-мерного массива, в котором каждая ячейка представляла собой «оценку» совпадения (0 = идеально, с большими числами хуже) и повторялась по каждому пути в поисках наименьшего накопленного значения. Это работает, и результаты превосходны, но это ужасно медленно.
Есть идеи по более эффективным алгоритмам?
Если вам интересно, мой класс A представляет входной канал аудиомикшера, а мой B представляет его постоянное состояние (называемое сценой). Проблема, которую я пытаюсь решить, состоит в том, как импортировать сцену в существующий микшер, где сцена (B) может немного или даже сильно отличаться от любого из существующих каналов (A). Я не хочу просто добавлять каналы (A), если бы я мог немного изменить любой, чтобы соответствовать. Например, я мог бы добавить вставку эффекта к A, чтобы идеально соответствовать B и избежать необходимости добавления другого A.
Mike