Hacker News

Intera iganira kuri quadtree

Ibitekerezo

10 min read Via growingswe.com

Mewayz Team

Editorial Team

Hacker News

Kuki Quadtree ifite akamaro kuruta uko ubitekereza

Igihe cyose ucometse kuri zoom kurikarita ya digitale, ubaze resitora zegeranye, cyangwa urebe igihe nyacyo cyo kugenzura amato avugurura ibishushanyo byinshi byimodoka utarinze gushakisha kwawe guhagarara, hari amahirwe menshi ko quadtree ikora ibintu biremereye inyuma yinyuma. Quadtree nimwe murwego rwimibare myiza yamakuru abantu benshi batigeze bumva, nyamara bakoresheje bucece zimwe muri sisitemu zikomeye zikora cyane muri software igezweho - kuva umukino wo gukina amashusho ugaragara kugeza kuri sisitemu yamakuru ya geografiya itunganya amamiriyoni yibibazo biri mumasegonda. Kumva uburyo bakora ntibigutera gusa gutera imbere neza; ihindura byimazeyo uburyo utekereza gutunganya no gushakisha ukoresheje amakuru atandukanye. Waba wubaka ibikoresho byo gutanga ibikoresho, ikibanza gishingiye kubisesengura, cyangwa ugerageza gutanga amanota 50.000 kuri canvas utabanje guhanagura mushakisha, quadtree itanga igisubizo cyimbitse kandi gikora neza.

Niki Cyane Cyane?

Quadtree nigiti cyamakuru yimiterere aho buri node yimbere ifite abana bane neza, buri kimwe kigereranya kimwe cya kane cyumwanya wibice bibiri. Tekereza gufata akarere kare hanyuma ukagabanyamo ibice bine bingana - amajyaruguru yuburengerazuba, amajyaruguru yuburasirazuba, amajyepfo yuburengerazuba, namajyepfo yuburasirazuba. Buri kimwe muri ibyo bibanza gishobora kugabanywamo andi ane, kandi nibindi, kubisubiramo, kugeza ugeze kumiterere yo guhagarara. Iyo miterere yo guhagarara mubisanzwe ni ubujyakuzimu ntarengwa cyangwa imbago zerekana umubare w'amakuru menshi ingingo imwe ishobora gufata mbere yuko ikenera gutandukana.

Ubwiza bwubu buryo buri muri kamere yo guhuza n'imiterere. Uturere twinshi hamwe namakuru yamakuru agabanyijemo selile nziza kandi nziza, mugihe uduce duke dukomeza kuba nini, utagabanijwe. Igice cya kane kibika ahacururizwa ikawa 10,000 mu gihugu hose cyashyiraho ibice byimbitse kandi birambuye kuri Manhattan - aho hashobora kuba hari amaduka 300 muri kilometero kare - mugihe hagumye igice kinini cyicyaro cya Wyoming nkumutwe umwe, udasobanutse urimo zeru cyangwa ingingo imwe. Iki cyemezo cyo guhuza n'imihindagurikire y'ikirere nicyo gituma quadtree ikomeye cyane ugereranije na gride iringaniye, yatakaza ububiko bwinshi bwo kwibuka kuri selile irimo ubusa.

Igitekerezo cyasobanuwe bwa mbere na Raphael Finkel na J.L. Bentley mu 1974, kandi kuva icyo gihe cyashamiwe muburyo butandukanye: Buri variant ihindura uburyo bwo gukoresha imanza zitandukanye, ariko ihame ryibanze ryo kugabana kugumana kugumaho kimwe muribyose.

Uburyo Kwinjiza no Kubaza Akazi

Kugirango winjize ingingo muri quadtree, utangirira kumuzi hanyuma ukamenya imwe muri bane ya kane ingingo igwamo. Noneho usubire muri uriya mwana wa quadrant hanyuma usubiremo inzira. Niba ugeze kumababi yikibabi atarengeje ubushobozi bwayo (mubisanzwe ushyirwa kumanota 1 cyangwa 4), uhunika gusa aho. Niba ikibabi kimaze kuba gifite ubushobozi, kigabanyijemo abana bane, kigabanganya ingingo zihari muri bo, hanyuma kigashyiramo ingingo nshya mu mwana ukwiye. Ubu buryo busanzwe bwuzuza mugihe cya O (log n) mugihe cyo gukwirakwiza kuringaniza, nubwo ibintu-bibi cyane ibintu bifite amakuru menshi cyane bishobora gutesha agaciro imikorere.

