Hacker News

Maysa nga interaktibo nga intro kadagiti quadtrees

Dagiti Komento

17 min read Via growingswe.com

Mewayz Team

Editorial Team

Hacker News

Apay nga Ad-adda a Napateg dagiti Quadtrees ngem iti Pampanunotem

| Dagiti quadtrees ket maysa kadagidiay nga elegante nga estruktura ti datos a saan a pulos a mangngeg ti kaaduan a tattao, kaskasdi a siuulimek a mangpabilegda kadagiti sumagmamano kadagiti kaaduan a kritikal ti panagaramid a sistema iti moderno a software — manipud iti panagduktal ti panagdinnungpar ti ay-ayam ti video aginggana kadagiti heograpiko a sistema ti impormasion a mangproseso kadagiti minilion nga espasial a panagsaludsod iti tunggal maysa a segundo. Ti pannakaawat no kasano ti panagtrabahoda ket saan laeng a mamagbalin kenka a nasaysayaat a developer; daytoy ket pundamental a mangbalbaliw no kasano ti panagpanunotmo maipapan ti panagurnos ken panagbiruk babaen ti espasial a datos. Basta mangbangbangonka iti plataporma ti lohistika ti panagited, maysa a lokasion-a-naibasar nga analitiko a dashboard, wenno basta padpadasem nga iparang ti 50,000 a puntos ti datos iti maysa a canvas a saan a mang-crash ti browser, dagiti quadtrees ket mangitukon ti solusion nga agpada a nalaka a maawatan ken naisangsangayan nga episiente.

Ania nga Eksakto ti Quadtree?

Ti quadtree ket maysa nga estruktura ti datos ti kayo a sadiay ti tunggal maysa nga akin-uneg a nodo ket addaan iti eksakto nga uppat nga annak, tunggal maysa ket mangibagi ti maysa a kuadrante ti dua-dimensional nga espasio. Panunotem nga alaem ti kuadrado a rehion ket bingayem dayta iti uppat nga agpapada a kuadrado — amianan a laud, amianan a daya, abagatan a laud, ken abagatan a daya. Tunggal maysa kadagita a kuadrado ket mabalin nga ad-adda a mabingbingay iti uppat pay a kuadrado, ken agtultuloy, a maulit-ulit, agingga a makadanonka iti sumagmamano a kasasaad ti panagsardeng. Dayta a kasasaad ti panagsardeng ket kadawyan a ti kangatuan a kauneg wenno ti pagrukodan para iti no mano a puntos ti datos ti mabalin nga iggaman ti maymaysa a nodo sakbay a kasapulan a mabingay.

Ti kinapintas daytoy nga approach ket adda iti adaptive nature-na. Dagiti lugar a napuskol kadagiti puntos ti datos ket mabingbingay kadagiti napino ken napino a selula, bayat a dagiti napardas a lugar ket agtalinaed a kas dagiti dadakkel, saan a nabingbingay a rehion. Ti maysa a quadtree a mangidulin kadagiti lokasion ti 10,000 a tiendaan ti kape iti ballasiw ti maysa a pagilian ket mangpataud kadagiti nauneg, detalyado a subdibision iti rabaw ti Manhattan — a sadiay ket mabalin nga adda dagiti 300 a tiendaan iti uneg ti sumagmamano a kuadrado a kilometro — bayat a pagtalinaedenna dagiti nalawa a paset ti away ti Wyoming a kas maymaysa, saan a nabingay a node a naglaon iti sero wenno maysa a punto. Daytoy nga adaptibo a resolusion ket isu ti mangaramid kadagiti quadtrees a nabileg unay no maidilig iti patad a grid, a mangsayang kadagiti dakkel a kaadu ti memoria kadagiti awan kargana a selula.

| Tunggal variant ket mang-optimize para kadagiti nadumaduma a kaso ti panagusar, ngem ti kangrunaan a prinsipio ti rekursibo a subdibision ket agtalinaed a kas met laeng iti ballasiw dagitoy amin.

Kasano ti Agtrabaho ti Panangikabil ken Panagsaludsod

