クラスターとは、リンクされた重なり合う円のグループを意味します。この画像は、おそらく私が見つけようとしているもののより良いアイデアを提供します:
私のデータでは、円は中心点の座標で表されています。オーバーラップを表すペアの中心点のリストを作成するために、すでに衝突検出を実行しました。
pts = [(-2,2), (-2,2), (0,0), (2,1), (6,2), (7,1)]
overlaps = [
(pts[0], pts[1]),
(pts[0], pts[2]),
(pts[1], pts[2]),
(pts[2], pts[3]),
(pts[4], pts[5]),
]
これは期待される結果です:
expected_clusters = [
((-2,2), (-2,2), (0,0), (2,1)),
((6,2), (7,1))
]
実際には、私が使用するデータセットはほぼこのサイズになるので、おそらくスケールアップする必要はありません。しかし、それは私がより最適な解決策を好まないということではありません。
私は自分自身の素朴な解決策を考え出しました。それを答えとして投稿します。しかし、私は他の解決策を見たいと思います。