Алгоритм сравнения списков: поиск пересекающихся массивов? Дан массив массивов m: [[1,2,3], [3,4,5], [1,6], [4,5,6], ...]
Дан целевой массив t.
Средняя длина подмассивов в m - 30.
Средняя длина t - 1000.
Как определить какие из десяти (к примеру) подмассивов m содержат с t наибольшее число общих элементов?
Задачу в лоб я решаю.
Но количество подмассивов в m будет большим.
И осложняется тем, что они лежат в базе.
Поэтому вопрос в том, как это сделать оптимальным образом.

21 Авг 2019 в 06:11
143 +1
0
Ответы
1

Один из способов оптимизации данной задачи может быть использование хэш-таблицы (например, словаря в Python) для подсчета количества общих элементов между каждым подмассивом из m и целевым массивом t.

Создайте пустой словарь для хранения количества общих элементов для каждого подмассива из m.Для каждого подмассива из m:
Создайте множество с элементами из текущего подмассива.Пересеките множество текущего подмассива с множеством элементов целевого массива t.Запишите количество общих элементов в словарь.Найти подмассивы с максимальным количеством общих элементов с целевым массивом t по значению в словаре.

Такой подход позволит сократить количество операций сравнения элементов и значительно ускорит процесс поиска подмассивов с наибольшим количеством общих элементов.

20 Апр в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир