Hacker News

Se folasaga fegalegaleai i quadtrees

Fa'amatalaga

19 min read Via growingswe.com

Mewayz Team

Editorial Team

Hacker News

Aisea e Taua ai Quadtrees Nai lo Oe Mafaufau

So'o se taimi lava e te pipii ai i luga o se fa'afanua fa'atekinolosi, fesili fale'aiga lata ane, pe matamata i se va'a va'a fa'afouga fa'afou le tele o ata o ta'avale e aunoa ma lau su'esu'ega e taofi, e tele le avanoa o le quadtree o lo'o faia le siiina mamafa i tua o vaaiga. O le Quadtrees o se tasi lea o fa'amaumauga mata'ina e le'i fa'alogo iai le to'atele o tagata, ae latou te fa'amalo filemu nisi o faiga e sili ona fa'atino i polokalama fa'aonaponei - mai le su'esu'eina o fete'ena'iga o ta'aloga vitiō i faiga fa'amatalaga fa'afanua o lo'o fa'agasolo ai le faitau miliona o fesili fa'apitonu'u ile sekone. O le malamalama i le auala latou te galulue ai e le gata ina avea ai oe ma se atina'e sili atu; e matua suia ai le auala e te mafaufau ai e uiga i le faʻatulagaina ma le suʻesuʻeina e ala i faʻamatalaga faʻafanua. Pe o lo'o e fauina se fa'asologa o mea e fa'atau ai mea, se lisi fa'avasega fa'atatau i nofoaga, pe na o le taumafai e tu'uina atu le 50,000 fa'amaumauga i luga o se tapoleni e aunoa ma le fa'alavelaveina o le masini su'esu'e, o le quadtrees e ofoina atu se vaifofo e le gata i le malamalama ma le fa'aogaina lelei.

O le a tonu le Quadtree?

O le quadtree o se fa'asologa o fa'amaumauga o la'au o lo'o i totonu uma e fa sa'o lava tamaiti e to'afa, o lo'o fa'atusalia uma le fa'ailoga o le vaeluaga lua. Vaai faalemafaufau i le ave o se itulagi faatafafa ma vaevae i ni sikuea tutusa se fa - i matu i sisifo, i matu sasa'e, i sautesisifo, ma sautesasae. O ia sikuea ta'itasi e mafai ona vaevae atili i isi sikuea se fa, ma fa'asolo atu, fa'asolosolo, se'ia e o'o atu i se tulaga taofi. O lena tulaga taofi e masani lava a lē o se loloto aupito maualuga po o se tapulaa mo le tele o fa'amaumauga e mafai ona uu e se pona e tasi a'o le'i mana'omia ona vaelua.

O le matagofie o lenei faiga o lo'o taoto i lona natura fetuutuunai. O vaega e mafiafia i fa'amaumauga e vaevaeina i sela e sili atu ona mama ma mama, ae o vaega to'aitiiti e tumau pea o ni vaega tetele, e le'i vaeluaina. O se quadtree e teu ai nofoaga o le 10,000 fale kofe i totonu o le atunuʻu o le a fausia ai ni vaevaega loloto ma auiliili i luga o Manhattan - lea e ono i ai le 300 faleoloa i totonu o ni nai kilomita faatafafa - aʻo faʻatumauina le tele o pitonuʻu o Wyoming e tasi, le vaeluaina o loʻo iai le zero poʻo le tasi mata. O lenei fofo fetuutuuna'i o le mea lea e malosi tele ai le quadtrees pe a fa'atusatusa i se fa'asologa mafolafola, lea e fa'ama'imau ai le tele o manatuaga i sela gaogao.

O le manatu na muamua faʻamatalaina e Raphael Finkel ma JL Bentley i le 1974, ma talu mai lena taimi ua faʻalauteleina i le tele o eseesega:point quadtreesteuga taitoalua faamaopoopoina taʻitoʻatasi, region quadtreese fai ma sui o nofoaga faʻapitoa (faʻaoga mo le faʻapipiʻiina o ata), mafaʻailoga quadtreesau. O suiga ta'itasi e fa'amalieina mo fa'aoga fa'aoga eseese, ae o le ta'iala autu o le vaevaega fa'asolosolo e tumau pea i le tutusa i latou uma.

