JP4152491B2 - データ整列装置及び圧縮装置 - Google Patents
データ整列装置及び圧縮装置 Download PDFInfo
- Publication number
- JP4152491B2 JP4152491B2 JP19530098A JP19530098A JP4152491B2 JP 4152491 B2 JP4152491 B2 JP 4152491B2 JP 19530098 A JP19530098 A JP 19530098A JP 19530098 A JP19530098 A JP 19530098A JP 4152491 B2 JP4152491 B2 JP 4152491B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- array
- cpu
- elements
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明はデータ整列方法、位置交換方法、圧縮方法、データ整列装置、位置交換装置、圧縮装置及び記録媒体に関するものである。
【0002】
【従来の技術】
近年、通信網の発達と、インターネット技術や分散ソフトウェア技術の進歩により、システム間の通信情報量は増大の一途をたどっている。そのため、通信効率の改善(通信時間の短縮)や、記憶領域の削減等を目的としたデータ圧縮技術が注目されている。データ圧縮には、非可逆符号化と可逆符号化とがある。非可逆符号化は、若干の情報損失を許容して符号化を行うものであり、主に画像ファイルや音声ファイル等を符号化する場合に使用される。可逆符号化は、ディジタル情報を忠実に符号化するものであり、文章ファイルや実行形式ファイル等を符号化する場合に使用される。
【0003】
データ圧縮は、データの冗長な部分を見つけ、それのうち数の多い冗長部分を簡素な表現に変換する。これにより、ファイル全体のサイズを小さくする。この冗長な部分を見つけるために、データの配列を並び替えるソートを用いるものがある。
【0004】
ソートは、データを所定のキーにより並び替える。この並び替えられたデータには、同じコードのデータが連続する部分、すなわち、冗長な部分が多く含まれている。従って、この冗長な部分を少ないバイト数のデータで置き換えることにより、ファイル全体のサイズを小さくするわけである。
【0005】
【発明が解決しようとする課題】
しかしながら、データの圧縮率と、それを行うために必要とする処理時間及び処理に必要なリソース(主としてメモリ容量)は、背反関係にある。換言すれば圧縮率を高めることにより、処理時間の長期化を招くとともに、大容量のメモリが必要となる。
【0006】
特に、ソート処理の処理時間は、データ量に対して指数関数的に増加し、また、ソート処理においては、その処理の複雑さから大容量のメモリを必要とする。例えば、クイックソートやヒープソート等の従来からある整列法を用いた処理は、大容量のメモリを必要とするとともに、処理時間の長期化を招いている。従って、メモリ容量の小さなパーソナルコンピュータでは、圧縮率の高いデータを短時間で処理することができないという問題がある。
【0007】
本発明は上記問題点を解決するためになされたものであって、その目的は、処理の高速化とメモリの使用量を低減することができるデータ整列方法、位置交換方法、圧縮方法、データ整列装置、位置交換装置、圧縮装置及び記録媒体を提供することにある。
【0008】
【課題を解決するための手段】
上記目的を達成するため、第1の発明では、入力データの複数の要素をローテーションして複数の配列要素を生成し、該複数の配列要素を所定の順序で整列するデータ整列方法であって、前記複数の配列要素のシンボルに対して各配列の先頭から順番に注目し、その注目位置のシンボルに基づいて前記複数の配列要素を複数のグループに分け、各グループの配列要素を整列する第1の整列処理を含み、その整列後の配列に対して前記第1の整列処理を回帰的に実施するようにしたことをその要旨としている。
【0009】
また、第2の発明では、第1のデータ整列方法において、前記配列要素の数に基づいて、要素の数が所定数よりも多い場合に前記第1の整列方法を選択し、前記要素の数が所定数よりも少ない場合に前記第1の整列方法とは異なる第2の整列処理を選択する選択処理を含むことをその要旨としている。
【0010】
さらに、第3の発明では、第1の発明のデータ整列方法において、前記第1の整列処理は、前記各配列要素を構成する複数のシンボルに対して、先頭のシンボルから順に着目し、その注目位置にある複数の配列要素のシンボルと、それらシンボルが出現する頻度を含む頻度テーブルを作成するテーブル作成処理と、前記頻度テーブルに従って前記複数の配列要素の順序を交換するマルチスワップ処理と、前記マルチスワップ処理により配列された配列要素に対して、前記各配列要素の注目位置のシンボルに基づいて、前記配列要素を同一のシンボルを含むグループに分類するグループ分け処理と、前記分類された各グループに対して、それぞれ前記第1の整列処理を回帰的に実行する回帰実行処理とを含むことをその要旨としている。
【0011】
併せて、第4の発明では、第3の発明のデータ整列方法において、前記マルチスワップ処理は、移動すべき配列要素を示すインデックスを初期化する初期化処理と、前記インデックスにて示される配列要素を第1のバッファに格納する第1の格納処理と、前記第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、前記配列要素の移動先を算出する移動先決定処理と、前記決定処理の決定結果に基づいて、移動不要か否かを判断する移動判断処理と、前記判断結果に基づいて、移動が必要な場合に、要素を移動させる移動処理と、前記判断結果に基づいて、移動が不要な場合に、バッファの内容を元の配列要素の位置に格納する第2の格納処理と、前記インデックスに基づいて、前記移動すべき配列要素が最終の要素か否かを判断する最終判断処理と、前記最終判断結果に基づいて、最終の要素ではない場合に前記インデックスをインクリメントする加算処理とを含み、前記第1の格納処理から前記最終判断処理までの各処理を繰り返し実施するようにしたことをその要旨としている。
【0012】
加えて、第5の発明では、第4の発明のデータ整列方法において、前記移動先決定処理は、前記頻度テーブルに基づいて、第1のバッファに格納した配列要素のシンボルのうち、注目位置のシンボルの頻度と当該グループの先頭要素に対するインデックスに基づいて移動先を算出する算出処理と、前記シンボルの頻度をディクリメントする減算処理とを含むことをその要旨としている。
【0013】
また、第6の発明では、第4の発明のデータ整列方法において、前記移送先決定手段にて算出した移動先の配列要素を第2バッファへ待避する待避処理と、前記第1バッファの配列要素を前記移動先へ格納する格納処理と、前記第2バッファへ待避した配列要素を第1バッファに転送して次に移動すべき要素とする転送処理とを含むことをその要旨としている。
【0014】
さらに、第7の発明では、前記複数の配列要素を所定の順序で並び替えるために前記複数の配列要素の位置を交換する位置交換方法であって、移動すべき配列要素を示すインデックスを初期化する初期化処理と、前記インデックスにて示される配列要素を第1のバッファに格納する第1の格納処理と、前記第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、前記配列要素の移動先を算出する移動先決定処理と、前記決定処理の決定結果に基づいて、移動不要か否かを判断する判断処理と、前記判断結果に基づいて、移動が必要な場合に、要素を移動させる移動処理と、前記判断結果に基づいて、移動が不要な場合に、バッファの内容を元の配列要素の位置に格納する第2の格納処理と、前記インデックスに基づいて、前記移動すべき配列要素が最終の要素か否かを判断する最終判断処理と、前記最終判断結果に基づいて、最終の要素ではない場合に前記インデックスをインクリメントする加算処理とを含み、前記第1の格納処理から前記最終判断処理までの各処理を繰り返し実施するようにしたことをその要旨としている。
【0015】
併せて、第8の発明では、複数の符号化処理を直列的に実施して入力データのデータ量を圧縮する圧縮方法において、前記複数の符号化処理の間の少なくとも1つにおいて、第1の発明のデータ整列処理を実施するようにしたことをその要旨としている。
【0016】
加えて、第9の発明では、第8の発明の圧縮方法において、前記データ整列処理の次に、同一データが近接して局所的に存在する冗長性の高いデータ列に対して有効な符号化処理を実施するようにしたことをその要旨としている。
【0017】
また、第10の発明では、入力データの複数の要素をローテーションして複数の配列要素を生成し、該複数の配列要素を所定の順序で整列するデータ整列装置であって、前記複数の配列要素のシンボルに対して各配列の先頭から順番に注目し、その注目位置のシンボルに基づいて前記複数の配列要素を複数のグループに分け、各グループの配列要素を整列する第1の整列手段を含み、その整列後の配列に対して前記第1の整列手段を回帰的に実施するようにしたことをその要旨としている。
【0018】
さらに、第11の発明では、第10の発明のデータ整列装置において、前記配列要素の数に基づいて、要素の数が所定数よりも多い場合に前記第1の整列装置を選択し、前記要素の数が所定数よりも少ない場合に前記第1の整列装置とは異なる第2の整列手段を選択する選択手段を含むことをその要旨としている。
【0019】
併せて、第12の発明では、第10の発明のデータ整列装置において、前記第1の整列手段は、前記各配列要素を構成する複数のシンボルに対して、先頭のシンボルから順に着目し、その注目位置にある複数の配列要素のシンボルと、それらシンボルが出現する頻度を含む頻度テーブルを作成するテーブル作成手段と、前記頻度テーブルに従って前記複数の配列要素の順序を交換するマルチスワップ手段と、前記マルチスワップ処理により配列された配列要素に対して、前記各配列要素の注目位置のシンボルに基づいて、前記配列要素を同一のシンボルを含むグループに分類するグループ分け手段と、前記分類された各グループに対して、それぞれ前記第1の整列手段を回帰的に実行する回帰実行手段とを含むことをその要旨としている。
【0020】
加えて、第13の発明では、第12の発明のデータ整列装置において、前記マルチスワップ手段は、移動すべき配列要素を示すインデックスを初期化する初期化手段と、前記インデックスにて示される配列要素を第1のバッファに格納する第1の格納手段と、前記第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、前記配列要素の移動先を算出する移動先決定手段と、前記決定手段の決定結果に基づいて、移動不要か否かを判断する移動判断手段と、前記判断結果に基づいて、移動が必要な場合に、要素を移動させる移動手段と、前記判断結果に基づいて、移動が不要な場合に、バッファの内容を元の配列要素の位置に格納する第2の格納手段と、前記インデックスに基づいて、前記移動すべき配列要素が最終の要素か否かを判断する最終判断手段と、前記最終判断結果に基づいて、最終の要素ではない場合に前記インデックスをインクリメントする加算手段とを含み、前記第1の格納手段から前記最終判断手段までの各手段を繰り返し実施するようにしたことをその要旨としている。
【0021】
また、第14の発明では、第13の発明のデータ整列装置において、前記移動先決定手段は、前記頻度テーブルに基づいて、第1のバッファに格納した配列要素のシンボルのうち、注目位置のシンボルの頻度と当該グループの先頭要素に対するインデックスに基づいて移動先を算出する算出手段と、前記シンボルの頻度をディクリメントする減算手段とを含むことをその要旨としている。
【0022】
さらに、第15の発明では、第13の発明のデータ整列装置において、前記移送先決定手段にて算出した移動先の配列要素を第2バッファへ待避する待避手段と、前記第1バッファの配列要素を前記移動先へ格納する格納手段と、前記第2バッファへ待避した配列要素を第1バッファに転送して次に移動すべき要素とする転送手段とを含むことをその要旨としている。
【0023】
併せて、第16の発明では、前記複数の配列要素を所定の順序で並び替えるために前記複数の配列要素の位置を交換する位置交換装置であって、移動すべき配列要素を示すインデックスを初期化する初期化手段と、前記インデックスにて示される配列要素を第1のバッファに格納する第1の格納手段と、前記第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、前記配列要素の移動先を算出する移動先決定手段と、前記決定手段の決定結果に基づいて、移動不要か否かを判断する判断手段と、前記判断結果に基づいて、移動が必要な場合に、要素を移動させる移動手段と、前記判断結果に基づいて、移動が不要な場合に、バッファの内容を元の配列要素の位置に格納する第2の格納手段と、前記インデックスに基づいて、前記移動すべき配列要素が最終の要素か否かを判断する最終判断手段と、前記最終判断結果に基づいて、最終の要素ではない場合に前記インデックスをインクリメントする加算手段とを含み、前記第1の格納手段から前記最終判断手段までの各手段を繰り返し実施するようにしたことをその要旨としている。
【0024】
加えて、第17の発明では、複数の符号化手段を直列的に実施して入力データのデータ量を圧縮する圧縮装置において、前記複数の符号化手段の間の少なくとも1つにおいて、第10の発明のデータ整列手段を実施するようにしたことをその要旨としている。
【0025】
また、第18の発明では、第17の発明の圧縮装置において、前記データ整列手段の次に、同一データが近接して局所的に存在する冗長性の高いデータ列に対して有効な符号化手段を実施するようにしたことをその要旨としている。
【0026】
さらに、第19の発明では、第1から9のいずれかの発明の方法における処理を含むプログラムデータを記録した記録媒体をその要旨としている。
【0027】
従って、第1,10に記載の発明によれば、複数の配列要素のシンボルに対して各配列の先頭から順番に注目し、その注目位置のシンボルに基づいて複数の配列要素を複数のグループに分け、各グループの配列要素を整列する第1の整列処理を回帰的に実施することで、処理時間が短くなる。
【0028】
また、第2,11に記載の発明によれば、配列要素の数に基づいて、要素の数が所定数よりも多い場合に第1の整列処理(手段)、又は要素の数が所定数よりも少ない場合に第1の整列方法とは異なる第2の整列処理(手段)を選択することで、配列要素の数に応じた最適な処理により処理時間が短くなる。
【0029】
さらに、第3,12に記載の発明によれば、頻度テーブルを作成し、その頻度テーブルに基づいて複数の配列要素の順番を交換することで、処理時間が短くなる。
【0030】
併せて、第4,13に記載の発明によれば、第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、配列要素の移動先を算出し、その算出結果に基づいて配列要素を移動させることで、配列要素を比較することなく配列位置の交換を行うことができる。
【0031】
加えて、第5,14に記載の発明によれば、頻度テーブルに基づいて、第1のバッファに格納した配列要素のシンボルのうち、注目位置のシンボルの頻度と当そのグループの先頭要素に対するインデックスに基づいて容易に移動先が算出される。
【0032】
また、第6,15に記載の発明によれば、算出した移動先の配列要素を第2バッファへ待避した後、第1バッファの配列要素を移動先へ格納し、第2バッファへ待避した配列要素を第1バッファに転送して次に移動すべき要素とすることで、メモリの使用量が少なくなる。
【0033】
さらに、第7,16に記載の発明によれば、第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、配列要素の移動先を算出し、その算出結果に基づいて配列要素を移動させることで、配列要素を比較することなく配列位置の交換を行うことができる。
【0034】
併せて、第8,17に記載の発明によれば、複数の符号化処理の間の少なくとも1つにおいて、第1の発明のデータ整列処理を実施することで、圧縮時間が短くなる。
【0035】
加えて、第9,18に記載の発明によれば、データ整列処理の次に、同一データが近接して局所的に存在する冗長性の高いデータ列に対して有効な符号化処理を実施することで、圧縮率が高くなる。
【0036】
また、第19に記載の発明によれば、第1から9の発明のいずれかに記載の方法における処理を含むプログラムデータが、記録媒体により容易に提供される。
【0037】
【発明の実施の形態】
以下、本発明を具体化した一実施の形態を図1〜図17に従って説明する。
【0038】
図1(a)は圧縮ユニット12等を示す。このユニット12は、記憶媒体11に記憶されたデータ(シンボル)D1を入力し、そのデータD1を後述する圧縮方式により符号化する。その符号化処理において、ユニット12は、処理中に発生するデータD2(ソート中のデータ、変数等のデータを含む)を作業メモリ13に格納する。ユニット12は、符号データを圧縮データD3として記録再生装置、通信装置等の中間媒体14に出力する。
【0039】
図1(b)は伸長ユニット15等を示す。このユニット15は、中間媒体14から圧縮データD4の供給を受ける。ユニット15は、圧縮データD4を圧縮ユニット12とは逆の処理により復号化する。その復号化処理において、ユニット15は、処理中に発生するデータD5(ソート中のデータ、変数等のデータを含む)を作業メモリ13に格納する。ユニット15は、復号データを伸長データD6として記憶媒体11に出力する。
【0040】
上記圧縮ユニット12及び伸長ユニット15は、データ処理装置によるソフトウェアの実行、又はハードウェアモジュールにより実現される。図2は、圧縮ユニット12及び伸長ユニット15を実現するためのデータ処理装置の構成を示すブロック図である。本実施の形態において、データ処理装置は、パーソナルコンピュータによって構成される。
【0041】
データ処理装置21は、中央処理装置(以下、CPUという)22、メモリ23、ハードディスク24、表示器25、キーボード/マウスを含む入力装置26、及び補助記憶装置27を備え、それらはバス28によって相互に接続されている。ハードディスク24、表示器25、入力装置26及び補助記憶装置27は、それぞれインタフェース回路を含んでおり、そのインタフェース回路を介してデータの授受を行うようになっている。
【0042】
ハードディスク24には、図3に示すデータ圧縮処理のプログラムデータ、図4に示すデータ伸長処理のプログラムデータが予め記憶されている。データ処理装置21は、CD−ROM,DVD−ROM,MO,FD等のコンピュータ読み取り可能な記録媒体29によりプログラムデータの提供を受ける。記録媒体29は、補助記録装置27にセットされ、プログラムデータはその補助記録装置27により記録媒体29から読み出され、バス28を介してハードディスク24に転送された後、そこに記憶される。図2中のCPU22は、入力装置26の操作に基づいて起動されると、図3、図4に示されるステップに従ってデータ圧縮処理/データ伸長処理を実行する。
【0043】
次に、データ圧縮処理/データ伸長処理について詳述する。先ず、データ圧縮処理について、図3のフローチャートに従って説明する。
【0044】
ステップS1はデータ指定処理(データ指定手段)であり、CPU22は、入力装置26の操作により指定されたデータを確認する。具体的には、CPU22は、入力装置26としてキーボードにより処理するデータのファイル名を直接入力する、マウスによるクリック(ダブルクリック)やドラッグ・アンド・ドロップにより指定されるファイル名を入力する。そのデータが指定されると、CPU22は、ステップS1からステップS2へ移行する。
【0045】
ステップS2はデータ解析処理(データ解析手段)であり、CPU22は、ステップS1において指定されたデータの解析を行う。その結果、圧縮可能なデータと判定した場合、CPU22は、次のステップS3へ移行する。
【0046】
ステップS3はデータの読込処理(読み込み手段)であり、CPU22は、指定されたファイルのデータを部分的に読み込む。このとき読み込むデータの量は、例えば1ブロック(=512バイト)等であり、装置の構成、インタフェース等の回路の構成や、処理すべきデータ全体の長さやデータの文脈等の、処理すべきデータの属性によって設定される。尚、読み込むデータ量は、例えば1回目は1ブロック512バイト、2回目は1ブロック1024バイト、3回目は1ブロック256バイト、等のように動的に変化しうるものである。そして、データの部分的な読み込みを終了した後、CPU22は続くステップS4へ移行する。
【0047】
ステップS4は一次符号化処理(一次符号化圧縮手段)であり、CPU22は、読み込んだデータを符号化する一次圧縮を行う。ことのき、CPU22は、ランレングス符号処理を一次符号化処理として実施する。ランレングス符号化は、符号化すべきデータ中で同じ文字が繰り返されるような長い連(ラン)の冗長性を除くことで圧縮する符号化理論であり、長い連が多く含まれている場合には圧縮効果が高い圧縮方法である。CPU22は、一次符号化処理を終了した後、ステップS5へ移行する。
【0048】
ステップS5はブロックソート処理(ブロックソート手段)であり、CPU22は、次のステップS6におけるMTF(Move-to-Front)処理を効果的に働かせるために入力データをブロックソートし、入力データの配列に対する変換処理を行う。そして、CPU22は、ブロックソート処理を終了すると、ステップS5からステップS6へ移行する。
【0049】
ここで、通常N個の要素のソート実行時間は、O(NlogN) のように対数的であるが、本実施の形態のブロックソート処理では、後述する特別な処理を施すことにより、O(N)のように線形な時間で、かつ、少ないメモリでソートできる。これは、従来のソート処理においてローテーションされた入力系列のソート処理を劇的に改善し、ブロックソーティングの原理上、極めて高価につくソート時間と作業領域の問題を解決する。尚、Oは、アルゴリズムの性能評価の記法を示す。
【0050】
ステップS6は二次符号化処理(二次符号化手段)であり、CPU22は、ステップS5において変換したデータに対して、MTF(Move-to-Front)処理を実施する。このMTF処理は「次のバイトデータは既出の文字順に出現確率が高いとみなして行う符号化であり、先のブロックソート処理で変換された「同一バイトデータが隣接して局在する」データの冗長性をさらに高めることができる符号化処理である。CPU22は、この符号化処理を終了した後、ステップS7へ移行する。
【0051】
ステップS7は三次符号化処理(三次符号化手段)であり、CPU22は、ステップS6において符号化したデータに対して、ステップS4における処理と同様にランレングス符号処理を実施する。CPU22は、この符号化処理を終了すると、ステップS7からステップS8へと移行する。
【0052】
ステップS8は四次符号化処理(四次符号化手段)であり、CPU22は、ステップS7において符号化したデータに対して、エントロピー符号処理を実施する。ここで、エントロピー符号化とは、圧縮すべきデータ長を無限大にしたとき、圧縮率がデータ圧縮の限界であるエントロピーに漸近する符号化方法の総称であり、具体的には「算術符号」、「Lempel−Ziv」、「ハフマン符号」をはじめとするアルゴリズムとその派生が存在する。それらのうち、速度と圧縮率とのバランスの観点から最適なアルゴリズムを採用する。このように、異なる手法の符号化を繰り返すことは、データの圧縮率を高めるために有効である。CPU22は、この符号化処理を終了すると、ステップS9へ移行する。
【0053】
ステップS9は、圧縮データの書出処理であり、CPU22は、符号化した圧縮データD3をハードディスク24上のファイルに書き込む。そして、CPU22は、圧縮データD3の書き込みを終了した後、ステップS10へ移行する。
【0054】
ステップS10は圧縮終了判定処理(圧縮終了判定手段)であり、CPU22は、指定されたファイルの全てのデータに対する符号化処理を施したか否かを判断する。そして、未処理のデータが残っている場合、CPU22は、ステップS10からステップS3に戻る。このようにして、CPU22は、ステップS3〜S10の処理を繰り返し実行し、指定されたファイルの全データに対する圧縮処理を行う。そして、CPU22は、全データに対して圧縮処理を施すと、圧縮処理を終了する。
【0055】
また、図4は、伸長処理のフローチャートを示している。この伸長処理は、図3の圧縮処理と逆にデータを処理する事により、符号化されたデータ(圧縮データ)を復号化する。すなわち、ステップS11はデータ指定処理であり、CPU22は、入力装置26を介して伸長すべきデータのファイル名を入力する。次に、ステップS12において、CPU22は、伸長すべきデータの解析を行う。
【0056】
続くステップS13において、CPU22は、伸長すべきデータを部分的に読み込み、その読み込んだデータに対してステップS14の一次復号処理(エントロピー復号処理)、ステップS15の二次復号処理(ランレングス復号処理)、ステップS16の逆ブロックソート処理、ステップS17の三次復号処理(MTF処理)、ステップS18の四次復号処理(ランレングス復号処理)を順番に実施する。そして、CPU22は、ステップS18における復号処理を終了した後、ステップS19へ移行する。
【0057】
ステップS19は、伸長データの書出処理であり、CPU22は、復号化した伸長データD6ハードディスク24上のファイルに書き込む。そして、CPU22は、伸長データD6の書き込みを終了すると、ステップS20へ移行する。
【0058】
ステップS20は伸長終了判定処理(伸長終了判定手段)であり、CPU22は、指定されたファイルの全ての圧縮データに対する復号化処理を施したか否かを判断する。そして、未処理の圧縮データが残っている場合、CPU22は、ステップS20からステップS13に戻る。このようにして、CPU22は、ステップS13〜S20の処理を繰り返し実行し、指定されたファイルの全ての圧縮データに対する伸長処理を行う。そして、CPU22は、全圧縮データに対して伸長処理を施すと、伸長処理を終了する。
【0059】
次に、図3のステップS5におけるブロックソート処理の詳細を、図5〜図10のフローチャートに従って説明する。
【0060】
図5は、ML(マルチレベル)ソート処理を示すフローチャートである。ステップS21〜S26は、図3のステップS5のサブステップである。すなわち、ステップS21は初期化処理であり、図2のCPU22は、MLソート処理を行う上で必要となるメモリ領域のクリア及び変数の初期化を行う。ここで、CPU22は、変数iMax=16,qMax=256とする。尚、各変数iMax,qMax に設定する値16,256は、実験等により求められており、適宜変更されてもよい。
【0061】
これらの変数iMax,qMax は、入力データに対して有効なソートの種別を判断するために用いられる。現在、様々な種類のソートが実施されているが、それらのうちの1つが全てのデータに対して完全に有効であるとは限らない。従って、入力データに応じてソートを使い分けることにより、よりメモリ容量が少なく短時間でソート処理を行うのである。
【0062】
CPU22は、ステップS21における初期化処理を終了すると、ステップS21からステップS22へ移行する。そのステップS22は配列要素数算出処理(配列要素数算出手段)であり、CPU22は、入力データに基づいて生成される配列の要素数Nを算出する。入力データのデータ長が長いほど、その入力データに基づく配列の要素数Nも大きくなる。そして、配列の数が多いほど、ソート処理に時間がかかると共に、大容量のメモリを必要とする。
【0063】
次なるステップS23は選択処理(選択手段)であって、当該ステップS23においてCPU22は、要素数Nと変数iMax,qMax とを比較し、その比較結果に基づいて、使用するソートの種別を判断する。すなわち、CPU22は、要素数Nが変数iMax以下(N≦iMax)の場合、ステップS23からステップS24へ移行し、そのステップS24において挿入ソートを実施する。
【0064】
また、CPU22は、要素数Nが変数iMaxより大きく変数qMax以下(iMax<N≦qMax)の場合、ステップS23からステップS25へ移行し、そのステップS25においてクイックソートを実施する。さらに、CPU22は、要素数Nが変数qMaxよりも大きい(N>qMax)の場合、ステップS23からステップS26へ移行し、そのステップS26において、第1の整列処理としてのプログレッシブソートを実施する。
【0065】
そのプログレッシブソートにおいて、CPU22は、このMLソート処理を再帰的読み出し(回帰的な実施)を行う。即ち、CPU22は、MLソート処理中にこのMLソート処理をさらに実施するのである。これにより、入力データの全ての要素に対して処理を簡単に行うことができるとともに、そのMLソート処理のためのプログラムデータのデータ量を少なくすることができる。
【0066】
そして、CPU22は、各ステップS24,S25,S26におけるソート処理を終了した後、MLソート処理を終了する。
【0067】
次に、上記各ソート処理について説明する。但し、ここではステップS24における挿入ソート、ステップS25におけるクイックソートは、一般的であるため、それらの説明を省略し、ステップS26におけるプログレッシブソートについてのみ詳述する。
【0068】
図6は、プログレッシブソートを示すフローチャートである。ステップS31,S32は、図5のステップS26のサブステップである。すなわち、ステップS31は、変数初期化処理であり、CPU22は、次のステップS32における処理に必要なメモリ領域、変数をクリアする。このとき、次の整列処理において注目する文字の位置を保持するための変数をクリアする。この文字の位置は、入力データにおいて、その入力データの先頭からの位置(オフセット)を示す。そして、CPU22は、初期化処理を終了した後、次のステップS32へ移行する。
【0069】
ステップS32は整列処理(整列手段)であり、当該ステップS32において、CPU22は、入力データに基づいて生成される配列の整列処理を実施する。このとき、CPU22は、変数Cが示す位置のシンボルに着目し、その着目したシンボルに基づいて整列処理を実施する。そして、CPU22は、整列処理を終了した後、本プログレッシブソートを終了する。
【0070】
図7において、前記整列処理のフローチャートを示す。すなわち、ステップS41〜S50は、図6R>6のステップS32のサブステップである。
【0071】
ステップS41はテーブル作成処理(テーブル作成手段)であり、CPU22は、入力データを繰り返しスキャンし、出現する要素の数を数え、入力データに出現する要素と各要素の出現数からなる頻度デーブルを作成する。このとき、CPU22は、各配列要素のうち、変数Cの値が示す位置のシンボルに着目して頻度テーブルを作成する。
【0072】
ここで、図11に示す「Yabadabadoo」が入力データ31として与えられているとする。この場合、CPU22は、シンボル「a」の出現回数をカウントする。そして、CPU22は、図12に示す頻度テーブル32を作成する。この頻度テーブル32の領域には、シンボル「a」、そのシンボルの頻度「4」、そのシンボルのインデックス「0」が格納される。同様にしてCPU22は、シンボル「b」に対する頻度をカウントし、領域にシンボル「b」、頻度「2」、インデックス「4」を格納する。この時、シンボル「b」のインデックスは、シンボル「a」の開始をインデックス「0」とした場合に、そのインデックスにシンボル「a」の頻度の値を加算した値が、シンボル「b」のインデックスの値となる。
【0073】
同様にして、CPU22は、シンボル「d」,「o」,「Y」に対する頻度及びインデックスを頻度テーブル32に格納する。そして、頻度テーブル32の作成を終了すると、CPU22はステップS41からステップS42へ移行する。
【0074】
尚、図11に示す入力データ31は、要素の数Nが「11」となる。従って、このような入力データ31は、実際には図5のステップS24における挿入ソートが用いられる。しかし、これは説明及び理解を簡単にするためになされたものであり、実際には要素数Nが前記した変数qMax(=256)よりも大きな入力データ31が与えられるものである。
【0075】
さらに、入力データ31は、各要素が0から255の値で表されるため、実際に文字として表現される以上の要素を含む。しかし、ここでは入力データ31に対する処理を判りやすくするために文字にて表現される要素のみを用いている。
【0076】
さて、ステップS42はマルチスワップ処理(マルチスワップ手段)であり、CPU22は、頻度テーブルに従って配列要素を整列する。その処理を終了した後、CPU22は次のステップS43へ移行する。
【0077】
ステップS43は終了判定処理(終了判定手段)であり、CPU22は、配列要素のデータ長と、変数Cの値に「1」を加算した(+1した値)、すなわち、現在着目するシンボルの次の位置を示す値とを比較する。データ長がC+1以下(データ長≦C+1)の場合、処理すべきシンボルがないことを示す。つまり、ステップS43で肯定判定された場合、CPU22は、処理すべきシンボルがないとして、整列処理を終了する。
【0078】
一方、データ長がC+1よりも大きい場合、CPU22は処理すべきシンボルがあると判断し、ステップS43からステップS44へ移行する。そのステップS44はグループ分け処理(グループ分け手段)であり、CPU22は、各配列要素の先頭から変数Cの値が示す位置のシンボルに基づいて、配列を複数のグループに分ける。このとき、各シンボルは通常1バイト(8ビット)で表されるため、CPU22は、8ビット(=256)で表されるグループに配列の要素を分ける。
【0079】
図11の入力データ31に対して、図13に示すように、入力データの文字数−1回のローテーションを繰り返し行った11個の要素からなる配列S[d]が得られる。この配列S[d]は、図14(a)〜(e)に示すように、データの先頭がシンボル「a」である4つの要素からなる第1グループ33、シンボル「b」の2つの要素からなる第2グループ34、シンボル「d」の2つの要素からなる第3グループ35、シンボル「o」の2つの要素からなる第4グループ36、シンボル「Y」の1つの要素からなる第5グループ37に分けられる。このようにしてグループ分けを終了すると、CPU22は続くステップS45へ移行する。
【0080】
ステップS45において、CPU22は、変数Cの値をインクリメント(+1)する。さらに、CPU22は、分類された各グループを示すインデックスGをクリア(G←0)する。そして、CPU22は、ステップS46において、そのインデックスGの値が8ビットで表される整数の最大値(=255)以下か否かを判断する。すなわち、CPU22は、処理すべきグループが残っているか否かを判断するのである。処理すべきグループが残っていない場合、CPU22は整列処理を終了する。
【0081】
一方、処理すべきグループが残っている場合、CPU22はステップS47へ移行する。そのステップS47において、CPU22は、インデックスGの値で示されるグループの要素の数が0より多い(要素の数>0)か否かを判断する。これは、CPU22がインデックスGで示されるグループが存在するか否かを判断することである。
【0082】
尚、一般に、整列処理は複数の要素に対して行われる。従って、ステップS47において、CPU22は、インデックスGの値で示されるグループの要素の数が2以上(要素の数≧2)か否かを判断するようにしてもよい。
【0083】
すなわち、インデックスGで示すグループが存在する場合、CPU22はステップS47からステップS48へ移行する。そのステップS48は回帰実行処理(回帰実行手段)であり、インデックスGの値で示すグループに対するマルチレベル(ML)ソート処理である。これは、図3のステップ5、つまり図5のMLソート処理を示す。CPU22は、ステップS48において、MLソート処理の再帰的呼び出し(回帰実行)を行う。そのMLソート処理を終了すると、CPU22は、ステップS48からステップS49へ移行する。そして、そのステップS49において、CPU22は、次のグループに対する処理を行うため、グループを示すインデックスGの値をインクリメント(+1)する。そして、CPU22は、ステップS49からステップS46に移行する。
【0084】
すなわち、CPU22は、ステップS46からステップS49の処理を繰り返し実行する。そして、再帰的に読み出されたMLソート処理におけるステップS45において注目するシンボルの位置を示す変数Cをインクリメントすることにより、その再帰的呼び出しにより配列の全ての要素及び全てのグループを容易に処理することができる。
【0085】
一方、ステップS47においてインデックスGで示すグループが存在しない場合、CPU22は、ステップS49においてインデックスGの値をインクリメント(+1)する。そして、CPU22は、ステップS46へ移り、次のグループに対する処理を行う。
【0086】
さらに、図8は、マルチスワップ処理のフローチャートを示す。すなわち、ステップ51〜S59は、図7のステップ42のサブステップである。
【0087】
ステップS51は初期化処理であって、CPU22は、移動すべき要素のインデックスMを初期化(M←0)する。次に、ステップS52は第1の格納処理(第1の格納手段)であり、当該ステップS52においてCPU22は、インデックスMで指定される配列S[M]のデータを第1バッファoutBuff の領域に格納する。そして、CPU22は、ステップS53において、第1バッファoutBuff の領域に格納したデータのうち、現在注目しているデータ(シンボル)を変数iの領域に格納する。
【0088】
次に、ステップS54は移動先決定処理(移動先決定手段)であり、当該ステップS54においてCPU22は、変数iの領域に格納したシンボルに基づいて、インデックスMで示す配列S[M]の移動先を決定する。そして、CPU22は、決定した移動先を示すデータを変数dの領域に格納する。その格納を終了すると、CPU22は、ステップS54からステップS55へ移行する。
【0089】
ステップS55は移動判定処理(移動判定手段)であり、当該ステップS55においてCPU22は、インデックスMの値と変数dに格納された値とを比較することにより、そのインデックスMで示される配列の要素S[M]の移動が必要か否かを判断する。インデックスMの値と変数dのそれが等しいことは、そのインデックスMで示される配列の要素S[M]の位置がソート後も変わらない事を示す。
【0090】
CPU22は、配列の移動が必要と判断した場合にはステップS55からステップS56へ移行し、そのステップS56において移動処理を実施する。一方、移動が不要と判断した場合、CPU22は、ステップS55からステップS57へ移行する。
【0091】
移動が必要と判断した場合について説明すると、ステップS56は移動処理(移動手段)であり、CPU22は、現在注目している配列を格納する領域を空ける。具体的には、CPU22は、ステップS54において決定した位置に格納された配列を別の位置の領域へ移動させる。これにより、現在注目している配列の要素S[M]を格納する領域が確保される。この移動処理を終了すると、CPU22はステップS57へ移行する。
【0092】
ステップS57は第2の格納処理(第2の格納手段)であり、CPU22は、第1バッファoutBuff の内容、すなわち、そのとき注目している配列の要素S[M]を、変数dの値で示される位置の要素S(d)として格納する。その格納を終了すると、CPU22はステップS57からステップS58へ移る。
【0093】
ステップS58は最終判断処理(最終判断手段)であり、CPU22は、インデックスMで示される配列の要素S[M]がグループに含まれる最終の要素か否かを判断する。具体的には、CPU22は、インデックスMの値と、頻度テーブル32の領域に格納された要素数Nとを比較することにより判断する。最終の要素ではない場合、CPU22はステップS58からステップS59に移行する。そのステップS59は加算処理(加算手段)であり、CPU22は、当該ステップS9においてインデックスMをインクリメント(M←M+1)する。そして、CPU22は、ステップS59からステップS52へ移行する。すなわち、CPU22は、インデックスMが最終の要素を示すまでステップS52からステップS59を繰り返し実行する。
【0094】
上記のマルチスワップ処理を図14(a)の第1グループ33を用いて説明すれば、上記のグループ分け処理により、各要素の先頭のシンボルに対する整列は完了している。この第1グループ33に対して、グループ分け処理を再帰読み出しにて実行すると、先頭から2番目のシンボルに対するグループ分け処理を行う。その結果、第1グループ33は、図15(a)に示す第1サブグループ33aと、図15(b)に示す第2サブグループ33bに分けられる。この第1,第2サブグループ33a,33bにより、先頭から2番目のシンボルまでソートが済んだことになる。
【0095】
このようにして、各グループ33〜37に対してグループ分け処理を再帰読み出しにて実施する(回帰的に整列する)ことにより、図13の配列の各要素を、図16に示すように整列することができる。
【0096】
図9は、移動先決定処理のフローチャートを示す。ステップS61〜S63は、図8のステップ54のサブステップである。即ち、ステップS61において、CPU22は、第1バッファoutBuff に格納されているデータのうち、着目するシンボルを変数iに格納する。次に、ステップS62は算出処理(算出手段)であり、CPU22は、移動先の位置dを演算する。この演算において、変数iの値を示すシンボルをシンボルiとすると、CPU22は、シンボルiの頻度F[i]、シンボルiが属するグループの先頭要素のインデックスA[i]に基づいて位置d(=F[i]+A[i]−1)を算出する。次に、ステップS63は減算処理(減算手段)であり、CPU22は、後処理としてシンボルiの頻度F[i]を更新(F[i]=F[i]−1)する。これは、次に同じシンボルに対する移動先が先のシンボルの移動先と重ならないようにするためである。
【0097】
今、1つのシンボルに対する頻度F[i]=5、そのシンボルの先頭のインデックスA[i]=5である。これにより、そのシンボルの移動先d=9(=5+5−1)となる。次に同じシンボルに対する移動先を決定する場合、そのシンボルの頻度F[i]=4(=5−1)であることから、そのシンボルの移動先d=8として決定される。
【0098】
このようにして、シンボルを格納する位置が重ならないように移動先を決定する。1つのシンボルに対して移動先を決定すると、CPU22は、移動先決定処理を終了する。
【0099】
図10は、移動処理のフローチャートを示す。すなわち、ステップS71〜S73は、図8のステップS56のサブステップである。
【0100】
ステップS71は待避処理(待避手段)であり、CPU22は、ステップS54(図8)において決定した移動先の配列S[d]のデータを第2バッファinBuffへ待避する。次に、ステップS72は格納処理(格納手段)であり、CPU22は、現在注目している配列のデータ、つまり、出力バッファoutBuff の内容を、配列S[d]の位置へ格納する。さらに次に、ステップS73は転送処理(転送手段)としての後処理であり、CPU22は、当該ステップS73において第2バッファinBuffへ待避したデータを第1バッファoutBuff へ格納する。これは、第2バッファinBuffへ待避した配列要素を次に移動すべき配列要素とするためである。そして、CPU22は、移動処理を終了する。上記のようにして入力データ31(図11参照)に基づく11個の要素からなる配列をシンボルに従って整列した配列41(図16参照)を得ることができる。ここで注目すべき点は、以下の3点である。
(1)シンボルの大小比較を行っていない。
(2)各要素は、その位置における整列後に要素が属するグループを示す。
(3)各配列要素は、それぞれ1度だけ検査される。
【0101】
従って、一般的なソート処理のように、シンボル全てを比較する場合に比べて処理時間が極端に短くなる。そして、配列要素の並び替えにおいても、1つの配列要素を格納するための第2バッファinBuffを必要とするのみである。さらに、配列要素の各位置のシンボルの値、それらの頻度を格納するための領域のみをしようするため、動的に割り当てられるメモリ等のように、多くのメモリを必要としない。
【0102】
そして、この配列41の各要素の最終のシンボルを、配列要素の順番に並べたデータ列42(図17R>7参照)と、入力データ31を要素とする配列のインデックスの値「11」が、図3のブロックソート処理の結果となる。
【0103】
図17のデータ列42は、シンボル「b」,「a」,「o」が局所的に連続している。この連続するシンボルを、図3のステップS6における符号化処理にて簡単なデータに置き換えることにより、データ列42のデータ長を短くする、すなわち、データ圧縮を行うことができる。この要素の数N(=11)の入力データ31において3つのシンボルが局所的に連続している。従って、実際の要素の数N(≧256)の入力データの場合には、さらに多くのシンボルが局所的に多くの数だけ連続することは容易に推測される。そのため、入力データの要素数が多いほどこのマルチレベルソートが他のソート方法に比べて有効であることは明らかである。以上詳述したように、本実施の形態によれば、以下の効果が奏される。
【0104】
(1)本実施の形態では、複数の配列要素のシンボルに対して各配列の先頭から順番に注目し、その注目位置のシンボルに基づいて複数の配列要素を複数のグループに分け、各グループの配列要素を整列する第1の整列処理を含み、その整列後の配列に対して第1の整列処理を回帰的に実施するようにした。その結果、各要素を比較することなく複数の配列要素をソートするため、複数の要素からなる複数の配列要素を、短時間でソートすることができる。これにより、入力データの圧縮時間を短縮することができる。
【0105】
(2)また、本実施の形態では、配列要素のインデックスに基づいてその配列要素の移動先を決定し、その配列要素に対して第1,第2のバッファoutBuff,inBuffを用いたマルチスワップ処理を実施するようにした。これにより、使用するバッファ量、すなわち、使用するメモリ23の容量が少なくて済むため、大容量のメモリを必要とせず、ソート処理、圧縮処理にかかる費用を少なくすることができる。
【0106】
尚、本発明は上述した実施の形態の記載内容に限定されるものではなく、従って、発明の趣旨を逸脱しない範囲で、例えば次のように実施してもよい。
【0107】
(a)上記実施の形態の図11に示す入力データ31は、各要素が0から255の値で表されるため、ステップS41のテーブル作成処理(テーブル作成手段)における図12に示す頻度テーブル32をCPU22が作成する場合、頻度テーブル32の要素の参照にシンボルそのものの値を利用することにより、一度のスキャンでテーブル作成を完了してもよい。具体的には、全てのシンボルが出現すると想定して、予めシンボル0からシンボル255の頻度数を格納する配列「S[i](iは0〜255までの値をとり、「S[i]」とはシンボルiの頻度を表現する)」を用意して、S[0]からS[255]の値を全て0に初期化した後、入力データ31のスキャンを開始し、「S[現在のシンボルの値]←S[現在のシンボルの値]+1」という処理を、入力データ31のシンボルの総数回、現在のシンボルを1つずつずらしながら繰り返すことにより、入力データ31を一度のスキャンを行うだけでテーブル作成を完了するのである。この方法によれば、繰り返し回数を減らすことができ、処理の高速化に貢献できる。
【0108】
(b)上記実施の形態の図7に示すステップS41のテーブル作成処理(テーブル作成手段)を実施した結果、図12に示す頻度テーブル32の頻度の合計が1である場合には、整列処理の必要がないため、ステップS41の後に、整列処理の必要性を判定することによる終了判定処理(終了判定手段)を実施してもよい。この結果、図7に示すステップS42のマルチスワップ処理(マルチスワップ手段)と、図7に示すステップS43の終了判定処理(終了判定手段)とを省略できる可能性があるため、処理時間を短縮する機会があることが容易に推測される。
【0109】
(c)図16に示す配列41の各要素の最終シンボルを、配列要素の順番に並べた図17に示すデータ列41と、図11に示す入力データ31の先頭のシンボルデータ列41における位置「0」を、図3に示すブロックソート処理の結果としてもよい。
【0110】
(d)図7に示すステップS48の回帰実行処理(回帰実行手段)の呼び出しを行う場合、呼び出し先の処理は、別のCPUが実施してもよい。これは、処理を並列的に実施することによる処理時間圧縮に大きく寄与することになる。
【0111】
【発明の効果】
以上詳述したように、本発明によれば、処理の高速化と、メモリの使用量の低減とを図ることができるという優れた効果を奏する。
【図面の簡単な説明】
【図1】(a)は圧縮ユニットのブロック図、(b)は伸長ユニットのブロック図である。
【図2】一実施の形態におけるデータ処理装置を示す概略構成図である。
【図3】圧縮処理のフローチャートである。
【図4】伸長処理のフローチャートである。
【図5】マルチレベルソート処理のフローチャートである。
【図6】プログレッシブソートのフローチャートである。
【図7】整列処理のフローチャートである。
【図8】マルチスワップ処理のフローチャートである。
【図9】移動先決定処理のフローチャートである。
【図10】移動処理のフローチャートである。
【図11】入力データの説明図である。
【図12】頻度テーブルの説明図である。
【図13】配列の要素を示す説明図である。
【図14】(a)〜(e)は、1番目のシンボルによりグループ分けした配列要素を示す説明図である。
【図15】(a),(b)は、2番目のシンボルによりグループ分けした配列要素を示す説明図である。
【図16】ブロックソート処理後の配列の各要素を示す説明図である。
【図17】ブロックソート処理の結果を示す説明図である。
【符号の説明】
31…入力データ、32…頻度テーブル、S26…第1の整列処理としてのプログレッシブソート、d…要素、S[d]…配列要素。
Claims (7)
- 入力データの複数の要素をローテーションして複数の配列要素を生成し、該複数の配列要素を所定の順序で整列するデータ整列装置であって、
前記各配列要素を構成する複数のシンボルに対して、先頭のシンボルから順に注目し、その注目位置にある複数の配列要素のシンボルと、それらシンボルが出現する頻度とを含む頻度テーブルを作成するテーブル作成手段と、
前記頻度テーブルに従って前記複数の配列要素の順序を交換するマルチスワップ手段と、
前記マルチスワップ処理により配列された配列要素に対して、前記各配列要素の注目位置のシンボルに基づいて、前記配列要素を同一のシンボルを含むグループに分類するグループ分け手段と、
前記分類された各グループに対して前記テーブル作成手段、前記マルチスワップ手段及び前記グループ分け手段による各処理を含む第1の整列処理を、回帰的にかつ各グループについて並列的に実行する回帰実行手段と、
を備えていることを特徴とするデータ整列装置。 - 請求項1に記載のデータ整列装置において、
前記配列要素の数に基づいて、要素の数が所定数よりも多い場合に前記第1の整列処理を選択し、前記要素の数が所定数よりも少ない場合に前記第1の整列処理とは異なる第2の整列処理を選択する選択手段を含むことを特徴とするデータ整列装置。 - 請求項1又は2に記載のデータ整列装置において、
前記マルチスワップ手段は、
移動すべき配列要素を示すインデックスを初期化する初期化手段と、
前記インデックスにて示される配列要素を第1のバッファに格納する第1の格納手段と、
前記第1のバッファに格納した配列要素の注目位置のシンボルに基づいて、前記配列要素の移動先を算出する移動先決定手段と、
前記決定手段の決定結果に基づいて、移動不要か否かを判断する移動判断手段と、
前記判断結果に基づいて、移動が必要な場合に、要素を移動させる移動手段と、
前記判断結果に基づいて、移動が不要な場合に、バッファの内容を元の配列要素の位置に格納する第2の格納手段と、
前記インデックスに基づいて、前記移動すべき配列要素が最終の要素か否かを判断する最終判断手段と、
前記最終判断結果に基づいて、最終の要素ではない場合に前記インデックスをインクリメントする加算手段と、
を備え、
前記第1の格納手段から前記最終判断手段までの各手段を繰り返し実施するようにしたことを特徴とするデータ整列装置。 - 請求項3に記載のデータ整列装置において、
前記移動先決定手段は、
前記頻度テーブルに基づいて、第1のバッファに格納した配列要素のシンボルのうち、注目位置のシンボルの頻度と当該グループの先頭要素に対するインデックスに基づいて移動先を算出する算出手段と、
前記シンボルの頻度をディクリメントする減算手段と、
を備えることを特徴とするデータ整列装置。 - 請求項3に記載のデータ整列装置において、
前記移送先決定手段にて算出した移動先の配列要素を第2バッファへ待避する待避手段と、
前記第1バッファの配列要素を前記移動先へ格納する格納手段と、
前記第2バッファへ待避した配列要素を第1バッファに転送して次に移動すべき要素とする転送手段と、
を更に備えることを特徴とするデータ整列装置。 - 複数の符号化手段による符号化処理を直列的に実施して入力データのデータ量を圧縮する圧縮装置において、前記各符号化手段による符号化処理の間の少なくとも1つについて、請求項1に記載のデータ整列装置によるデータ整列処理を実施するようにしたことを特徴とする圧縮装置。
- 請求項6に記載の圧縮装置において、前記符号化手段は、前記データ整列手段によるデータ整列処理の次に、同一データが近接して局所的に存在する冗長性の高いデータ列に対して有効な符号化処理を実施するようにしたことを特徴とする圧縮装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19530098A JP4152491B2 (ja) | 1998-07-10 | 1998-07-10 | データ整列装置及び圧縮装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19530098A JP4152491B2 (ja) | 1998-07-10 | 1998-07-10 | データ整列装置及び圧縮装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000029667A JP2000029667A (ja) | 2000-01-28 |
JP4152491B2 true JP4152491B2 (ja) | 2008-09-17 |
Family
ID=16338869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19530098A Expired - Lifetime JP4152491B2 (ja) | 1998-07-10 | 1998-07-10 | データ整列装置及び圧縮装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4152491B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7342379B2 (ja) | 2019-03-01 | 2023-09-12 | 沖電気工業株式会社 | 硬貨処理装置及び自動取引装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4766324B2 (ja) * | 2006-04-27 | 2011-09-07 | 横河電機株式会社 | 多重ソート装置およびこれを用いたトラフィック統計システム |
-
1998
- 1998-07-10 JP JP19530098A patent/JP4152491B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7342379B2 (ja) | 2019-03-01 | 2023-09-12 | 沖電気工業株式会社 | 硬貨処理装置及び自動取引装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2000029667A (ja) | 2000-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Moffat | Word‐based text compression | |
US5488364A (en) | Recursive data compression | |
US6100825A (en) | Cluster-based data compression system and method | |
EP0650264B1 (en) | Byte aligned data compression | |
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
US6885319B2 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
JP3278297B2 (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
US7894532B2 (en) | Variable-length encoding apparatus and method | |
US6334123B1 (en) | Index relational processor | |
JP3778087B2 (ja) | データ符号化装置及びデータ復号装置 | |
JP2006526367A (ja) | 隣接比較に基づくロスレス高速画像圧縮システム | |
JP2002198822A (ja) | データ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体 | |
JP4547503B2 (ja) | 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体 | |
US7253752B2 (en) | Coding apparatus, decoding apparatus, coding method, decoding method and program | |
JP4152491B2 (ja) | データ整列装置及び圧縮装置 | |
JP4758494B2 (ja) | ビット長を符号に変換する回路及び方法 | |
US20210157485A1 (en) | Pattern-based cache block compression | |
JP2022187683A5 (ja) | ||
US20080001790A1 (en) | Method and system for enhancing data compression | |
KR20200121760A (ko) | 인코딩된 데이터에 대한 조건부 트랜스코딩 | |
JP3407588B2 (ja) | 符号化復号化装置 | |
JPH0628149A (ja) | 複数種類データのデータ圧縮方法 | |
CN115514967B (zh) | 基于二进制块双向编码的图像压缩方法及图像解压方法 | |
JP4034385B2 (ja) | マルチカラー画像の符号化装置およびその方法ならびにマルチカラー画像の復号化装置およびその方法 | |
Elahresh | Utilizing ASCII codes redundancy for data compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050513 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050525 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050613 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050613 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050525 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080107 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080307 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080701 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080702 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |