Hacker News

Intro mmekọrịta maka osisi anọ

Okwu

16 min read Via growingswe.com

Mewayz Team

Editorial Team

Hacker News

Gịnị kpatara Quadtrees ji dị mkpa karịa ka ị chere

Oge ọ bụla ị tuo-na-bugharị na maapụ dijitalụ, jụọ ụlọ nri dị nso, ma ọ bụ lelee ezigbo ụgbọ mmiri tracker na-emelite ọtụtụ akara ngosi ụgbọ ala na-enweghị ihe nchọgharị gị na-egweri kwụsị, enwere ohere dị mma quadtree na-ebuli elu n'azụ ihe nkiri ahụ. Quadtrees bụ otu n'ime usoro data mara mma nke ọtụtụ mmadụ anaghị anụ maka ya, mana ha na-eji nwayọ na-akwado ụfọdụ sistemụ kacha arụ ọrụ na sọftụwia ọgbara ọhụrụ - site na nchọpụta egwuregwu vidiyo ruo na sistemụ ozi mpaghara na-ahazi nde ajụjụ gbasara oghere kwa nkeji. Ịghọta ka ha si arụ ọrụ ọ bụghị naanị na-eme ka ị bụrụ onye nrụpụta ka mma; ọ na-agbanwe n'ụzọ bụ isi ka ị na-eche maka ịhazi na ịchọ site na data gbasara ohere. Ma ị na-ewu usoro ngwa ngwa nnyefe, dashboard nyocha dabere na ọnọdụ, ma ọ bụ na ị na-achọ naanị ịnye 50,000 data na kwaaji na-emebighị ihe nchọgharị ahụ, quadtrees na-enye azịza nke nwere nghọta na nke na-arụ ọrụ nke ọma.

Gịnị bụ kpọmkwem Quadtree?

Quadtree bụ usoro data osisi ebe ọnụ ụlọ ọ bụla nwere kpọmkwem ụmụaka anọ, nke ọ bụla na-anọchi anya otu akụkụ anọ nke oghere akụkụ abụọ. Were ya na ị were mpaghara square wee kewaa ya n'okirikiri anọ nhata - ugwu ọdịda anyanwụ, ugwu ọwụwa anyanwụ, ndịda ọdịda anyanwụ, na ndịda ọwụwa anyanwụ. Enwere ike kewaa nke ọ bụla n'ime oghere ndị ahụ gaa n'akụkụ anọ ọzọ, na ihe ndị ọzọ, na-emegharị ugboro ugboro, ruo mgbe ị ruru ọnọdụ nkwụsịtụ. Ọnọdụ nkwụsị ahụ na-abụkarị ma ọ dịkarịa ala omimi ma ọ bụ ọnụ ụzọ maka ọnụọgụ data otu ọnụ nwere ike ijide tupu ọ dị mkpa ikewa.

Mma nke ụzọ a dabere na ọdịdị mmegharị ya. A na-ekewa mpaghara ndị nwere isi data n'ime sel ndị mara mma ma dị mma, ebe ebe ndị na-adịghị ahụkebe ka dị ka nnukwu mpaghara na-ekewaghị ekewa. Osisi anọ na-echekwa ebe ụlọ ahịa kọfị 10,000 n'ofe obodo ga-emepụta nkewa miri emi na nke zuru ezu na Manhattan - ebe enwere ike ịnwe ụlọ ahịa 300 n'ime square kilomita ole na ole - ebe ọ na-edobe nnukwu ebe Wyoming ime obodo dị ka otu oghere na-enweghị nkewa nwere efu ma ọ bụ otu isi. Mkpebi a na-emegharị emegharị bụ ihe na-eme quadtrees dị ike ma e jiri ya tụnyere grid dị larịị, nke ga-emebi nnukwu ebe nchekwa na sel efu.

