Lloydsův algoritmus - Lloyds algorithm - Wikipedia

Příklad Lloydova algoritmu. Je zobrazen Voronoiův diagram aktuálních bodů při každé iteraci. Znaménka plus označují centroidy buněk Voronoi.
Lloydova metoda, iterace 1
Iterace 1
Lloydova metoda, iterace 2
Iterace 2
Lloydova metoda, iterace 3
Iterace 3
Lloydova metoda, iterace 15
Iterace 15
Na posledním obrázku jsou body velmi blízko centroidů Voronoiových buněk. Byla nalezena mozaiková Voronoiova mozaikování.

v počítačová věda a elektrotechnika, Lloydův algoritmus, také známý jako Voronoiova iterace nebo relaxace, je algoritmus pojmenovaný podle Stuarta P. Lloyda pro hledání rovnoměrně rozmístěných sad bodů v podmnožinách Euklidovské prostory a oddíly těchto podmnožin do dobře tvarovaných a rovnoměrně velkých konvexních buněk.[1] Stejně jako blízcí příbuzní k- znamená shlukování algoritmus opakovaně najde těžiště každé sady v oddílu a poté znovu rozdělí oddíl podle toho, který z těchto centroidů je nejblíže. V tomto nastavení je střední operace integrálem v oblasti vesmíru a nejbližší těžiště operace má za následek Voronoiovy diagramy.

Ačkoli lze algoritmus použít nejpříměji na Euklidovské letadlo, podobné algoritmy lze použít i na prostory vyšších dimenzí nebo na prostory s jinými neeuklidovský metriky. Lloydův algoritmus lze použít ke konstrukci blízkých aproximací těžiště Voronoi mozaikování vstupu,[2] pro které lze použít kvantování, dithering, a tečkování. Mezi další aplikace Lloydova algoritmu patří vyhlazování trojúhelníkové sítě v Metoda konečných prvků.

Popis algoritmu

Lloydův algoritmus začíná počátečním umístěním nějakého čísla k bodových webů ve vstupní doméně. V aplikacích pro vyhlazení sítě by to byly vrcholy sítě, která má být vyhlazena; v jiných aplikacích mohou být umístěny náhodně nebo protínáním jednotné trojúhelníkové sítě vhodné velikosti se vstupní doménou.

Poté opakovaně provede následující relaxační krok:

  • The Voronoiho diagram z k stránky se počítají.
  • Každá buňka Voronoiho diagramu je integrována a je vypočítán těžiště.
  • Každé místo je poté přesunuto do těžiště své Voronoiho buňky.

Integrace a výpočet těžiště

Protože algoritmy pro konstrukci Voronoiho diagramu mohou být vysoce netriviální, zejména pro vstupy dimenze vyšší než dvě, kroky výpočtu tohoto diagramu a nalezení přesných centroidů jeho buněk mohou být nahrazeny aproximací.

Přiblížení

Běžným zjednodušením je použít vhodnou diskretizaci prostoru jako jemnou mřížku pixelů, např. textury nárazník v grafickém hardwaru. Buňky se zhmotňují jako pixely označené příslušným ID webu. Nový střed buňky je aproximován průměrováním pozic všech pixelů přiřazených se stejným štítkem. Metody Monte Carlo může být použito, ve kterém jsou generovány náhodné vzorkovací body podle nějakého pevného podkladového rozdělení pravděpodobnosti, přiřazené k nejbližšímu místu a zprůměrovány k přiblížení těžiště pro každé místo.

Přesný výpočet

Ačkoli je také možné zabudování do jiných prostor, toto zpracování předpokládá Euklidovský prostor za použití L2 norma a pojednává o dvou nejrelevantnějších scénářích, kterými jsou dva, respektive tři rozměry.

Vzhledem k tomu, že Voronoiova buňka má konvexní tvar a vždy obklopuje své místo, existují triviální rozklady na snadno integrovatelné jednoduchosti:

  • Ve dvou rozměrech jsou okraje polygonální buňky spojeny s jejím místem a vytvářejí deštníkovou sadu trojúhelníků.
  • Ve třech rozměrech je buňka uzavřena několika rovinnými polygony, které je třeba nejprve triangulovat:
    • Vypočítejte střed polygonové plochy, např. průměr všech jeho vrcholů.
    • Propojení vrcholů polygonální plochy s jejím středem poskytuje rovinnou trojúhelníkovou triangulaci.
    • Triviálně, soubor čtyřstěn se získá spojením trojúhelníků trupu buňky s místem buňky.

