東京大学 大学院情報理工学系研究科数理情報学専攻 工学部計数工学科 定兼 邦彦 2014年8月6日

Slides:



Advertisements
Similar presentations
授業展開#12 コンピュータの扱いにくい問 題. 扱いにくい問題  処理時間がかかる。  メモリを大量に必要とする。  プログラムの優劣、アルゴリズムの優劣 を比較するためには、標準的なコン ピュータで比較する必要がある。  処理時間を計るのに、コンピュータのモ デルとして、チューリングマシンを考え、
Advertisements

HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
データの圧縮.
透過的データ圧縮 Transparent Data Compression
【事例演習5】  字句解析     解 説  “ハッシュを用いた字句解析の方法”.
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
LZ符号化 森田 岳史.
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ QRコードを作ろう! ~.
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
簡潔データ構造 国立情報学研究所 定兼 邦彦.
離散システム特論 整列(sorting)アルゴリズム 2.
Excel による データベース入門 Ver /9.
情 報 の 表 現(3) 情報社会とコンピュータ 第10回.
全体ミーティング (4/25) 村田雅之.
On the Enumeration of Colored Trees
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
An Algorithm for Enumerating Maximal Matchings of a Graph
分子生物情報学 動的計画法に基づく配列比較法 (ペアワイズアライメント法)
AllReduce アルゴリズムによる QR 分解の精度について
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
心理学情報処理法Ⅰ コンピュータにおけるデータ表現 マルチメディアとコンピュータ.
 Combinations(2)        古川 勇輔.
東京大学大学院情報理工学系研究科 数理情報学専攻 定兼 邦彦 2016年4月7日
EMアルゴリズム クラスタリングへの応用と最近の発展
アナログとディジタル 高校1年 社会と情報⑤.
2008年度 情報数理 ~ QRコードを作ろう!(1) ~.
データ構造と アルゴリズム 知能情報学部 新田直也.
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
最短路問題のための LMS(Levelwise Mesh Sparsification)
情 報 A ー ディジタル化のしくみ ー.
2010年度 情報数理 ~ QRコードを作ろう!(1) ~.
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
生命情報学入門 配列のつなぎ合わせと再編成
動画ファイル形式 コンピュータでは、文字や画像、動画、音声といった様々な種類の情報を扱うことができるが、記憶装置に記録されるデータそのものは0と1の情報でしかない。動画ファイルの形式としてはMPEGやAVIです。
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
仮想メモリを用いた VMマイグレーションの高速化
数理情報工学演習第二B 数理2研 定兼 邦彦 2016/9/30.
明日の授業でも作成を継続する予定です 2017/11/13、2017/11/14
Ibaraki Univ. Dept of Electrical & Electronic Eng.
25. Randomized Algorithms
A Simple Algorithm for Generating Unordered Rooted Trees
アルゴリズムとプログラミング (Algorithms and Programming)
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
わかりやすいパターン認識 第7章:部分空間法  7.1 部分空間法の基本  7.2 CLAFIC法                  6月13日(金)                  大城 亜里沙.
D: 壊れかけのヒープ 問題案: 稲葉.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
地理情報システム論(総)/ 国民経済計算論(商)
第16章 動的計画法 アルゴリズムイントロダクション.
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
構造的類似性を持つ半構造化文書における頻度分析
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
4.プッシュダウンオートマトンと 文脈自由文法の等価性
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
ネット時代のセキュリティ3(暗号化) 2SK 情報機器工学.
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
コンパイラ 2012年10月11日
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

東京大学 大学院情報理工学系研究科数理情報学専攻 工学部計数工学科 定兼 邦彦 2014年8月6日 「場合の数」とデータ圧縮 東京大学 大学院情報理工学系研究科数理情報学専攻 工学部計数工学科 定兼 邦彦 2014年8月6日 http://researchmap.jp/sada/

自己紹介 名前: 定兼 邦彦 (さだかね くにひこ) 所属: 東京大学大学院情報理工学系研究科数理情報学専攻 名前: 定兼 邦彦 (さだかね くにひこ) 所属: 東京大学大学院情報理工学系研究科数理情報学専攻 経歴: 1991年理1入学,2000年理学系研究科情報科学専攻修了 2000年 東北大学大学院情報科学研究科助手 2003年 九州大学大学院システム情報科学研究院助教授 2009年 国立情報学研究所准教授 2014年 東京大学大学院情報理工学系研究科教授 研究分野: データ圧縮,データ構造,情報検索 最近の研究: ビッグデータ処理 簡潔データ構造 並列アルゴリズム