Ebu ụzọ kọwaa echiche a site na Raphael Finkel na JL Bentley na 1974, ebe ọ bụ na mgbe ahụ ọ abanyela n'ọtụtụ dịgasị iche iche:point quadtreesechekwara ụzọ nhazi nke ọ bụla, mpaghara quadtreesna-anọchi anya oghere oghere (bara uru maka mkpakọ ihe oyiyi), naedge handtrees and curtrees. Ọdịiche dị iche iche na-ebuli elu maka ikpe ojiji dị iche iche, mana ụkpụrụ nke ngalaba recursive recursive ka bụ otu n'ime ha niile.

Olee otú ntinye na ajụjụ si arụ ọrụ

Iji tinye isi n'ime quadtree, ị ga-amalite na oghere mgbọrọgwụ wee chọpụta nke n'ime akụkụ anọ ahụ isi ihe dabara na ya. Ị ga-abanyeghachi na ọnụ ọnụ nwa nke anọ ahụ wee megharịa usoro ahụ. Ọ bụrụ na ị ruru ọnụ akwụkwọ nke na-agafebeghị ike ya (nke a na-emekarị ka ọ bụrụ isi 1 ma ọ bụ 4), ị ga-echekwa isi ebe ahụ. Ọ bụrụ na akwụkwọ ahụ adịlarị ike, ọ na-ekewa n'ime ụmụaka anọ, na-ekesa isi ihe dị n'etiti ha, wee tinye isi ihe ọhụrụ n'ime nwatakịrị kwesịrị ekwesị. Usoro a na-agwụcha n'oge O(log n) maka nkesa ziri ezi, n'agbanyeghị na ọnọdụ kachasị njọ nwere data nwere nnukwu ụyọkọ nwere ike imebi arụmọrụ.

Ajụjụ nso - ịchọta isi ihe niile n'ime mpaghara akụkụ anọ enyere - bụ ebe osisi anọ na-enwu n'ezie. Kama ịlele isi ihe ọ bụla na ọrụ dataset (O(n) gị), ị na-amalite na mgbọrọgwụ wee jụọ ajụjụ dị mfe n'ọnụ ọnụ nke ọ bụla: oke ọnụ nke a ọ na-ejikọta na rectangle ọchụchọ m? Ọ bụrụ na ọ bụghị, ị ga-egbutu osisi sub-osisi ahụ dum - nwere ike iwepụ ọtụtụ puku isi na ntụnyere n'otu ntụnyere. Ọ bụrụ na enwere njikọ, ị ga-abanye n'ime ụmụaka ndị metụtara ya. A na-agbakwunye isi ihe ndị dị n'ọnụ ọnụ akwụkwọ ndị dabara n'ime rectangle ọchụchọ na arụpụtaghị ihe.

Tụlee ihe atụ bara uru: ị nwere ebe ndị ahịa 100,000 na ịchọrọ ịchọta onye ọ bụla n'ime oghere 5 kilomita nke oghere ụlọ ahịa ọhụrụ. Usoro ike siri ike chọrọ mgbako anya 100,000. Osisi anọ a rụrụ nke ọma nwere ike ibelata nke ahụ gaa na nlele 200-500 site n'iwepụ ngwa ngwa mpaghara mpaghara niile na-anaghị agafe na mpaghara ọchụchọ gị. Nke ahụ bụ nkwalite arụmọrụ nke200x ma ọ bụ karịa- ọdịiche dị n'etiti ajụjụ na-ewe 800 milliseconds na iwere 4 milliseconds.

Ngwa ụwa dị adị nke na-agba na Quadtrees