Tapno mangikabil ti puntos iti maysa a quadtree, mangrugika iti ramut a nodo ken ikeddengmo no ania kadagiti uppat a kuadrado ti pagtinnagan ti punto. Kalpasanna agsublika iti child node dayta a quadrant ket ulitem ti proseso. No makadanonka iti leaf node a saan a nalab-awan ti kapasidadna (gagangay a naikeddeng iti 1 wenno 4 a punto), idulinmo laeng ti punto sadiay. No ti bulong ket addan iti kapasidadna, mabingay dayta iti uppat nga annak, iwarasna manen dagiti addan a puntona iti nagbaetan dagitoy, sa ikabilna ti baro a punto iti maitutop nga ubing. Daytoy a proseso ket kadawyan a makompleto iti O(log n) nga oras para iti natimbeng a pannakaiwaras, urayno dagiti kadaksan a kaso nga addaan kadagiti nangato a naurnong a datos ket mabalin a mangdadael ti panagaramid.

Panagsaludsod ti sakop — ti panagbirok kadagiti amin a puntos iti uneg ti naited a rektanggulo a lugar — ket isu ti pudno nga agsilnag dagiti kuadtro. Imbes a sukimatem ti tunggal maysa a puntos iti datasetmo (maysa nga O(n) nga operasion), mangrugika iti ramut ken agsaludsodka iti simple a saludsod iti tunggal node: ti kadi beddeng daytoy a node ket agsinnabat iti rektanggulo ti panagbirokko? No saan, arbasam ti intero a subtree — a mabalin a mangikkat kadagiti rinibu a punto manipud iti konsiderasion iti maymaysa a panagidilig. No adda nagsangaan, agsublika kadagiti mainaig nga ubbing. Dagiti puntos a masarakan kadagiti nodo ti bulong a mairaman iti rektanggulo ti panagbiruk ket mainayon iti naurnos a resulta.

Ibilangmo ti praktikal a pagarigan: addaanka iti dataset ti 100,000 a lokasion ti kostumer ken kasapulam a sapulen ti amin iti uneg ti 5-kilometro a radius ti baro a panaglukat ti tiendaan. Ti brute-force approach ket kasapulanna ti 100,000 a kalkulasion ti distansia. Ti nasayaat ti pannakaaramidna a quadtree ket mabalin a mangkissay iti dayta iti 200-500 laeng a tseke babaen ti napardas a panangikkat kadagiti intero a heograpiko a rehion a nalawag a saan a maitunos iti lugar ti panagbirokmo. Dayta ket maysa a panagpasayaat ti panagaramid iti 200x wenno ad-adu pay — ti nagdumaan ti nagbaetan ti panagsaludsod a mangala ti 800 a milisegundos ken mangala ti 4 a milisegundos.

Dagiti Pudno-a-Lubong nga Aplikasion nga Agtartaray kadagiti Quadtrees

