JP2000357970A - 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置 - Google Patents

文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置

Info

Publication number
JP2000357970A
JP2000357970A JP11171622A JP17162299A JP2000357970A JP 2000357970 A JP2000357970 A JP 2000357970A JP 11171622 A JP11171622 A JP 11171622A JP 17162299 A JP17162299 A JP 17162299A JP 2000357970 A JP2000357970 A JP 2000357970A
Authority
JP
Japan
Prior art keywords
character string
string data
input
dictionary
data
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.)
Granted
Application number
JP11171622A
Other languages
English (en)
Other versions
JP3555506B2 (ja
Inventor
Shinichi Minato
真一 湊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP17162299A priority Critical patent/JP3555506B2/ja
Publication of JP2000357970A publication Critical patent/JP2000357970A/ja
Application granted granted Critical
Publication of JP3555506B2 publication Critical patent/JP3555506B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 圧縮符号化されたコード列データを復元せず
に演算処理でき、データ圧縮率に応じて演算処理の高速
化が可能な、文字列データ圧縮符号化装置及び文字列デ
ータ復元装置及び文字列データ演算処理装置の提供。 【解決手段】 圧縮前の文字列データを読込む入力処理
手段と、圧縮符号化後のコード列データを出力する出力
処理手段と、辞書と、入力された長さ2n の入力文字列
データを前半部と後半部のそれぞれ半分の長さの2つの
部分列に区切り、これを繰返して、長さ1,2,4,
8,16,…2(n-1) の部分列に分解する分解規則と、
入力文字列データの中に同一の文字列が繰返して出現し
たことを検出する検出手段と、同一の文字列からなる部
分列が繰返して出現する時には、1回目は文字列と該文
字列の登録番号の組を出力するように出力処理手段に指
示し、2回目以降は、該部分列を指し示す登録番号のみ
を出力するよう出力処理手段に指示する出力制御手段と
を有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、文字列データ圧縮
符号化装置及び文字列データ復元装置及び文字列データ
演算処理装置に係り、特に、データの通信及び加工及
び、文字列データを圧縮符号化して効率よく伝送または
保存し、圧縮符号化された文字列データ同士の演算処理
を高速に実行するための文字列データ圧縮符号化装置及
び文字列データ復元装置及び文字列データ演算処理装置
に関する。
【0002】
【従来の技術】入力文字列を、過去に現れた文字列の複
製として符号化するデータ圧縮方式として、Lempel-Ziv
符号化方式が広く知られている。また、これを改良した
方式に関する多数の特許が出願されている。例えば、特
許第2590287号には、Lempel-Ziv符号化方式を改
良した方式に関する発明が記載されている。
【0003】一般に、Lempel-Ziv符号化方式は、過去に
入力された文字列の履歴(の一部)を記憶するメモリ
と、その中に含まれる部分列を登録・検索する辞書を持
ち、入力文字列データを順次読み込みながら、辞書に部
分列を登録し、これを参照して同一の部分列を検出する
ことにより、データ圧縮を行う方式である。Lempel-Ziv
符号化方式にはユニバーサル型と増分分解型の2つの方
式がある。
【0004】ユニバーサル型Lempel-Ziv符号化方式は、
入力文字列を符号化する際に、過去の入力文字列の任意
の位置から現在の文字列に一致する最大長の文字列部分
を区切り(文字列部分列という)、その文字部分列のメ
モリ上の位置と文字列部分列の長さにより指定してデー
タ圧縮を行う方式である。増分分類型Lempel-Ziv符号化
方式は、過去にコード化された最大長の文字列に新たに
出現した一文字を付加した文字列を符号化して登録し、
現在の文字列を過去に現れた文字部分列の最長文字部分
列の複製として符号化する方式である。
【0005】いずれの方式においても、文字列データの
圧縮率を高めることと、圧縮・復元処理を効率よく実行
できること、の2点を目的として発明及び改良がなされ
ている。即ち、圧縮符号化されたコード列データは、一
旦、復元処理を通して元の文字列データに戻した後に、
種々の演算処理に供されることを想定している。圧縮符
号化されたコード列データを復元処理を通さずに直接演
算処理を行うことは、従来技術では考慮されておらず、
このような演算処理を効率よく行えるように工夫された
符号にはなっていない。
【0006】一方、データを圧縮して記憶装置に格納
し、圧縮したままの状態で高速に演算処理を行う方法と
して、「二分決定グラフ」と呼ばれるデータ構造を用い
た論理関数データの表現方式及び演算方式が知られてい
る。その処理方式は、R.E. Bryant:"Graph-Based Algor
ithms for Boolean Function Manipulation", IEEE Tra
ns. comput., Vol. C-35, No.8, pp.677-691(以後、論
文1と呼ぶ)に記載されている。また、情報処理学会誌
「情報処理」1993年5月号584〜630ページの
「特集 BDD(二分決定グラフ)」(以後、記事2と
呼ぶ)にも詳しい解説記事が掲載されている。
【0007】論理関数データとは、ある複数個の入力変
数に0,1の論理値の組み合わせがそれぞれ与えられた
ときに、関数値として0,1のいずれの論理値が出力さ
れるか、という論理関数の情報を表したものである。二
分決定グラフが発明される以前は、論理関数データを表
現するために、2n通りの入力変数値の組み合わせ(n
は入力変数の個数)に対する関数値を羅列した「真理値
表」と呼ばれる0,1の数列の形式で表現する方式が多
く用いられている。図12は、X1 ,X2 ,X3 の3変
数を入力とする論理関数データを表現する真理値表の一
例である。
【0008】二分決定グラフは、グラフを用いた論理関
数データの表現方法であって、 ・すべての入力変数に、ある固定した順序を与える手段
(以下、順序付け処理と呼ぶ)、 ・入力変数の中のある1つの変数に0及び1の論理値を
代入することにより、論理関数から2つの部分関数を導
出する手段(以下、展開処理と呼ぶ)、 ・上記展開処理を、上記順序付け処理により与えられる
順序に従って、0,1を代入する入力変数がなくなるま
で繰り返し、個々の展開処理を表す中間節点、個々の展
開処理により得られた2つの部分関数を指す0−枝及び
1−枝、展開処理の繰り返しの結果得られた0,1の論
理値を表す0−終端節点と1−終端節点、を用いた図1
3のような二分木グラフを生成する手段(以下、二分木
生成処理と呼ぶ)、 ・上記二分木生成処理において、図14のように、該二
分木のある2つの中間節点の0−枝同士、1−枝同士が
それぞれ同一の節点を指しているかどうかを調べ、その
ような論理的に等価な2つの中間節点を発見した場合
に、その一方の中間節点を消去し、他方の中間節点を共
有して用いる手段(以下、共有化処理と呼ぶ)、 ・個々の中間節点において、図15のようにその0−枝
と1−枝が、共に同じ節点を指しているときには、該中
間節点を取り除き、枝を直結させる手段(以下、非冗長
化処理と呼ぶ)、からなる。
【0009】上記の処理を組み合わせて行うことによ
り、図16のような二分決定グラフが得られる。この二
分決定グラフは、図17のように中間節点を列挙した表
の形式で記憶装置に格納することができる。このときに
必要とする記憶量は、二分決定グラフの節点数に比例し
たものとなる。論理関数データを真理値表で表現した場
合は、入力変数の値の組み合わせの数(変数の個数をn
とすると2n 通り)の記憶量が常に必要となるが、2分
決定グラフを用いるとそれよりも少ない記憶量となる場
合がしばしばあり、ときには、圧縮率が数百倍に達する
例もある。そのため、二分決定グラフは論理関数データ
の圧縮記憶方式として、近年広く利用されている。
【0010】さらに、論文1、及び記事2には、二分決
定グラフ同士の二項演算処理方式が記憶されている。即
ち、2つの二分決定グラフが記憶装置に格納されている
ときに、それらの二分決定グラフが表す論理関数データ
同士の二項論理演算(論理関、論理和、排他的論理和、
等)を実行し、その演算結果の論理関数データを表現す
る新しい二分決定グラフを生成し、記憶装置に格納する
方法が述べられている。
【0011】その演算方法は、与えられた2つの二分決
定グラフの最も上位の変数に0及び1を代入することに
より、各々対応する2つの中間節点の組に分解し、得ら
れた中間節点の組をさらに分解し、これを繰り返して、
多数の終端節点の組を得る。それらの終端節点の組の各
々に対する2項演算結果を表す終端節点を新たに生成
し、そのようにして得られた演算結果を再び二分決定グ
ラフに組み上げることにより、新しい二分決定グラフを
生成する。このとき、演算処理中に現れた中間節点の組
とその組に対する演算結果とを辞書に登録することによ
り、同じ中間節点の組を検出したときには、それ以上分
解せず、直ちに辞書に登録されている中間節点を参照し
て演算結果とする、という高速化手段を具備している。
【0012】この演算方法の計算時間は、演算対象とし
て与えられた2つの二分決定グラフの節点数と、演算結
果として生成された二分決定グラフの節点数の総和にほ
ぼ比例する。従って、真理値表データ形式を用いた論理
演算方式と比較すると、二分決定グラフによるデータ圧
縮率にほぼ比例して、演算処理高速化の効果が得られ
る。
【0013】
【発明が解決しようとする課題】Lempel-Ziv符号化方式
では、圧縮符号化されたコード列データは、一旦、復元
処理を通して元の文字列データに戻した後に、種々の演
算処理に供されることを想定している。圧縮符号化を行
うことにより、伝送データ量または、記憶領域が節約で
きるが、圧縮・復元のための処理時間が余計に必要とな
る。圧縮率と処理時間は一般にトレードオフの関係にあ
ると考えられている。
【0014】しかし、圧縮符号化されたコード列データ
を復元せずに直接演算処理をすることができれば、圧縮
・復元のための処理時間が不要になるばかりでなく、デ
ータの圧縮率に比例して演算処理時間を短縮することも
可能になると考えられる。そのためには、圧縮符号化の
際の部分列の区切り方を、演算処理しやすいように工夫
する必要がある。ところが、従来のLempel-Ziv符号化方
式では、入力される文字列データの内容により異なる位
置で部分列が区切られるため、2本の圧縮コード列同士
の二項演算処理を実行しようとすると、それぞれの部分
列データの対応関係が複雑となり、圧縮したままでは効
率よく演算処理を実行することができないという問題が
ある。
【0015】一方、二分決定グラフを用いた二項論理演
算処理方式では、圧縮したままのデータ形式で二項演算
処理を実行することができ、圧縮率にほぼ比例する高速
化が実現されている。しかし、二分決定グラフを用いた
二項論理演算処理方式では、演算対象の2つの二分決定
グラフは記憶装置内に節点表として格納された状態で演
算処理装置に引き渡され、演算結果の二分決定グラフも
記憶装置内に節点表として生成される。従って、これら
の二分決定グラフの全ての節点が前以って記憶装置内に
格納可能であることが必要条件となっている。従来の技
術の項で記載した二分決定グラフの共有化処理と非冗長
化処理では、節点の一致判定を高速に行うために、全て
の節点を記憶装置内の辞書に登録・検索する方式が用い
られている。辞書の容量は有限であり、演算結果の二分
決定グラフが辞書に入り切らなくなった場合には、処理
の途中で異常終了し、演算処理の結果を得ることができ
ないという問題がある。
【0016】さらに、二分決定グラフを用いた二項演算
処理方式では、演算対象の2つの二分決定グラフのすべ
ての節点を記憶装置に格納してからでなければ演算処理
を開始できない。即ち、前段の処理が完了しないと次段
の処理を開始できない。よって、連続する演算処理を直
列接続してパイプライン式に並行実行することができな
いという問題がある。
【0017】本発明は、上記の点に鑑みなされたもの
で、圧縮符号化されたコード列データを復元せずに直接
演算処理することができ、データ圧縮率に応じて演算処
理の高速化が可能となるような、文字列データ圧縮符号
化装置及び文字列データ復元装置及び文字列データ演算
処理装置を提供することである。また、本発明は、従来
の二分決定グラフを用いた演算処理方式のようにすべて
の入力データを記憶装置内に格納してから演算を開始す
るのではなく、入力された圧縮コード列データを先頭か
ら順次読み込むと同時に演算処理を実行し、演算結果を
順次出力することが可能な文字列データ圧縮符号化装置
及び文字列データ復元装置及び文字列データ演算処理装
置を提供することを目的とする。
【0018】
【課題を解決するための手段】図1は、本発明の原理構
成図(圧縮符号化装置)である。本発明(請求項1)
は、2n (但し、nは0以上の整数定数)個の長さの文
字列データを入力とし、その情報を損なうことなしにデ
ータを圧縮したコード列データを出力する文字列データ
圧縮符号化装置であって、圧縮前の文字列データを先頭
から順次読み込む入力処理手段110と、圧縮符号化後
のコード列データを先頭から順次出力する出力処理手段
120と、ある有限の容量の辞書130と、入力処理手
段110から入力された長さ2n の入力文字列データを
その前半部と後半部のそれぞれ半分の長さの2つの部分
列に区切り、得られた該部分列の前半部と後半部に区切
り、これを繰り返して、長さ1,2,4,8,16,…
(n -1) の部分列に分解する分解規則150と、分解規
則150を参照して入力処理手段110から入力された
入力文字列データを順次読み込みながら、長さ1,2,
4,8,16,…2(n-1) の部分列を取り出して、異な
る文字列毎に異なる登録番号を付与して、辞書130に
その容量の許す限り格納し、該辞書130を参照しなが
ら、該入力文字列データを読み込むことにより、該入力
文字列データの中に同一の文字列が複数回繰り返して出
現したことを検出する検出手段141と、入力文字列デ
ータに同一の文字列からなる部分列が複数回繰り返して
出現する場合には、1回目は文字列と該文字列の登録番
号の組を出力するように出力処理手段120に指示し、
2回目以降は、該部分列を指し示す登録番号のみを出力
するよう該出力処理手段120に指示する出力制御手段
142とを有する。
【0019】本発明(請求項2)は、任意の長さの文字
列データが入力された場合に、入力文字列データの長さ
がちょうど2n (但し、nはなるべく小さい整数定数)
となるように、空白を表す特別な文字を文字列データの
末尾に複数個追加する手段を有する。本発明(請求項
3)は、検出手段141において、長さ2以上の任意の
文字列aを、前半部と後半部のそれぞれ半分の長さの2
つの部分列a1と部分列a2に分解し、該部分列a1と
該部分列a2の文字列がすでに辞書に格納されている場
合に、該部分列a1と該部分列a2の文字列を指し示す
登録番号の組を持って文字列aを表現し、該組に該文字
列aを表す新たな登録番号を与えて該辞書130に格納
する格納手段を有し、出力制御手段142において、長
さ2以上の文字列aを出力する際に、前半部と後半部の
2つの部分列a1,部分列a2の文字列が辞書130に
格納されていない場合には、該部分列a1,部分列a2
の文字列を順次出力させることにより、文字列aを表現
し、該部分列a1、該部分列a2の片方または両方の文
字列が該辞書130に格納済の場合には、格納済の文字
列を出力する代わりに該文字列が指し示す登録番号を出
力させる手段を有する。
【0020】本発明(請求項4)は、格納手段におい
て、辞書130の容量が限界に達して、新しい文字列x
を格納できなくなった場合に、これまでに格納された文
字列の中で、他の文字列の前半部または後半部としてま
だ一度も使われていない文字列yを検索し、該文字列y
を表す該文字列yの前半部と後半部の文字列を指し示す
登録番号の組を一旦消去し、消去した文字列yと同じ登
録番号で指し示される記憶領域に新しい文字列xを表す
情報を格納し、以降の処理を進める手段を有する。
【0021】図2は、本発明の原理構成図(文字列デー
タ復元装置)である。本発明(請求項5)は、文字列デ
ータ圧縮符号化装置により圧縮符号化されたコード列デ
ータから元の文字列データを復元して取り出す文字列デ
ータ復元装置であって、圧縮符号化されたコード列デー
タを先頭から順次読み込む入力処理手段210と、復元
した文字列データを先頭から順次出力する出力処理手段
220と、文字列データを圧縮したときに用いた文字列
データ圧縮符号化装置の辞書と同等または、それ以上の
容量の辞書230と、入力処理手段210から取得した
圧縮符号化されたコード列データを順次読み込む際に、
単純な文字列として表現された部分列を読み込んだ場合
には、該文字列をそのまま出力するように出力処理手段
220に指示し、部分列の登録番号と文字列の組を読み
込んだ場合には、辞書230に該文字列を該登録番号を
付与して格納し、部分列の登録番号のみを読み込んだ場
合には、該登録番号が指し示す部分列を該辞書230か
ら取り出して出力するように該出力処理手段220に指
示する復元制御手段240とを有する。
【0022】本発明(請求項6)は、復元制御手段24
0において、圧縮符号化されたコード列データを順次読
み込む際に、前半部と後半部の2つの部分列の組によっ
て表現された文字列が入力された場合に、該前半部と該
後半部の部分列の登録番号の組をもって該文字列を表現
して辞書230に格納する手段と、辞書230に格納さ
れた部分列を取り出して、出力する際には、該部分列の
前半部と後半部の部分列を該辞書230から順次参照
し、それらの部分列がさらに前半部と後半部の組として
表現されている場合には、さらにそれらを順次参照し、
長さ1の部分列を取り出して出力させる手段を更に有す
る。
【0023】図3は、本発明の原理構成図(文字列デー
タ演算処理装置)である。本発明(請求項7)は、任意
の2個の文字に対して1個の文字を計算して出力する、
ある二項演算が定義されている場合に、長さが同じ2本
の文字列データを入力として、先頭からそれぞれ同じ位
置にある文字同士について、所定の二項演算を計算した
結果を表す1本の文字列データを出力する文字列データ
演算処理装置であって、圧縮符号化されたコード列デー
タを先頭から順次読み込む第1の入力手段と、復元した
文字列データを先頭から順次出力する第1の出力手段
と、文字列データを圧縮したときに用いた文字列データ
圧縮符号化装置の辞書と同等または、それ以上の容量の
第1の辞書と、該第1の入力手段から取得した圧縮符号
化されたコード列データを順次読み込む際に、単純な文
字列として表現された部分列を読み込んだ場合には、該
文字列をそのまま出力するように該第1の出力手段に指
示し、部分列の登録番号と文字列の組を読み込んだ場合
には、該第1の辞書に該文字列を該登録番号を付与して
格納し、部分列の登録番号のみを読み込んだ場合には、
該登録番号が指し示す部分列を該第1の辞書から取り出
して出力するように該第1の出力手段に指示する復元制
御手段とを有する2つの文字列データ復元装置からな
り、入力されたコード列データを文字列データにそれぞ
れ復元して転送する2つの入力処理手段310、320
と、入力処理手段310、320から転送された2つの
文字列データの、先頭からそれぞれ同じ位置にある文字
同士の二項演算を順次計算し、その結果を新たな文字列
データとして転送する演算処理手段330と、圧縮前の
文字列データを先頭から順次読み込む第2の入力手段
と、圧縮符号化後のコード列データを先頭から順次出力
する第2の出力手段と、ある有限の容量の第2の辞書
と、該第2の入力処手段から入力された長さ2n の入力
文字列データをその前半部と後半部のそれぞれ半分の長
さの2つの部分列に区切り、得られた該部分列の前半部
と後半部に区切り、これを繰り返して、長さ1,2,
4,8,16,…2(n-1) の部分列に分解する分解規則
と、該分解規則を参照して第2の入力手段から入力され
た該入力文字列データを順次読み込みながら、該長さ
1,2,4,8,16,…2(n-1) の部分列を取り出し
て、異なる文字列毎に異なる登録番号を付与して、該第
2の辞書にその容量の許す限り格納し、該第2の辞書を
参照しながら、該入力文字列データを読み込むことによ
り、該入力文字列データの中に同一の文字列が複数回繰
り返して出現したことを検出する検出手段と、該入力文
字列データに同一の文字列からなる部分列が複数回繰り
返して出現する場合には、1回目は文字列と該文字列の
登録番号の組を出力するように該第2の出力手段に指示
し、2回目以降は、該部分列を指し示す登録番号のみを
出力するよう該第2の出力手段に指示する出力制御手段
とをする文字列データ圧縮符号化装置であり、演算処理
手段330から転送された文字列データを圧縮符号化し
てコード列データとして出力する出力処理手段360と
を有する。
【0024】本発明(請求項8)は、入力処理手段31
0、320と出力処理手段360において、部分列がそ
れぞれの第1の辞書または第2の辞書に格納または参照
された場合に、それぞれの登録番号の情報を転送する転
送手段を更に有し、転送手段から登録番号の情報を取得
して、ある2つの入力部分列の組に対する二項演算の結
果がどの部分列に対応したかを、2つの入力部分列と1
つの出力部分列の3つの部分列の登録番号の組として、
ある有限の容量の演算高速化辞書に該容量が許す限り格
納し、該演算高速化辞書を参照しながら演算処理を順次
行うことにより、同一の入力部分列の組が複数回出現し
たことを検出する検出手段と、同一の入力部分列の組が
出現したときには、入力処理手段310、320におい
て、部分列の登録番号を文字列データに復元する処理を
省略するように制御し、出力処理手段360において演
算高速処理辞書に格納されている演算結果の部分列の登
録番号をそのまま出力するように制御する制御手段を更
に有する。
【0025】本発明の圧縮符号化装置は、2n (但し、
nは0以上の整数定数)個の長さの文字列データを入力
とし、その情報を損なうことなしに、データを圧縮した
コード列データを出力する。当該圧縮符号化装置によれ
ば、長さ2n の入力文字列データを、その前半部と後半
部のそれぞれ半分の長さの2つの部分列に区切り、得ら
れた部分列をさらにそれぞれの前半部と後半部に区切
り、これを繰り返して長さ、1,2,4,8,16,
…,2(n-1) の多数の部分列に分解するという分解規則
を用いている。
【0026】さらに、上記の分解規則に基づいて、入力
文字列データを順次読み込みながら、上記の長さ1,
2,4,8,16,…,2(n-1) の部分列を取り出し
て、異なる文字列毎に異なる登録番号を付与して、辞書
にその容量を許す限り格納する。この辞書を参照しなが
ら、入力文字列データを読み込むことにより、文字列デ
ータの中に同一の文字列が複数回繰り返して出現したこ
とを検出することができる。入力文字列データに同一の
文字列からなる部分列が複数回繰り返して出現する場合
には、1回目は文字列とその登録番号の組を出力し、2
回目以降は、当該文字列を指し示す登録番号のみを出力
することにより、データを圧縮符号化する。
【0027】また、本発明の圧縮符号化装置において、
入力文字列データの長さの制限を取り除く、すなわち、
入力文字列データの長さがちょうど2n (但し、nはな
るべく小さい整数定数)となるように、空白を表す特別
な文字を文字列データの末尾に複数個追加し、これを圧
縮符号化する。また、本発明の圧縮符号化装置におい
て、長さ1,2,4,8,16,…,2 (n-1) の部分列
を、そのまま列挙して辞書に格納するのではなく、前半
部と後半部の2つの部分列に分解して格納する。即ち、
長さ2以上の文字列aを、前半部と後半部のそれぞれ半
分の長さの2つの部分列a1とa2に分解し、a1とa
2の文字列がすでに辞書に格納されている場合に、2つ
の文字列を指し示す登録番号の組を持って文字列aを表
現し、これに文字列aを表す新たな登録番号を与えて、
辞書に格納する。これにより、長さ2以上の部分列はす
べて、前半部と後半部の部分列を指し示す登録番号の組
により表現される。
【0028】また、長さ2以上の文字列aを出力する際
に、前半部と後半部の2つの部分列a1、a2の文字列
が辞書に格納されていない場合には、2つの文字列を順
次出力することにより、文字列aを表現し、そうでない
場合、(すなわちa1,a2の片方または両方の文字列
が辞書に格納済の場合)には、格納済の文字列を出力す
る代わりにそれを指し示す登録番号を出力することによ
り、データを圧縮符号化することが可能となる。
【0029】また、本発明の圧縮符号化装置において、
文字列データの部分列に分解して辞書に格納する処理に
おいて、辞書の容量が限界に達して、新しい文字列xを
格納できなくなった場合に、これまでに格納された文字
列の中で、他の文字列の前半部または、後半部としてま
だ一度も使われていない文字列yを探し出して、その文
字列yを表す情報(文字列の前半部と後半部の文字列を
指し示す登録番号の組)を一旦消去し、消去した文字列
yと同じ登録番号で指し示される記憶領域に新しい文字
列xを表す情報を格納し、以降の処理を進める。
【0030】本発明の文字列データ復元装置は、データ
圧縮符号化装置により圧縮符号化されたコード列データ
を順次読み込む際に、単純な文字列で表現された部分列
を読み込んだときはその文字列をそのまま出力し、部分
列の登録番号と文字列の組を読み込んだ場合には、文字
列にその登録番号を付与して辞書に格納し、登録番号の
みを読み込んだ場合は、その登録番号が指し示す部分列
を辞書から取り出して出力することにより、文字列デー
タを復元する。
【0031】さらに、本発明の文字列データ復元装置
は、文字列データを前半部と後半部の2つの部分列に分
解して圧縮符号化されたデータを復元する。即ち、圧縮
符号化されたコード列データを順次読み込む際に、前半
部と後半部の2つの部分列の組によって表現された文字
列が入力された場合に、前半部と後半部の部分列の登録
番号の組を持ってその文字列を表現して辞書に格納し、
一方、辞書に登録された部分列を取り出して出力する際
には、その前半部と後半部の部分列を辞書から順次参照
し、それらの部分列がさらに前半部と後半部の組として
表現されている場合には、さらに、それらを順次参照
し、遂に長さ1の部分列を取り出してこれを出力するこ
とを繰り返して、部分列全体を出力する。
【0032】本発明の文字列データ演算処理装置は、デ
ータ圧縮符号化装置により圧縮さた状態の2本のコード
列データを順次読み込み、これらの圧縮化コード列を復
元したら得られるであろう2本の文字列データについ
て、先頭からそれぞれ同じ位置にある文字同士につい
て、所定の二項演算を計算した結果を表す1本の文字列
データを生成し、これを圧縮化方式で圧縮された状態で
順次出力する。また、2つの入力処理手段において入力
されたコード列データを文字列データにそれぞれ復元し
て演算処理手段に転送し、当該演算処理手段において、
入力処理手段から転送されて来た2本の文字列データ
の、先頭からそれぞれ同じ位置にある文字同士の二項演
算を順次計算し、その結果を新たな文字列データとして
出力処理手段に転送し、当該出力処理手段において、演
算処理手段から転送されてきた文字列データを圧縮符号
化してコード列データとして出力する。
【0033】さらに、本発明の文字列データ演算処理装
置に、検出手段、制御手段と、ある有限の容量の演算高
速化辞書を設け、2個の入力処理手段と、出力処理手段
において、部分列がそれぞれの辞書に格納されたり参照
されたりしたときに、それぞれの登録番号の情報を検出
手段に転送する。当該検出手段において、ある2つの入
力部分列の組に対する二項演算の結果がどの部分列に対
応したかを、それら3つの部分列の登録番号の組とし
て、演算高速化辞書にその容量が許す限り格納し、この
辞書を参照しながら演算を順次行うことにより、同一の
入力部分列の組が複数回現れたことを検出する。制御手
段において、同一の入力部分列の組が出現したときに
は、入力処理手段において部分列の登録番号を文字列デ
ータに復元する処理を省略し、出力処理手段において演
算高速化辞書に格納されている演算結果の部分列の登録
番号をそのまま出力することにより、演算処理を高速化
することが可能となる。
【0034】上記のように、本発明では、Lempel-Ziv符
号化方式のように、入力文字列データの内容によって異
なる位置で部分列を切り出すのではなく、文字列データ
を前半部と後半部の2つの部分列に固定的に区切り、各
部分列をさらに前半部と後半部の2つの部分列に区切
り、これを繰り返して長さ1,2,4,8,16,…2
(n-1) の部分列に区切るという分解規則を用いている。
そして、入力データを先頭から順次読み込みながら、そ
れらの部分列を取り出して、2分決定グラフと同様のデ
ータを先頭から順次読み込みながら、それらの部分列を
取り出して、二分決定グラフと同様のデータ構造として
辞書に登録する。
【0035】このような固定的な分解方式を採用する
と、自由な区切り位置を許す場合に比べて、一致する部
分列を検出する機会が減り圧縮率が低下するという可能
性もある。しかしながら、上記のように区切り位置を固
定することにより、文字列データの内容に関わりなく、
データの先頭から2k (1<k<n)の倍数に当たる位
置が常に部分列の境界となるため、複数の圧縮コード列
の各々の部分列同士の対応関係が単純になる。
【0036】そこで、2本の圧縮コード列を入力とし
て、それらの文字列同士の二項演算結果を新たな圧縮コ
ード列として出力する処理において、ある2つの入力部
分列の組に対する二項演算の結果が出力コード列のどの
部分列に対応するかを、それらの3つの部分列の登録番
号の組として、演算高速化辞書にその容量が許す限り格
納し、この辞書を参照しながら演算処理を順次行うこと
により、同一の入力部分列の組が複数回出現したことを
検出することができる。2回目以降の出現時には、演算
結果の部分列を示す辞書登録番号だけを出力することに
よって、同じ演算処理を繰り返す手間が省略されて高速
化が可能になる。
【0037】本発明で用いている圧縮コード列の二項演
算の高速化方式は、従来の二分決定グラフによる二項論
理演算の高速化方式と同じ原理に基づく。しかしなが
ら、本発明は、従来のように二分決定グラフの全ての節
点の表が記憶装置に格納された状態で入力データとして
与えられるのではなく、圧縮符号化されたコード列デー
タを入力として順次読み込むと同時に演算結果を順次出
力するという点で、従来の方法と本質的に異なる。
【0038】また、本発明では、文字列の圧縮及び復元
の処理中に、辞書の容量が限界に達して、新しい文字列
xを格納できなくなった場合に、これまでに格納された
文字列の中で、他の文字列の前半部または、後半部とし
てまだ一度も使われていない文字列yを探し出して、そ
の文字列yを表す情報(文字列と前半部と後半部の文字
列を指し示す登録番号の組)を一旦消去し、消去し文字
列yと同じ登録番号で指し示される記憶領域に新しい文
字列xを表す情報を格納し、以降の処理を継続すること
が可能である。文字列yの情報を消去したことにより、
部分列の一致を検出する機会が減少して圧縮率が低下す
る恐れはあるが、これにより文字列データの情報が失わ
れたり歪んだりすることはないため、演算処理は正しく
行うことが可能となる。
【0039】つまり、本発明では、記憶装置の容量が十
分でない場合でも、その容量に応じた圧縮率及び高速化
率で演算処理を行うことが可能である。これに対して従
来の二分決定グラフを用いた二項論理演算方式では、記
憶装置に格納された二分決定グラフの節点表が入力デー
タとして引き渡されるため、記憶装置の容量を超える大
規模データを扱うことは原理的に不可能である。
【0040】さらに、本発明では、圧縮符号化されたコ
ード列データを入力として順次読み込みと同時に演算結
果のコード列データを順次出力するので、処理を複数段
直列に接続してパイプライン式に並列実行することがで
きる。従来の二分決定グラフを用いた二項論理演算処理
方式では、前段の処理が完了しないと次段の処理を開始
できないため、パイプライン式に並列実行して高速化を
図ることができないが、本発明は、この点についても従
来の方法より優れていると言える。
【0041】
【発明の実施の形態】1.文字列データ圧縮符号化装
置:最初に文字列データ圧縮符号化装置について説明す
る。図4は、本発明の文字列データ圧縮符号化装置の構
成を示す。同図に示す文字列データ圧縮符号化装置10
0は、2n (但し、n≧0の整数定数)個の長さの文字
列データを入力とし、その情報を損なうことなしにデー
タを圧縮したコード列データを出力する。
【0042】当該文字列データ圧縮符号化装置100
は、圧縮前の文字列データを先頭から順次読み込む入力
処理部110と、圧縮符号化後のコード列データを先頭
から順次出力する出力処理部120と、ある有限の容量
の辞書130、それらを制御する圧縮符号化制御部14
0及び分解規則150から構成される。当該文字列デー
タ圧縮符号化装置100では、入力文字列データの長さ
は丁度2n (n≧0のある整数)個であることが仮定さ
れている。もしもそれ以外の長さの文字列データが入力
された場合は、入力処理部110において、空白を表す
特別な文字を文字列データの末尾に複数個追加し、圧縮
符号化制御部140に送られる文字列データの長さがち
ょうど2n (但し、nはなるべく小さい整数定数)にな
るようにする。
【0043】圧縮符号化制御部140においては、入力
圧縮符号化制御部110から転送されてくる文字列デー
タを多数の部分列に分解し、辞書130に格納する。そ
の部分列の区切り位置は文字列データの内容によらず、
ある一定の分解規則150に基づく。即ち、長さ2n
入力文字列データを、その前半部と後半部のそれぞれ半
分の長さの2つの部分列に区切り、得られた部分列をさ
らにそれぞれの前半部と後半部に区切り、それを繰り返
して長さ1,2,4,8,16,…,2(n-1)の多数の
部分列に分解するという規則を用いている。図5は、本
発明の文字列データを部分列に分解した例を示してお
り、同図の例では、長さ8の文字列データを部分列に分
解する様子が示されている。
【0044】圧縮符号化制御部140においては、上記
の分解規則50に基づいて、入力文字列データを先頭か
ら順次読み込みながら、上記の長さ1,2,4,8,1
6,…,2(n-1) の部分列を取り出して、異なる文字列
毎に異なる登録番号を付与して、辞書130にその容量
の許す限り格納する。この辞書を参照しながら入力文字
列データを読み込むことにより、文字列データの中に同
一の文字列が複数回繰り返して出現したことを検出す
る。
【0045】2.文字列データ復元装置:次に、文字列
データ復元装置について説明する。図6は、本発明の文
字列データ復元装置の構成を示す。同図に示す文字列デ
ータ復元装置200は、文字列データ圧縮符号化装置1
00により圧縮符号化されたコード列データを元の文字
列に復元するものである。
【0046】当該文字列データ復元装置200は、圧縮
コード列データを先頭から順次読み込む入力処理部21
0と、復元文字列データを先頭から順次出力する出力処
理部220と、文字列データを圧縮したときに用いた文
字列データ圧縮符号化装置100の辞書130と同等以
上の容量の辞書と、それらを制御する復元制御部240
から構成される。
【0047】復元制御部240においては、圧縮符号化
されたコード列データを順次読み込む際に、単純な文字
列で表現された部分列を読み込んだ場合は、その文字列
を出力処理部220からそのまま出力し、部分列の登録
番号とその文字列の組を読み込んだ場合には、その部分
列を該登録番号を付与して辞書230に格納し、部分列
の登録番号のみを読み込んだ場合には、その登録番号が
指し示す部分列を辞書230から取り出して出力するこ
とにより文字列データを復元する。
【0048】さらに、復元制御部240においては、圧
縮符号化されたコード列データを順次読み込む際に、前
半部と後半部の2つの部分列の組によって表現された文
字列が入力された場合に、前半部と後半部の文字列の登
録番号の組を持ってその文字列を表現して辞書230に
格納する。結果的に、前述の文字列データ圧縮符号化装
置100により圧縮符号化を行ったときに内部で作られ
た辞書130と全く同じ内容の辞書が復元される。
【0049】さらに、復元制御部240においては、辞
書230に格納された部分列を取り出して出力する際
に、その前半部と後半部の部分列を辞書230から順次
参照し、それらの部分列からさらに前半部と後半部の組
として表現されている場合には、さらに、それらを順次
参照し、遂に長さ1の部分列を取り出してこれを出力す
ることを繰り返して、部分列全体を出力する。
【0050】3.文字列データ演算処理装置:次に、文
字列データ演算処理装置について説明する。図7は、本
発明の文字列データ演算処理装置の構成を示す。同図に
示す文字列データ演算処理装置は、入力処理部310、
320として、2つの圧縮コード列復元装置(前述の文
字列データ復元装置と同様の構成)と、出力処理部36
0として、圧縮符号化装置(前述の文字列データ圧縮符
号化装置と同様の構成)と、二項演算を行う演算処理部
330と、ある有限の容量の演算高速化辞書350と、
それらを制御する制御部340からなる。
【0051】この装置は、任意の2個の文字に対して1
個の文字を計算して出力する、ある二項演算(例えば、
論理積、論理和のような論理演算や加減乗除のような算
術演算)が定義されているときに、前述の符号化方式で
圧縮された状態の2本のコード列データを順次読み込
み、それらの圧縮化コード列を復元したら得られるであ
ろう2本の文字列データについて、先頭からそれぞれ同
じ位置にある文字同士について、所定の二項演算を計算
した結果を表す1本の文字列データを生成し、これを前
述の符号化方式で圧縮され状態で順次出力するものであ
る。
【0052】2つの入力処理部310、320において
は、圧縮コード列データを先頭から順次読み込み、文字
列データにそれぞれ復元して演算処理部330に転送
し、演算処理部330において、入力処理部310、3
20から転送されてきた2本の文字列データの、先頭か
らそれぞれ同じ位置にある文字同士の二項演算を順次計
算し、その演算結果を新たな文字列データとして出力処
理部360に転送する。出力処理部36において、演算
処理部330から転送されてきた文字列データを圧縮符
号化してコード列データとして出力する。
【0053】しかし、単に文字列データを復元して、先
頭から順に演算して、再度圧縮するというだけでは、常
に復元文字列データの長さに比例する計算時間が必要と
なり、効率的でない。そこで、本発明では、以下に説明
するような演算処理高速化の手段を備えている。2つの
入力処理部310、320と出力処理部360において
は、部分列がそれぞれの辞書に格納されたり参照された
りしたときに、それぞれの登録番号の情報を制御部34
0に定期的に報告する。
【0054】制御部340においては、ある2つの入力
部分列の組に対する二項演算の結果がどの部分列に対応
したかを常に監視し、それら3つの部分列の登録番号の
組が得られる毎に、演算高速化辞書350にその容量が
許す限り格納し、この演算高速化辞書350を参照しな
がら演算を順次行うことにより、同一の入力部分列の組
が複数回現れたことを検出する。
【0055】さらに、制御部340においては、同一の
入力部分列の組を検出したときには、2回目以降は、入
力処理部310、320において部分列の登録番号を文
字列データに復元する処理を省略するように制御指令を
送り、出力処理部360において、演算高速化辞書35
0に格納されている演算結果の部分列の登録番号をその
まま出力するように制御指令を送る。
【0056】以上の方法により、同一の入力部分列の組
が多数出現する場合には、単純に復元して演算して再圧
縮する方式に比べて、全体の処理時間を短縮することが
できる。その高速化の割合は、同一の入力部分列の組が
出現する頻度によって決まり、演算処理高速化辞書35
0の容量が十分にあるときには、入力と出力のコード列
データの圧縮率にほぼ比例した高速化率が得られる。
【0057】
【実施例】以下、図面と共に本発明の実施例を説明す
る。 [第1の実施例]第1の実施例として図4に示す文字列
データ圧縮符号化装置100に基づいて説明する。
【0058】図8は、本発明の第1の実施例の文字列デ
ータ圧縮符号化装置の動作を説明するための図であり、
「ABABABAA」という長さの8の文字列データを
入力した場合の動作の例を示す。図9は、本発明の第1
の実施例の文字列データの部分列を登録した辞書の一例
を示す。以下、図8と図9の例に基づいて説明する。
【0059】文字列は左から1文字ずつ入力処理部11
0により読み込まれる。まず最初に「A」という長さ1
の文字が認識される。次に、「B」という長さ1の文字
が認識される。ここで、「AB」という部分列が初めて
出現するので、これを部分列1という登録番号を付与し
て辞書130に登録する。辞書には文字「A」と「B」
を連結した長さ2の部分文字列として格納される。
【0060】次に、第3文字目と第4文字目を読み込ん
だところで、再び「AB」という部分列を認識する。こ
れは、すでに登録されている部分列1と同一の文字列で
あるので、新たに登録する必要はない。次に、第1文字
目から4文字目までの部分列「ABAB」を認識する。
これは、新しい文字列であるから部分列2という登録番
号を付与して辞書130に登録する。この文字列の前半
部「AB」と後半部「AB」はそれぞれ部分列1と同一
の文字列であるので、辞書130には部分列1を2つ連
結した長さ4の部分列として格納する。
【0061】引き続いて、第5文字目と6文字目を読み
込み、「AB」という部分列を認識するが、これはやは
り部分列1と同一の文字列であるので、新たに登録する
必要はない。次に、第7文字目と8文字目を読み込み
「AA」という部分列を認識する。これは、新しく出現
した文字列であるので、部分列3という登録番号を付与
して辞書130に登録する。辞書130には、文字
「A」を2つ連結した長さ2の部分列として格納され
る。
【0062】次に、第4文字目から8文字目までの文字
列「ABAA」が認識される。これも初めて出現する文
字列であるので、部分列4という登録番号を付与して辞
書130に登録する。辞書130には部分列1と部分列
3を連結した長さ4の部分列として格納される。最後に
第1文字目から8文字目までの部分列を認識し、これを
部分列5という登録番号を付与して辞書130に登録す
る。辞書130には、部分列2と部分列4を連結した長
さ8の部分列として格納される。
【0063】以上のようにして、入力文字データは部分
列に分解されて辞書130に格納される。次に、上記の
ように読み込まれた入力データがどのように圧縮符号化
されて出力されるかを説明する。図10は、本発明の第
1の実施例の文字列データを圧縮符号化したコード列デ
ータの一例を示す。同図に示すコード列データは、図8
に示す文字列データを圧縮符号化したものである。
【0064】圧縮符号化制御部140は、入力文字列デ
ータに同一の文字列からなる部分列が複数回繰り返して
出現する場合には、1回目は文字列とその登録番号の情
報を出力し、2回目以降は部分列を指し示す登録番号の
みを出力することにより、データを圧縮符号化する。図
10では、まず、文字「A」、「B」をそのまま出力
し、次に、「(列1=A,B)」という符号により、
「AB」が部分列1という登録番号で登録されたことを
出力する。以後は、「AB」という文字列を出力する代
わりに、「列1」という符号だけを出力して、データを
圧縮する。
【0065】圧縮コード列データを出力するタイミング
に関しては、入力文字列データを最後まで読み終えるの
を待つことなく、新しい部分列が認識される登録される
毎に、入力と同時並行的に出力が行われる。このような
圧縮符号化を行うことにより得られるコード列データの
長さは、入力文字列データの中に新しく出現した部分列
の個数にほぼ比例する。従って、同一の部分列が多数出
現する入力文字列データを与えた場合には、非常に高い
圧縮率を得ることができる。
【0066】辞書130を登録・参照するための計算時
間は、ランダムアクセス可能な記憶装置を前提とすれ
ば、ハッシュテーブルの技法により、辞書の登録データ
数に依存せず、ある定数の時間で1回の登録・参照の処
理を実行できる。従って、全体の計算時間は、入力文字
列データの長さにほぼ比例する。ところで、現実の装置
においては、無限容量の辞書を実現することは不可能で
あり、ある有限の容量の辞書130を用いることにな
る。従って、大規模な文字列データを入力した場合に、
辞書130が満杯になり、新たな部分列を格納できなく
なることを考慮しなくてはならない。
【0067】そこで、本実施例では、辞書130が満杯
になった場合には、これまでに格納された部分列の中
で、他の部分列の前半部または後半部として使われてい
ない部分列を探し出して、その部分列を表す情報(文字
列の前半部と後半部の部分列を指し示す登録番号の組)
を一旦消去し、消去した部分列と同じ登録番号で指し示
される記憶領域に新しい部分列を表す情報を格納し、以
降の処理を進めることとする(以後、この処理を「辞書
溢れ続行処理」と呼ぶ)。
【0068】上記の辞書溢れ続行処理を行うことによ
り、過去の部分列の情報の一部が失われるため、本来は
一致検出して圧縮できるはずだった部分列が検出できな
くなる恐れがある。圧縮できなかった文字列は、そのま
ま出力されるので、圧縮率が低下することはあるが、情
報が失われたり、歪んだりする心配はない。復元装置に
おいて、圧縮装置と同等以上の容量の辞書があれば、正
しく元通りに復元可能であることが保証される。
【0069】また、現実の文字列データにおいては、距
離的に近い位置にある部分列の方が複数回出現する可能
性が高いと仮定すると、上記の辞書溢れ続行処理のよう
に、使用頻度の低い部分列を消去して最新の部分列に置
き換えた方が、限られた辞書容量をより有効に利用する
ことになり、結果として圧縮率の低下を少なく抑えられ
ると考えられる。
【0070】辞書溢れ続行処理を実施する際には、消去
してもよい部分列を高速に発見するために、ある部分列
が他の部分列から参照されている回数を数えるカウンタ
を、個々の部分列情報に付加し、新たに参照されたり、
参照が失われたりしたときには、このカウンタの値を増
減させるようにする。そして、カウンタの値が0になっ
ている部分列を常にリストアップしておくことにより、
必要なときに即座に辞書130を更新することができ
る。
【0071】[第2の実施例]以下の第2の実施例は、
図6に示す文字列データ復元装置200に基づいて説明
する。当該文字列データ復元装置200では、前述の第
1の実施例における図10に示す圧縮符号化されたコー
ド列データが入力された場合には、図9に示す内容の辞
書が復元される。
【0072】例えば、図9において、部分列4として辞
書230に格納されている部分列を取り出して出力する
ためには、復元制御部240は、先ず部分列4の前半部
である部分列1を参照し、さらに、部分列1の前半部を
参照して「A」を出力し、次に、部分列1の後半部を参
照して「B」を出力し、これをもって部分列1の出力が
完了する。
【0073】次に、部分列4に一旦戻り、その後半部で
ある部分列3を参照し、以下同様にして「A」「A」を
出力する。このようにして部分列4全体を出力すること
ができる。復元文字列データを出力するタイミングに関
しては、圧縮コード列データを最後まで読み終えるのを
待つことなく、入力処理部210または、辞書230か
ら部分列を取り出す毎に、同時並行的に出力が行われ
る。
【0074】[第3の実施例]第3の実施例として、図
7に示す文字列データ演算処理装置について説明する。
当該文字列データ演算処理装置は、圧縮コード列データ
同士の二項演算処理を行うものであり、前述の第2の実
施例の圧縮コード列復元装置200を入力処理部31
0、320とし、前述の第1の実施例の文字列データ圧
縮符号化装置100を出力処理部360とし、入力処理
部310、320から入力された2つの復元文字列デー
タの二項演算を行う演算処理部330とある有限の容量
の演算処理高速化辞書350とこれらの各構成要素を制
御する制御部340から構成されている。
【0075】制御部340では、2つの入力処理部31
0、320及び出力処理部360から部分列がそれぞれ
が有する辞書(図6の辞書230に相当)に格納された
り、参照された場合に、それぞれの登録番号の情報を取
得し、ある2つの入力部分列の組に対する演算処理部3
30における二項演算の結果がどの部分列に対応したか
を監視し、当該2つの部分列とよび二項演算の結果が対
応する部分列の3つの部分列の登録番号の組が得られる
毎に、演算処理高速化辞書350に格納する。そして、
この演算処理高速化辞書350を参照して、同一の入力
部分列の組が複数回出現したことを検出する。
【0076】ここで、同一の入力部分列の組を検出した
場合に、2回目以降は、入力処理部310、320に対
して、部分列の登録番号を文字列データに復元する処理
を省略するように指令を出し、出力処理部360では、
演算処理高速化辞書350に格納されている演算結果の
部分列の登録番号をそのまま出力するように指令を出
す。これにより、同じ演算処理を繰り返すことないた
め、高速化が可能となる。
【0077】図11は、本発明の第3の実施例の演算処
理高速化辞書の例を示す。当該演算処理高速化辞書35
0には、2つの入力と1つの演算結果の合わせて3つの
部分列の登録番号が1組として登録する。ランダムアク
セス可能な記憶装置を前提とすれば、ハッシュテーブル
の技法により、当該辞書350のエントリ数に依存せず
に、ある定数時間で、1回の登録・参照を行うことがで
きる。
【0078】現実の装置では、演算処理高速化辞書35
0の容量は有限なものであるが、当該辞書350が満杯
になった場合には、古い情報を適宜消去して新しい情報
を上書きする。これにより省略できるはずの部分列を検
出する機会が失われ、演算処理速度が低下する恐れがあ
る。しかし、その場合でも速度が低下するだけで演算結
果のコード列データの内容には影響はない。
【0079】なお、本発明は、上記の実施例に限定され
ることなく、特許請求の範囲内で種々変更・応用が可能
である。
【0080】
【発明の効果】上述のように、本発明によれば、圧縮符
号化されたコード列データを復元処理を通さずに直接演
算処理を行う装置を提供できる。これにより、データの
圧縮率にほぼ比例して、処理の高速化が可能となる。ま
た、本発明によれば、すべての入力データを前もって記
憶装置内に格納可能でない場合でも、入力された圧縮コ
ード列データの先頭から順次、演算処理を実行し、演算
結果を順次出力することが可能である。これにより、従
来手法では扱えなかった大規模なデータの演算処理が行
えるようになる。
【0081】さらに、本発明によれば、複数個の演算処
理装置を直列に接続することにより、パイプライン式に
並行実行して高速化を図ることができる。
【図面の簡単な説明】
【図1】本発明の原理構成図(文字列データ圧縮符号化
装置)である。
【図2】本発明の原理構成図(文字列データ復元装置)
である。
【図3】本発明の原理構成図(文字列データ演算処理装
置)である。
【図4】本発明の文字列データ圧縮符号化装置の構成図
である。
【図5】本発明の部分列の分解規則を説明するための図
である。
【図6】本発明の文字列データ復元装置の構成図であ
る。
【図7】本発明の文字列データ演算処理装置の構成図で
ある。
【図8】本発明の第1の実施例の文字列データ圧縮符号
化装置の動作を説明するための図である。
【図9】本発明の第1の実施例の文字列データの部分列
を登録した辞書の一例である。
【図10】本発明の第1の実施例の文字列データを圧縮
符号化したコード列データの一例である。
【図11】本発明の第3の実施例の演算処理高速化辞書
の例である。
【図12】X1 ,X2 ,X3 の3変数を入力とする論理
関数データを表現する真理値表の一例である。
【図13】論理関数データに対して入力変数に0,1を
代入することにより展開して得られる二分木状のグラフ
の一例である。
【図14】二分決定グラフの共有化処理を説明するため
の図である。
【図15】二分決定グラフの非冗長化処理を説明するた
めの図である。
【図16】論理関数データを表現する二分決定グラフの
一例である。
【図17】二分決定グラフを記憶装置に格納するために
グラフの節点を列挙した表の一例である。
【符号の説明】
100 文字列データ圧縮符号化装置 110 入力処理手段、入力処理部 120 出力処理手段、出力処理部 130 辞書 140 圧縮符号化制御部 141 検出手段 142 出力制御手段 150 分解規則 200 文字列データ復元装置 210 入力処理手段、入力処理部 220 出力処理手段、出力処理部 230 辞書 240 復元制御手段、復元制御部 300 文字列データ演算処理装置 310、320 入力処理手段 330 演算処理手段 340 制御部 350 演算処理高速化辞書 360 出力処理手段

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 2n (但し、nは0以上の整数定数)個
    の長さの文字列データを入力とし、その情報を損なうこ
    となしにデータを圧縮したコード列データを出力する文
    字列データ圧縮符号化装置であって、 圧縮前の文字列データを先頭から順次読み込む入力処理
    手段と、 圧縮符号化後のコード列データを先頭から順次出力する
    出力処理手段と、 ある有限の容量の辞書と、 前記入力処理手段から入力された長さ2n の入力文字列
    データをその前半部と後半部のそれぞれ半分の長さの2
    つの部分列に区切り、得られた該部分列の前半部と後半
    部に区切り、これを繰り返して、長さ1,2,4,8,
    16,…2(n-1 ) の部分列に分解する分解規則と、 前記分解規則を参照して前記入力処理手段から入力され
    た前記入力文字列データを順次読み込みながら、前記長
    さ1,2,4,8,16,…2(n-1) の部分列を取り出
    して、異なる文字列毎に異なる登録番号を付与して、前
    記辞書にその容量の許す限り格納し、該辞書を参照しな
    がら、該入力文字列データを読み込むことにより、該入
    力文字列データの中に同一の文字列が複数回繰り返して
    出現したことを検出する検出手段と、 前記入力文字列データに同一の文字列からなる部分列が
    複数回繰り返して出現する場合には、1回目は文字列と
    該文字列の登録番号の組を出力するように前記出力処理
    手段に指示し、2回目以降は、該部分列を指し示す登録
    番号のみを出力するよう該出力処理手段に指示する出力
    制御手段とを有することを特徴とする文字列データ圧縮
    符号化装置。
  2. 【請求項2】 任意の長さの文字列データが入力された
    場合に、入力文字列データの長さがちょうど2n (但
    し、nはなるべく小さい整数定数)となるように、空白
    を表す特別な文字を文字列データの末尾に複数個追加す
    る手段を有する請求項1記載の文字列データ圧縮符号化
    装置。
  3. 【請求項3】 前記検出手段は、 長さ2以上の任意の文字列aを、前半部と後半部のそれ
    ぞれ半分の長さの2つの部分列a1と部分列a2に分解
    し、該部分列a1と該部分列a2の文字列がすでに前記
    辞書に格納されている場合に、該部分列a1と該部分列
    a2の文字列を指し示す登録番号の組を持って文字列a
    を表現し、該組に該文字列aを表す新たな登録番号を与
    えて該辞書に格納する格納手段を有し、 前記出力制御手段は、 長さ2以上の文字列aを出力する際に、前半部と後半部
    の2つの部分列a1,部分列a2の文字列が前記辞書に
    格納されていない場合には、該部分列a1,部分列a2
    の文字列を順次出力させることにより、文字列aを表現
    し、該部分列a1、該部分列a2の片方または両方の文
    字列が該辞書に格納済の場合には、格納済の文字列を出
    力する代わりに該文字列が指し示す登録番号を出力させ
    る手段を有する請求項1記載の文字列データ圧縮符号化
    装置。
  4. 【請求項4】 前記格納手段は、 前記辞書の容量が限界に達して、新しい文字列xを格納
    できなくなった場合に、これまでに格納された文字列の
    中で、他の文字列の前半部または後半部としてまだ一度
    も使われていない文字列yを検索し、該文字列yを表す
    該文字列yの前半部と後半部の文字列を指し示す登録番
    号の組を一旦消去し、消去した文字列yと同じ登録番号
    で指し示される記憶領域に新しい文字列xを表す情報を
    格納し、以降の処理を進める手段を有する請求項3記載
    の文字列データ圧縮符号化装置。
  5. 【請求項5】 文字列データ圧縮符号化装置により圧縮
    符号化されたコード列データから元の文字列データを復
    元して取り出す文字列データ復元装置であって、 圧縮符号化されたコード列データを先頭から順次読み込
    む入力処理手段と、 復元した文字列データを先頭から順次出力する出力処理
    手段と、 文字列データを圧縮したときに用いた文字列データ圧縮
    符号化装置の辞書と同等または、それ以上の容量の辞書
    と、 前記入力処理手段から取得した圧縮符号化されたコード
    列データを順次読み込む際に、単純な文字列として表現
    された部分列を読み込んだ場合には、該文字列をそのま
    ま出力するように前記出力処理手段に指示し、部分列の
    登録番号と文字列の組を読み込んだ場合には、前記辞書
    に該文字列を該登録番号を付与して格納し、部分列の登
    録番号のみを読み込んだ場合には、該登録番号が指し示
    す部分列を該辞書から取り出して出力するように該出力
    処理手段に指示する復元制御手段とを有することを特徴
    とする文字列データ復元装置。
  6. 【請求項6】 前記復元制御手段は、 圧縮符号化された前記コード列データを順次読み込む際
    に、前半部と後半部の2つの部分列の組によって表現さ
    れた文字列が入力された場合に、該前半部と該後半部の
    部分列の登録番号の組をもって該文字列を表現して前記
    辞書に格納する手段と、 前記辞書に格納された部分列を取り出して、出力する際
    には、該部分列の前半部と後半部の部分列を該辞書から
    順次参照し、それらの部分列がさらに前半部と後半部の
    組として表現されている場合には、さらにそれらを順次
    参照し、長さ1の部分列を取り出して出力させる手段を
    更に有する請求項5記載の文字列データ復元装置。
  7. 【請求項7】 任意の2個の文字に対して1個の文字を
    計算して出力する、ある二項演算が定義されている場合
    に、長さが同じ2本の文字列データを入力として、先頭
    からそれぞれ同じ位置にある文字同士について、所定の
    二項演算を計算した結果を表す1本の文字列データを出
    力する文字列データ演算処理装置であって、 圧縮符号化されたコード列データを先頭から順次読み込
    む第1の入力手段と、復元した文字列データを先頭から
    順次出力する第1の出力手段と、文字列データを圧縮し
    たときに用いた文字列データ圧縮符号化装置の辞書と同
    等または、それ以上の容量の第1の辞書と、該第1の入
    力手段から取得した圧縮符号化されたコード列データを
    順次読み込む際に、単純な文字列として表現された部分
    列を読み込んだ場合には、該文字列をそのまま出力する
    ように該第1の出力手段に指示し、部分列の登録番号と
    文字列の組を読み込んだ場合には、該第1の辞書に該文
    字列を該登録番号を付与して格納し、部分列の登録番号
    のみを読み込んだ場合には、該登録番号が指し示す部分
    列を該第1の辞書から取り出して出力するように該第1
    の出力手段に指示する復元制御手段とを有する2つの文
    字列データ復元装置からなり、入力されたコード列デー
    タを文字列データにそれぞれ復元して転送する2つの入
    力処理手段と、 前記入力処理手段から転送された2つの文字列データ
    の、先頭からそれぞれ同じ位置にある文字同士の二項演
    算を順次計算し、その結果を新たな文字列データとして
    転送する演算処理手段と、 圧縮前の文字列データを先頭から順次読み込む第2の入
    力手段と、圧縮符号化後のコード列データを先頭から順
    次出力する第2の出力手段と、ある有限の容量の第2の
    辞書と、該第2の入力手段から入力された長さ2n の入
    力文字列データをその前半部と後半部のそれぞれ半分の
    長さの2つの部分列に区切り、得られた該部分列の前半
    部と後半部に区切り、これを繰り返して、長さ1,2,
    4,8,16,…2(n-1) の部分列に分解する分解規則
    と、該分解規則を参照して該第2の入力手段から入力さ
    れた該入力文字列データを順次読み込みながら、該長さ
    1,2,4,8,16,…2(n-1) の部分列を取り出し
    て、異なる文字列毎に異なる登録番号を付与して、該第
    2の辞書にその容量の許す限り格納し、該第2の辞書を
    参照しながら、該入力文字列データを読み込むことによ
    り、該入力文字列データの中に同一の文字列が複数回繰
    り返して出現したことを検出する検出手段と、該入力文
    字列データに同一の文字列からなる部分列が複数回繰り
    返して出現する場合には、1回目は文字列と該文字列の
    登録番号の組を出力するように該第2の出力手段に指示
    し、2回目以降は、該部分列を指し示す登録番号のみを
    出力するよう該第2の出力手段に指示する出力制御手段
    とをする文字列データ圧縮符号化装置であり、前記演算
    処理手段から転送された前記文字列データを圧縮符号化
    してコード列データとして出力する出力処理手段とを有
    することを特徴とする文字列データ演算処理装置。
  8. 【請求項8】 前記入力処理手段と前記出力処理手段
    は、部分列がそれぞれの前記第1の辞書または前記第2
    の辞書に格納または参照された場合に、それぞれの登録
    番号の情報を転送する転送手段を更に有し、 前記転送手段から前記登録番号の情報を取得し、ある2
    つの入力部分列の組に対する二項演算の結果がどの部分
    列に対応したかを、2つの入力部分列と1つの出力部分
    列の3つの部分列の登録番号の組として、ある有限の容
    量の演算高速化辞書に該容量が許す限り格納し、該演算
    高速化辞書を参照しながら演算処理を順次行うことによ
    り、同一の入力部分列の組が複数回出現したことを検出
    する検出手段と、 同一の入力部分列の組が出現したときには、前記入力処
    理手段において、部分列の登録番号を文字列データに復
    元する処理を省略するように制御し、前記出力処理手段
    において前記演算高速処理辞書に格納されている演算結
    果の部分列の登録番号をそのまま出力するように制御す
    る制御手段を更に有する請求項7記載の文字列データ演
    算処理装置。
JP17162299A 1999-06-17 1999-06-17 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置 Expired - Fee Related JP3555506B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17162299A JP3555506B2 (ja) 1999-06-17 1999-06-17 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17162299A JP3555506B2 (ja) 1999-06-17 1999-06-17 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置

Publications (2)

Publication Number Publication Date
JP2000357970A true JP2000357970A (ja) 2000-12-26
JP3555506B2 JP3555506B2 (ja) 2004-08-18

Family

ID=15926600

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17162299A Expired - Fee Related JP3555506B2 (ja) 1999-06-17 1999-06-17 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置

Country Status (1)

Country Link
JP (1) JP3555506B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011521587A (ja) * 2008-05-21 2011-07-21 ファン・デン・ボーム、イポ・パウルス・ウィレム・マリヌス・マリア 特有数値でデータを符号化および復号するための方法および装置
JP2014204356A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 文字列圧縮方法及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011521587A (ja) * 2008-05-21 2011-07-21 ファン・デン・ボーム、イポ・パウルス・ウィレム・マリヌス・マリア 特有数値でデータを符号化および復号するための方法および装置
JP2014204356A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 文字列圧縮方法及び装置

Also Published As

Publication number Publication date
JP3555506B2 (ja) 2004-08-18

Similar Documents

Publication Publication Date Title
JP3009727B2 (ja) 改良形データ圧縮装置
Nelson et al. The data compression book 2nd edition
JP2581903B2 (ja) バイト整列式データ圧縮方法及び装置
JP3273119B2 (ja) データ圧縮・伸長装置
Rigler et al. FPGA-based lossless data compression using Huffman and LZ77 algorithms
JP3241788B2 (ja) データ圧縮方式
Anisimov et al. Variable-length prefix codes with multiple delimiters
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JP3555506B2 (ja) 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置
JP3241787B2 (ja) データ圧縮方式
JP3038223B2 (ja) データ圧縮方式
JPH10261969A (ja) データ圧縮方法および装置
Sinha et al. Local decodability of the burrows-wheeler transform
Bharathi et al. A plain-text incremental compression (pic) technique with fast lookup ability
De Agostino LZW Data Compression on Large Scale and Extreme Distributed Systems.
JPH05152971A (ja) データ圧縮・復元方法
JPH06168097A (ja) データ符号化方式及びデータ復元方式
Höglund Lightweight Real-Time Lossless Software Compression of Trace Data
Akil et al. FPGA-based architecture for hardware compression/decompression of wide format images
Klein et al. Parallel Lempel Ziv Coding
JPH04167821A (ja) データ符号化及び復号化方法
JP3012677B2 (ja) Zl符号化方法
JP3053656B2 (ja) データ圧縮における辞書登録方式
Kumar A plain-text compression technique with fast lookup ability
JPH03209923A (ja) データ圧縮方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040331

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: 20040420

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040503

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: 20090521

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090521

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100521

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees