У меня есть прямоугольная плоская сетка, с каждой ячейкой присваивается некоторый целочисленный вес. Я ищу алгоритм для идентификации кластеров от 3 до 6 соседних клеток с весом выше среднего. Эти капли должны иметь приблизительно круглую форму.
В моем случае средний вес ячеек, не содержащих кластер, составляет около 6, а у ячеек, содержащих кластер, около 6 + 4, т. Е. Где-то около 6 есть «фоновый вес». Веса колеблются в зависимости от Пуассоновская статистика.
Для небольших фоновых алгоритмов жадные алгоритмы или затравочные алгоритмы работают довольно хорошо, но это ломается, если у моих кластерных ячеек есть веса, близкие к флуктуациям на заднем плане, то есть они будут стремиться найти кластер, даже если там ничего нет. Кроме того, я не могу выполнить поиск методом перебора всех возможных настроек, потому что моя сетка большая (что-то вроде 1000x1000), и я планирую делать это очень часто (10 ^ 9 раз). У меня сложилось впечатление, что могут существовать способы решения этой проблемы в теории графов. Я слышал о покрытиях вершин и кликах, но не уверен, как лучше всего перевести мою проблему на их язык . Я знаю, что у теории графов могут быть проблемы со статистической природой входных данных, но мне было бы интересно посмотреть, какие алгоритмы там можно найти, даже если они не могут идентифицировать каждый кластер.
Вот пример отсечения: в рамочной области в среднем по 10 записей на ячейку, во всех остальных ячейках - в среднем 6. Конечно, сетка расширяется.
| 8| 8| 2| 8| 2| 3|
| 6| 4| 3| 6| 4| 4|
===========
| 8| 3||13| 7| 11|| 7|
|10| 4||10| 12| 3|| 2|
| 5| 6||11| 6| 8||12|
===========
| 9| 4| 0| 2| 8| 7|