Dagiti aplikasion dagiti quadtrees ket adayo iti labes ti akademiko a siensia ti kompiuter. Dagitoy ket pundasional kadagiti sistema nga inaldaw nga us-usaren dagiti binilion a tattao, masansan a dida mapupuotan.

  • Panagmapa ken panaglayag: Dagiti serbisio a kas ti Google Maps ken Mapbox ket agus-usar kadagiti kasla quadtree a sistema ti baldosa tapno agserbi kadagiti ladawan ti mapa. Tunggal lebel ti panag-zoom ket mangbingbingay kadagiti baldosa kadagiti uppat nga ubbing, daytoy ti gapuna a dagiti koordinado ti baldosa ti mapa ket sumurotda ti padron ti z/x/y a mangisarming ti panagadres ti quadtree. No ag-zoom-ka iti maysa a bloke ti siudad, dagiti laeng mainaig a nangato a resolusion a baldosa ti agkarga — ti nabati a paset ti lubong ket agtalinaed iti nalukneng a resolusion.
  • Panangduktal ti panagdinnungpar kadagiti ay-ayam: Dagiti makina ti ay-ayam ket agus-usar kadagiti quadtrees (ken ti 3D a katupagda, dagiti octrees) tapno episiente a makaduktal no agdinnungpar dagiti banag. Imbes a suboken ti tunggal maysa a paris dagiti banag — ti maysa nga O(n2) a bang-ar nga addaan kadagiti 1,000 nga entidad iti iskrin — ti makina ket mangsukimat laeng kadagiti banag a makibingbingay ti isu met laeng a selula ti quadtree, a mangkissay kadagiti tseke iti maysa a maiturayan a bilang.
  • Panagkompresion ti ladawan: Dagiti region quadtrees ket mabalinda nga i-compress dagiti ladawan babaen ti panagtipon kadagiti kabangibang a pixel a makibingbingay kadagiti kapada a kolor kadagiti dakdakkel a bloke. Daytoy ti batayan dagiti sumagmamano nga algoritmo ti panagkompresion a makagun-od kadagiti 10:1 a ratio ti panagkompresion bayat a mangtengtengngel ti biswal a kinamatalek kadagiti lugar ti nababa a detalye.
  • Panagmanehar ti armada ken lohistika: Dagiti kompania ti panagited ket agus-usar ti spatial indexing tapno maipada dagiti drayber kadagiti asideg nga order iti aktual nga oras. Ti maysa a quadtree ket palubosanna ti maysa a sistema ti panagipatulod a dagus a mangsungbat ti saludsod nga "ania dagiti 5 a drayber ti kaasitgan iti daytoy a lokasion ti panagala?" iti ballasiw ti armada ti rinibu a lugan a mangpabaro kadagiti posisionda iti GPS iti tunggal sumagmamano a segundo.
  • Geospatial analytics: Dagiti plataporma a mangtipon ti datos ti negosio a naibatay iti lokasion — dagiti mapa ti densidad ti kostumer, panagoptimisar ti teritorio ti panaglako, panaganalisar ti pannakaikabil ti pagtagilakuan — ket agpannuray kadagiti estruktura ti espasial a datos tapno agbalin dagitoy a saludsod nga interaktibo imbes a batch-processed.

Ti kangrunaan a pannakaammo iti likudan dagiti quadtrees ket kaaduan kadagiti espasial a panagsaludsod ket saan a kasapulan a mangsukimat ti kaaduan a datos. Babaen ti panagurnos ti espasio iti hirarkikal, pagbalinem dagiti panagbiruk ti brute-force kadagiti naipuntiria a panagballasiw — pagbalinem dagiti segundo kadagiti milisegundos ken mangaramid ti aktual nga oras a panagtitinnulong a posible urayno kadagiti dakkel a dataset.

Panangbangon ti Quadtree Manipud iti Uso

Ti panangipatungpal ti batayan a quadtree ket nakaskasdaaw a maasitgan, urayno para kadagiti nagbaetan a developer. Ti kangrunaan nga estruktura ket kasapulanna laeng ti sumagmamano a paset: ti beddeng (ti rektanggulo a lugar a saklawen ti nodo), ti kapasidad (kaaduan a puntos sakbay ti panagbingay), ti points array, ken dagiti panangitudo kadagiti uppat nga ti ubing a nodo (iti damo a null). Ti sibubukel nga insert function ket mabalin a maisurat iti baba ti 30 a linia ti kodigo kadagiti kaaduan a pagsasao.

Ti nabingbingay nga operasion ket mangpartuat kadagiti uppat a baro nga ubing a nodo, tunggal maysa ket mangsaklaw ti maysa a kuadrado ti beddeng ti nagannak. Para iti nagannak nga addaan iti beddeng (x, y, kalawa, kangato), ti amianan a daya nga ubing ket makagun-od iti (x + kalawa/2, y, kalawa/2, kangato/2), ti amianan a laud ket makagun-od (x, y, kalawa/2, kangato/2), ken dadduma pay. Kalpasan ti pannakabingay, maiwaras manen dagiti addan a punto kadagiti maitutop nga ubbing. Ti gagangay a biddut ket ti pananglipat a mangdalus ti urnos ti puntos ti nagannak kalpasan ti pannakaiwaras manen, a mangiturong kadagiti doble a resulta bayat dagiti panagsaludsod.