Integrace buňky a její výpočet těžiště (těžiště) je nyní dána jako vážená kombinace těžišť jeho simplexů (v následujícím textu nazvaná ).

  • Dva rozměry:
    • Pro trojúhelník lze těžiště snadno vypočítat, např. použitím Kartézské souřadnice.
    • Vážení počítá jako simplex-to-cell plocha poměry.
  • Tři rozměry:
    • The těžiště čtyřstěnu se nachází jako průsečík tří půlících rovin a lze jej vyjádřit jako produkt matice-vektor.
    • Vážení počítá jako simplex-to-cell objem poměry.

Pro 2D buňku s n trojúhelníkové jednoduchosti a akumulovaná plocha (kde je oblast trojúhelníku simplex), nový centroid buňky počítá jako:

Analogicky, pro 3D buňku o objemu (kde je objem čtyřstěnu simplex), těžiště počítá jako:

Konvergence

Pokaždé, když je proveden relaxační krok, jsou body ponechány v mírně rovnoměrnějším rozložení: těsně rozmístěné body se pohybují dále od sebe a široce rozmístěné body se přibližují k sobě. V jedné dimenzi bylo prokázáno, že tento algoritmus konverguje k centroidnímu Voronoiovi diagramu, také pojmenovanému a těžiště Voronoi mozaikování.[3] Ve vyšších dimenzích jsou známy některé mírně slabší výsledky konvergence.[4][5]

Algoritmus konverguje pomalu nebo kvůli omezením v numerické přesnosti nemusí konvergovat. Skutečné aplikace Lloydova algoritmu v reálném světě se proto obvykle zastaví, jakmile je distribuce „dostatečně dobrá“. Jedním běžným kritériem ukončení je zastavení, když maximální vzdálenost přesunutá jakýmkoli webem v iteraci klesne pod přednastavenou prahovou hodnotu. Konvergenci lze urychlit přílišným uvolněním bodů, což se provádí pohybem každého bodu ω krát vzdálenost od středu hmoty, obvykle s použitím hodnoty o něco menší než 2 pro ω.[6]

Aplikace

Lloydova metoda byla původně použita pro skalární kvantizaci, ale je zřejmé, že metoda se vztahuje i na vektorovou kvantizaci. Jako takový je široce používán v komprese dat techniky v teorie informace. Lloydova metoda se používá v počítačové grafice, protože výsledná distribuce ano modrý šum charakteristiky (viz také Barvy šumu ), což znamená, že existuje několik nízkofrekvenčních komponent, které lze interpretovat jako artefakty. Je zvláště vhodný pro výběr pozic vzorků pro dithering. Lloydův algoritmus se také používá ke generování bodových výkresů ve stylu tečkování.[7] V této aplikaci lze centroidy vážit na základě referenčního obrázku, aby se vytvořily tečkované ilustrace odpovídající vstupnímu obrazu.[8]

V Metoda konečných prvků, vstupní doména se složitou geometrií je rozdělena na prvky s jednoduššími tvary; například dvourozměrné domény (buď podmnožiny euklidovské roviny, nebo povrchy ve třech rozměrech) jsou často rozděleny do trojúhelníků. Pro konvergenci metod konečných prvků je důležité, aby tyto prvky byly dobře tvarované; v případě trojúhelníků jsou často preferovány prvky, které jsou téměř rovnostrannými trojúhelníky. Lloydův algoritmus lze použít k vyhlazení mřížky generované nějakým jiným algoritmem, pohybem jeho vrcholů a změnou vzoru připojení mezi jeho prvky, aby vznikly trojúhelníky, které jsou těsněji rovnostranné.[9] Tyto aplikace obvykle používají menší počet iterací Lloydova algoritmu a zastavují jej ke konvergenci, aby se zachovaly další vlastnosti sítě, jako jsou rozdíly ve velikosti prvků v různých částech sítě. Na rozdíl od jiné metody vyhlazování Laplaciánské vyhlazování (ve kterém jsou vrcholy sítě přesunuty na průměr pozic svých sousedů) může Lloydův algoritmus změnit topologii sítě, což povede k téměř rovnostranným prvkům a vyhne se problémům se spletením, které mohou nastat při laplaciánském vyhlazování. Laplaciánské vyhlazování však lze obecněji aplikovat na sítě s netrojúhelníkovými prvky.

Různé vzdálenosti

