Я пытаюсь сравнить два списка наборов (или список списков) и пытаюсь найти эффективное решение.
Даны два списка с различной длиной и, возможно, разными наборами размеров в каждой позиции. , Размер наборов составляет от 1 до 6 целых чисел, а размер списков составляет примерно 4000 элементов для больших и 100 для меньших.
list_1= [{42, 189, 31}, {32, 75, 189}, {42, 31}, {100, 63}, {75, 37}]
list_2=[{75, 37}, {42, 37}]
Затем я хочу найти точку в массиве, где существует наибольшее перекрытие между двумя списками, и посчитать, сколько элементов находится на пересечении между каждым набором.
В этом В этом случае наилучшее выравнивание будет в списке list_1 [1: 3], где есть два перекрывающихся элемента
{32, 75 , 189} по индексу 1 списка list_1 и {75 , 37} в индексе 0 списка list_2 в сочетании с { 42 , 31} в индексе 2 списка list_1 и { 42 , 37} по индексу 1 в list_2, что дает счет 2, потому что у нас есть два совпадения. Выходные массивы должны выглядеть следующим образом для приведенного выше примера
sequence_alligenment(list_1,list_2): [0,2,0,1]
Порядок списков важен, поскольку я пытаюсь найти момент времени, когда перекрытие является наибольшим.
Я безуспешно пытался использовать пересечение множеств и морозилок из-за некоторых неуклюжих петель for, окружающих их.