Добрый вечер!
Имею множество пользователей из 200 тысяч пользователей ВКонтакте, которые выбраны в это множество потому что состоят в группах определенной тематики. Множество выгружено через VK API в локальную базу данных.
У каждого из них есть "друзья". Мне нужно выбрать из 200 тысяч пользователей 1-2 тысячи так, чтобы количество друзей этих пользователей в моем множестве было максимальным с учетом пересечений друзей.
К примеру: есть пользователи A, B, C и D. Мне нужно выбрать двух пользователей из них по заданному выше условию. Пользователь A имеет 100 друзей, из которых 50 состоят в моём множестве (то есть 50 друзей пользователя A, также, как и сам пользователь A состоят в этом множестве). Пользователь B 200, из них 20. Пользователь C 150, из них 50. Пользователь D 50, из них 30.
Если просто отсортировать их по убыванию количества друзей в моём множестве, то мне нужно взять A и C (вместе без учета повторений у них 100 друзей в множестве). Но мне-то нужно не просто "максимум суммы", мне нужно с учетом повторений пользователей. То есть с учетом ситуации, когда друзья у них одинаковые состоят в моём множестве.
Практическое применение: понять, каким пользователям ВК писать с определенным предложением, чтобы получить максимальный охват среди всего 200-тысячного множества.
Опубликован 02.11.2015 в 22:05