Hacker News

Chiyambi chothandizira ku quadtrees

Ndemanga

12 min read Via growingswe.com

Mewayz Team

Editorial Team

Hacker News

Chifukwa chiyani ma Quadtrees Ofunika Kwambiri Kuposa Mukuganiza

Nthawi zonse mukamatsina kuti mawonedwe a mapu a digito, kufunsa malo odyera pafupi, kapena kuwona zosintha zenizeni zenizeni zamagalimoto ambiri popanda msakatuli wanu kuyimitsidwa, pamakhala mwayi woti quadtree ikukweza kwambiri kumbuyo kwazithunzi. Ma Quadtrees ndi amodzi mwama data owoneka bwino omwe anthu ambiri samamvapo, komabe amayendetsa mwakachetechete makina ofunikira kwambiri pamapulogalamu amakono - kuyambira pakugundana kwamasewera apakanema mpaka machitidwe azidziwitso zamalo omwe amakonza mamiliyoni a mafunso a malo pamphindikati. Kumvetsetsa momwe amagwirira ntchito sikumangokupangani kukhala wopanga bwino; zimasintha momwe mumaganizira za kulinganiza ndi kufufuza kudzera mu data yapamtunda. Kaya mukumanga nsanja yotumizira zinthu, dashboard yotengera malo, kapena kungoyesa kupereka ma data 50,000 pa canvasi popanda kuwononga msakatuli, ma quadtrees amapereka yankho lomwe ndi lachidziwitso komanso lothandiza modabwitsa.

Quadtree Ndi Chiyani Kwenikweni?

A quadtree ndi mtengo wamtengo wamtengo pomwe node iliyonse yamkati imakhala ndi ana anayi ndendende, iliyonse ikuyimira gawo limodzi la magawo awiri. Tangoganizani kutenga dera lalikulu ndikuligawa m'mabwalo anayi ofanana - kumpoto chakumadzulo, kumpoto chakum'mawa, kumwera chakumadzulo, ndi kum'mwera chakum'mawa. Iliyonse mwa mabwalowa imatha kugawidwanso kukhala mabwalo anayi ena, ndi zina zotero, mobwerezabwereza, mpaka mufike poyimitsa. Kuyimitsa kumeneko nthawi zambiri kumakhala kuzama kopitilira muyeso kapena pachiwopsezo cha kuchuluka kwa ma data omwe nodi imodzi imatha kusunga isanagawike.

Kukongola kwa njira iyi kwagona pakusintha kwake. Madera omwe ali ndi ma data amagawidwa kukhala ma cell ang'onoang'ono komanso ocheperako, pomwe madera ochepa amakhalabe akulu, osagawanika. Quadtree yomwe imasunga malo ogulitsa khofi 10,000 m'dziko lonselo ingapangitse magawo akuya, atsatanetsatane ku Manhattan - komwe pangakhale masitolo 300 mkati mwa ma kilomita angapo - ndikusunga malo akumidzi a Wyoming ngati malo amodzi, osagawanika okhala ndi ziro kapena mfundo imodzi. Kusintha kosinthika kumeneku ndi komwe kumapangitsa kuti ma quadtrees akhale amphamvu kwambiri poyerekeza ndi gridi yathyathyathya, zomwe zingawononge kukumbukira zinthu zambiri pama cell opanda kanthu.

Lingalirolo linafotokozedwa koyamba ndi Raphael Finkel ndi J.L. Bentley mu 1974, ndipo kuyambira nthawi imeneyo yakhala ikugwirizana ndi mitundu ingapo: point quadtreessungani awiriawiri ogwirizanitsa, region quadtrees amaimira malo (zothandiza pazithunzithunzi za chithunzi), ndi mizere yopingasa ndi mipiringidzo ya quad. Mtundu uliwonse umakongoletsedwa pamagwiritsidwe osiyanasiyana, koma mfundo yayikulu yogawanitsa imakhalabe yofanana pa onsewo.

Momwe Kuyika ndi Kufunsa Kumagwirira Ntchito

