Pokud hledáte aproximační algoritmus, doporučuji hledat algoritmus k-means nebo hierarchický shluk, zejména křivku monster nebo křivku vyplňování prostoru. Nejprve můžete vypočítat minimální kostru grafu a poté odstranit nejdelší a nejdražší hrany. Potom strom vytvoří mnoho malých stromů a můžete použít k-means k výpočtu skupiny bodů, tj. shluků.
"Jednolinkový algoritmus k-clusteringu... je přesně Kruskalův algoritmus... ekvivalentní nalezení MST a vymazání k-1 nejdražších hran." Viz například zde:https://stats.stackexchange.com/ otázky/1475/vizualizační-software-pro-shlukování .
Dobrým příkladem křivky monster je hilbertova křivka. Základní formou této křivky je tvar písmene U a zkopírováním mnoha z nich a jejich otáčením křivka vyplňuje euklidovský prostor. Překvapivě šedý kód může pomoci zjistit orientaci tohoto tvaru U. Můžete vyhledat Nickovu hilbertovu křivku kvadrantového indexu článek na blogu o dalších podrobnostech . Místo výpočtu indexu křivky můžete sestavit quadkey jako v bing mapách. quadkey je jedinečný pro každou souřadnici a lze jej použít s normálními operacemi s řetězci. Každá pozice v klíči je součástí křivky tvaru U, a proto můžete tuto oblast bodů vybrat z výběru částečně zleva doprava z quadkey.
Na tomto obrázku můžete vidět, jak je zelený polygon nalezen pomocí hilbertovy křivky:
Moje php třídy najdete zde:http://www.phpclasses.org/package/6202-PHP-Generate-points-of-an-Hilbert-curve.html