Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NGT-ONNGによる近似最近傍探索

 NGT-ONNGによる近似最近傍探索

4d78b749c315e21a956053dcbf0508a9?s=128

po3rin

May 31, 2021
Tweet

More Decks by po3rin

Other Decks in Programming

Transcript

  1. M3 ৘ใݕࡧ࿦จಡΈձ #2 hiromu-nakamura @po3rin 3FBEJOHQBQFSl0QUJNJ[BUJPOPG*OEFYJOH#BTFEPOL /FBSFTU/FJHICPS(SBQIGPS1SPYJNJUZ4FBSDIJO)JHI EJNFOTJPOBM%BUBz /(50//(ʹΑΔۙࣅ࠷ۙ๣୳ࡧ

  2. தଜ߂෢ ΤϜεϦʔͷ"*ɾػցֶशνʔϜͰݕࡧج൫पΓ Λ୲౰͍ͯ͠Δɻ(P͕޷͖ɻ ֤छΞΧ΢ϯτQPSJOͰ΍ͬͯ·͢ɻ )*SPNV/BLBNVSB

  3. $POUFOUT *OUSPEVDUJPOdϕϯνϚʔΫ͔ΒݟΔ"//ͷݱঢ়d /(50//(3FMBUFE8PSL /(50//( ͓·͚

  4. *OUSPEVDUJPO dϕϯνϚʔΫ͔ΒݟΔ"//ͷݱঢ়d

  5. "//  ߴ࣍ݩͷϕΫτϧۭؒͰσʔλͷ࠷ۙ๣Λݕࡧ͢Δ͜ͱ͸ॏཁͳλεΫͰ͋Δɻ ը૾σʔληοτ͔Βྨࣅͨ͠ը૾Λݟ͚ͭΔ ৘ใݕࡧͰ͸ɺςΩετຒΊࠐΈΛ࢖༻ͯ͠ɺྨࣅهࣄΛࢀর͢Δ ಛʹਂ૚ֶशϞσϧͷ࣍ݩ਺͸૿Ճ͢Δ܏޲͕͋ΔͨΊɺ਺ඦສΛ௒͑Δߴ࣍ݩ ϕΫτϧΛݕࡧ͢Δඞཁ͕͋Γɺۙࣅ࠷ۙ๣୳ࡧ BQQSPYJNBUFOFBSFTU OFJHICPS "//

    ݕࡧํ๏͸ओྗɻ
  6. "//  ఏҊ͞Ε͍ͯΔ࠷ۙ๣ݕࡧํ๏͸ଟ਺ଘࡏ IOTX GBJTT 'BDFCPPL੡  ONTMJC લճՏ߹͞Μ͕࢖༻ 

    qBOO 0QFO$7Ͱ΋࣮૷͞Ε͍ͯΔ  &UDʜ ࠷ۙ๣୳ࡧͷϕϯνϚʔΫΛߦ͏ϓϩδΣΫτʮ#FODINBSLJOHOFBSFTUOFJHICPSTʯ <>Ͱ֤ख๏ΛλεΫ͝ͱʹൺֱՄೳɻ <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
  7. "//  ͳʹ΍Β:BIPP+"1"/ΒʹΑͬͯ/(5ͱ͍͏΋ͷ͕ੈքτοϓϨϕϧ଎౓ୡ੒ͨ͠Β͍͠<> <>IUUQTUFDICMPHZBIPPDPKQFOUSZ

  8. #FODINBSLJOHOFBSFTUOFJHICPST  <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT

  9. #FODINBSLJOHOFBSFTUOFJHICPST  <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT

  10. IUUQTBSYJWPSHBCT Αͬͯࠓճͷ࿦จ /(5 /FJHICPSIPPEHSBQIBOEUSFF ͷ࿦จ

  11. /(50//(3FMBUFE8PSL d/(50//(ొ৔·ͰͷܦҢΛ͓͑͞Δd

  12. 3FMBUFE8PSL ࠷ۙ๣୳ࡧ͸ɺπϦʔϕʔεͱάϥϑϕʔεʹେ͖͘෼ྨ͞ΕΔɻଠࣈ͸/(5ʹ࣮૷͞Ε͍ͯΔΞϧΰϦζϜɻ ˙πϦʔϕʔε LEUSFF "// LEπϦʔʹۙࣅݕࡧΛద༻͢Δํ๏  '-"// ෳ਺ͷLEπϦʔ͕ฒߦͯ͠ݕࡧ͞ΕΔϥϯμϜԽ͞ΕͨLEπϦʔ 

    ˙άϥϑϕʔε )/48 ۙࣅۙ๣άϥϑʹϨΠϠʔͷ֓೦Λಋೖ  "//( ۙࣅ,//(  1"//( ΫΤϦ࣌ؒΛ୹ॖ͢ΔͨΊʹ"//(ͷ֤ϊʔυͷΤοδΛ࡟আ͢Δ  0//( ϕϯνϚʔΫτοϓϨϕϧ
  13. "//( ϊʔυʹLݸͷ࠷ۙ๣ϊʔυ΁ͷ࿈઀Λߦ͏άϥϑɻ ࿈݁άϥϑΛอূ͠ͳ͍ͷͰ෼཭͞Εͨάϥϑ͕ൃੜ͢Δ ਤ ɻ L//( "//(<>͸ϊʔυͣͭແ޲ΤοδͰஞ࣍తʹ࿈݁͢Δ͜ͱͰ࿈݁άϥϑΛอূ͢Δ ਤ ɻ "//(

    <>IUUQTTZJNHKQJEPDTSFTFBSDI@MBCBSUJDMFTNJXBTBLJJQTKUPEQEG
  14. "//(5  ϥϯμϜʹબ୒ͨ͠ϊʔυ͔ΒάϥϑΛ୳ࡧ͢ΔͷͰάϥϑ͕େྔͷϊʔυΛ༗͢Δ৔ ߹ʹ୳ࡧίετ͕૿Ճ͢Δɻಛʹ୳ࡧى఺࣍ୈͰίετ͕௓Ͷ্͕Δɻ "//(5<>͸"//(ʹ͓͍ͯ୳ࡧى఺Λܾఆ͢ΔͷʹEWQUSFF<>Λར༻͢Δ͜ͱʹ ΑΓ௿ίετͰۙ๣ϊʔυΛ୳ࡧͰ͖Δ ਤ ɻ "//( <>IUUQTTZJNHKQJEPDTSFTFBSDI@MBCBSUJDMFTNJXBTBLJJQTKKOMQEG

    "//(5
  15. "//(5  EWQUSFF EZOBNJDWBOUBHFQPJOUUSFF ͸୳ࡧى఺ΛબͿͨΊ͚ͩʹ࢖ΘΕΔɻ͜ͷྫͰ͸ۭؒશମΛ੺ͷಉ ৺ԁɺΦϨϯδͷಉ৺ԁɺ੨ͷಉ৺ԁʹΑΓॱʹ෼ׂ͢Δ͜ͱͰ෦෼ۭؒ΁ࡉ෼Խ͠ɺͦͷ෦෼ۭؒͷแؚؔ܎ Λࣔ͢πϦʔߏ଄Λੜ੒͢Δɻ͜ΕͰ୳ࡧى఺Λେ෯ʹߜΓࠐΊΔɻಈత໦ͷߏஙΞϧΰϦζϜ͸ޙ೔ௐࠪʜ

  16. /(50//( d/(50//(ʹΑΔΤοδௐ੔d

  17. .PUJWBUJPO "//( "//(5Ͱ͸Τοδ਺ʹΑͬͯ͸࣍ͷ໰୊͕ൃੜ͢Δɻ ೖྗΤοδ͕ۃ୺ʹগͳ͍ϊʔυ͸౸ୡ͢Δ֬཰͕Լ͕ΔͷͰݕࡧ࿙Ε͢ΔՄೳ Τοδ਺͕શମతʹগͳ͍ͱԕճΓʹͳΔՄೳੑ͕͋Γɺݕࡧ࿙Ε͢ΔՄೳੑ্͕͕Δ Τοδ਺͕ଟ͍ͱ୳ࡧ͕࣌ؒ૿͑Δɻ ͭ·Γ ೖྗΤοδͷ਺͸ϊʔυͰҰఆʹ͍ͨ͠ ग़ྗΤοδ਺ͷ૿ՃʹΑΔ଎౓௿Լ͕ൃੜ͠ͳ͍ൣғͰ֤ϊʔυͷೖྗΤοδ਺Λ૿΍͢ɻ ͜ΕΒΛϊʔυʹΤοδͷௐ੔ʹΑͬͯղܾ͢Δͷ͕/(50//(

    0QUJNJ[FE/FBSFTU /FJHICPST(SBQI Ͱ͋Γɺ"//(5ʹΤοδௐ੔΍ύεௐ੔Λ͔͚ͨ΋ͷͰ͋Δɻ
  18. EFHSFFBEKVTUNFOUNFUIPET QBUIBEKVTUNFOUNFUIPE /(50//(Ͱ͸ͭΤοδௐ੔๏ͱݕࡧ࣌ͷύεௐ੔๏ΛఏҊ͍ͯ͠Δɻ ੩త࣍਺ௐ੔,//(ͷΤοδͱ൓సΤοδ͔Β࡞ͬͨάϥϑͰೖग़࣍਺Λେ·͔ʹௐ੔͢Δ ੍໿෇͖੩త࣍਺ௐ੔ೖग़࣍਺ΛΑΓਖ਼֬ʹௐ੔͢Δ ಈత࣍਺ௐ੔ݕࡧ࣌ʹཁٻ͞ΕΔਫ਼౓͔Βग़࣍਺Λಈతʹܾఆ͢Δ γϣʔτΧοτΤοδআڈʹΑΔύεௐ੔ ϊʔυͷग़࣍਺͕ߴ͘ͳΓɺΫΤϦ͕࣌ؒ௕͘ͳΔͷΛͳΜͱ͔͍ͨ͠

  19. ੩త࣍਺ௐ੔ d,//(ͷΤοδͱ൓సΤοδ͔Β࡞ͬͨάϥϑͰೖग़࣍਺Λେ·͔ʹௐ੔d ·ͣ͸ϊʔυͷೖग़࣍਺Λେࡶ೺ʹἧ͍͑ͨ F@P F@J͕༩͑ΒΕͨ࣌ɺ֤ϊʔυ͔Βڑ཭͕୹͍ॱʹ F@Pݸͷग़ྗΤοδ͕બ୒͞ΕΔɻF@Jݸͷग़ྗΤοδ ΋୹͍ॱʹબ୒͞ΕΔɻ બ͹ΕͨF@Pݸͷग़ྗΤοδ܈͸ͦͷ··࠾༻͠ɺF@J ݸͷग़ྗΤοδ܈͸શͯ൓సͯ͠ೖྗΤοδͱͯ͠࠾ ༻͢Δɻ

    ࠨਤ͸L F@P F@Jͷ࣌Λࣔ͢ɻେ·͔ʹFP  FJʹ࣍਺͕ἧ͑ΒΕ͍ͯΔɻ ࿦จͰ͸͜ΕΛௐ੔άϥϑͱ໋໊͍ͯ͠Δɻ ௐ੔ ݸͷΤοδ eo ݸͷ൓సΤοδ ei
  20. ੍໿෇͖࣍਺ௐ੔ தଜ͕·ͩཧղͰ͖ͯͳ͍આ  dೖग़࣍਺ΛΑΓਖ਼֬ʹௐ੔͢ΔͨΊͷ੍໿෇͖ͷ࣍਺ௐ੔d ઌ΄Ͳͷํ๏ͩͱେࡶ೺ʹ࣍਺Λௐ੔Ͱ͖Δ͕ɺҰ෦ͷϊʔυ͸ߴ ͍ग़࣍਺Λ࣋ͭ܏޲͕͋Δɻͦ͜Ͱɺग़ࣗ਺Λ૿΍͞ͳ͍Α͏ʹೖ ग़࣍਺Λௐ੔͢Δํ๏͕௥ՃͰఏҊ͞Ε͍ͯΔɻ ઌ΄ͲͷΞϧΰϦζϜͰF@PͰੜ੒͞ΕΔௐ੔άϥϑ(@UΛੜ੒ ͢Δɻ(@JΛߏஙதͷάϥϑ(@Fͷసஔάϥϑͱ͢Δɻ (@U಺ͷϊʔυͷग़࣍਺ͷঢॱͰͭͷϊʔυ͕બ୒͞Εɺͦͷ

    ϊʔυͷྡ઀ϊʔυͷ͍ۙॱͦΕͧΕʹ͍ͭͯɺ(@Jͷྡ઀ϊʔυ ͷग़࣍਺͕F@JΑΓ௿͘ɺ(@Fͷϊʔυͷग़࣍਺͕F@PΑΓ௿͍৔ ߹ɺྡ઀ϊʔυͱͷΤοδ͕(@Fʹ௥Ճ͞ΕΔɻ (@FϊʔυʹF@PݸͷΤοδؚ͕·ΕΔ·ͰɺݩͷάϥϑͷΤοδ ͕ϊʔυʹ௥Ճ͞Ε·͢ɻ
  21. ௐ੔ Gt Ge Gi Gt Ge Gi F@J F@P L

    Ge TUBHF݁Ռ ˔ ˔ ˔ ࠷ޙͷϊʔυ·Ͱॲཧ ੍ݶ෇͖੩త࣍਺ௐ੔TUBHF ඞͣ͠΋࿈઀άϥϑʹͳΒͳ͍ʁ
  22. Ge Ge G 4UBHF ੍ݶ෇͖੩త࣍਺ௐ੔TUBHF F@J F@P L ඞͣ͠΋࿈઀άϥϑʹͳΒͳ͍ʁΜʁʁ ࠓޙཁௐࠪ

  23. γϣʔτΧοτΤοδআڈʹΑΔ ύεௐ੔ EWQUSFFΛ࢖༻ͯ͠ΫΤϦʹ΄΅ྡ઀͢ΔϊʔυΛ୳ ࡧى఺ͱ͍ͯ͠ΔͨΊɺγϣʔτΧοτΤοδ͸ແବ ʹग़࣍਺Λ૿΍͍ͯ͠Δ৔߹͕͋Δɻ ͜ͷΑ͏ͳΤοδΛ࡟আ͢ΔͱΫΤϦ࣌ؒΛ୹ॖͰ͖ Δɻ ୅ସύε͕ͭҎ্ͷϊʔυͰߏ੒͞Ε͍ͯΔ৔߹ ࠨ ਤB

    Λ࡟আ͠Α͏ͱ͢ΔͱΫΤϦ࣌ؒͷํ͕େ͖͘ͳ ΔͨΊͭͷϊʔυͰߏ੒͞Ε͍ͯΔύεͷΈ͕࡟আ͞ ΕΔ ࠨਤCͷ৔߹ ɻ γϣʔτΧοτΤοδ͕୅ସύε಺ͷΤοδΑΓ୹͍ ৔߹ ࠨਤD ͷΑ͏ͳ৔߹͸࡟আ͞Εͳ͍ɻ
  24. ಈత࣍਺ௐ੔ dݕࡧ࣌ʹཁٻ͞ΕΔਫ਼౓͔Βग़࣍਺Λಈతʹܾఆ͢Δd ߴਫ਼౓͕ඞཁͳ৔߹͸ߴ͍ग़࣍਺͕ඞཁɻҰํͰ଎౓ ͕༏ઌ͞ΕΔ৔߹͸ߴ͍ग़࣍਺͸ෆཁɻ͕ͨͬͯ͠ɺ ग़࣍਺͸ݕࡧ࣌ʹಈతʹௐ੔Ͱ͖Δͱخ͍͠ɻ ୳ࡧ࣌ʹߟྀ͢Δग़࣍਺͸ਫ਼౓ௐ੔ύϥϝʔλЏͷؔ ਺Ͱ͋ΔFQΛೖྗͱͯ͠ௐ੔͢Δɻ ਫ਼౓ௐ੔ύϥϝʔλͷЏ͸୳ࡧ൒ܘʹ΋ӨڹΛ༩͑ Δɻͭ·Γ,OO4FBSDIͷਫ਼౓Λೋͭͷ؍఺Ͱܾఆ͢ Δɻ

  25. 74NFUIPET %"͕࠷΋ڑ཭ܭࢉ͕গͳ͘ࡁΉɻ σʔληοτʹΑͬͯ͸4"Ͱ͑͞΄΅࠷ྑͷάϥϑߏ଄ΛߏஙͰ͖Δɻ 4"$͸ɺ(*45ͷΑ͏ͳߴ࣍ݩͷσʔληοτʹޮՌత͔΋͠Εͳ͍ɻ 4"ͱ4"$ͷ࣍਺͸%"ͷ࣍਺ΑΓ΋গͳ͍ͨΊϝϞϦ࢖༻ྔͷ࡟ݮΛ༏ઌ͢Δඞཁ͕͋Δ৔߹͸ɺ4"·ͨ͸ 4"$͕બ୒ࢶͱͳΔɾ

  26. 3FTVMUT σʔληοτ͝ͱͷ֤छ࠷ۙ๣୳ࡧख๏ൺֱ

  27. ग़࣍਺ΛݮΒ͢ɻೖ࣍਺͸Ұఆʹ͢ΔΤοδௐ੔ͱ͍͏ΞΠσΞ͸໘ന͍ɻ ͨͩಈతͳߋ৽ɺ࡟আΛߟྀͯ͠ͳ͍ͷͰɺΞϓϦέʔγϣϯͰ࢖͏ͷ͸ෆ޲ ͖ɻ੩తͳݕࡧʹ͸࢖͑Δ͚Ͳͦ͏ͳΔͱ࢖͍Ͳ͜Ζ͕ɻɻ 7BME΋/(50//(͸αϙʔτ͠ͳ͍ͱݴ͍ͬͯΔɻͦΓΌͦ͏ɻ ΍͸Γੈ͸)/48࣌୅ͳͷ͔ ॴײ

  28. ͓·͚ͱิ଍

  29. <>IUUQTHJUIVCDPNWEBBTWBME 7BME<>͸/(5ϥΠϒϥϦΛ࢖ͬͨ෼ࢄϕΫτϧݕࡧΤϯδϯɻLTGSJFOEMZͰɺ )FMNͰҰܸͰσϓϩΠ͕Մೳɻ௨৴͸H31$Λ࢖͍ͬͯΔɻ͔͠΋(P੡ΧοέΣɻ ΫϥΠΞϯτϥΠϒϥϦ΋ఏڙ͞Ε͓ͯΓ1ZUIPO (P /PEFKTͳͲʹରԠ͍ͯ͠Δɻ

  30. ͨͩ7BMEͩͱ/(5"0//(͔͠ରԠͯ͠ͳ͍͍͘͞ɻɻɻ ࠶ߏஙͱ෼ࢄΤϯδϯ͕೉ͦ͠͏ͩ͠ɻɻɻ OHUίϚϯυ΋Τοδௐ੔ܥΞϧΰϦζϜ͸໌ࣔతʹ࠶ߏஙΛୟ͘ܗࣜʹͳ͍ͬͯΔɻ ϕϯνϚʔΫݟΔͱΤοδௐ੔͕ಈతʹͰ͖ͳ͍ͱ·ͩ)/48ܥʹ܉ഋ্͕͕Γͦ͏ɻ

  31. ͻΌʔʔʔ

  32. ͓·͚ େ·͔ͳ੩తͳ࣍਺ௐ੔ํ๏ͷग़ॴ ͳͥ͜ͷΞΠσΞ͕ग़ͯ͘Δ͔ɻ

  33. ͓·͚ σʔληοτ͝ͱͷग़࣍਺ͷฏۉ

  34. શͯΛաڈʹ͢Δ4DB//