Друзья-программисты, напомните, как из списка
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
