Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
HCPC: 北海道大学競技プログラミングサークル
10,606 views
Rolling hash
ローリングハッシュとサフィックスアレイ
Technology
◦
Read more
9
Save
Share
Embed
Embed presentation
Download
Downloaded 22 times
1
/ 25
2
/ 25
3
/ 25
4
/ 25
5
/ 25
6
/ 25
7
/ 25
8
/ 25
9
/ 25
10
/ 25
11
/ 25
12
/ 25
13
/ 25
14
/ 25
15
/ 25
Most read
16
/ 25
Most read
17
/ 25
18
/ 25
19
/ 25
20
/ 25
21
/ 25
Most read
22
/ 25
23
/ 25
24
/ 25
25
/ 25
More Related Content
PDF
プログラミングコンテストでのデータ構造
by
Takuya Akiba
PDF
最大流 (max flow)
by
HCPC: 北海道大学競技プログラミングサークル
PDF
双対性
by
Yoichi Iwata
PDF
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
PDF
最小カットを使って「燃やす埋める問題」を解く
by
shindannin
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
PDF
ウェーブレット木の世界
by
Preferred Networks
PDF
グラフネットワーク〜フロー&カット〜
by
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造
by
Takuya Akiba
最大流 (max flow)
by
HCPC: 北海道大学競技プログラミングサークル
双対性
by
Yoichi Iwata
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
最小カットを使って「燃やす埋める問題」を解く
by
shindannin
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
ウェーブレット木の世界
by
Preferred Networks
グラフネットワーク〜フロー&カット〜
by
HCPC: 北海道大学競技プログラミングサークル
What's hot
PDF
ダブリング
by
satanic
PDF
Union find(素集合データ構造)
by
AtCoder Inc.
PDF
プログラムを高速化する話
by
京大 マイコンクラブ
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
by
Takuya Akiba
PDF
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
PDF
プログラミングコンテストでの動的計画法
by
Takuya Akiba
PDF
Rolling Hashを殺す話
by
Nagisa Eto
PDF
明日使えないすごいビット演算
by
京大 マイコンクラブ
PDF
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
by
Kensuke Otsuki
PDF
AtCoder Regular Contest 033 解説
by
AtCoder Inc.
PDF
Convex Hull Trick
by
HCPC: 北海道大学競技プログラミングサークル
PDF
様々な全域木問題
by
tmaehara
PDF
RMQ クエリ処理
by
HCPC: 北海道大学競技プログラミングサークル
PDF
色々なダイクストラ高速化
by
yosupo
PDF
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
by
Kensuke Otsuki
PPTX
2SAT(充足可能性問題)の解き方
by
Tsuneo Yoshioka
PDF
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 012 解説
by
AtCoder Inc.
PPTX
動的計画法を極める!
by
HCPC: 北海道大学競技プログラミングサークル
ダブリング
by
satanic
Union find(素集合データ構造)
by
AtCoder Inc.
プログラムを高速化する話
by
京大 マイコンクラブ
プログラミングコンテストでのデータ構造 2 ~動的木編~
by
Takuya Akiba
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
プログラミングコンテストでの動的計画法
by
Takuya Akiba
Rolling Hashを殺す話
by
Nagisa Eto
明日使えないすごいビット演算
by
京大 マイコンクラブ
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
by
Kensuke Otsuki
AtCoder Regular Contest 033 解説
by
AtCoder Inc.
Convex Hull Trick
by
HCPC: 北海道大学競技プログラミングサークル
様々な全域木問題
by
tmaehara
RMQ クエリ処理
by
HCPC: 北海道大学競技プログラミングサークル
色々なダイクストラ高速化
by
yosupo
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
by
Kensuke Otsuki
2SAT(充足可能性問題)の解き方
by
Tsuneo Yoshioka
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
AtCoder Beginner Contest 012 解説
by
AtCoder Inc.
動的計画法を極める!
by
HCPC: 北海道大学競技プログラミングサークル
Similar to Rolling hash
PDF
ダブル配列の実装方法
by
Higashiyama Masahiko
PDF
すごい配列楽しく学ぼう
by
xenophobia__
PDF
[アルゴリズムイントロダクション勉強会] ハッシュ
by
Rei Takami
PDF
文字列曖昧検索によるマルウェアバイナリ解析
by
Preferred Networks
PDF
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
by
hixi365
PDF
すごいHaskell読書会 第六章 発表資料
by
Hiromasa Ohashi
PDF
Ibisml2011 06-20
by
Yasuo Tabei
PDF
文字列処理
by
Ryunosuke Iwai
PDF
Rubysapporo Stringsearch
by
Akio Ishida
PDF
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
by
Hiro H.
ダブル配列の実装方法
by
Higashiyama Masahiko
すごい配列楽しく学ぼう
by
xenophobia__
[アルゴリズムイントロダクション勉強会] ハッシュ
by
Rei Takami
文字列曖昧検索によるマルウェアバイナリ解析
by
Preferred Networks
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
by
hixi365
すごいHaskell読書会 第六章 発表資料
by
Hiromasa Ohashi
Ibisml2011 06-20
by
Yasuo Tabei
文字列処理
by
Ryunosuke Iwai
Rubysapporo Stringsearch
by
Akio Ishida
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
by
Hiro H.
More from HCPC: 北海道大学競技プログラミングサークル
PDF
写像 12 相
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2019 Day3 A: 間違い探し
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2019 Day3 F: 部分文字列分解
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2019 Day3 B: パフェ
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day1 D: 貪欲が最適?
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day2 E: ジャム
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day2 G: 木
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day2 H: Revenge of UMG
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day1 B: 自身の 2 倍
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2019 Day3 E: 総和の切り取り
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day2 C: 串刺し
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day1 F: グリッドの番号
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2017 Day3 D: 優柔不断
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2019 Day3 G: Restricted DFS
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day1 E: 最短経路の復元
by
HCPC: 北海道大学競技プログラミングサークル
PDF
プログラミングコンテスト基礎テクニック
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day1 C: 短絡評価
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ACPC 2017 Day3 F: 掛け算は楽しい
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day1 A: four tea
by
HCPC: 北海道大学競技プログラミングサークル
PDF
HUPC 2019 Day2 F: MOD Rush
by
HCPC: 北海道大学競技プログラミングサークル
写像 12 相
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 A: 間違い探し
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 F: 部分文字列分解
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 B: パフェ
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 D: 貪欲が最適?
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 E: ジャム
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 G: 木
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 H: Revenge of UMG
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 B: 自身の 2 倍
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 E: 総和の切り取り
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 C: 串刺し
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 F: グリッドの番号
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 D: 優柔不断
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 G: Restricted DFS
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 E: 最短経路の復元
by
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテスト基礎テクニック
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 C: 短絡評価
by
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 F: 掛け算は楽しい
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 A: four tea
by
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 F: MOD Rush
by
HCPC: 北海道大学競技プログラミングサークル
Rolling hash
1.
2015/06 ローリングハッシュと Suffix Array 北海道大学 情報知識ネットワーク研究室 情報理工学専攻
修士 1年 栗田 和宏 1
2.
部分文字列検索 ✤ テキストT:検索する文字列 テキスト長をnとする. ✤ パターンP:見つけたい文字列 パターン長をmとする. ✤
自明な方法:O(nm) 2
3.
ナイーブな部分文字列検索 ✤ テキスト:abracadabra パターン:abr 3 abracadabra abr
4.
ナイーブな部分文字列検索 ✤ テキスト:abracadabra パターン:abr 4 abracadabra abr
5.
ナイーブな部分文字列検索 ✤ テキスト:abracadabra パターン:abr 5 abracadabra abr
6.
ナイーブな部分文字列検索 ✤ テキスト:abracadabra パターン:abr 6 abracadabra abr
7.
ナイーブな部分文字列検索 ✤ テキスト:abracadabra パターン:abr 7 abracadabra abr この方法では部分文字列検索に O(nm)時間かかる
8.
高速な文字列検索 ✤ ローリングハッシュを使おう! ✤ 文字列を値にするハッシュ関数を用いて値が一致した 時に文字列が一致したとする. 8
9.
高速な文字列検索 ✤ ローリングハッシュを使おう! ✤ 文字列を値にするハッシュ関数を用いて値が一致した 時に文字列が一致したとする. ✤
その前にハッシュとは何か知っていますか? 9
10.
ハッシュとは? 10 https://ja.wikipedia.org/wiki/%E3%83%8F %E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0
11.
ローリングハッシュ ✤ 文字1文字を値とし,その値と基数の積の総和をハッ シュ値とするハッシュ関数を使う. 11
12.
ローリングハッシュ ✤ 文字1文字を値とし,その値と基数の積の総和をハッ シュ値とするハッシュ関数を使う. 12 abr =
1*10^2 + 2*10^1 + 5*10^0 = 125 a = 1, b = 2, r = 5, 基数:10
13.
ハッシュ値の計算 ✤ 愚直にハッシュ値を毎回計算するとハッシュ値の計算 にO(m)時間かかり,結局O(nm)時間かかってしまう. 13
14.
ハッシュ値の計算 ✤ 愚直にハッシュ値を毎回計算するとハッシュ値の計算 にO(m)時間かかり,結局O(nm)時間かかってしまう. ✤ なので,ローリングしながらハッシュ値を計算するこ とで毎回のハッシュ値計算をO(1)時間にする. 14
15.
ハッシュ値の計算 15 abracadabra 125 abra = 125
16.
ハッシュ値の計算 16 abracadabra 251 abra = 125
17.
ハッシュ値の計算 17 abracadabra 513 abra = 125
18.
ハッシュ値の計算 18 abracadabra 513 1つ前のハッシュ値に基数をかけ,新しい 文字に対応する値を足し,先頭文字に対応 する値を引く. abra = 125
19.
接尾辞配列(Suffix array) 19 ✤ 文字列のある場所から末尾までの文字列を接尾辞 という. ✤
1つの文字列のすべての接尾辞を辞書順にソートした ものを接尾辞配列という. ✤ 自明にO(n2log n)で作れる.
20.
接尾辞配列の例 20 ✤ abracadabraの接尾辞配列
21.
接尾辞配列で何ができるか? 21 ✤ 文字列の検索(さっきと同じ問題)がO(m log
n)で 解ける.場合によってはローリングハッシュよりも 高速に解ける. ✤ LCP Array(Longest Common Prefix Array)との 組み合わせで繰り返し出現する部分文字列を見つける ことができる.(他にもいろいろできるっぽい)
22.
記号の説明 ✤ 接尾辞配列のO(n(log n)2)時間構築アルゴリズムを 紹介する. ✤
S[i, k]:文字列Sのi文字目からk文字の部分文字列 ✤ rankk(i):S[i, k]がすべてのk文字の部分文字列を ソートした時に何番目に小さいか 22
23.
接尾辞配列の構築 ✤ 基本的なアイディアはダブリングである. ✤ rankk(i)とrank2k(i)のペアをソートすることでi文字 目からi
+ 2k文字目まではソートされる ✤ rankのソートをlog n回行うことでO(n (log n)2)で 構築可能 23
24.
接尾辞配列の構築 24 sa[i] S[sa[i], 2]
S[sa[i], 4] rank2(sa[i]) rank2(sa[i] + 2) 11 emp emp 0 -1 10 a a 1 -1 0 ab abra 2 8 7 ab abra 2 8 3 ac acad 3 4 5 ad adab 4 2 1 br bra 5 1
25.
最新の接尾辞配列の構築法 ✤ SA-ISという手法で線形時間構築が可能! (俺には理解できませんでした.) 25
Download