Fa'afefea ona Fa'aofiina ma Fa'asu'esu'e

Ina ia fa'aofi se mata'itusi i totonu o le quadtree, e te amata i le node a'a ma filifili po'o fea o le fa quadrants e pa'u i ai le mata'itusi. Ona e toe fo'i lea i totonu o le pona tama o lena quadrant ma toe fai le faiga. Afai e te o'o i se pona laula'au e le'i sili atu lona malosi (e masani ona seti i le 1 po'o le 4 points), na'o lou teuina o le mata iina. Afai o le laulaau ua uma ona mafai, e vaelua i ni tamaiti se toafa, toe tufatufa atu ona vaega o loʻo i ai ia i latou, ona faʻapipiʻi lea o le togi fou i totonu o le tamaititi talafeagai. O lenei faiga e masani lava ona mae'a ile O(logn) taimi mo se tufatufaga paleni, e ui o fa'ata'ita'iga sili ona leaga ma fa'aputu fa'atasi fa'amaumauga e mafai ona fa'aleagaina ai le fa'atinoga.

Su'esu'ega o le va'aiga - su'e mea uma i totonu o se vaega fa'afa'afafa'atasi - o lo'o susulu moni ai fo'i quadtree. Nai lo le siakiina o vaega taʻitasi i lau faʻamaumauga (se O(n) faʻagaioiga), e te amata i le aʻa ma fai se fesili faigofie i pona taʻitasi: pe o fesoʻotaʻi le tuaoi o lenei node ma laʻu faʻataʻitaʻi suʻesuʻe? Afai e leai, e te tipiina le laʻau atoa - e ono faʻaumatia le faitau afe o manatu mai le iloiloga i se faʻatusatusaga e tasi. Afai ei ai se fetaulaiga, e te toe foʻi atu i tamaiti talafeagai. O togi o lo'o maua i laula'au o lo'o pa'ū i totonu o le fa'afa'afa'afa su'esu'e e fa'aopoopo i le seti o fa'ai'uga.

Manatu i se fa'ata'ita'iga fa'atino: o lo'o iai sau fa'amaumauga e 100,000 nofoaga o tagata fa'atau ma e mana'omia le su'eina o tagata uma i totonu ole 5-kilomita radius ole tatalaina o se faleoloa fou. O se faiga fa'amalosi e mana'omia le 100,000 fa'atatauga mamao. O se quadtree e lelei ona fau e mafai ona fa'aitiitia lena i le na'o le 200-500 siaki e ala i le fa'avave ona fa'ate'a'ese'ese vaega fa'afanua fa'afanua e manino lava e le fa'atasi ma lau vaega su'esu'e. O se fa'aleleia atili lena o le 200x pe sili atu — o le eseesega i le va o se su'esu'ega e 800 milliseconds ma le 4 milliseconds.

Talosaga Moni-World e Tafe i luga ole Quadtrees

O fa'aoga o quadtrees e fa'alautele mamao i tua atu o a'oa'oga fa'asaienisi komepiuta. E fa'avae i faiga e fa'aaogaina e le faitau piliona o tagata i aso uma, e masani lava e aunoa ma le iloaina.

  • Fa'afanua ma folauga: 'Au'aunaga e pei o Google Maps ma Mapbox e fa'aogaina faiga fa'a-fa'a-fa'atusa e tu'u ai ata fa'afanua. O la'asaga ta'itasi ta'itasi e vaevae ai ta'ele i ni tamaiti se to'afa, o le mea lea e mulimuli ai fa'amaopoopo fa'afanua i le mamanu z/x/y e fa'ata'ita'i ai le tautalaga o le quadtree. A e fa'ato'a i totonu o se poloka o le taulaga, e na'o le fa'aigoaina maualuga fa'atatau e utaina - o le vaega o totoe o le lalolagi o lo'o tumau pea i le fa'ai'uga lapo'a.
  • Su'esu'eina o fete'ena'iga i ta'aloga: E fa'aogaina e masini ta'aloga quadtrees (ma lo latou fa'atusa 3D, octrees) e iloa lelei pe a feto'ai mea. Nai lo le fa'ata'ita'iina o pa'aga ta'itasi uma—o le O(n²) miti taufa'amata'u ma le 1,000 fa'alapotopotoga i luga ole lau - e na'o le siakiina e le afi o mea e tutusa le quadtree cell, fa'aitiitia siaki i se numera e mafai ona fa'atonutonuina.
  • O'omi'i ata: E mafai e le vaega quadtrees ona fa'apipi'i ata e ala i le tu'ufa'atasia o pika fa'atasi e fa'asoa lanu tutusa i poloka tetele. O le fa'avae lea o nisi o algorithms fa'amalosi e maua ai le 10:1 fa'atatau fa'amalosi a'o fa'atumauina le fa'amaoni va'aia i vaega e maualalo fa'amatalaga.
  • Fa'afoega o va'a ma mea fa'atatau: E fa'aogaina e kamupani ti'ava'a le fa'asinomaga fa'afanua e fa'afetaui ai aveta'avale ma oka lata ane i le taimi moni. O le quadtree e tu'uina atu i se fa'atonuga e tali vave ai le fesili "o le a le 5 aveta'avale e latalata i le nofoaga lea e piki ai?" i luga o le va'a afe o ta'avale e fa'afou a latou tulaga GPS i nai sekone uma.
  • Au'ili'iliga fa'afanua: Fa'avae e tu'ufa'atasia ai fa'amatalaga pisinisi fa'atatau i nofoaga - fa'afanua fa'ato'a tele tagata fa'atau, fa'atauga fa'atauga fa'atauga, su'esu'ega tu'ufa'atasiga o faleoloa - fa'alagolago i fa'asologa o fa'amatalaga fa'ava-o-malo e fa'afeso'ota'i ai nei fesili nai lo le fa'aputuga.