Kubaza urutonde - gushakisha ingingo zose mugice runaka cyurukiramende - niho quadtree zimurika. Aho kugenzura buri ngingo imwe muri dataset yawe (imikorere ya O (n)), utangirira kumuzi ukabaza ikibazo cyoroshye kuri buri node: imbibi ziyi node zirahuza nurukiramende rwanjye? Niba atari byo, ukata subtree yose - birashoboka gukuraho ingingo ibihumbi nibitekerezo ugereranije. Niba hari ihuriro, usubiramo mubana bireba. Ingingo ziboneka mumababi yikibabi agwa murukiramende rwishakisha wongere kubisubizo byashizweho.

Reba urugero rufatika: ufite dataset yumwanya wabakiriya 100.000 kandi ukeneye kubona abantu bose mumirometero 5 ya radiyo ifunguye ububiko bushya. Uburyo bwa brute-force busaba kubara intera 100.000. Quadtree yubatswe neza irashobora kugabanya ibyo kugenzura 200-500 gusa mugukuraho byihuse uturere twose twa geografiya bidasobanutse neza nubushakashatsi bwawe. Nibyo kunoza imikorere ya 200x cyangwa irenga - itandukaniro riri hagati yikibazo gifata milisegonda 800 no gufata milisegonda 4.

Byukuri-Isi Porogaramu ikoresha kuri Quadtree

