Учитывая следующие три последовательности чисел, я хотел бы выяснить, как группировать числа, чтобы найти самые близкие отношения между ними.
1,2,3,4
4,3,5
2,1,3
...
Я не уверен, что алгоритм (ы), который я ищу, вызывается, но мы можем видеть более сильные отношения с некоторыми из чисел, чем с другими.
Эти цифры отображаются вместе дважды:
1 & 2
1 & 3
2 & 3
3 & 4
Вместе один раз:
1 & 4
2 & 4
3 & 5
4 & 5
Так, например, мы можем видеть, что между 1, 2, & 3
должна существовать связь, так как все они появляются вместе, по крайней мере, дважды. Вы также можете сказать, что 3 & 4
тесно связаны, так как они также появляются дважды. Тем не менее, алгоритм может выбрать [1,2,3]
(более [3,4]
), так как это большая группировка (более инклюзивная).
Мы можем сформировать любую из следующих групп, если мы будем чаще использовать числа, используемые чаще всего в группе:
[1,2,3] & [4,5]
[1,2] & [3,4] & [5]
[1,2] & [3,4,5]
[1,2] & [3,4] & [5]
Если дубликаты разрешены, вы даже можете получить следующие группы:
[1,2,3,4] [1,2,3] [3,4] [5]
Я не могу сказать, какая группировка наиболее "правильная", но все четыре из этих комбо все находят разные способы полуправильной группировки чисел. Я не ищу определенную группу - просто общий алгоритм кластера, который работает достаточно хорошо и легко понять.
Я уверен, что есть много других способов использовать число встречаемости, чтобы сгруппировать их. Каким будет хороший алгоритм группировки баз данных? Предпочтительны образцы в Go, Javascript или PHP.