O le fa'amatalaga autu i tua atu o quadtrees o le tele o fesili fa'apitonu'u e le mana'omia le su'esu'eina o le tele o fa'amaumauga. E ala i le fa'atulagaina o avanoa fa'apitoa, e te fa'aliliuina ai su'esu'ega fa'amalosi i femalagaiga fa'atatau - liliu sekone i milliseconds ma fa'atupu ai le fegalegaleai i taimi moni e o'o lava ile tele o fa'amaumauga.

Fausiaina o le Quadtree Mai le Masini

O le fa'atinoina o se quadtree fa'avae e matua'i fa'ate'ia ona fa'alatalata'i, e o'o fo'i i tagata atina'e. O le fausaga autu e manaʻomia naʻo ni nai vaega: o setuaoi(o le vaega faatafafa o loʻo ufiufi ai le node), o segafatia(maualuga maualuga aʻo leʻi vaeluaina), sefaʻasologa o togi, ma faʻasino i le fatamaiti nodes(muamua null). Ole galuega fa'aofi atoa e mafai ona tusia i lalo ole 30 laina ole code ile tele o gagana.

O le fa'agaioiga vaeluaga e fa'atupu ai ni pona fou se fa, e ta'itasi uma e ufiufi ai le tasi fa'afa'afa ole tua'oi o matua. Mo se matua e iai le tuaoi (x, y, lautele, maualuga), e maua e le tamaititi i matu sasaʻe (x + lautele/2, y, lautele/2, maualuga/2), e maua e le itu i matu sisifo (x, y, lautele/2, maualuga/2), ma isi. A uma ona vaevae, ona toe tufa lea o vaega o iai i tamaiti talafeagai. O se mea sese masani o le galo lea e fa'amama le fa'asologa o togi a matua pe a uma ona toe tufatufa, lea e o'o atu ai i fa'ai'uga fa'alua a'o faia fesili.