「場合の数」とデータ圧縮 場合の数とは データ圧縮とは 両者にどのような関係が? ある事柄の起こり方の総数 (大辞林より) ある事柄の起こり方の総数 (大辞林より) 例:1から5の数字から2つの数字を選ぶやり方は 何通りあるか.答: 5C2 = 10 通り. データ圧縮とは 音楽,動画など,データ量の多いものを小さくする 両者にどのような関係が?

いろいろな圧縮 空き缶,ペットボトルをつぶす 布団圧縮袋 音楽,画像,動画の圧縮 通常のファイル圧縮 (zipなど) 元には戻らない 布団圧縮袋 圧縮できるが元に戻すには時間がかかる 音楽,画像,動画の圧縮 人が気づかないところは消してしまう 通常のファイル圧縮 (zipなど) 布団圧縮袋と同じ データを圧縮すると,そのままでは使えない

ビッグデータ お店での購買履歴,人の移動履歴,DNA配列情報など,様々な大量データが存在 ビッグデータを処理するには大容量メモリが必要 スマホ:1 GB (ギガバイト) ノートPC,デスクトップPC: 4 ~ 32GB 人のDNA配列を読み取る処理で必要なメモリ: 300GB データを圧縮したまま処理できるとうれしい

s から t へ矢印の通りに移動するルートを 表現するには Q P P:     0010110 Q:     1100001 7ビットで表現できる

s から t へのルートは集合を表している 1 から 7 の数字から 3 つ選んだ集合を表す 集合が圧縮できている もっと圧縮できる? Q P P:     0010110 {3, 5, 6} Q:     1100001 {1, 2, 7}

s から t へ矢印の通りに移動する行き方は 何通り? ルートは4個の→と3個の↑で表現できる 行き方は 通り 26 = 64 > 35 なので, 6 ビットで表現できる s t P Q P:     Q:    

s から t へのルートを 6 ビットで表現するには どう符号化すればいいか 各ルートを 0 から 34 の整数で表現する 0 から 19 の整数で表現する s から最初に上に行くルートは 通り 20 から 34 の整数で表現する s t P Q

s から最初に右に行くルート20個を考える 次に右に行くルートは 通り 次に上に行くルートは 通り P 0 から 9 の整数で表現する 次に右に行くルートは 通り 0 から 9 の整数で表現する 次に上に行くルートは 通り 10 から 19 の整数で表現する s t P

s から右,右に行くルート10個を考える 次に右に行くルートは 通り 次に上に行くルートは 通り P 0 から 3 の整数で表現する 次に右に行くルートは 通り 0 から 3 の整数で表現する 次に上に行くルートは 通り 4 から 9 の整数で表現する s t P

s から右右上に行くルート6個を考える 次に右に行くルートは 通り 次に上に行くルートは 通り P 4 から 6 の整数で表現する 次に右に行くルートは 通り 4 から 6 の整数で表現する 次に上に行くルートは 通り 7 から 9 の整数で表現する s t P

s から右右上右に行くルート3個を考える 次に右に行くルートは 通り 次に上に行くルートは 通り P 4 から 4 の整数で表現する 次に右に行くルートは 通り 4 から 4 の整数で表現する 次に上に行くルートは 通り 5 から 6 の整数で表現する s t P

s から右右上右上に行くルート2個を考える 次に右に行くルートは 通り 次に上に行くルートは 通り P 5 から 5 の整数で表現する 次に右に行くルートは 通り 5 から 5 の整数で表現する 次に上に行くルートは 通り 6 から 6 の整数で表現する s t P

結局,経路 P は整数 6 で表される 同様に,経路 Q は整数 30 で表される s t P Q

一般に,上に r 回,右に nr 回移動する場合, ルートの数は 最初に右に行くルートの数は 最初に上に行くルートの数は n 個の矢印のうち,↑の位置を nr,nr1, …,n1 とすると ルートは整数 で表される

