卒研のようなもの 圧縮ちーむ 2008.6.24 鴫原、山本、齋藤.

Slides:



Advertisements
Similar presentations
卒研のようなもの 圧縮ちーむ 2008.4.22 鴫原、山本、齋藤.
Advertisements

情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
LZ符号化 森田 岳史.
Generic programming と STL
ヒープソートの演習 第13回.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング基礎I(再) 山元進.
C言語 配列 2016年 吉田研究室.
プログラミング言語としてのR 情報知能学科 白井 英俊.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
JavaによるCAI学習ソフトウェアの開発
Problem G : Entangled Tree
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第13回 プログラミングⅡ 第13回
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
アルゴリズムとデータ構造 2011年6月13日
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
第20章 Flyweight ~同じものを共有して無駄をなくす~
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
第9回:Microsoft Excel (1/2)
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
二分探索木によるサーチ.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
Borland Delphi 6 でビジュアルプログラミング
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
プログラミング言語入門.
画像処理プログラムの説明.
前回の練習問題.
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
動的データ依存関係解析を用いた Javaプログラムスライス手法
デジタル画像とC言語.
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
第5回放送授業.
アルゴリズムとプログラミング (Algorithms and Programming)
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
バイトコードを単位とするJavaスライスシステムの試作
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
文字列へのポインタの配列 static char *lines[MAXLINES]; lines[0] NULL
プログラミング演習I 2003年7月2日(第11回) 木村巌.
アルゴリズムとデータ構造 2012年6月11日
JAVA入門③ 配列とコレクション.
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
アルゴリズムとデータ構造1 2009年6月15日
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
精密工学科プログラミング基礎 第7回資料 (11/27実施)
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
情報処理Ⅱ 2007年12月3日(月) その1.
アルゴリズムとデータ構造 2010年6月17日
演算子のオーバーロード.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング演習I 2003年6月11日(第9回) 木村巌.
情報処理Ⅱ 2005年11月25日(金).
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

卒研のようなもの 圧縮ちーむ 2008.6.24 鴫原、山本、齋藤

・ブロックソート(符号化)実装 (bzip2のメインアルゴリズム) ・実行してみるテスト 今日やること ・ブロックソート(符号化)実装 (bzip2のメインアルゴリズム) ・実行してみるテスト

ブロックソートってなんだっけ? → 入力例:cacao 手順1:巡回シフトさせながら以下の行列をつくる 手順2:abc順に行をソート 手順3:行列の末尾の列と、元データが何行目かを出力 → ↑3行目が元データ 出力:ccoaa , 3 長いデータを処理すると、特にデータが偏りやすくなる (圧縮はされない)

実装を考える 解決策 前ページの表をそのまま実装するとn^2のメモリーが必要 →1MBのデータを処理するには1TBのメモリーが必要に 入力データを2つ繋げたデータを用意する 例: cacao → cacaocacao  インデックスとデータ数を保持しておけば ブロックが再現可能

実装を考える その2 Javaでの実装を考える 理由:今はまってるから ■1つのブロックを保持するクラス クラス名:Block 実装を考える その2 Javaでの実装を考える  理由:今はまってるから ■1つのブロックを保持するクラス クラス名:Block 親クラス:Comparable (大小比較のため) メンバ変数:インデックス、データ数、元データの参照 メンバ関数:大小比較、保持データを返す 等

実装を考える その3 ■ブロックデータの持ち方 LinkedListにインデックスを1ずつずらした Blockオブジェクトを一周分挿入する 実装を考える その3 ■ブロックデータの持ち方 LinkedListにインデックスを1ずつずらした Blockオブジェクトを一周分挿入する ■ソート Collections.sort() を利用 ここでComparableが生きる

実装を考える その4 ■おおまかな処理の流れ データを読み込んでbyte型の配列に入れる ↓ データを2つ繋げた配列にする 実装を考える その4 ■おおまかな処理の流れ データを読み込んでbyte型の配列に入れる ↓ データを2つ繋げた配列にする ByteオブジェクトのLinkedListをつくる LinkedListをソートする ソート結果の各オブジェクトの末尾のデータを出力 元のデータがLinkedListの何番目に現れているか出力

実行してみた ■入力データが小さいとあんまり面白い結果がでない ■14kBのテキストデータ (適当な英文章) →実行時間 約14秒 , 使用メモリー 約 8.5MB ■30kBのテキストデータ (うちの鯖のログ) →実行時間 約70秒 , 使用メモリー 約 9.5MB ■300kBのデータを突っ込んでみたら1時間たっても終わりませんでした…。 (Core2Duo E6750) ■LinkedListをソートするのはよくないかも。

今後の予定 元に戻せるようにしてきます

END ・・・どうした? / ̄ ̄\ / ⌒ ⌒\ ____ |::::::(●)(●) | / \   ・・・どうした?         / ̄ ̄\          / ⌒  ⌒\      ____        |::::::(●)(●) |   /      \       |:::::::::::(__人__)|  /  ⌒  ⌒  \        |::::::::::::::` ⌒´ |/   (●) (●)   \  さっきからこっち見てる奴がいるお・・・        |::::::::::::::    } |     (__人__)    |         ヽ::::::::::::::    } \    ` ⌒´   _/          ヽ::::::::::  ノ   |           \         /ヽ三\´    | |         |  | -―――――|:::::::::::::::: \-―┴┴―――――┴┴――