Mo le fa'aogaina o le gaosiga, e tele fa'atonuga e taua. O le setiina o le malosi o le node i le 4-8 points e masani lava ona sili atu le malosi o le 1, aua e faʻaitiitia ai le loloto o le laʻau ma le pito i luga o mea faitino. Faʻaopoopoina sele maualuga maualuga(e masani lava 8-12 laʻasaga) e puipuia ai faʻamaʻi faʻamaʻi lea e tele vaega e faʻasoa faʻamaopoopo tutusa mai le fatuina o laʻau loloto e le gata. Ae mo fa'amaumauga fa'amalosi e fealua'i ai togi - pei o le tulituliloaina o ta'avale - e te mana'o i se faiga e aveese ai po'o se fuafuaga e toe fau ai le la'au i lea taimi ma lea taimi, talu ai e le fa'apaleni e le quadtrees e pei o la'au mumu-uliuli.

💡 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 →

Quadtrees i Pisinisi Fa'avae ma Iloiloga

O pisinisi fa'aonaponei fa'aonaponei ua fa'atuputeleina le fa'atautaia o fa'amatalaga fa'amanino, pe o nofoaga o tagata fa'atau, sone tilivaina, teritori fa'atau, po'o le sailia o aseta. O le lu'itau e le na'o le teuina o nei fa'amaumauga - e fa'atatau i le taimi moni i le fua. Afai e mana'omia e se pisinisi o lo'o fa'agaoioia le 50 'a'ai ona va'ava'ai i le to'atele o tagata fa'atau, ave ta'avale ti'ava'a ala, po'o le au'ili'ili o fa'atauga fa'aitulagi, o le ta'iala fa'asinomaga fa'ava-o-malo e iloa ai pe uta le dashboard i le 200 milliseconds po'o le 20 sekone.

O se tasi lea o mafuaʻaga faʻavae e pei o leMewayz - lea e tuʻufaʻatasia 207 modules spanning CRM, invoicing, pulega vaʻavaʻa, booking, ma auʻiliʻiliga i totonu o se OS pisinisi e tasi - manuia mai le faʻaogaina lelei o faʻamatalaga faʻafanua i lalo o le pulou. A mana'omia e se vaega o le pulega o va'a ona fa'aalia le 500 ta'avale malosi i luga o le fa'afanua, po'o le va'aiga a le CRM module i le 138,000+ nofoaga o lo'o fa'aogaina mo le fa'atulagaina o le teritori, o auala fa'atauva'a e le fuaina. O fausaga fa'asinomaga fa'afanua e pei o quadtrees (po'o a latou fa'amaumauga e tutusa, e pei o PostGIS R-trees ma MySQL fa'ailoga fa'afanua) e mafai ai ona tu'uina atu nei foliga e aunoa ma le mana'omia o mea faigaluega fa'apitoa.

Mo pisinisi o lo'o su'esu'eina fa'avae, e fa'aoga lelei le ave'ese: o mea faigaluega e fa'atautaia lelei le nofoaga ma fa'amatalaga fa'afanua e le na'o le fa'aogaina o algorithms fa'alelei mo le lelei. O lo'o latou faia le eseesega i le va o se faiga fa'amaufa'ailoga e mafai ona fa'aalia vave ai au'aunaga avanoa i totonu o le 10 kilomita ma le tasi e mana'omia le 8 sekone e utaina ai fa'ai'uga tutusa. Fa'atinoga i le tulaga lea e fa'aliliu sa'o i le poto masani a tagata fa'aoga ma, mulimuli ane, tupe maua.

Quadtrees vs. Isi Fa'atulagaina o Fa'amatalaga Fa'afanua

Quadtrees e le na'o le pau lea o le filifiliga mo le fa'asinomaga fa'afanua, ma o le malamalama i isi mea e fesoasoani e te filifilia ai le meafaigaluega sa'o. R-la'au, fa'aoga tele i fa'amaumauga e pei o le PostGIS ma le SQLite's R*Tree module, fa'atulaga fa'amaumauga i ni fa'afa'afa'afa la'ititi la'ititi ma fa'atautaia su'esu'ega lautele ma su'esu'ega lata ane-tuaoi ma le lelei. E masani lava ona sili atu le fa'ailoga o le quadtree mo le teuina fa'avae tisiki ona e fa'aiti'itia le fa'agaioiga I/O, o le mea lea e fa'aaoga ai e le tele o fa'amaumauga fa'afanua fa'afanua fa'apitoa e fa'aoga R-tree i totonu nai lo quadtree.

