Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FM-index による全文検索
Search
Sho Iizuka
February 02, 2015
Programming
65
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FM-index による全文検索
https://kujira16.hateblo.jp/entry/2015/02/06/210630
Sho Iizuka
February 02, 2015
More Decks by Sho Iizuka
See All by Sho Iizuka
半年前の自分に教えたい systemd のハマりどころ
arosh
19
19k
Osaka.Stan#5 LT プログラミングコンテストのデータを分析した話
arosh
1
8.3k
簡潔データ構造輪講資料(順列)
arosh
1
9.6k
Pythonにおける日本語処理
arosh
1
2.2k
円と円の外接線の求め方
arosh
0
96
円と円の交点の求め方
arosh
0
58
Other Decks in Programming
See All in Programming
ジョジョの世界をXRで再現する
mofurune
0
180
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
110
APNsからLive Activityを開始する話
yumnumm
0
170
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.9k
No More NoSuchMethodError
exoego
1
110
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
900
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
150
sbt 2.0: takeoff
eed3si9n
0
170
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
300
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
[2026-10-09]一枚の布で作らなくてもいい。 信頼性は「パッチワーク」で紡がれる~既存の運用と新しい可能性をつなぎ合わせてきたCREの話~
tosite
0
110
AWSに止められる覚悟してますか?
morizo_1984
2
540
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Fireside Chat
paigeccino
43
4.1k
Visualization
eitanlees
153
17k
Believing is Seeing
oripsolob
1
250
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
570
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Transcript
FM-IndexʹΑΔશจݕࡧ ܭࢉػ࣮शE ࣗ༝՝
• จॻ͔ΒจࣈྻΛݕࡧ͢Δํ๏2௨ΓʹྨͰ͖Δ A. લॲཧ͕ෆཁͳํ๏ (ྗͤͳํ๏, KMP๏, BM๏) B. લॲཧ͕ඞཁͳํ๏ (సஔΠϯσοΫε,
ඌࣙྻ) • Bલॲཧͷ͕࣌ؒඞཁͳ͔ΘΓʹ, ಉ͡จॻ͔ΒԿճݕࡧ͢Δ߹AΑΓߴ • FM-IndexBʹྨ͞ΕΔํ๏Ͱ, จॻͷ͞ʹґଘ͠ͳ͍࣌ؒͰݕࡧͰ͖Δ
લॲཧ̍ɿඌࣙྻͷߏங จॻ mississippi mississippi$ ΤϯυϚʔΧ$ΛՃ mississippi$ ississippi$ ssissippi$ sissippi$ issippi$
ssippi$ sippi$ ippi$ ppi$ pi$ i$ $ ඌࣙͷྻڍ
લॲཧ̍ɿඌࣙྻͷߏங 0 mississippi$ 1 ississippi$ 2 ssissippi$ 3 sissippi$ 4
issippi$ 5 ssippi$ 6 sippi$ 7 ippi$ 8 ppi$ 9 pi$ 10 i$ 11 $ 11 $ 10 i$ 7 ippi$ 4 issippi$ 1 ississippi$ 0 mississippi$ 9 pi$ 8 ppi$ 6 sippi$ 3 sissippi$ 5 ssippi$ 2 ssissippi$ ࣙॻॱͰιʔτ͢Δ ※$ҙͷΞϧϑΝϕοτΑΓ ॱҐ͕খ͍͞ͱ͢Δ ඌࣙྻSA
લॲཧ̎ɿBWT (Burrows-Wheeler Transform) 11 $ 10 i$ 7 ippi$ 4
issippi$ 1 ississippi$ 0 mississippi$ 9 pi$ 8 ppi$ 6 sippi$ 3 sissippi$ 5 ssippi$ 2 ssissippi$ ݩͷจࣈྻʹ͓͚Δ ͻͱͭલͷจࣈʹ͢Δ i p s s m $ p i s s i i BWTจࣈྻT
ݕࡧॲཧ • BWTจࣈྻT = ipssm$pissii ʹ͍ͭͯ, ࣍ͷؔΛఆٛ͢Δ • Rank(c,p) :
T[0,p)ͷൣғͰ, ΞϧϑΝϕοτcͷग़ݱΛฦ͢ • RankLT(c) : TશମͰ, cΑΓॱҐ͕খ͍͞ ΞϧϑΝϕοτͷग़ݱΛฦ͢
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA 'i'+"ppi$"ͷ ඌࣙྻ্Ͱͷ ग़ݱҐஔʁ
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA 'i'+"ppi$"ͷ ඌࣙྻ্Ͱͷ ग़ݱҐஔʁ
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA 'i'+"ppi$"ͷ ඌࣙྻ্Ͱͷ ग़ݱҐஔʁ LF-mapping c=T[p] ʹଓ͘จࣈྻͷ SA্Ͱͷग़ݱҐஔ RankLT(c)+Rank(c,p)
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA "ssi"ͷݕࡧ [RankLT('i')+Rank('i', 0), RankLT('i')+Rank('i', 12)) 'i'Ͱ࢝·Δ จࣈྻ
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA "ssi"ͷݕࡧ [RankLT('s')+Rank('s', 1), RankLT('s')+Rank('s', 5)) 's'+"i"Ͱ࢝·Δ จࣈྻ
ݕࡧॲཧ $ i$ ippi$ issippi$ ississippi$ mississippi$ pi$ ppi$ sippi$
sissippi$ ssippi$ ssissippi$ i p s s m $ p i s s i i BWTจࣈྻT ඌࣙྻSA "ssi"ͷݕࡧ [RankLT('s')+Rank('s', 8), RankLT('s')+Rank('s', 10)) 's'+"si"Ͱ࢝·Δ จࣈྻ
ݕࡧॲཧ • FM-index, ݕࡧจࣈྻʹରԠ͢ΔҐஔͷߜΓࠐΈΛ LF-mappingͷ܁Γฦ͠ʹΑͬͯߦ͏ • LF-mapping Rank ͱ RankLT
Ͱߦ͑Δ • ͜ͷ2ͭͷॲཧ, ΣʔϒϨοτΣʔϒϨοτߦྻΛ͑ O(log σ) ࣌ؒͰՄೳ (σ ΞϧϑΝϕοτͷछྨ) • LF-mappingΛݕࡧจࣈྻQͷ͚ͩ͞܁Γฦ͢ͷͰ, Ұճͷݕࡧ͕O(m log σ) ࣌ؒͰՄೳ (m Q ͷจࣈ) • ݕࡧ͕࣌ؒจॻͷ͞ʹґଘ͠ͳ͍
੍࡞ • ੨ۭจݿͰਓؾ͕͋Δਤॻ500Λରͱͨ͠ Σϒϒϥβ͔Β͑ΔΠϯΫϦϝϯλϧݕࡧΛ੍࡞ • ඌࣙྻͷߏஙsais.hxx (ߴͳϥΠϒϥϦ) Λ༻ • ΣʔϒϨοτߦྻͱFM-IndexࣗͰ࣮
(C++), boost-pythonʹΑΓPython༻ͷ֦ுϞδϡʔϧʹม • Flask (Web App Framework@Python) ͔Βݺͼग़͢
͏·͍͔͘ͳ͔ͬͨͱ͜Ζ • ͍͋·͍ݕࡧΛ࣮͠Α͏ͱͯ͠จݙΛ୳ͯ͠Έͨ → ฤूڑʹରͯ͠ࢦ͔͔࣌ؒΔΒ͍͠… • ࡞ͨ͠ࡧҾΛϑΝΠϧ͔ΒಡΈࠐΉॲཧͰ, طଘͷϥΠϒϥϦΛͬͨΒ༻ϝϞϦͷྔ͕രൃ (ݪҼෆ໌)
·ͱΊ • ߴͳจࣈྻݕࡧͷΞϧΰϦζϜΛ࣮ͯ͠Έͨ • ϒϥβ͔Β͑ΔΑ͏ʹͯ͠Έͨ ! • ࢀߟจݙ • Ԭݪ
େี. ߴจࣈྻղੳͷੈք. ؠॻళ. 2012.
(ิ) ΣʔϒϨοτ 3101212213 1000101101 10111 32223 10111 10001 ԼҐ2Ϗοτ →
ԼҐ1Ϗοτ → 0 1111 222 33 0 1 0 1 0 1