Para iti panagusar ti produksion, sumagmamano nga optimisasion ti napateg. Ti panangisaad ti kapasidad ti nodo iti 4-8 a puntos ket kadawyan a nalablabes ngem ti kapasidad ti 1, gapu ta daytoy ket mangkissay ti kauneg ti kayo ken ti overhead dagiti banag ti nodo. Ti pananginayon ti kaaduan a limitasion ti kauneg (kadawyan a 8-12 a lebel) ket manglapped kadagiti patolohiko a kaso a dagiti adu a puntos ket makibingbingay kadagiti agpapada a koordinado manipud iti panagpartuat kadagiti awan patinggana a nauneg a kayo. Ket para kadagiti dinamiko a dataset a dagiti puntos ket aggaraw — kas ti panagsurot ti lugan — kayatmo ti maysa a mekanismo ti panangikkat wenno ti estratehia a periodiko a mangbangon manen ti kayo, gapu ta dagiti quadtrees ket saan a mangtimbeng ti bagida a kas dagiti nalabaga-nangisit a kayo.

💡 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 kadagiti Plataforma ti Negosio ken Analitika

Dagiti moderno a plataporma ti negosio ket umad-adu a mangtaming kadagiti espasial a datos, no daytoy ket dagiti lokasion ti kustomer, dagiti sona ti panagited, dagiti teritorio ti panaglako, wenno ti panagsurot ti sanikua. Ti karit ket saan laeng a ti panagidulin iti daytoy a datos — daytoy ket mangaramid daytoy a masaludsod iti aktual nga oras iti sukog. No ti maysa a negosio nga agtartaray iti ballasiw ti 50 a siudad ket kasapulan a mangiladawan ti densidad ti kostumer, dagiti drayber ti panagited ti ruta, wenno analisaren ti rehional a panagaramid ti panaglako, ti naibatay nga estratehia ti espasial nga indeks ket mangikeddeng no ti dashboard ket agkarga iti 200 milisegundos wenno 20 a segundo.

Daytoy ket maysa a rason dagiti plataporma a kas ti Mewayz — a mangitipon kadagiti 207 a modulo a mangsaklaw ti CRM, panag-invoice, panagmanehar ti armada, panag-book, ken analitiko iti maymaysa nga OS ti negosio — ket magunggonaan manipud iti episiente a panagtengngel ti espasial a datos iti sirok ti hood. No ti maysa a modulo ti panagmanehar ti armada ket kasapulan a mangiparang ti 500 nga aktibo a lugan iti mapa, wenno no ti maysa a modulo ti CRM ket mangiladawan kadagiti 138,000+ a lokasion ti agar-aramat para iti panagplano ti teritorio, dagiti naive nga asidegan ket saan laeng nga ag-scale. Dagiti estruktura ti espasial nga indeks a kas dagiti quadtrees (wenno dagiti katupagda iti database, a kas dagiti PostGIS R-trees ken dagiti espasial nga indeks ti MySQL) ket mangaramid a maaramid a mangitukon kadagitoy a tampok a saan a kasapulan ti enterprise-grade a hardware.

Para kadagiti negosio a mangtingiting kadagiti plataporma, ti takeaway ket praktikal: dagiti ramit a mangasikaso a nasayaat ti lokasion ken espasial a datos ket saan laeng nga agus-usar kadagiti magarbo nga algoritmo para iti pagimbagan daytoy. Ar-aramidenda ti nagdumaan ti sistema ti panag-book a dagus a mangipakita kadagiti magun-odan a mangipapaay iti serbisio iti uneg ti 10 a kilometro ken ti maysa a mangala iti 8 a segundo tapno maikarga dagiti isu met laeng a resulta. Ti panagaramid iti daytoy a lebel ket direkta nga agipatarus iti padas ti agar-aramat ken, iti kamaudiananna, ti matgedan.

Dagiti Quadtrees vs. Dagiti Dadduma nga Estruktura ti Datos ti Espasial