K-d trees vaeluaga avanoa e fa'aaoga ai vaeluaga fa'atutu'i fealua'i (muamua i le x, soso'o ai ma le y, toe fa'aopoopo i le x) ma e sili ona lelei mo su'esu'ega lata ane-tuaoi i le fua fa'atatau. Latou te matele atu e sili atu quadtrees pe a maualalo le dimensionality ma o le dataset e tumau, ae sili atu ona faigata ona faʻafouina malosi. Geohashese ese le faiga, fa'asolo le latitu ma le longitude i se manoa e tasi lea e fa'ailoa ai e fa'amuamua fa'atasi le vavalalata fa'afanua - e fa'aigoa lelei mo le fa'asinoina o fa'amaumauga ma le fa'asao ae fa'aitiitia le fetu'una'i mo su'esu'ega va'ava'ai.

O Quadtrees e umia a latou lava fa'ata'ita'iga e fa'atatau i lo latou malosi: fa'asinomaga fa'afanua fa'apitoa, fa'amaumauga mata'utia ma fa'aofi so'o ma tape'ese, fa'aoga fa'aaliga lea e fa'afanua fa'atusa le fa'asologa o fa'asologa o fa'afanua e fa'alava maualuga, ma tulaga e taua ai le faigofie o le fa'atinoga. Mo se talosaga pito i luma e maua ai le 10,000 fa'amatalaga fa'amatalaga i luga o se tapoleni ma pan-ma-zoom, o le quadtree fa'atinoina i laina e 100 o le JavaScript o le a sili atu le fa'atinoina o so'o se fofo e lagolagoina i fa'amaumauga i le na'o le tapeina o feso'otaiga vavave.

Amataina: Laasaga Fa'atino e Sosoo Ai

Afai e te mana'o e fa'aloloto lou malamalama i quadtrees i tua atu o le faitau e uiga ia i latou, o le auala pito sili ona aoga o le fausia lea o se tasi i le va'aiga. Fausia se talosaga tapoleni faigofie e kiliki ai e faaopoopo ai manatu, ma matamata i le vaeluaga o le laau i le taimi moni. Fa'aopoopo se ta'ifa'afa'afa'afa'afa'i e mafai ona e toso fa'ata'amilo ma fa'ailoga manatu na te maua. O lenei fegalegaleaiga lima lima e fausia ai le malamalama e leai se aofa'i o le faitau e mafai ona fetaui - o le a vave ona e va'ai pe aisea e fa'atupu ai e fa'amaumauga tu'ufa'atasi ni la'au loloto ma pe fa'apefea ona fa'ate'aina e le amio teuteu a'o fai fesili le tele o avanoa.

Mo le gaosiga o talosaga, mafaufau i ta'iala nei: afai o lo'o ola au fa'amatalaga i totonu o se fa'amaumauga, fa'aoga le fa'asinomaga fa'avanoa o lo'o tu'uina atu e lau 'upega tafa'ilagi (PostGIS, MySQL Spatial, MongoDB 2dsphere indexes) nai lo le fa'atinoina o quadtrees i le numera o talosaga. Afai o loʻo e faia le faʻataʻitaʻiga a le tagata o tausia poʻo le faʻaogaina o le mafaufau, faletusi e pei o led3-quadtreemo le JavaScript poʻo lepyquadtreemo le Python e tuʻuina atu ia te oe faʻataʻitaʻiga faʻataʻitaʻiga. Afai fo'i o lo'o e fauina se fa'avae e fa'atautaia so'o se ituaiga fa'amaumauga o nofoaga - mai i tuatusi o tagata fa'atau e o'o atu i le fa'ata'ita'iina o ala ile pulega o le teritori - fa'aalu le taimi e malamalama ai i fa'asinomaga fa'afanua, aua o le a fa'avaeina ai mea e mafai e lau talosaga ona fai i le fua.