Ngwa nke osisi quadtree gafere sayensị kọmputa agụmakwụkwọ. Ha bụ ntọala maka sistemụ ọtụtụ ijeri mmadụ na-eji kwa ụbọchị, mgbe mgbe n'amaghị ama.

  • Map na igodo: Ọrụ dị ka Google Maps na igbe mapụ na-eji sistemu taịlị quadtree na-enye eserese eserese. Ọkwa mbugharị ọ bụla na-ekewa taịlị n'ime ụmụaka anọ, nke mere na nhazi tile map na-agbaso ụkpụrụ z/x/y nke na-egosipụta okwu quadtree. Mgbe ị na-ebuba n'ime ngọngọ obodo, naanị ibu taịlị nwere mkpebi dị elu - ụwa ndị ọzọ na-anọ na mkpebi siri ike.
  • Nchọpụta nhụta n'ime egwuregwu: Igwe egwuregwu na-eji quadtrees (na ogbo ha 3D, octrees) iji chọpụta nke ọma mgbe ihe na-agbakọ. Kama ịnwale ụdị ihe abụọ ọ bụla - ihe nro O(n²) nwere ụlọ ọrụ 1,000 na ihuenyo - injin ahụ na-enyocha naanị ihe ndị na-ekerịta otu cell quadtree, na-ebelata ndenye ego gaa na nọmba enwere ike ịchịkwa.
  • Mkpakọ onyogho: Mpaghara anọ nwere ike ịpịkọta onyonyo site na ijikọ pikselụ dị n'akụkụ na-ekerịta agba yiri ya ka ọ bụrụ nnukwu ngọngọ. Nke a bụ ihe ndabere nke ụfọdụ algọridim mkpakọ na-enweta 10:1 mkpakọ ọnụ ebe na-edobe iguzosi ike n'ihe anya na mpaghara nkọwa dị ala.
  • Njikwa ụgbọ mmiri na ngwa agha: Companieslọ ọrụ ndị na-ebunye ihe na-eji indexing spatial indexing dakọtara ndị ọkwọ ụgbọala nwere iwu dị nso ozugbo. Otu quadtree na-ahapụ sistemụ izipu ozi ozugbo zaa ajụjụ a "Olee ndị ọkwọ ụgbọ ala 5 kacha nso na ebe a na-ebuli elu?" gafee ọtụtụ puku ụgbọ ala na-emelite ọnọdụ GPS ha kwa sekọnd ole na ole.
  • Geospatial analytics: Platforms na-achịkọta data azụmaahịa dabere na ọnọdụ - maapụ njupụta ndị ahịa, njikarịcha mpaghara ahịa, nyocha ebe nchekwa - dabere na nhazi data gbasara ohere iji mee ka ajụjụ ndị a na-emekọrịta ihe karịa ka hazie ya.
Isi nghọta dị n'azụ quadtrees bụ na ọtụtụ ajụjụ gbasara ohere adịghị mkpa inyocha ọtụtụ data. Site n'ịhazi oghere n'usoro n'usoro, ị na-agbanwe ọchụchọ ike ike ka ọ bụrụ njem ndị ezubere iche - na-atụgharị sekọnd ka ọ bụrụ milliseconds ma mee ka mmekọrịta dị adị n'ezie kwe omume ọbụlagodi na nnukwu datasets.

Imepụta Quadtree Site na Scratch

Imejuputa otu osisi quadtree bụ ihe ịtụnanya na-abịaru nso, ọbụlagodi maka ndị mmepe etiti. Isi ihe owuwu ahụ chọrọ naanị ihe ole na ole: aoke(akụkụ akụkụ akụkụ anọ nke ọnụ na-ekpuchi), ike(isi ihe kachasị tupu nkewa), ihe nhazi, na ntụnyere aka anọọnụ ọnụ ụmụaka(mbido efu). Enwere ike dee ọrụ ntinye niile n'okpuru ahịrị koodu 30 n'ọtụtụ asụsụ.

Ọrụ nkewa ahụ na-emepụta ọnụ ọnụ ụmụaka anọ, nke ọ bụla na-ekpuchi otu akụkụ anọ nke ókèala nne na nna. Maka nne na nna nwere oke (x, y, obosara, ịdị elu), nwa ugwu ọwụwa anyanwụ na-enweta (x + obosara/2, y, obosara/2, elu/2), ugwu ọdịda anyanwụ na-enweta (x, y, obosara/2, elu/2), na ihe ndị ọzọ. Mgbe nkewa gasịrị, a na-ekesa isi ihe ndị dị ugbu a ka ọ bụrụ ụmụaka kwesịrị ekwesị. Otu ndudue a na-enwekarị bụ ichefu ikpochapụ ntụzịaka nne na nna ma e kesasịa ya, nke na-ebute nsonaazụ oyiri n'oge ajuju.