Dagiti quadtrees ket saan laeng a pagpilian para iti espasial nga indeks, ken ti pannakaawat kadagiti alternatibo ket makatulong kenka a mangpili ti umno nga alikamen. R-trees, a nasaknap a maus-usar kadagiti database a kas ti PostGIS ken ti modulo ti R*Tree ti SQLite, ket mangorganisar ti datos kadagiti kabassitan a panagbeddeng a rektanggulo ken mangasikaso kadagiti panagsaludsod ti saklaw ken dagiti panagbiruk ti kaasitgan-a-kaarruba a sieepisiente. Dagitoy ket sapasap a nalablabes ngem dagiti quadtrees para iti disk-based a panagidulin gapu ta dagitoy ket mangkissay kadagiti panagpataray ti I/O, daytoy ti gapuna a kaaduan kadagiti espasial a database ket agus-usar kadagiti R-tree a variant iti uneg imbes a dagiti quadtrees.

Dagiti kayo ti K-d ket mangbingbingay ti espasio babaen ti panagusar kadagiti agsinnublat nga ehe-a naitunos a panagbingbingay (umuna babaen ti x, kalpasanna babaen ti y, kalpasanna babaen ti x manen) ken nasayaat para kadagiti panagbiruk ti kaasitgan-a-kaarruba kadagiti kalalainganna a dimension. Dagitoy ket aggargaraw a manglab-aw kadagiti quadtrees no ti dimensionalidad ket nababa ken ti dataset ket estatiko, ngem dagitoy ket narigrigat nga i-update a dinamiko. Ti Dagiti geohashes ket mangala ti naiduma a wagas nga interamente, a mangikodigo ti latitud ken longitud iti maymaysa a kuerdas a dagiti naibingbingay a pangrugian ket mangipakita ti espasial a kaasitgan — a mangaramid kadagitoy a nasayaat para iti panag-indeks ti database ken panag-cache ngem saan unay a nalaka a maibagay para kadagiti arbitrario a panagsaludsod ti sakop.

| Para iti maysa nga aplikasion ti sango a murdong a mangiparang kadagiti 10,000 a puntos ti datos iti maysa a canvas nga addaan iti pan-and-zoom, ti maysa a quadtree a naipatungpal kadagiti 100 a linia ti JavaScript ket manglab-aw iti ania man a solusion a nasuportaran ti database babaen laeng ti panangikkat ti network latency.

Panangrugi: Praktikal a Sumaganad nga Addang

No kayatmo a paunegen ti pannakaawatmo kadagiti quadtrees iti labes ti panagbasa maipapan kadagitoy, ti kaepektibuan a pamay-an ket ti panangbangon iti maysa a makita. Mangaramid ti simple nga aplikasion ti canvas a sadiay ti panagpidut ket mangnayon kadagiti puntos, ken buyaen ti panagbingbingay ti kayo iti aktual nga oras. Manginayon ti range-query rectangle a mabalinmo nga i-drag iti aglawlaw ken i-highlight dagiti puntos a masarakanna. Daytoy a panagtitinnulong ti ima ket mangbangon ti intuision nga awan ti kaadu ti panagbasa a maipada — makitam a dagus no apay a dagiti naurnong a datos ket mangpartuat kadagiti naun-uneg a kayo ken no kasano a ti kababalin ti panagarbas bayat dagiti panagsaludsod ket mangikkat kadagiti dadakkel a swath ti espasio.

Para kadagiti aplikasion ti produksion, ibilang dagitoy a pagalagadan: no ti datosmo ket agnanaed iti maysa a database, usarem ti espasial nga indeks nga ipaay ti database mo (PostGIS, MySQL Spatial, MongoDB 2dsphere indexes) imbes nga implementaren dagiti quadtrees iti kodigo ti aplikasion. No agar-aramidka iti panagbuya iti sikigan ti kliyente wenno panagproseso iti uneg ti memoria, dagiti biblioteka a kas ti d3-quadtree para iti JavaScript wenno pyquadtree para iti Python ket mangted kenka kadagiti nasubok iti laban nga implementasion. Ket no mangbangbangonka ti plataporma a mangasikaso ti ania man a kita ti datos ti lokasion — manipud kadagiti adres ti kostumer aginggana iti panagruta ti panagited aginggana iti panagmanehar ti teritorio — ipuonan ti panawen tapno maawatan ti spatial indexing, gapu ta daytoy ket pundamental a mangporma no ania ti maaramid ti aplikasionmo iti sukog.