Lloydův algoritmus se obvykle používá v a Euklidovský prostor. Euklidovská vzdálenost hraje v algoritmu dvě role: používá se k definování buněk Voronoi, ale také odpovídá výběru těžiště jako reprezentativního bodu každé buňky, protože těžiště je bod, který minimalizuje průměrnou čtvercovou euklidovskou vzdálenost k bodům v jeho buňce. Místo toho lze použít alternativní vzdálenosti a alternativní středové body než těžiště. Například, Hausner (2001) použil variantu Manhattanská metrika (s místně se měnícími orientacemi) najít obklad obrazu přibližně čtvercovými dlaždicemi, jejichž orientace je v souladu s vlastnostmi obrazu, které použil k simulaci konstrukce obkladů mozaiky.[10] V této aplikaci navzdory měnící se metrice Hausner nadále používal centroidy jako reprezentativní body svých buněk Voronoi. U metrik, které se výrazněji liší od euklidovských, může být vhodné zvolit jako reprezentativní bod namísto těžiště minimalizátor průměrné čtvercové vzdálenosti.[11]

Viz také

Reference

  1. ^ Lloyd, Stuart P. (1982), „Kvantizace nejmenších čtverců v PCM“ (PDF), Transakce IEEE na teorii informací, 28 (2): 129–137, doi:10.1109 / TIT.1982.1056489.
  2. ^ Du, Qiang; Faber, Vance; Gunzburger, Max (1999), "Centroidal Voronoi tessellations: aplikace a algoritmy", Recenze SIAM, 41 (4): 637–676, Bibcode:1999SIAMR..41..637D, doi:10.1137 / S0036144599352836.
  3. ^ Du, Qiang; Emelianenko, Maria; Ju, Lili (2006), „Convergence of the Lloyd algorithm for computing centroidal Voronoi tessellations“, Časopis SIAM o numerické analýze, 44: 102–119, CiteSeerX  10.1.1.591.9903, doi:10.1137/040617364.
  4. ^ Sabin, M. J .; Gray, R. M. (1986), „Globální konvergence a empirická konzistence zobecněného Lloydova algoritmu“, Transakce IEEE na teorii informací, 32 (2): 148–155, doi:10.1109 / TIT.1986.1057168.
  5. ^ Emelianenko, Maria; Ju, Lili; Rand, Alexander (2009), „Nondegeneracy and Weak Global Convergence of the Lloyd Algorithm in Rd", Časopis SIAM o numerické analýze, 46: 1423–1441, doi:10.1137/070691334.
  6. ^ Xiao, Xiao. „Příliš relaxační Lloydova metoda pro výpočet těžkých Voronoiových mozaikování.“ (2010).
  7. ^ Deussen, Oliver; Hiller, Stefan; van Overveld, Cornelius; Strothotte, Thomas (2000), „Plovoucí body: metoda výpočtu tečkovaných výkresů“, Fórum počítačové grafiky, 19 (3): 41–50, doi:10.1111/1467-8659.00396 Sborník ze dne Eurografika.
  8. ^ Secord, Adrian (2002), „Weighted Voronoi stippling“, Sborník ze sympozia o nefotorealistické animaci a vykreslování (NPAR), ACM SIGGRAPH, str. 37–43, doi:10.1145/508530.508537.
  9. ^ Du, Qiang; Gunzburger, Max (2002), „Generování a optimalizace mřížky založené na mozaikových Voronoiových mozaikách“, Aplikovaná matematika a výpočet, 133 (2–3): 591–607, CiteSeerX  10.1.1.324.5020, doi:10.1016 / S0096-3003 (01) 00260-0.
  10. ^ Hausner, Alejo (2001), „Simulace dekorativních mozaik“, Sborník z 28. výroční konference Počítačová grafika a interaktivní techniky, ACM SIGGRAPH, str. 573–580, doi:10.1145/383259.383327.
  11. ^ Dickerson, Matthew T.; Eppstein, David; Wortman, Kevin A. (2010), „Planární Voronoiovy diagramy pro součty konvexních funkcí, vyhlazenou vzdálenost a dilataci“, Proc. 7. mezinárodní symposium o Voronoiových diagramech ve vědě a inženýrství (ISVD 2010), s. 13–22, arXiv:0812.0607, doi:10.1109 / ISVD.2010.12.

externí odkazy

  • DemoGNG.js Grafický simulátor Javascript pro algoritmus LBG a další modely zahrnuje zobrazení oblastí Voronoi