Maka mmepụta ihe, ọtụtụ njikarịcha dị mkpa. Ịtọtịpụ ikike ọnụ ọnụ na isi 4-8 na-egosipụtakarị ikike nke 1, n'ihi na ọ na-ebelata ịdị omimi osisi na n'elu ihe ọnụ. Ịgbakwunyeoke omimi kachasị(na-abụkarị ọkwa 8-12) na-egbochi ọrịa pathological ebe ọtụtụ isi na-ekekọrịta nhazi otu site na ịmepụta osisi miri emi na-enweghị ngwụcha. Na maka dynamic datasets ebe isi ihe na-agagharị - dị ka nleba anya ụgbọ ala - ị ga-achọ usoro iwepụ ma ọ bụ atụmatụ iji wughachi osisi ahụ kwa oge, ebe ọ bụ na quadtrees adịghị echekwa onwe ya dị ka osisi na-acha uhie uhie na-eme.

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

Osisi anọ na nyiwe azụmahịa na nyocha

Mkpokọta azụmahịa nke oge a na-ejiwanye data gbasara ohere, ma ọ bụ ebe ndị ahịa, mpaghara nnyefe, mpaghara ahịa, ma ọ bụ nleba anya akụrụngwa. Ihe ịma aka abụghị naanị ịchekwa data a - ọ na-eme ka ọ bụrụ ihe a na-ajụ ajụjụ ozugbo n'ogo. Mgbe azụmahịa na-arụ ọrụ n'ofe obodo 50 kwesịrị iji anya nke uche hụ njupụta nke ndị ahịa, ndị ọkwọ ụgbọ ala na-ebuga ụzọ, ma ọ bụ nyochaa arụmọrụ ahịa mpaghara, usoro ntọhapụ oghere na-ekpebi ma dashboard ahụ na-ebu na milliseconds 200 ma ọ bụ 20 sekọnd.

Nke a bụ otu ihe kpatara nyiwe dị kaMewayz - nke jikọtara modul 207 na-agbasa CRM, akwụkwọ ọnụahịa, njikwa ụgbọ mmiri, ntinye akwụkwọ, na nyocha n'ime otu OS azụmaahịa - na-erite uru site na njikwa data gbasara oghere dị mma n'okpuru mkpuchi. Mgbe modul njikwa ụgbọ ala kwesịrị igosipụta ụgbọ ala 500 na-arụ ọrụ na maapụ, ma ọ bụ mgbe modul CRM na-ahụ anya ebe ndị ọrụ 138,000+ maka nhazi ókèala, ụzọ enweghị isi adịghị abawanye. Ọdịdị oghere dị ka quadtrees (ma ọ bụ data data ha dakọtara, dị ka PostGIS R-osisi na MySQL spatial indexes) na-eme ka o kwe omume ịnye atụmatụ ndị a na-achọghị ngwaike ụlọ ọrụ.

Maka achụmnta ego na-enyocha nyiwe, ụzọ a na-ewe ya bara uru: ngwaọrụ ndị na-ejikwa ọnọdụ na data gbasara ohere abụghị naanị iji algọridim dị egwu maka ya. Ha na-eme ọdịiche dị n'etiti usoro ntinye akwụkwọ nke nwere ike igosi ndị na-enye ọrụ dị n'ime kilomita 10 na nke na-ewe 8 sekọnd iji buo otu nsonaazụ ahụ. Arụmọrụ n'ọkwa a na-atụgharị ozugbo na ahụmịhe onye ọrụ yana, n'ikpeazụ, ego ha nwetara.

