Efficiently Eliminating User Duplicates in a Large Dataset | 14 марта 2019 года, 18:18

Друзья-программисты, напомните, как из списка

a=(3,4,5,8,10), b=(1,3,8,10), c=(4,10), d=(8,10)

сделать

a=(e,4,5), b=(1,e), c=(4,10), d=(8,10), e=(3,d)?

Собственно, нужно для этого:

https://github.com/raliev/rulegroupspoc/blob/master/sampleoutput.txt

Есть матрица 1млн пользователей на 100000 товаров и набор правил, которые говорят, какой товар какому юзеру доступен. Я уже сделал быстрый алгоритм (без оптимизаций еще), который создает матрицу Товары х Юзергруппы, и вычисляет юзергруппы. При определенных условиях юзергрупп будет сильно меньше, чем товаров, и каждому товару можно будет сопоставить список юзергрупп, вместо списка юзеров. Но в вычисленных группах есть повторения, которые могли бы еще сильнее сократить список групп для хранения рядом с товарами. Как раз за счет подстановки “е” из примера выше. Но как сделать это эффективно? Можно считать, что юзеров 100000, групп – меньше, пусть будет 50000.

https://github.com/raliev/rulegroupspoc/blob/master/sampleoutput.txt

Оставьте комментарий