Kuti muyike mfundo mu quadtree, mumayambira muzu ndikuzindikira kuti mfundoyi ikugwera pati. Kenako mumabwereranso mu node ya mwana wa quadrant ndikubwereza ndondomekoyi. Mukafika pa tsamba lomwe silinapitirire kuchuluka kwake (nthawi zambiri limayikidwa pa 1 kapena 4), mumangosunga mfundoyo pamenepo. Ngati tsambalo lili kale ndi mphamvu, limagawanika kukhala ana anayi, ndikugawanso mfundo zake zomwe zilipo pakati pawo, ndikuyika mfundo yatsopanoyo mwa mwana woyenera. Izi nthawi zambiri zimatha mu nthawi ya O(logi n) kuti igawidwe moyenera, ngakhale zochitika zoyipa kwambiri zokhala ndi data zambiri zitha kusokoneza magwiridwe antchito.

Mafunso osiyanasiyana - kupeza malo onse mkati mwa dera lopatsidwa makokona anayi - ndipamene mizere inayi imawaladi. M'malo moyang'ana mfundo iliyonse mu dataset yanu (ntchito ya O(n)), mumayambira pamizu ndikufunsa funso losavuta pa node iliyonse: kodi malire a nodiyi amadutsana ndi rectangle yanga yosaka? Ngati sichoncho, mumadula mtengo wonsewo - ndikuchotsa mfundo masauzande ambiri pakuyerekeza kumodzi. Ngati pali mphambano, mumabwereranso kwa ana oyenera. Mfundo zopezeka mumasamba zomwe zili mkati mwa rectangle zosakira zimawonjezedwa pazotsatira.

Ganizirani za chitsanzo chothandiza: muli ndi gulu la data la malo 100,000 amakasitomala ndipo mukufunika kupeza aliyense mkati mwa mtunda wamakilomita 5 wotsegula sitolo yatsopano. Njira ya brute-force imafuna kuwerengera mtunda wa 100,000. Quadtree yomangidwa bwino ikhoza kuchepetsa macheke 200-500 okha pochotsa mwachangu zigawo zonse zomwe sizimadutsana ndi malo omwe mumasaka. Ndiko kuwongolera kachitidwe ka 200x kapena kupitilira apo — kusiyana pakati pa funso lotenga 800 milliseconds ndikutenga 4 milliseconds.

Real-World Applications Zomwe Zimayenda pa Quadtrees

Kugwiritsa ntchito kwa quadtrees kumapitilira maphunziro aukadaulo apakompyuta. Ndiwo maziko a machitidwe omwe mabiliyoni ambiri a anthu amagwiritsa ntchito tsiku ndi tsiku, nthawi zambiri popanda kuzindikira.

  • Mapu ndi kuyenda: Machitidwe monga Google Maps ndi Mapbox amagwiritsa ntchito makina a matailosi a quadtree kuti apereke zithunzi zamapu. Mulingo uliwonse wa zoom umagawa matailosi kukhala ana anayi, nchifukwa chake matani a matailosi amatsata z/x/y patani yomwe imawonetsa maadiresi amtundu wa quadtree. Mukayang'ana pafupi ndi mdadada wa mzinda, matailosi okhawo omwe ali ndi mawonekedwe apamwamba amadzaza - dziko lonse lapansi limakhala pachiwopsezo.
  • Kuzindikira kugundana m'masewera: Makina amasewera amagwiritsa ntchito ma quadtree (ndi anzawo a 3D, octrees) kuti azindikire bwino zinthu zikawombana. M'malo moyesa zinthu ziwiri zilizonse - vuto la O(n²) lokhala ndi zida 1,000 pa skrini - injiniyo imangoyang'ana zinthu zomwe zimagawana quadtree cell, kuchepetsa macheke kukhala manambala otheka kuwongolera.
  • Kuphatikizika kwazithunzi: Magawo a quadtrees amatha kupanikiza zithunzi pophatikiza ma pixel oyandikana omwe amagawana mitundu yofanana m'mabuloko akulu. Awa ndiye maziko a ma aligorivimu ena oponderezedwa omwe amakwaniritsa ma compression a 10:1 kwinaku akusunga kukhulupirika kowoneka m'malo otsika kwambiri.
  • Kasamalidwe ka Fleet and Logistics: Makampani otumizira katundu amagwiritsa ntchito indexing ya malo kuti agwirizane ndi madalaivala omwe ali ndi maoda apafupi munthawi yeniyeni. Quadtree imalola makina otumizira nthawi yomweyo kuyankha funso "ndi madalaivala 5 ati omwe ali pafupi kwambiri ndi malowa?" magalimoto masauzande ambiri akukonza malo awo a GPS masekondi angapo aliwonse.
  • Geospatial analytics: Mapulatifomu omwe amaphatikiza data yabizinesi yotengera malo — mamapu akuchulukirachulukira kwamakasitomala, kukhathamiritsa kwa gawo lazogulitsa, kusanthula kasungidwe ka sitolo — amadalira mawonekedwe a data kuti apangitse mafunsowa kuti azitha kulumikizana m'malo mongosinthidwa.