Osisi anọ vs. Ọdịdị data gbasara ohere ndị ọzọ

Ahịhịa anọ abụghị naanị nhọrọ maka ntụnye oghere, yana ịghọta ihe ndị ọzọ na-enyere gị aka ịhọrọ ngwa kwesịrị ekwesị. R-osisi, nke a na-ejikarị na ọdụ data dị ka PostGIS na SQLite's R*Modul, hazie data n'ime rectangles kacha nta na-ejide ma jikwaa ajụjụ nso na nyocha ndị agbata obi kacha nso nke ọma. Ha na-akacha osisi anọ maka nchekwa dabere na diski n'ihi na ha na-ebelata ọrụ I/O, nke mere na ọtụtụ ọdụ data gbasara ohere na-eji R-osisi variants n'ime ime karịa quadtrees.

Oghere nkewa nke osisi K-d na-eji nkewa na-agbanwe agbanwe (nke mbụ site na x, wee site na y, wee site na x ọzọ) ma mara mma maka nchọta ndị agbata obi kacha nso n'ogo na-agafeghị oke. Ha na-akawanye osisi quadtrees mgbe akụkụ ya dị ala yana dataset kwụ ọtọ, mana ọ na-esiri ha ike imelite ngwa ngwa. Geohashes were ụzọ dị iche kpam kpam, na-edobe latitude na longitude n'ime otu eriri ebe prefixes kekọrịtara na-egosi nso nso-n'anya - na-eme ka ha dị mma maka ntụnye nchekwa data na caching mana ọ naghị enwe mgbanwe maka ajụjụ oke aka ike.

Osisi anọ na-ejide onwe ha n'ọnọdụ ndị na-arụ ọrụ na ike ha: n'ime ebe nchekwa ohere indexing, datasets dị ike na ntinye na nhichapụ ugboro ugboro, ngwa nhụta ebe usoro nhazi usoro nhazi maapụ na-eme ka ọ bụrụ ọkwa mbugharị, na ọnọdụ ebe ịdị mfe nke mmejuputa iwu dị mkpa. Maka ngwa n'ihu na-enye isi data 10,000 na kwaaji nwere pan-na-zoom, quadtree emejuputa atumatu na ahịrị 100 nke Javascript ga-eme ka ihe ngwọta ọ bụla na-akwado nchekwa data naanị site na iwepu latency netwọk.

Malite: Usoro Na-esote Bara Uru

Ọ bụrụ n’ịchọrọ ime ka nghọta gị dị omimi banyere osisi anọ karịa ịgụ gbasara ha, ụzọ kacha dị irè bụ iwulite anya. Mepụta ngwa kanvas dị mfe ebe ịpị na-agbakwunye isi, wee lelee ka osisi na-ekesa ozugbo. Tinye akụkụ anọ-ajụjụ ọnụ nke ị nwere ike ịdọrọ gburugburu wee gosi isi ihe ọ chọtara. Mkpakọrịta aka a na-ewulite nghọta na enweghị ọgụgụ ọgụgụ nwere ike dakọtara - ị ga-ahụ ozugbo ihe kpatara nchịkọta data ji emepụta osisi dị omimi yana ka omume ịkwachaa n'oge ajụjụ na-ewepụ nnukwu oghere.

Maka ngwa mmepụta, tụlee ntuziaka ndị a: ọ bụrụ na data gị bi na nchekwa data, jiri nchọta oghere nchekwa data gị na-enye (PostGIS, MySQL Spatial, MongoDB 2dsphere indexes) kama ịmejupụta quadtrees na koodu ngwa. Ọ bụrụ na ị na-eme nleba anya n'akụkụ ndị ahịa ma ọ bụ nhazi ebe nchekwa, ụlọ akwụkwọ dị kad3-quadtreemaka Javascript ma ọ bụpyquadtreemaka Python na-enye gị mmejuputa a nwalere agha. Ma ọ bụrụ na ị na-ewu ikpo okwu nke na-ejikwa ụdị data ọnọdụ ọ bụla - site na adreesị ndị ahịa ruo na mbufe ụzọ gaa na njikwa ókèala - tinye oge iji ghọta nkọwa gbasara oghere, n'ihi na ọ ga-akpụzi ihe ngwa gị nwere ike ime n'ogo.

