Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
େنαʔϏεٕज़ೖ ୈ7ճ ISUCONରࡦษڧձ 2017/8/25
Slide 2
Slide 2 text
ୈ7ճ ΞϧΰϦζϜͷ࣮༻Խ - ۙͳྫͰݟΔཧɾݚڀͷ࣮ફೖ-
Slide 3
Slide 3 text
ΞϧΰϦζϜɾσʔλߏͷબ • େنͳΣϒαʔϏεʹ͓͍ͯ, ۪ʹσʔ λΛૢ࡞ɾ୳ࡧ͢Δͱܭࢉྔരൃ͕ى͜Δ.
Slide 4
Slide 4 text
ΞϧΰϦζϜɾσʔλߏͷબ ʮϑΧγΪͷ͑ํʯ͓Ͷ͑͞Μͱ͍ͬ͠ΐʂΈΜͳͰ͑ͯΈΑ͏ʂ https://www.youtube.com/watch?v=Q4gTV4r0zRs
Slide 5
Slide 5 text
ΞϧΰϦζϜɾσʔλߏͷબ • దͳΞϧΰϦζϜΛ༻͍Δ͜ͱͰ, େ෯ʹܭ ࢉྔΛݮΒ͢͜ͱ͕ग़དྷΔ.
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
ΞϧΰϦζϜɾσʔλߏͷબ • ࠓճֶͿ͜ͱ ‣ ΞϧΰϦζϜͷॏཁ͞ - σʔλ͕େ͖͘ͳΕͳΔ΄ͲॏཁʹͳΔ ‣ ΞϧΰϦζϜબఆεςοϓ - Φʔμʔه๏ - ࣮ࡍʹΘΕΔ·Ͱͷεςοϓ
Slide 8
Slide 8 text
Lesson 19 ΞϧΰϦζϜͱධՁ
Slide 9
Slide 9 text
σʔλͷنͱܭࢉྔͷҧ͍ • σʔλ͕େ͖͘ͳΕͳΔ΄Ͳ, ΞϧΰϦζϜ σʔλߏͷબ͕ͱͯ͠ݱΕΔ. αʔνํ๏ Φʔμʔ ઢܗ୳ࡧ ೋ୳ࡧ
Slide 10
Slide 10 text
σʔλͷنͱܭࢉྔͷҧ͍ • n=1000ͷͱ͖ͷܭࢉྔͷҧ͍ αʔνํ๏ ܭࢉྔ ઢܗ୳ࡧ ೋ୳ࡧ ͓Αͦ
Slide 11
Slide 11 text
σʔλͷنͱܭࢉྔͷҧ͍ • n=1,000,000ͷͱ͖ αʔνํ๏ ܭࢉྔ ઢܗ୳ࡧ ೋ୳ࡧ ͓Αͦ O(log2(n))σʔλͷ૿Ճʹڧ͍
Slide 12
Slide 12 text
σʔλͷنͱܭࢉྔͷҧ͍ • σʔλྔ͕গͳ͍࣌, ઢܗ୳ࡧͰྑ͍. • ͔͠͠, ݱ࣮ͷେنͳWebαʔϏεͰ, σʔ λྔ͕গͳ͍ͱ͍͏͜ͱߟ͑ʹ͍͘ • ઌఔͷΑ͏ʹ, σʔλ͕100ສ݅, 1000ສ݅ͱ૿Ճ ͍ͯ͘͠ͱ, σʔλͷ୳ࡧ͕ϘτϧωοΫͱͳͬͯ ͘Δ.ɹ→ ͳΔ͘ݮΒ͍ͨ͠
Slide 13
Slide 13 text
ΞϧΰϦζϜͱʁ • ͋Δ·ͨͷू߹Λೖྗ͠, ͋Δ·ͨͷ ू߹Λग़ྗ͢Δ, ໌֬ʹఆٛ͞Εͨܭࢉखଓ͖ͷ͜ ͱ. • ࣮ࡍʹڱٛͷҙຯͰͷΞϧΰϦζϜ, ٛͷҙຯ ͰͷΞϧΰϦζϜ͕ଘࡏ͢Δ. • ຊ࣭తͳ͜ͱͰͳ͍ͷͰলུ
Slide 14
Slide 14 text
ΞϧΰϦζϜΛֶͿҙٛ • ܭࢉࢿݯ༗ݶͰ͋Δ ‣ ༗ݶͷϦιʔεͰ͍͔ʹޮΑ͘ॲཧ͢Δ͔ • ΞϧΰϦζϜΤϯδχΞͷʮڞ௨ݴޠʯ ‣ ΞϧΰϦζϜΛ͍ͬͯΔલఏͰΛ͢Δ • ͕ࣝ͋Ε৽͍͠ʹରॲͰ͖Δ
Slide 15
Slide 15 text
ΞϧΰϦζϜͷධՁ • ΞϧΰϦζϜΛධՁ͢ΔͨΊʹ, Φʔμʔදه ͱ͍͏ͷ͕ΘΕΔ. • ೖྗͷαΠζΛnͱͨ͠ͱ͖ʹ, Ͳͷఔͷܭ ࢉྔ͕ඞཁʹͳΔ͔Λද͢ͷ. • O(n)ͱ͍͏දهΛ͢Δ.
Slide 16
Slide 16 text
ΞϧΰϦζϜͷධՁ • ྫ͑nͷେ͖͞ʹ͔͔ΘΒͣఆ࣌ؒͰॲཧ ͕ऴΘΔ߹ʢϋογϡͳͲʣ ɹ→ O(1)ͱදه͢Δ • ೖྗαΠζnʹΑͬͯ୳ࡧ͕࣌ؒมԽ͢Δͷ ʢઢܗ୳ࡧͳͲʣ ɹ→ O(n), O(nlogn), O(logn), etc…
Slide 17
Slide 17 text
ΞϧΰϦζϜͷධՁ • ΦʔμʔදهͰҎԼͷΑ͏ͳܭࢉྔ͕සग़͢Δ. • O(nlogn)͙Β͍·Ͱ͍͍͕, ͦΕҎ্ʹͳΔͱ ٸܹʹܭࢉྔ͕૿Ճ͢Δ. ‣ ࣮༻ʹת͑ΔͷO(nlogn)͙Β͍·Ͱͱߟ͑Δ.
Slide 18
Slide 18 text
ΞϧΰϦζϜͷධՁ • ΞϧΰϦζϜʹΑͬͯ, O(n^2)ͩͱͯ͠ߴͰ ͋Δͱݴ͑Δ. • ݁ہͷͱ͜Ζ, ॲཧରͷαΠζ(nͷαΠζ)ʹΑͬ ͯߴ͔Ͳ͏͔ܾ·ͬͯ͘Δ. • ۭؒ༻ྔʢϝϞϦʣΛ͡Δͱ͖ʹΦʔμʔ දهΘΕ͍ͯΔ.
Slide 19
Slide 19 text
ΞϧΰϦζϜͱσʔλߏ • σʔλߏ, ʮରͱ͢ΔσʔλΛอ࣋͢Δ·ͨ දݱ͢ΔͨΊͷߏʯ ‣ ྻߏ͕Θ͔Γ͍͢ྫ • ΞϧΰϦζϜʹదͨ͠σʔλߏΛ͏͜ͱͰ, ΑΓ ޮతʹॲཧ͢Δ͜ͱ͕ग़དྷΔ. • σʔλϕʔεͰB+Λ͍ͬͯΔ.
Slide 20
Slide 20 text
ܭࢉྔͱఆ߲ • ΦʔμʔදهͰ, ఆ߲ແࢹ͞ΕΔ. ‣ ܭࢉίετ͕3nͷ߹, O(n) ‣ ܭࢉίετ͕2n^2ͷ߹, O(n^2) • ؔݺͼग़͠, Λฦ͢, ifͰذఆ߲ѻ͍ ͞Ε͍ͯΔ.
Slide 21
Slide 21 text
ܭࢉྔͱఆ߲ • ΦʔμʔදهΞϧΰϦζϜͦͷͷΛධՁɾൺ ֱ͢Δࡍʹศར. • ࣮ࡍͷ, ଞͷܭࢉػతͳཁҼʹࠨӈ͞ΕΔ. ‣ ΩϟογϡʹࡌΓ͍͔͢Ͳ͏͔ ‣ ذ͕গͳ͍͔Ͳ͏͔
Slide 22
Slide 22 text
ܭࢉྔͱఆ߲ • ιʔτΞϧΰϦζϜͷԼݶO(nlogn)Ͱ͋Δ ͱҰൠతʹݴΘΕ͍ͯΔ. • ಉ͡ΞϧΰϦζϜͰ, ΫΠοΫιʔτ͕࠷ ૣ͍ͱݴΘΕ͍ͯΔ. ‣ ΩϟογϡʹࡌΓ͍ͨ͢Ί.
Slide 23
Slide 23 text
࠷దԽͷҙ • ࠷దԽΛߦͳ͏ࡍʹ, ఆഒΛվળ͢ΔΑΓ ΞϧΰϦζϜͦͷͷΛมߋ͠ܭࢉྔΛݮΒͤ ΔͷͳΒͦΕ͕ྑ͍. • O(n^2)ͷఆഒΛվળ͢ΔΑΓ, O(nlogn) ͷΞϧΰϦζϜ͕͋ΔͷͳΒͦͬͪΛ࠾༻͠ Α͏.
Slide 24
Slide 24 text
ΞϧΰϦζϜ׆༻ͷ࣮ࡍͷͱ͜Ζ • ཧ্ߴͳΞϧΰϦζϜΑΓ, ݹయతͳΞ ϧΰϦζϜͷ΄͏͕ૣ͍͜ͱ͋Δ. • Α͘ΒΕ͍ͯΔΞϧΰϦζϜΑΓ, φΠʔ ϒͳΞϧΰϦζϜͷ΄͏͕͍͍͜ͱ͋Δ.
Slide 25
Slide 25 text
αʔυύʔςΟʔͷ࣮Λར༻͢Δ • ఆ൪ͷΞϧΰϦζϜʹؔͯ͠, ୈࡾऀ͕ར༻͠ ͍͢Α͏ͳܗͰެ։͞Ε͍ͯΔ͜ͱ͕ଟ͍. • PerlͰ͍͏ͱ͜ΖͷCPAN • ͨͩ͠, ༷͕ࣗͨͪͷཧͱ͍͋ͬͯͳ͔ͬͨ ΓΦʔόʔεϖοΫͳ߹ࣗͨͪͰ࣮͢Δ ඞཁ͋Δ͔.
Slide 26
Slide 26 text
Lesson 20 ͯͳμΠΞϦʔͷ ΩʔϫʔυϦϯΫ
Slide 27
Slide 27 text
ΩʔϫʔυϦϯΫͱʁ • ࣗಈతʹΩʔϫʔυͷϦϯΫΛੜ͢Δͭ ʢ5ճͷ༰Ͱग़͖ͯͨͷʣ Լઢ෦͕ϦϯΫ
Slide 28
Slide 28 text
αʔυύʔςΟʔͷ࣮Λར༻͢Δ • ೖྗ͞Εͨจষʹରͯ͠, 27ສ୯ޠೖ͍ͬͯΔࣙ ॻͱϚονϯά͢Δ. • ରՕॴΛHTMLͷΞϯΧʔλάʹஔ͖͑Δ࡞ ۀΛߦ͏. ͯͳμΠΞϦʔϒϩάͰ͢
ͯͳμΠΞϦʔ
ϒϩάͰ͢
ྫ
Slide 29
Slide 29 text
ॳͷ࣮ • ॳਖ਼نදݱΛͬͨnaive algorithmΛ࠾ ༻͍ͯͨ͠. ‣ ࣙॻதʹؚ·ΕΔશ୯ޠΛORͰܨ͛Δ ‣ (foo|bar|baz|hoge|fuga|…)
Slide 30
Slide 30 text
ਖ਼نදݱϚονϯάͰͷ • αʔϏε։࢝ޙ୯ޠ͕ͦΕ΄Ͳଟ͘ͳ ͍ͨΊ, DB͔ΒͦͷͰਖ਼نදݱΛੜ࣮͠ ݱ͍ͯͨ͠. • Ωʔϫʔυ͕૿Ճ͢Δͱਖ਼نදݱͷॲཧʹ࣌ ͕͔͔ؒͬͯ͘ΔͨΊ, ࣮༻ʹ͑ͳ͘ͳΔ.
Slide 31
Slide 31 text
ਖ਼نදݱϚονϯάͰͷ • 2ͭͷՕॴʹ͕͔͔࣌ؒΔ 1. ਖ਼نදݱΛίϯύΠϧ͢Δॲཧ • ࣄલʹ࡞ͬͯΩϟογϡ͓ͯ͘͠ 2. ਖ਼نදݱͰύλʔϯϚον͢Δॲཧ • ղܾͰ͖ͣ…
Slide 32
Slide 32 text
ύλʔϯϚονͷ • ΩʔϫʔυϦϯΫͷੜʹ͕͔͔࣌ؒΔݪҼ , ਖ਼نදݱͷΞϧΰϦζϜ͕ݪҼ • ΦʔτϚτϯ͕༻͞Ε͍ͯΔ. • ଟ͘NFAʢඇܾఆੑ༗ݶΦʔτϚτϯʣ
Slide 33
Slide 33 text
ύλʔϯϚονͷ • (foo|bar|baz|…)ͱ͍͏ਖ਼نදݱ͕͋ͬͨͱ͖ foo | bar | baz | … text : d(^_^o) ෆҰக ʁ
Slide 34
Slide 34 text
ύλʔϯϚονͷ • ୯७ʹઌ಄͔Βݟ͍ͯͬͯ, Ұக͢Δ͔͠ͳ͍ ͔Λݟ͍ͯ͘. ‣ ୯ޠ͕ଟ͘ͳΔ΄Ͳॲཧ͕͘ͳΔ ‣ ୯ޠ͕গͳ͚ΕͦΕͰಈ࡞͢Δ
Slide 35
Slide 35 text
ਖ਼نදݱˠTrie • ύλʔϯϚονͷܭࢉྔΛམͱͨ͢Ίʹਖ਼ن දݱ͔ΒTrie࣮ΛΓସ͑ͨ. • TireͬͯͳΜ͚ͩͬʁ
Slide 36
Slide 36 text
ʲ෮शʳTrieͱ • Ωʔू߹Λѻ͏ͨΊͷσʔλߏͷҰछ • ࠓճͷΑ͏ͳ୯ޠͷू߹ͱ͔ • ݕࡧαΠζ͕ͷେ͖͞Ͱͳ͘୯ޠͷ͞ ʹґଘ͢Δ • ऩ݅ʹґଘ͠ͳ͍
Slide 37
Slide 37 text
ʲ෮शʳTrieͱ t e a n o i n n w e keys: tea, ten, to, i, in, inn, we
Slide 38
Slide 38 text
TrieߏͱύλʔϯϚον • TrieߏΛ͏ͱ, ਖ਼نදݱʹΑΔϚονΑΓܭࢉྔ Λݮ͢Δ͜ͱ͕Ͱ͖Δ. • ೖྗจॻΛTrieʹೖྗͯ͠ΤοδΛḷΓ, ऴ͕ݟͭ ͔Εଘࡏ͢Δ. • ܭࢉྔͷαΠζ͕ೖྗͷ͞ʹґଘ͢Δ • ΦʔτϚτϯͬΆ͍
Slide 39
Slide 39 text
AC(Aho-Corasick)๏ • ࣙॻத͔ΒύλʔϯϚονϯάΛߴʹߦ͏ ख๏. ‣ ࣙॻαΠζʹґଘ͠ͳ͍ • ػձ͕͋ΕΓ͍͙ͨΒ͍ͷؾ࣋ͪ… • ຊ࣭ใͰͳͦ͞͏ͳͷͰεΩοϓ
Slide 40
Slide 40 text
ΩʔϫʔυϦϯΫ࣮ɺมભͱߟ • ڊେͳਖ਼نදݱˠAC๏ˠRegexp::Listͱม Խ͖ͯͨ͠. • ͲͷΑ͏ʹσʔλߏͱΞϧΰϦζϜΛબఆ ͍͖͔ͯ͘͠ʁ
Slide 41
Slide 41 text
ॳظஈ֊ • σʔλ͋·Γେ͖͘ͳ͘γϯϓϧͳ࣮ → γϯϓϧΏ͑গͳͯ͘ࡁΉ → ॊೈੑʹΜ࣮ͩ → ଞͷػೳͷ࣮࣌ؒΛׂ͘
Slide 42
Slide 42 text
ݱࡏ • σʔλ͕େ͖͘ͳΔ͜ͱͰ, େ෯ʹ࣮Λݟ ͢ඞཁ͕ग़͖ͯͨ. → γϯϓϧͳ࣮+ΩϟογϡͰճආෆՄೳ → ΞϧΰϦζϜΛධՁ͠, ܭࢉྔͷ؍͔Βߟ ͑Δඞཁ͕͋Δ
Slide 43
Slide 43 text
ߟ • ॳظஈ֊Ͱ, ࠷ద(Ͱ͋Δ͕ෳࡶ)ͳ࣮Λ༻ ͍Δ͜ͱ͕ਖ਼͍͠ͱݶΒͳ͍. ‣ γϯϓϧͳ࣮͕ڐ͞ΕΔ • େنʹͳͬͨͱ͖ʹඋ͑ͯ, ຊ࣭తͳղܾํ ๏Λ͓ͬͯ͘ඞཁ͋Δ.
Slide 44
Slide 44 text
Lesson 21 هࣄΧςΰϥΠζ
Slide 45
Slide 45 text
هࣄΧςΰϥΠζͱʁ • هࣄͷ༰ʹج͍ͮͯ, దͳΧςΰϦʹࣗಈ Ͱྨ͢Δ͜ͱ. • ϕΠδΞϯϑΟϧλΛͬͯΧςΰϦఆΛ ߦ͍ͬͯΔ.
Slide 46
Slide 46 text
ϕΠδΞϯϑΟϧλͱʁ • φΠʔϒϕΠζ(Naive Bayes)ͱ͍͏ΞϧΰϦζϜΛར༻ ͯ͠, ֬తʹͲͷδϟϯϧʹྨ͞ΕΔ͔ΛௐΔํ๏. • աڈͷྨใΛͬͯ, ݱࡏͷ(δϟϯϧ͕ະͷ)จॻ Λྨ͢Δ. ‣ ڭࢣ͋ΓֶशΛར༻͍ͯ͠Δ. ‣ ػցֶशɾύλʔϯೝࣝͷݚڀՌʹΑΔͷ
Slide 47
Slide 47 text
ϕΠδΞϯϑΟϧλͱʁ • ϕΠδΞϯϑΟϧλͷ֩ͱͳ͍ͬͯΔͷ, φΠʔ ϒϕΠζͱ͍͏ΞϧΰϦζϜ. ‣ ໊લ͔Β͔Δ௨Γ, ϕΠζͷఆཧΛϕʔεͱͨ͠ ΞϧΰϦζϜ. • ۩ମతͳ࣮ʹ౿Έࠐ·ͣ, ͲͷΑ͏ʹಈ͔͚ͩ͘ ղઆ͢Δ.
Slide 48
Slide 48 text
φΠʔϒϕΠζʹΑΔΧςΰϦਪఆ • ͋ΔจॻD͕༩͑ΒΕͨ࣌, ͦͷจॻ͕֬త ʹͲͷΧςΰϦCʹଐ͢Δͷ͕ͬͱΒ͍͠ ͔ΛٻΊΔ. • ͭ·Γ, จॻD͕༩͑ΒΕͨͱ͖ͷΧςΰϦC Ͱ͋Δ͖݅֬P(C|D)ΛٻΊΔ.
Slide 49
Slide 49 text
φΠʔϒϕΠζʹΑΔΧςΰϦਪఆ • P(C|D)Λܭࢉ͢Δͷ͍͠ ‣ ϕΠζͷఆཧΛ͏ͱܭࢉՄೳʹ • ϕΠζͷఆཧ P(D|C), P(C), P(D)ΛٻΊΔ.
Slide 50
Slide 50 text
φΠʔϒϕΠζʹΑΔΧςΰϦਪఆ • ࠓճඞཁͳͷ֬ͦͷͷΑΓ, ͲͷΧς ΰϦ͕ͬͱΒ͍͔͠ͱ͍͏͜ͱ • ઌ΄Ͳͷࣜʹ͓͍ͯ, จॻD͕ੜى͢Δ֬ P(D)ҰఆͰ͋Δ. ‣ P(D|C), P(C)ͷΈΘ͔Εྑ͍ʂ
Slide 51
Slide 51 text
φΠʔϒϕΠζʹΑΔΧςΰϦਪఆ • P(D|C), P(C)ͷΛֶशσʔλ͔Βࢉग़ͯ͠͠ ·͑ٻΊΔ͜ͱ͕Ͱ͖Δ. ‣ P(C)ͦͷΧςΰϦ͕ग़ݱ͢Δ֬ͳͷͰ, ྨ͞Εͨճ͚͓͚͍͍֮ͩ͑ͯ. ‣ P(D|C)ଟগͷ͕ཉ͍͠.
Slide 52
Slide 52 text
φΠʔϒϕΠζʹΑΔΧςΰϦਪఆ • P(D|C)Λܭࢉ͢Δ. • DΛҙͷ୯ޠW͕࿈ଓͯ͠ग़ݱ͢Δͱߟ͑ • ҎԼͷΑ͏ͳࣜͰۙࣅ͢Δ. • DΛ୯ޠʹׂ͠, ͦΕ͝ͱʹͦͷ୯ޠ͕Ͳ͜ ʹྨ͞Εͨͷ͔Λอଘ͓ͯ͘͠.
Slide 53
Slide 53 text
طଘͷख๏ΛҾ͖ग़͠ʹೖΕ͓ͯ͘ • େنσʔλʹର͢ΔΞϧΰϦζϜతͳΞϓϩʔ νΛֶͿʹͨͬͯ, طଘͷख๏Λ͋Δఔ ͍ͬͯΔ͜ͱ͕ॏཁ. ‣ σʔλϚΠχϯάɾύλʔϯೝࣝɾػցֶश ͷΑ͏ͳΞϧΰϦζϜ. ‣ ιʔτ୳ࡧɺѹॖ
Slide 54
Slide 54 text
طଘͷख๏ΛҾ͖ग़͠ʹೖΕ͓ͯ͘ • ྫɿTrieΩʔϫʔυϦϯΫʹԠ༻Ͱ͖Δ ɹɹϕΠδΞϯϑΟϧλΛࣗಈྨʹ → ͲͪΒΞϧΰϦζϜΛ͍ͬͯΔ͜ͱͰ, ׆༻ Ͱ͖Δ͜ͱ͕Θ͔Δ. • ΞϧΰϦζϜΛ࣮ޙՃ࡞ۀ͕͋Δ͜ͱͬ ͓͖ͯ͘.