Porogaramu ya quadtree irenze kure siyanse yubumenyi bwa mudasobwa. Ni urufatiro kuri sisitemu abantu babarirwa muri za miriyari bakoresha buri munsi, akenshi batabizi.

      Urwego rwa zoom rugabanya amatafari mubana bane, niyo mpanvu ikarita yerekana ikarita ikurikiza igishushanyo cya z / x / y cyerekana indorerwamo ya kane. Iyo wikinishije mumujyi, gusa ibyingenzi biremereye byapimwe - isi isigaye iguma kumurongo mubi.
    • Kugaragaza kugongana mumikino: Moteri yimikino ikoresha quadtree (na mugenzi wabo wa 3D, octree) kugirango tumenye neza mugihe ibintu bigonganye. Aho kugerageza buri kintu cyibintu - inzozi za O (n²) hamwe nibintu 1.000 kuri ecran - moteri igenzura gusa ibintu bisangiye selile imwe, kugabanya cheque kumubare ushobora gucungwa.
    • Kwikuramo amashusho: Quadtree yakarere irashobora guhagarika amashusho muguhuza pigiseli yegeranye isangiye amabara asa mubice binini. Uru nirwo shingiro rya algorithms zimwe zo guhunika zigera ku kigereranyo cya 10: 1 mugihe gikomeza ubudahemuka bugaragara mubice bito.
      • Quadtree ireka sisitemu yohereza ihita isubiza ikibazo "ninde shoferi 5 wegereye aha hantu?" hejuru yimodoka ibihumbi n'ibihumbi ivugurura imyanya ya GPS buri masegonda make.

        Ubushishozi bwibanze inyuma ya quadtree nuko ibibazo byinshi byahantu bidakenewe gusuzuma amakuru menshi. Mugutegura umwanya muburyo bukurikira, uhindura brute-imbaraga zishakisha mubigenewe kunyura - guhindura amasegonda mo milisegonda no gutuma imikoranire nyayo ishoboka ndetse na dataseti nini.

        Kubaka Quadtree Kuva Scratch

        Gushyira mubikorwa quadtree yibanze biratangaje kwegerwa, ndetse kubateza imbere. Imiterere yibanze ikeneye ibice bike gusa: imbago (agace k'urukiramende node ifunika), ubushobozi (amanota ntarengwa mbere yo gutandukana), amanota array , hamwe no kwerekeza kuri bine imitwe y'abana (ubanza ari impfabusa). Igikorwa cyose cyo gushiramo gishobora kwandikwa munsi yimirongo 30 ya code mu ndimi nyinshi.

        Igikorwa cyo gutandukana kirema ibice bine bishya byabana, buri kimwe gitwikiriye kimwe cya kane cyumupaka wababyeyi. Kubabyeyi bafite imbibi (x, y, ubugari, uburebure), umwana wamajyaruguru yuburasirazuba abona (x + ubugari / 2, y, ubugari / 2, uburebure / 2), amajyaruguru yuburengerazuba abona (x, y, ubugari / 2, uburebure / 2), nibindi. Nyuma yo gutandukana, ingingo zihari zigabanywa mubana babereye. Ikosa risanzwe ni ukwibagirwa gukuraho ingingo zababyeyi umurongo nyuma yo kugabana, biganisha ku kwigana ibisubizo mugihe cyibibazo.

        Gukoresha umusaruro, ibintu byinshi byo guhitamo. Gushiraho ubushobozi bwa node kumanota 4-8 mubisanzwe biruta ubushobozi bwa 1, kuko bigabanya ubujyakuzimu bwibiti hamwe nubuso bwibintu. Ongeraho igipimo ntarengwa cyimbitse (mubisanzwe urwego 8-12) birinda indwara ziterwa nindwara aho ingingo nyinshi zisangira imirongo imwe yo gukora ibiti byimbitse bitagira akagero. Kandi kuri datasets zifite imbaraga aho ingingo zigenda - nko gukurikirana ibinyabiziga - uzakenera uburyo bwo kuvanaho cyangwa ingamba zo kongera kubaka igiti, kubera ko quadtree idashobora kwishyira hamwe nkibiti bitukura-umukara.

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

        Ibice bine muburyo bwubucuruzi no gusesengura

        Ihuriro ryubucuruzi bugezweho rigenda rikorana namakuru yimiterere, yaba ahantu h'abakiriya, aho bagemura, uturere two kugurisha, cyangwa gukurikirana umutungo. Ikibazo ntabwo ari ukubika aya makuru gusa - bituma ibazwa mugihe nyacyo. Iyo ubucuruzi bukorera mumijyi 50 bugomba kwiyumvisha ubwinshi bwabakiriya, abashoferi batanga inzira, cyangwa gusesengura imikorere yagurishijwe mukarere, ingamba zishingiye kumurongo zerekana aho imbaho zikorera muri milisegonda 200 cyangwa amasegonda 20.

        > Iyo module yo gucunga amato ikeneye kwerekana ibinyabiziga 500 bikora kurikarita, cyangwa mugihe moderi ya CRM yerekana 138,000+ yabakoresha mugutegura ifasi, uburyo bworoshye ntibupima. Imiterere yerekana ahantu nka quadtree (cyangwa ibingana na base de base, nka PostGIS R-ibiti na MySQL indangagaciro zerekana) bituma bishoboka gutanga ibyo biranga udakeneye ibyuma byo murwego rwo hejuru.

        Kubucuruzi busuzuma urubuga, gufata inzira ni ngirakamaro: ibikoresho bifata ahantu hamwe namakuru yimiterere neza ntabwo bikoresha algorithms nziza kubwibyo. Barimo gukora itandukaniro hagati ya sisitemu yo gutumaho ishobora guhita yerekana abatanga serivise ziboneka muri kilometero 10 nimwe ifata amasegonda 8 kugirango yikoreze ibisubizo bimwe. Imikorere kururu rwego isobanura neza muburambe bwabakoresha kandi, amaherezo, amafaranga yinjira.

        Quadtree vs Izindi nzego zububiko bwa Data

        Quadtree ntabwo aribwo buryo bwonyine bwo kwerekana urutonde, kandi gusobanukirwa nibindi bigufasha guhitamo igikoresho cyiza. R-ibiti , bikoreshwa cyane mububiko nka PostGIS na SQLite ya R * Igiti, tegura amakuru mumurongo ntarengwa ugabanya urukiramende kandi ukemure ibibazo byateganijwe hamwe nubushakashatsi bwabaturanyi hafi. Mubisanzwe barusha quadtree kububiko bushingiye kuri disiki kuko bagabanya ibikorwa bya I / O, niyo mpamvu imibare myinshi yububiko ikoresha R-igiti imbere imbere aho gukoresha kane.

        K-d ibiti umwanya wibice ukoresheje guhinduranya umurongo uhuza ibice (ubanza na x, hanyuma na y, hanyuma na x byongeye) kandi nibyiza kubushakashatsi bwabaturanyi hafi mubipimo biciriritse. Bakunda kurenza quadtree mugihe ibipimo biri hasi kandi dataset ihagaze, ariko biragoye kuvugurura imbaraga. Geohashes ifata inzira itandukanye rwose, ikubiyemo uburinganire nuburebure mumurongo umwe aho prefixes isangiwe yerekana aho yegereye - bigatuma iba nziza kubisobanuro byerekana imibare no kubika ariko ntibishobora guhinduka kubibazo bitandukanijwe.

        Quadtree ifata ibyayo muri ssenariyo ikinisha imbaraga zabo: murwibutso rwibibanza byerekana umwanya, imibare yimbaraga hamwe nugushyiramo kenshi no gusiba, amashusho yerekana amashusho aho imiterere yimiterere ya gride ya karita muburyo busanzwe bwo kugereranya urwego, nibihe aho ubworoherane bwibikorwa bishyirwa mubikorwa. Kubisaba imbere-itanga amanota 10,000 yamakuru kuri canvas hamwe na pan-na-zoom, quadtree yashyizwe mumirongo 100 ya JavaScript izarusha igisubizo icyo ari cyo cyose gishyigikiwe nububiko gusa mugukuraho ubukererwe bwurusobe.

        Gutangira: Intambwe Zikurikira

        Niba ushaka kunonosora imyumvire yawe ya kane irenze gusoma ibyayo, uburyo bwiza cyane nukubaka imwe mumashusho. Kora progaramu yoroshye ya canvas aho gukanda wongeyeho amanota, hanyuma urebe igiti kigabanijwe mugihe nyacyo. Ongeramo urutonde-rwibibazo urukiramende ushobora gukurura no kwerekana ingingo ibonye. Iyi mikoranire y'intoki yubaka ubushishozi ko nta gusoma kwinshi gushobora guhura - uzahita ubona impamvu amakuru yakusanyirijwe hamwe akora ibiti byimbitse nuburyo imyitwarire yo gutema mugihe cyibibazo ikuraho umwanya munini.

        Kubikorwa byumusaruro, tekereza kuri aya mabwiriza: niba amakuru yawe aba muri data base, koresha urutonde rwerekana ububiko bwawe butanga (PostGIS, MySQL Spatial, MongoDB 2dsphere indexes) aho gushyira mubikorwa bine muri code ya progaramu. Niba ukora umukiriya kuruhande cyangwa gutunganya-kwibuka, amasomero nka d3-quadtree ya JavaScript cyangwa pyquadtree ya Python iguha gushyira mubikorwa intambara. Niba kandi wubaka urubuga rukora ubwoko ubwo aribwo bwose bwamakuru - uhereye kuri aderesi zabakiriya kugeza kubitangwa kugeza kubuyobozi bwubutaka - shora umwanya wo gusobanukirwa urutonde rwibibanza, kuko bizahindura muburyo ibyo porogaramu yawe ishobora gukora mubipimo.

        Quadtree yerekana ihame ryagutse mubumenyi bwa mudasobwa: ko imiterere wahisemo kumakuru yawe igena ibibazo ushobora gusubiza neza. Urutonde ruringaniye rwa coordinateur rushobora gusubiza "mpa ingingo zose," ariko quadtree irashobora gusubiza "mpa ingingo zose hafi ya hano " - kandi irashobora kubikora byihuse kugirango numve ako kanya. Mw'isi aho 73% yamakuru yubucuruzi afite ibice bitandukanye ukurikije ibigereranyo byinganda, ubwo bushobozi ntabwo ari amasomo gusa. Nibyiza byo guhatanira.

        Ibibazo bikunze kubazwa

        Quadtree ni iki kandi ikora ite?

        Quadtree ni igiti gishingiye ku mibare yimiterere igabanya inshuro ebyiri umwanya munini mubice bine bingana. Buri node irashobora gufata umubare ntarengwa wamakuru mbere yo kwigabanyamo ibice bine byabana. Uku gutandukana gutondekanya gukora ibibazo byahantu - nko kubona ingingo zose mugace runaka - byihuse cyane, kugabanya igihe cyo gushakisha kuva kumurongo ugana logarithmic mubintu byinshi bifatika.

        Ni hehe quadtree ikoreshwa muburyo busanzwe bwisi?

        Quadtrees ikoresha sisitemu zitandukanye zirimo ikarita ya digitale ifite imikorere ya pinch-to-zoom, igihe nyacyo cyo gukurikirana amato, imashini yerekana amashusho yimikino, hamwe na sisitemu yamakuru ya geografiya itunganya amamiriyoni yibibazo biri mumasegonda. Porogaramu iyo ari yo yose ikeneye gushakisha neza, gushyiramo, cyangwa gucunga ibintu byagabanijwe ahantu habiri-bingana birashobora kugirira akamaro indangagaciro ya kane.

        Nigute quadtree igereranya nizindi nzego zububiko?

        Bitandukanye na gride iringaniye, quadtree ihuza imiterere yabyo nubucucike bwamakuru - uduce duke tuguma ari mubi mugihe uturere twinshi twigabanyijemo kure. Ugereranije na k-d ibiti, quadtree biroroshye kubishyira mubikorwa kandi bikwiranye no gukwirakwiza 2D amakuru. R-ibiti bifata uturere twinshi cyane, ariko quadtree itsindira umuvuduko winjiza kandi biroroshye kubangikanya kumurimo wigihe-nyacyo.

        Quadtree irashobora gufasha kunoza imikorere muri software yubucuruzi?

        Rwose. Igikoresho icyo aricyo cyose cyubucuruzi gikoresha amakuru yumwanya, isesengura ryahantu, cyangwa imbaho ​​zikorana inyungu ziva muburyo bwiza. Amahuriro nka Mewayz , OS 207-module yubucuruzi ya OS itangirira ku $ 19 / mo, ikoresha uburyo bwiza bwamakuru yatanzwe inyuma yinyuma kugirango itange uburambe bwihuse, bwitondewe - uhereye kumarita yabubiko kugeza kubisesengura nyabyo mugihe cyibihumbi.

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