O Quadtrees o lo'o fa'atusalia ai se fa'avae lautele i fa'asaienisi komipiuta: o le fausaga e te filifilia mo au fa'amaumauga e fuafua ai fesili e mafai ona e tali lelei. O se lisi mafolafola o faamaopoopo e mafai ona tali "tuu mai ia te a'u mea uma," ae e mafai e le quadtree ona tali "tuu mai ia te a'u mea uma e latalata i iinei" — ma e mafai ona fai vave e lagona vave ai. I se lalolagi e 73% o faʻamatalaga pisinisi o loʻo i ai se vaega faʻapitoa e tusa ai ma fua faʻatatau o pisinisi, o lena gafatia e le naʻo aʻoaʻoga. Ose avanoa fa'atauva.

Fesili e Fai soo

O le a le quadtree ma fa'afefea ona aoga?

O le quadtree ose fa'asologa o fa'amaumauga e fa'atatau i la'au lea e vaevae fa'atasi se avanoa e lua-dimensional ile fa fa'atutusa tutusa. E mafai e node ta'itasi ona fa'amauina se numera fa'atapula'a o fa'amaumauga a'o le'i vaelua i fa'atamaiti e fa. O lenei vaeluaga fa'apitoa e faia ai fesili fa'ava-o-malo - e pei o le su'eina o vaega uma i totonu o se vaega - e matua'i vave, fa'aitiitia le taimi su'esu'e mai le laina i le logarithmic i le tele o fa'ata'ita'iga fa'atino.

O fea e masani ona fa'aoga ai quadtrees i fa'aoga moni o le lalolagi?

Quadtrees e fa'aola le tele o faiga e aofia ai fa'afanua fa'afuainumera fa'atasi ai ma le fa'aogaina o le pinch-to-zoom, fa'ailoga va'ava'a mo'i taimi, masini su'esu'e fete'ena'iga taaloga vitio, ma faiga fa'amatalaga fa'afanua e fa'agaioi ai le faitau miliona o fesili fa'apitonu'u ile sekone. So'o se talosaga e mana'omia le su'esu'e lelei, fa'aofi, po'o le fa'afoeina o mea fa'asoa fa'asoa i se avanoa e lua-itu, e mafai ona fa'amanuiaina mai le fa'asino igoa o le quadtree.

E fa'afefea le fa'atusaina o quadtrees i isi fa'asologa o fa'amaumauga fa'afanua?

E le pei o fa'afanua mafolafola, o quadtrees e fetuutuuna'i a latou fa'ai'uga i le tele o fa'amaumauga - o vaega va'ava'ai e tumau pea le va'a a'o vaega tumutumu e vaevae atili. Pe a faatusatusa i laau k-d, quadtrees e sili atu ona faigofie ona faatino ma sili atu ona fetaui mo faʻamaumauga 2D faʻasoa tutusa. O la'au-R e sili atu ona lelei le taulimaina o itulagi felavasa'i, ae o quadtrees e manumalo i luga o le saosaoa fa'aofi ma sili atu ona faigofie ona fa'atusa mo galuega fa'atino i le taimi tonu.

E mafai e quadtrees ona fesoasoani i le fa'amalieina o fa'atinoga i polokalame fa'apisinisi?

E matua'i. So'o se mea faigaluega fa'apisinisi e fa'afoeina fa'amaumauga o nofoaga, su'esu'ega fa'afanua, po'o fa'ailoga feso'ota'iga e manuia mai le fa'ata'ita'iga o le quadtree. Fa'ata'ita'iga e pei o Mewayz, o le 207-module pisinisi OS e amata i le $19/mo, e fa'aogaina lelei fa'amaumauga o fa'amaumauga i tua atu o le va'aiga e tu'uina atu ai fa'amatalaga vave ma tali mai - mai fa'afanua o lo'o su'e faleoloa i su'esu'ega taimi moni i le faitau afe o fa'amaumauga.

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