Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SATソルバを用いたNP困難な圧縮指標の高速計算
Search
kgoto
March 23, 2022
Research
0
74
SATソルバを用いたNP困難な圧縮指標の高速計算
第120回人工知能基本問題研究会
https://sig-fpai.org/past/fpai120.html
kgoto
March 23, 2022
Tweet
Share
More Decks by kgoto
See All by kgoto
BW Transform of Thue-Morse Words
kgoto
0
150
In-Place BW Transform
kgoto
0
55
Many Words with Many Palindromes
kgoto
0
93
Conjugate Palindromes
kgoto
0
63
2021-02-implicit-static-finger-search
kgoto
0
140
2019-08-psc-optimal-construction-of-suffix-arrays-and-lcp-arrays
kgoto
0
200
2019-06-space-efficient-graph-search
kgoto
0
120
2018-12-stringbeginners-in-place-array-rotation
kgoto
0
180
2018-11-stringbeginners-haruhi-problem-superpermutation
kgoto
1
820
Other Decks in Research
See All in Research
CUNY DHI_Lightning Talks_2024
digitalfellow
0
140
LiDARとカメラのセンサーフュージョンによる点群からのノイズ除去
kentaitakura
0
190
Whoisの闇
hirachan
3
170
Weekly AI Agents News! 11月号 プロダクト/ニュースのアーカイブ
masatoto
0
210
文化が形作る音楽推薦の消費と、その逆
kuri8ive
0
210
Weekly AI Agents News! 9月号 論文のアーカイブ
masatoto
1
150
アプリケーションから知るモデルマージ
maguro27
0
190
Weekly AI Agents News! 8月号 プロダクト/ニュースのアーカイブ
masatoto
1
210
熊本から日本の都市交通政策を立て直す~「車1割削減、渋滞半減、公共交通2倍」の実現へ~@公共交通マーケティング研究会リスタートセミナー
trafficbrain
0
180
LLM時代にLabは何をすべきか聞いて回った1年間
hargon24
1
530
Tietovuoto Social Design Agency (SDA) -trollitehtaasta
hponka
0
3k
最近のVisual Odometryと Depth Estimation
sgk
1
310
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Docker and Python
trallard
42
3.1k
The Cost Of JavaScript in 2023
addyosmani
46
7k
Agile that works and the tools we love
rasmusluckow
328
21k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Being A Developer After 40
akosma
87
590k
How to train your dragon (web standard)
notwaldorf
88
5.7k
KATA
mclloyd
29
14k
What's in a price? How to price your products and services
michaelherold
243
12k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Transcript
SATソルバを用いた NP困難な圧縮指標の高速計算 2022/3/22-23 第120回人工知能基本問題研究会 坂内英夫1、◯ 後藤啓介2、石畠正和3、 神田峻介2、クップルドミニク1 、西本崇晃4 1東京医科歯科大学、2無所属、3NTT、4理化学研究所
背景 1 ◼年々反復の多いデータが大量に増加している Github Wikipedia ゲノム 膨大なデータを保存や処理をするためには圧縮が必要不可欠
研究課題 反復の多いデータに含まれる真に必要な情報量(=冗長な量)を計測したい 大量の差分データ 2つのヒトゲノムの差分は約0.1%
◼ 反復の多い文字列に特化した圧縮法の圧縮サイズ LZ (LZ77, LZ78) Run-length BWT
Bidirectional Macro Schemes 文脈自由文法(CFG, SLP) Collage System ◼ その他 文字列アトラクタ 反復の多い文字列に対する圧縮指標 2 😩 文字列の表現クラス 最小の表現を求めることはNP困難 😄 線形時間で計算可能 😩 圧縮に関連する性質を満たす位置集合 最小サイズを求めることはNP困難 各圧縮指標の圧縮性能の解析がホットな研究トピック(ほとんどは理論解析) ほとんどの圧縮指標はNP困難であり、計算機での解析が困難
◼ NP-hardな圧縮指標をSATソルバで高速に計算する手法を提案 文字列アトラクタ Bidirectional Macro Schemes 文脈自由文法
SLP(論文非掲載) 本研究の貢献 3 予備実験においてナイーブ実装100並列で 1ヶ月実行しても終わらなかった処理が、 提案手法だと1プロセス1日で実行が完了した ◼ 文字列アトラクタに関する乗算感度解析の改善 (Akagi 2021)が示した下界 2から2.5への改善 本発表ではこの2つを説明する 小さいデータに対して 提案手法を使った全数探索を実施
充足可能性問題(SAT問題) 4 ◼与えられた論理式を真にする割当を求める問題 𝑥1 ∧ (¬𝑥2 ∨ 𝑥3 ) 𝑥1
= 1, 𝑥2 = 0, 𝑥3 = 0 SATソルバ ◼和績標準形(CNF)形式で表されることが多い 𝑥1 ∧ ¬𝑥2 ∨ 𝑥3 ∧ 𝑥4 ∨ 𝑥2 ∧ ⋯ 節と呼ぶ CNFにおいて、SATはすべての節を 充足する(真にする)割当を求める
MAX-SAT問題 5 ◼SATを拡張した最大化問題 hard節 • 絶対に充足しないといけない節 soft節 •
重みが設定してあり、充足するsoft節の重みの総和を最大化する すべての節が充足する必要はない 提案手法の方針 • 文字列アトラクタとBMSの形式をhard節制約に落とし込む • サイズに関する制約をsoft節制約に落とし込む • MAX-SATソルバで最小サイズを求める
SATその他 6 ◼SATソルバが激しく研究されている SAT制約に落とし込むことが出来ればSATソルバが 進化するほど解きたい問題も高速に計算できる ◼追加の制約を入れやすい ◼リッチな制約も使える 以下の制約がCNFに変換できることが知られている
𝑥1 → 𝑥2 𝑥1 ↔ 𝑥2 σ 𝑖∈[1,𝑛] 𝑥𝑖 ≤ 4 このスライドではこれらの制約に 落とし込む=SAT制約が完了、とする
文字列のカバーと串刺し 7 ◼ 𝑐𝑜𝑣𝑒𝑟(𝑠): 𝑇中に出現する𝑇の部分文字列𝑠の出現範囲の位置集合 ◼ 位置𝑝について𝑝 ∈ 𝑐𝑜𝑣𝑒𝑟(𝑠)のとき、𝑝は𝑠の出現を串刺しにすると呼ぶ 1
2 3 4 5 6 b a n a n a • • • •・•・ •・•・・ •・・・ •・・・・ • •・ •・・ •・・・ •・・・・ •・・・・・ • • •・•・ •・・ •・・・ T = cover(a) = cover(an) = cover(ana) = cover(anan) = cover(anana) = cover(b) = cover(ba) = cover(ban) = cover(bana) = cover(banan) = cover(banana) = cover(n) = cover(na) = cover(nan) = cover(nana) = ここで•はsの出現開始位置 位置6はa, ana, ...の出現を串刺しにする
文字列アトラクタ 8 ◼𝑇 1. . 𝑛 のアトラクタは以下を満たす𝑇の位置集合Γ ⊆ 1. .
𝑛 任意の部分文字列𝑠について、 𝑠の出現を串刺しにするΓの要素𝑝が存在する (𝑝 ∈ 𝑐𝑜𝑣𝑒𝑟(𝑡𝑖 ) なる𝑝 ∈ Γ が存在する) (Kempa and Prezza 2018) 1 2 3 4 5 6 b a n a n a • • • •・•・ •・•・・ •・・・ •・・・・ • •・ •・・ •・・・ •・・・・ •・・・・・ • • •・•・ •・・ •・・・ T = cover(a) = cover(an) = cover(ana) = cover(anan) = cover(anana) = cover(b) = cover(ba) = cover(ban) = cover(bana) = cover(banan) = cover(banana) = cover(n) = cover(na) = cover(nan) = cover(nana) = すべての位置集合[1, n] は自明なアトラクタ
文字列アトラクタ 9 ◼𝑇 1. . 𝑛 のアトラクタは以下を満たす𝑇の位置集合Γ ⊆ 1. .
𝑛 任意の部分文字列𝑠について、 𝑠の出現を串刺しにするΓの要素𝑝が存在する (𝑝 ∈ 𝑐𝑜𝑣𝑒𝑟(𝑡𝑖 ) なる𝑝 ∈ Γ が存在する) (Kempa and Prezza 2018) 1 2 3 4 5 6 b a n a n a • • • •・•・ •・•・・ •・・・ •・・・・ • •・ •・・ •・・・ •・・・・ •・・・・・ • • •・•・ •・・ •・・・ T = cover(a) = cover(an) = cover(ana) = cover(anan) = cover(anana) = cover(b) = cover(ba) = cover(ban) = cover(bana) = cover(banan) = cover(banana) = cover(n) = cover(na) = cover(nan) = cover(nana) = Γ = 1, 2, 3 は 最小文字列アトラクタ
文字列アトラクタのナイーブな制約 10 ◼For 𝑖 ∈ [1, 𝑛], 𝑝𝑖 = 1
⇔ 𝑖 ∈ Γ ◼𝑇の任意の部分文字列𝑡𝑗 について、 hard節𝐶𝑗 = ڀ𝑖∈𝑐𝑜𝑣𝑒𝑟(𝑡𝑗) 𝑝𝑖 を作成する ◼任意の位置𝑖について重み1のsoft節¬𝑝𝑖 を作成する hard節を全て満たし、充足するsoft節を最大化する𝑝𝑖 の割当について 𝑖 𝑝𝑖 = 1}は最小文字列アトラクタ MAX-SATソルバで高速に計算可能 文字列アトラクタの制約 文字列アトラクタの 最小性制約 𝑝𝑖 = 1となる𝑖が求めたい 文字列アトラクタの要素
極小部分文字列による制約の単純化 11 ◼ 𝑇の部分文字列𝑥, 𝑦について、次の性質を満たすとき𝑥と𝑦を同値とする 𝑐𝑜𝑣𝑒𝑟 𝑥 ⊆ 𝑐𝑜𝑣𝑒𝑟
𝑦 or 𝑐𝑜𝑣𝑒𝑟 𝑦 ⊆ 𝑐𝑜𝑣𝑒𝑟 𝑥 𝑜𝑐𝑐 𝑥 = |𝑜𝑐𝑐(𝑦)| ◼ 𝑥と同値な𝑥の真の部分文字列が存在しないとき、 𝑥を極小部分文字列と呼ぶ 1 2 3 4 5 6 b a n a n a • • • •・•・ •・•・・ •・・・ •・・・・ • •・ •・・ •・・・ •・・・・ •・・・・・ • • •・•・ •・・ •・・・ T = cover(a) = cover(an) = cover(ana) = cover(anan) = cover(anana) = cover(b) = cover(ba) = cover(ban) = cover(bana) = cover(banan) = cover(banana) = cover(n) = cover(na) = cover(nan) = cover(nana) = 𝑜𝑐𝑐(𝑠)は𝑠の出現開始位置集合 重要な性質 位置𝑝が極小な部分文字列を串刺しする → 𝑝は同値な部分文字列を串刺しする → SAT制約において極小部分文字列の hard節のみを考慮すれば良い 同値な部分文字列
Bidirectional Macro Scheme (Storer+, 1982) 12 ◼ 文字列𝑇のbidirectional macro scheme
(BMS) は𝑇を フレーズ𝑇 = 𝑓1 𝑓2 … 𝑓𝑚 に分解し、フレーズ𝑓𝑖 を次のように表現する 𝑐 ∈ Σ (𝑏, 𝑒) s.t. 𝑓𝑖 = 𝑇 𝑏. . 𝑒 BMSからTが一意に求まるとき、そのBMSはvalidであると呼ぶ 1 2 3 4 5 6 7 8 9 a b a a a b a b a (7, 8) (4, 5) (5, 7) (a) (b) サイズ1のフレー ズをrootと呼ぶ 𝑓𝑖 は𝑇[𝑏. . 𝑒]を参照していると呼ぶ
k-BMS 13 ◼ フレーズ長が高々kのBMSをk-BMSと呼ぶ (n-BMSを単にBMSと呼ぶ) ◼ 任意のBMSから参照位置を維持した1-BMSが愚直に求まる 1 2 3
4 5 6 7 8 9 a b a a a b a b a (7, 7) (5, 5) (6, 6) (a) (b) (8, 8) (4, 4) (7, 7) (5, 5)
validなBMSは1-BMSが木構造を持つ 14 1 2 3 4 5 6 7 8
9 a b a a a b a b a a b a b a a b a a 深 さ 0 1 2 ◼参照がループを持たない⇔参照が木構造を持つ
1-BMSから対応する最小BMS 15 ◼ 任意の1-BMSから、愚直変換の変換元の最小BMSと 同じフレーズ数のBMSが愚直に求まる 1 2 3 4 5
6 7 8 9 a b a a a b a b a (7, 7) (5, 5) (6, 6) (a) (b) (8, 8) (4, 4) (7, 7) (5, 5) 愚直な変換は、同じフレーズ内の位置 (i, i+1)の参照先がそれぞれ連続する(j, j+1) → (i, i+1)の参照先が連続するなら(i, i+1)を 同じフレーズにする様に逆変換すると最小 BMSと同じフレーズ数のBMSが求まる
BMSのSAT制約の方針 16 1. T中の木構造を制約化する 2. 1-BMSを制約化する 3. フレーズを制約化する お互いに矛盾しないhard制約を追加する •
木構造から1-BMSは愚直に対応付けが出来る • 1-BMSから最小なフレーズへの対応付けが出来る 1 2 3 4 5 6 7 8 9 a b a a a b a b a 2 3 1
フレーズ分解 17 ◼𝑓𝑏𝑒𝑔𝑖 : 位置𝑖はフレーズの開始位置 a b a a a
b a b a 1 0 1 0 1 1 1 0 0 𝑓𝑏𝑒𝑔𝑖 soft節: ٿ 𝑖∈[1,𝑛] (¬ 𝑓𝑏𝑒𝑔𝑖 , 1) MAX-SATソルバにより、BMSの中で最小サイズのBMSを計算可能
実験設定 18 ◼ 提案手法をpysatで実装計算時間と出力サイズを計測 ◼ 使用ソルバ pysat + RC2
◼ 比較手法* LZ77, LZRR, lex-parse, lcp-comp (すべて多項式時間) ◼ データセット canterbury corpus (比較的小規模コーパス) 有名な文字列系列: フィボナッチ文字列、period-doubling文字列、Thue-Morse文字列 ◼ 計算機 Windows 10 Pro Intel Core i7-9700 3.00GHz 32GBメモリ *以下の実装を使用:https://github.com/TNishimoto/lzrr
実験結果(計算時間) 19 ◼ 単位は秒 ◼ M: メモリエラー ◼ T: 60分のタイムアウト
BMSはメモリ消費量が多く遅い(複雑な構造のせい?) 文字列長128文字あたりで限界が来る SAは小規模コーパスで動いたり動かなかったり
実験結果(出力サイズ) 20 ◼ M: メモリエラー ◼ T: 60分のタイムアウト 文字列アトラクタが他のサイズの下界となる (理論的な解析と一致)
BMSはLZ77, LZrr, lex, lcpの下界となる (理論的な懐石と一致)
まとめ 21 ◼ NP-hardな圧縮指標をSATソルバで高速に計算する手法を提案 文字列アトラクタ Bidirectional Macro Schemes
文脈自由文法 SLP (論文非掲載) ◼ 文字列アトラクタに関する乗算感度解析の改善 下界 2から2.5への改善 今後の課題 ◼文脈自由文法SLPの高速計算の実装 ◼提案手法を使った圧縮指標の解析