Osisi anọ na-anọchi anya ụkpụrụ sara mbara na sayensị kọmputa: na nhazi nke ị họọrọ maka data gị na-ekpebi ajụjụ ị nwere ike ịza nke ọma. Ndepụta nhazi dị larịị nwere ike ịza "nye m isi ihe niile," mana quadtree nwere ike ịza "nye m isi ihe niile dị nsoebe a" - ọ pụkwara ime ya ngwa ngwa iji nwee mmetụta ozugbo. N'ime ụwa ebe 73% nke data azụmaahịa nwere mpaghara oghere dịka atụmatụ ụlọ ọrụ siri dị, ikike ahụ abụghị naanị agụmakwụkwọ. Ọ bụ uru asọmpi.

Ajụjụ a na-ajụkarị

Gịnị bụ quadtree na kedu ka ọ si arụ ọrụ?

Akụkụ quadtree bụ nhazi data dabere na osisi nke na-ekewa ugboro ugboro oghere oghere abụọ n'ime akụkụ anọ nhata. Ọnụ ọnụ nke ọ bụla nwere ike ijide ọnụ ọgụgụ data dị ntakịrị tupu ekewa n'ime ọnụ ọnụ ụmụaka anọ. Nkewa nhazi ọkwa a na-eme ajụjụ gbasara ohere - dị ka ịchọta isi ihe niile n'ime mpaghara enyere - oke ọsọ ọsọ, na-ebelata oge ọchụchọ site na linear gaa na logarithmic n'ọtụtụ ọnọdụ dị irè.

Olee ebe a na-ejikarị osisi anọ eme ihe na ngwa ụwa?

Osisi anọ na-arụ ọrụ dị iche iche gụnyere maapụ dijitalụ nwere ọrụ ntụtụ-na-mbugharị, dashboards nsochi ụgbọ mmiri n'ezie, igwe nchọpụta egwuregwu vidiyo, yana sistemụ ozi mpaghara na-ahazi nde ajụjụ gbasara oghere kwa sekọnd. Ngwa ọ bụla chọrọ ịchọ nke ọma, fanye, ma ọ bụ jikwaa ihe ndị ekesara n'ofe akụkụ abụọ nwere ike irite uru na ntinye aha quadtree.

Kedu ka osisi anọ si atụnyere nhazi data gbasara oghere ndị ọzọ?

N'adịghị ka grids dị larịị, quadtrees na-emegharị mkpebi ha na njupụta data - ebe ndị na-adịghị ahụkebe na-anọkarị ebe ndị mmadụ juru na mpaghara na-ekewa n'ihu. Tụnyere osisi k-d, osisi quadt dị mfe iji mejuputa ma dabara nke ọma maka data 2D ekesara n'otu n'otu. R-osisi na-ejikwa mpaghara ndị na-agafe agafe karịa nke ọma, mana quadtrees na-emeri na ọsọ ntinye ma dị mfe iji tụnyere maka ibu ọrụ ozugbo.

Ahịhịa anọ nwere ike inye aka kwalite arụmọrụ na ngwanrọ azụmaahịa?

N'ezie. Ngwá ọrụ azụmahịa ọ bụla na-ejikwa data ọnọdụ, nyocha gbasara ohere, ma ọ bụ dashboards mmekọrịta na-erite uru site na njikarịcha quadtree. Platform dị ka Mewayz, OS azụmahịa 207-module na-amalite na $19/mo, na-eji usoro data arụ ọrụ nke ọma n'azụ ihe nkiri iji wepụta ahụmịhe ngwa ngwa, nke na-anabata - site na maapụ ebe nchekwa ruo na nyocha ozugbo gafere puku kwuru puku 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