Chidziwitso chachikulu cha quadtrees ndikuti mafunso ambiri okhudzana ndi malo safunikira kufufuza zambiri. Pokonza malo motsatira dongosolo, mumasintha zosaka zankhanza kukhala zodutsa zomwe mukufuna - kusintha masekondi kukhala ma milliseconds ndikupangitsa kuti kulumikizana munthawi yeniyeni kutheke ngakhale ndi ma dataset ambiri.

Kupanga Quadtree Kuchokera Pakuyambira

Kukhazikitsa maziko a quadtree ndikosavuta kufikika, ngakhale kwa opanga apakatikati. Mapangidwe apakati amafunikira zigawo zochepa chabe: amalire (malo akona amakona omwe node imaphimba), kuthekera (mfundo zazikuluzikulu zisanayambe kugawanika), zolemba za mfundo, ndi zolemba zinayimfundo za ana (poyamba null). Ntchito yonse yoyikapo ikhoza kulembedwa pansi pa mizere 30 m'zinenero zambiri.

Opaleshoni yogawikana imapanga ma node anayi atsopano, iliyonse imaphimba gawo limodzi la malire a kholo. Kwa kholo lokhala ndi malire (x, y, m’lifupi, kutalika), mwana wakumpoto chakum’mawa amapeza (x + m’lifupi/2, y, m’lifupi/2, kutalika/2), kumpoto chakumadzulo amapeza (x, y, m’lifupi/2, kutalika/2), ndi zina zotero. Pambuyo pogawanika, mfundo zomwe zilipo zimagawidwanso kwa ana oyenera. Kulakwitsa kofala ndikuyiwala kuchotsa mfundo za makolo pambuyo pogawanso, zomwe zimatsogolera ku zotsatira zofanana panthawi ya mafunso.

Pogwiritsa ntchito kupanga, kukhathamiritsa zingapo ndikofunikira. Kuyika mphamvu ya node ku 4-8 mfundo nthawi zambiri kumaposa mphamvu ya 1, chifukwa kumachepetsa kuya kwa mtengo ndi pamwamba pa zinthu za node. Kuonjezeramalire akuya kwambiri(kawirikawiri 8-12 milingo) imalepheretsa zochitika za pathological pomwe mfundo zambiri zimagawana zofanana zomwe zimagwirizanitsa kupanga mitengo yozama kwambiri. Ndipo pamaseti osunthika pomwe mfundo zimasuntha - monga kutsatira galimoto - mudzafuna njira yochotsera kapena njira yomangiranso mtengo nthawi ndi nthawi, popeza mitengo ya quadtree simadziwongolera yokha monga momwe mitengo yakuda imachitira.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Mitatu mu Bizinesi Platform ndi Analytics

Mapulatifomu amakono amakumana kwambiri ndi data ya malo, kaya ndi malo amakasitomala, malo obweretsera, malo ogulitsa, kapena kusaka katundu. Vuto sikuti ndikungosunga izi - ndikupangitsa kuti izikhala ndi mafunso munthawi yeniyeni. Bizinesi yomwe ikugwira ntchito m'mizinda 50 ikuyenera kuwona kuchuluka kwamakasitomala, madalaivala otumizira mayendedwe, kapena kusanthula momwe malonda akugwirira ntchito, njira yolondolera malo imatsimikizira ngati dashboard ikudzaza mu 200 milliseconds kapena 20 masekondi.

Ichi ndi chimodzi mwa zifukwa zomwe nsanja monga Mewayz - zomwe zimagwirizanitsa ma modules 207 a CRM, invoicing, kayendetsedwe ka zombo, kusungitsa, ndi analytics mu bizinesi imodzi ya OS - kupindula ndi kusamalidwa koyenera kwa deta pansi pa hood. Pamene gawo loyang'anira zombo likufunika kuwonetsa magalimoto 500 pamapu, kapena gawo la CRM likawona malo opitilira 138,000 ogwiritsira ntchito pokonzekera magawo, njira zopanda pake sizimakula. Mipangidwe yolozera malo ngati quadtrees (kapena zofananira nazo munkhokwe, monga PostGIS R-trees ndi MySQL spatial indexes) zimapangitsa kuti zikhale zotheka kupereka izi popanda kufunikira zida zamabizinesi.