Dagiti quadtrees ket mangibagi ti nalawlawa a prinsipio iti siensia ti kompiuter: a ti estruktura a piliem para iti datosmo ket mangikeddeng kadagiti saludsod a mabalinmo a sungbatan a sieepisiente. Ti patad a listaan ​​dagiti koordinado ket mabalin a sumungbat iti "ited kaniak amin dagiti puntos," ngem ti maysa a quadtree ket mabalinna a sungbatan ti "ited kaniak amin dagiti puntos iti asideg ti ditoy" — ken daytoy ket mabalinna nga aramiden daytoy a napardas nga umdas tapno marikna a giddato. Iti lubong a ti 73% iti datos ti negosio ket addaan iti espasial a paset segun kadagiti pattapatta ti industria, dayta a kabaelan ket saan laeng nga akademiko. Maysa dayta a kompetitibo a bentaha.

Dagiti Masansan a Saludsod

Ania ti quadtree ken kasano ti panagandar daytoy?

Ti quadtree ket maysa nga estruktura ti datos a naibatay iti kayo a rekursibo a mangbingbingay ti dua-dimensional nga espasio kadagiti uppat nga agpapada a kuadrante. Tunggal nodo ket makatengngel ti limitado a bilang dagiti puntos ti datos sakbay a mabingay kadagiti uppat nga ubing a nodo. Daytoy a hirarkikal a panagbingbingay ket mangaramid kadagiti espasial a panagsaludsod — a kas ti panagbirok kadagiti amin a puntos iti uneg ti naited a lugar — a napardas unay, a mangkissay ti oras ti panagbiruk manipud iti linia aginggana iti logaritmiko kadagiti kaaduan a praktikal nga eksena.

Sadino ti kadawyan a maus-usar kadagiti quadtree kadagiti pudno a lubong nga aplikasion?

Dagiti quadtrees ket mangpabileg kadagiti nadumaduma a sistema a mairaman dagiti digital a mapa nga addaan iti pinch-to-zoom a panagandar, dagiti aktual nga oras a panagsurot ti armada a dashboard, dagiti makina ti panagduktal ti panagdinnungpar ti video game, ken dagiti sistema ti impormasion ti heograpiko a mangproseso kadagiti minilion nga espasial a panagsaludsod iti tunggal maysa a segundo. Ania man nga aplikasion a kasapulan nga episiente a mangbiruk, mangikabil, wenno mangituray kadagiti banag a naiwarwaras iti ballasiw ti dua-dimensional nga espasio ket mabalin a magunggonaan manipud iti panag-indeks ti quadtree.

Kasano a maipada dagiti quadtree kadagiti sabali nga estruktura ti datos ti espasio?

Saan a kas dagiti patad a grid, dagiti quadtrees ket mangibagayda ti resolusionda iti densidad ti datos — dagiti napardas a lugar ket agtalinaed a nalukneng bayat a dagiti napusek a rehion ket ad-adda a mabingbingayda. No maipadis kadagiti kayo ti k-d, dagiti quadtrees ket nasimsimple a maipatungpal ken nasaysayaat a maibagay para iti agpapada a naiwarwaras a 2D a datos. Dagiti R-kayo ket ad-adda a grasia a mangasikaso kadagiti agtuon a rehion, ngem dagiti quadtrees ket mangabakda iti kapartak ti pannakaikabil ken nalaklaka a maipada para kadagiti aktual nga oras a karga ti trabaho.

Mabalin kadi a makatulong dagiti quadtrees a mangpasayaat ti panagaramid iti software ti negosio?

Naan-anay nga. Aniaman nga alikamen ti negosio a mangasikaso iti datos ti lokasion, espasial nga analitiko, wenno interaktibo a dashboard ket magunggonaan manipud iti quadtree optimization. Dagiti plataporma a kas ti Mewayz, ti 207-module nga OS ti negosio a mangrugi iti $19/mo, ket mang-aprobetsar kadagiti episiente nga estruktura ti datos iti likudan ti eksena tapno mangipaay kadagiti napardas, makasungbat a padas — manipud kadagiti mapa ti mangbirok ti pagtagilakuan aginggana kadagiti aktual nga oras nga analitiko iti ballasiw dagiti rinibu a puntos ti datos.

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