ルートの復元 ルートを表す整数 30 から,ルートを復元する s から最初に右に行くルートは 通り 30>20 なので,最初は上に行っている 最初に上に行った点からルート 3020 = 10 を復元 s t P Q

圧縮率 上に r 回,右に nr 回移動する場合 なので,変換する方が小さい n 個の矢印→↑…で表現: n ビット 整数に変換して表現: ビット なので,変換する方が小さい  なので,r が小さければ圧縮率が高くなる (もしくは nr が小さければ) エントロピー

厳密には,ルートを表す ビットの値の他に n と r の値も保存する必要がある 合計で ビット

n が大きい場合 n > 10億 を計算するには,大きい数の掛け算,割り算が必要になり,遅いしメモリも多く必要となる s t

ルートを一定の長さ l ごとに区切る 各部分ルートに対し,↑の数を記録する l = 8 t t r4 = 2 r3 = 5 r2 = 2 s s

各部分ルートは ビットで表現できる t t r4 = 2 r3 = 5 l = 8 r2 = 2 r1 = 3 s s

はどれくらいの大きさ? 分割するとサイズは小さくなる 一部分だけを高速に復元できる ⇒ 全体は圧縮したまま使える  ⇒ 全体は圧縮したまま使える 集合 {2, 3, 8, 9, 11, 17, 19, 21, 22, 24, 25, 28} を表す

かな漢字変換辞書 「読み」の辞書順に従って単語を木に格納する 同じ文字が何度も出てくるので圧縮したい 辞書 あさ  朝 あさひ  朝日 あし  足 あしか  アシカ あしかせ  足枷 あした 明日 あせ  汗 あそ  阿蘇 いえ  家 いか  以下 いし  石 うし  牛 うしろ  後ろ うそ  嘘

接頭辞 (prefix) が同じ部分は1つにまとめる ⇒トライ (trie) と呼ばれる木構造 あ い う さ し せ そ ひ か た え ろ 朝 朝日 足 アシカ 足枷 明日 汗 阿蘇 家 以下 石 牛 後ろ 嘘 辞書 あさ  朝 あさひ  朝日 あし  足 あしか  アシカ あしかせ  足枷 あした 明日 あせ  汗 あそ  阿蘇 いえ  家 いか  以下 いし  石 うし  牛 うしろ  後ろ うそ  嘘 木構造の圧縮を考える

s から t への行き方は何通り? t s

5通り

→と (, ↑ と ) を対応させると,各ルートは括弧の対応の取れた(バランスした)括弧列を表す (()()) (())() ((())) ()(()) ()()()

バランスした括弧列は,深さが常に 0 以上の経路と対応する ((())) (()()) (())() ()(()) ()()()

バランスした括弧列と順序木には1対1対応がある ((())) (()()) (())() ()(()) ()()()

順序木の圧縮 木をバランスした括弧列で表現する n 点の木は長さ 2n の括弧列で表現できる もっと短い表現は無いか 一番外側に括弧を追加する n 点の木は長さ 2n の括弧列で表現できる もっと短い表現は無いか n = 4 (((()))) ((()())) ((())()) (()(())) (()()())

順序木の個数 n 点の順序木の個数を Tn とする Tn = (長さ 2n2 のバランスした括弧列の数) < (長さ 2n2 の全ての括弧列の数) = 22n2 Tn = (縦横n1マスずつの格子で対角線を またがない経路の数) Cn はカタラン数 (Catalan number) と呼ばれる n = 4

カタラン数 対角線をまたぐ s-t 経路の数を求める t u s’ s n = 3 対角線を初めて跨いだ点を u とする s から u の経路を折り返す s’ から t の全ての経路の数と等しい

順序木の表現のサイズ (スターリングの公式より) b ビットで表現できるものは最大 2b 種類 n 点の順序木は Cn1 種類ある 順序木を表現するには ビット必要 つまり,括弧列による順序木の表現は ほぼ最適サイズ

まとめ 通常のデータ圧縮は,圧縮したまま処理できない 「場合の数」の考えを使うと,最適に圧縮でき, データを圧縮したまま使える ⇒ 簡潔データ構造 人のDNA配列の読み取り処理に必要なメモリ 従来手法: 300GB 簡潔データ構造: 3GB ビッグデータ処理で重要な技術 http://researchmap.jp/sada/