Kwa mabizinesi owunika nsanja, zotengera ndizothandiza: zida zomwe zimagwira bwino ntchito za malo ndi malo samangogwiritsa ntchito ma algorithms apamwamba chifukwa cha izi. Akupanga kusiyana pakati pa makina osungitsa malo omwe amatha kuwonetsa opereka chithandizo omwe alipo mkati mwa makilomita 10 ndi imodzi yomwe imatenga masekondi 8 kuti ibweretse zotsatira zomwezo. Kuchita pamlingo uwu kumasulira mwachindunji kukhala kwa ogwiritsa ntchito ndipo, pamapeto pake, ndalama.

Quadtrees vs. Zina Zomangamanga Zapamalo

Mitatu si njira yokhayo yolondolera malo, ndipo kumvetsetsa njira zina kumakuthandizani kusankha chida choyenera. R-mitengo, yogwiritsidwa ntchito kwambiri m'malo osungira monga PostGIS ndi gawo la R*Tree la SQLite, ikonza deta m'makona aang'ono ocheperako ndikuyankha mafunso osiyanasiyana ndi kusaka kwa oyandikana nawo apafupi bwino. Nthawi zambiri amaposa ma quadtree posungiramo ma disk chifukwa amachepetsa magwiridwe antchito a I/O, ndichifukwa chake malo ambiri osungiramo malo amagwiritsa ntchito mitundu ya R-tree mkati osati quadtrees.

Mitengo ya K-d yogawaniza malo pogwiritsa ntchito migawo yolowera mosinthana (poyamba ndi x, kenako ndi y, kenako ndi x kachiwiri) ndipo ndiyabwino kwambiri pakufufuza koyandikana nawo pafupi ndi miyeso yocheperako. Amakonda kuchita bwino kuposa ma quadtrees pomwe kukula kwake kuli kotsika ndipo dataset ndi static, koma ndizovuta kusintha mwachangu. Ma geohashe amatengera njira yosiyana kotheratu, ndikuyika latitude ndi longitude kukhala chingwe chimodzi pomwe ma prefixes ogawana amawonetsa kuyandikira kwa malo - kuwapanga kukhala abwino pakulozera pankhokwe ndi kusungitsa koma osasinthika pamafunso osiyanasiyana.

Mitatuyi imakhala yawoyawo m'mawonekedwe omwe amasewera molingana ndi mphamvu zawo: kulondolera kwapakatikati pamtima, ma dataset osunthika omwe amalowetsedwa pafupipafupi ndi kufufutidwa, mawonekedwe omwe mawonekedwe a gululi amapangika mwachilengedwe kukulitsa milingo, ndi pomwe kuphweka kuli kofunika. Pa pulogalamu yakutsogolo yomwe ikupereka mfundo 10,000 pansalu yokhala ndi pan-and-zoom, quadtree yokhazikitsidwa mu mizere 100 ya JavaScript ipambana njira iliyonse yothandizidwa ndi database pochotsa kuchedwa kwa netiweki.

Poyambira: Njira Zomwe Zingachitike

Ngati mukufuna kukulitsa kumvetsetsa kwanu kwa quadtrees kupitilira kuwerenga za iwo, njira yabwino kwambiri ndikumanga imodzi mwamawonekedwe. Pangani pulogalamu yosavuta ya canvas pomwe kudina kumawonjezera mfundo, ndipo penyani mtengowo ukugawika mu nthawi yeniyeni. Onjezani rectangle yamafunso osiyanasiyana yomwe mutha kukokerapo ndikuwunikira zomwe ikupeza. Kulumikizana kwa manja kumeneku kumapanga chidziwitso kuti palibe kuchuluka kwa kuwerenga komwe kungafanane - muwona nthawi yomweyo chifukwa chomwe data yophatikizana imapanga mitengo yozama komanso momwe kudulira kumachotsera danga lalikulu.

Pazinthu zopanga, ganizirani malangizo awa: ngati deta yanu ikhala munkhokwe, gwiritsani ntchito zolozera zapamalo zomwe database yanu imapereka (PostGIS, MySQL Spatial, MongoDB 2dsphere indexes) m'malo mogwiritsa ntchito ma quadtrees pamakhodi ogwiritsira ntchito. Ngati mukuchita zowonera kumbali ya kasitomala kapena kukonza kukumbukira, malaibulale ngati d3-quadtreea JavaScript kapena pyquadtreea Python amakupatsani zoyeserera zoyeserera. Ndipo ngati mukupanga nsanja yomwe imayang'anira mtundu uliwonse wa data yamalo - kuyambira maadiresi a makasitomala mpaka njira yobweretsera kupita ku kasamalidwe ka magawo - sungani nthawiyo kuti mumvetsetse masanjidwe a malo, chifukwa idzasintha zomwe pulogalamu yanu ingachite pamlingo waukulu.

Quadtrees imayimira mfundo yayikulu mu sayansi yamakompyuta: kuti kapangidwe kake komwe mumasankha kumatsimikizira mafunso omwe mungayankhe bwino. Mndandanda wosasunthika wa ma coordinates ukhoza kuyankha "ndipatseni mfundo zonse," koma quadtree ikhoza kuyankha "ndipatseni mfundo zonse pafupi ndi pano" - ndipo ikhoza kuchita mofulumira kuti mumve nthawi yomweyo. M'dziko lomwe 73% ya data yamabizinesi ili ndi gawo lokhala ndi malo malinga ndi kuyerekezera kwamakampani, kuthekera kumeneku sikungophunzira chabe. Ndi mwayi wampikisano.

Mafunso Ofunsidwa Kawirikawiri

Kodi quadtree ndi chiyani ndipo imagwira ntchito bwanji?

A quadtree ndi ndondomeko yochokera kumtengo yomwe imagawanitsa danga la mbali ziwiri kukhala magawo anayi ofanana. Node iliyonse imatha kukhala ndi malo owerengeka a data musanagawike m'malo anayi a ana. Kugawikana kwaulamuliroku kumapangitsa mafunso okhudza malo - monga kupeza mfundo zonse m'dera linalake - mwachangu kwambiri, kuchepetsa nthawi yosaka kuchokera pamzere kupita ku logarithmic m'zochitika zowoneka bwino.

Kodi ma quadtrees omwe amagwiritsidwa ntchito kwambiri padziko lonse lapansi ndi ati?

Mamita anayi ali ndi mphamvu pamakina osiyanasiyana kuphatikiza mamapu a digito omwe ali ndi magwiridwe antchito a pinch-to-zoom, ma dashboards a nthawi yeniyeni yolondolera zombo, makina ozindikira kugunda kwamasewera apakanema, ndi machitidwe azidziwitso za malo omwe amakonza mamiliyoni a mafunso a malo pamphindikati. Pulogalamu iliyonse yomwe ikufunika kufufuza, kuyika, kapena kuyang'anira bwino zinthu zomwe zagawidwa m'magawo awiri-dimensional ingapindule ndi quadtree indexing.

Kodi ma quadtrees amafananiza bwanji ndi zinthu zina zapamalo?

Mosiyana ndi ma gridi athyathyathya, ma quadtrees amasintha mawonekedwe awo kuti agwirizane ndi kachulukidwe ka data - madera ochepera amakhala owoneka bwino pomwe madera omwe ali ndi anthu ambiri amagawikanso. Poyerekeza ndi mitengo ya k-d, ma quadtrees ndi osavuta kugwiritsa ntchito komanso oyenerera data ya 2D yogawidwa mofanana. Mitengo ya R imagwira zigawo zomwe zikudutsana mokoma mtima, koma quadtrees imapambana pa liwiro loyikapo ndipo ndiyosavuta kufananiza ndi ntchito zenizeni nthawi yeniyeni.

Kodi ma quadtrees angathandize kukhathamiritsa ntchito zamapulogalamu abizinesi?

Ndithu. Chida chilichonse chabizinesi chogwiritsa ntchito data yamalo, kusanthula kwapamalo, kapena ma dashboard olumikizana amapindula ndi kukhathamiritsa kwa quadtree. Mapulatifomu ngati Mewayz, bizinesi ya ma module 207 kuyambira $19/mo, imathandizira zida za data zomwe sizikuwoneka bwino kuti zipereke zochitika zachangu, zomvera bwino — kuyambira mamapu opeza malo ogulitsa kupita ku mawerengero anthawi yeniyeni pamakina masauzande ambiri a data.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime