JP5807592B2 - 符号化方法、符号化装置及びコンピュータプログラム - Google Patents

符号化方法、符号化装置及びコンピュータプログラム Download PDF

Info

Publication number
JP5807592B2
JP5807592B2 JP2012062475A JP2012062475A JP5807592B2 JP 5807592 B2 JP5807592 B2 JP 5807592B2 JP 2012062475 A JP2012062475 A JP 2012062475A JP 2012062475 A JP2012062475 A JP 2012062475A JP 5807592 B2 JP5807592 B2 JP 5807592B2
Authority
JP
Japan
Prior art keywords
character string
byte
address
length
matching
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 - Fee Related
Application number
JP2012062475A
Other languages
English (en)
Other versions
JP2013197850A (ja
Inventor
井谷 宣子
宣子 井谷
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012062475A priority Critical patent/JP5807592B2/ja
Publication of JP2013197850A publication Critical patent/JP2013197850A/ja
Application granted granted Critical
Publication of JP5807592B2 publication Critical patent/JP5807592B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データを符号化する符号化方法、符号化装置及びコンピュータプログラムに関する。
近年、コンピュータ等の情報処理装置では、文字コード、プログラムコード、数値データ、画像データ、動画データ等の様々な種類のデータが利用されており、情報処理装置が備える記憶装置の大容量化に伴い、データ量も増大している。情報処理装置にて大量のデータを利用する場合、データ中の冗長な部分を省いて符号化することにより、必要な記憶容量を減らしたり、遠隔地へ高速に伝送したりすることが行われている。
従来の符号化技術として、LZ77符号化が知られている。LZ77符号化では、一定サイズのスライドバッファを設け、このスライドバッファ内で入力文字列と最長一致する文字列を検索し、一致する文字列の出現位置と一致長とを用いて入力文字列を符号化することを行う。
LZ77符号化により符号化されたデータは、出現位置及び一致長により特定される文字列の単純なコピーにより復号することが可能であるため、高速な復号処理が可能である。このため、ソフトウェアアップデートなど、復号のみが多用されるケースでは、高速な復号処理が可能なLZ77符号化が用いられることが多い。
国際公開第2004/062110号 特開2001−345710号公報
LZ77符号化の実装における課題の1つは、符号化処理における重複文字列の検出をいかに高速に行うかである。
重複文字列の検出手法として、予め定めた長さ(例えば、3バイト)の接頭語の最近出現位置リストを作成しておき、この最近出現位置リストを利用する手法が提案されている。すなわち、最近出願位置リストを参照し、符号化対象の文字列(接頭語)と同じ文字列の出現箇所を順に辿ることによって、より長く一致する重複文字列を検出する(特許文献1及び2を参照)。
しかしながら、前述の従来手法では、同じ接頭語を持つ文字列が多い場合に、重複文字列の候補が多くなり、重複文字列の検出に時間がかかるという問題点を有していた。例えば、プログラムコードや数値データなどは、一致する3バイト長の文字列(同一の接頭語)が多数出現すると共に、その接頭語に1バイトの文字を付加したバリエーションが多数存在するため、最近出現位置リストをリンクドリストとして用いて重複文字列を検出する場合、検出時間が長くなるという問題点を有していた。
本願は、上記の課題を解決するため、符号化処理における重複文字列の検出を高速化することができる符号化方法、符号化装置及びコンピュータプログラムを提供することを目的とする。
本願に開示する符号化方法は、バイト単位に上位から下位の順にアドレスを指定してデータを記憶する記憶部に、複数バイトからなる文字列データを記憶し、前記記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出し、抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報を、該第1アドレスに関連付けて記憶し、関連付けて記憶した前記第1及び第2アドレスを参照して、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出し、検出した結果に基づき、前記文字列データを符号化する。
本願によれば、符号化処理における重複文字列の検出を高速化することができる。
本実施の形態に係る符号化装置の機能的構成を示すブロック図である。 本実施の形態に係る符号化装置のハードウェア構成を示すブロック図である。 入力バッファに記憶した文字列データの一例を示す図である。 順位リストの一例を示す図である。 最近出現位置リストの一例を示す図である。 統合リストの一例を示す図である。 符号化手法を説明する説明図である。 符号化処理の処理手順を説明するフローチャートである。 符号化処理の処理手順を説明するフローチャートである。 実施の形態2に係る符号化処理の処理手順を説明するフローチャートである。 実施の形態2に係る符号化処理の処理手順を説明するフローチャートである。
以下、本願をその実施の形態を示す図面に基づいて具体的に説明する。
実施の形態1.
図1は本実施の形態に係る符号化装置の機能的構成を示すブロック図である。本実施の形態に係る符号化装置は、入力部11、記憶部12、抽出部13、リスト生成部14、リスト統合部15、検出部16、及び符号化部17を備える。記憶部12が備える記憶領域の一部は、符号化対象のデータをバッファサイズ分ずつ記憶する入力バッファ121、及び入力バッファ121に記憶した符号化対象のデータから生成されるリストを記憶するための順位リスト保持部122a〜122c、最近出現位置リスト保持部123a〜123c、統合リスト保持部124として利用される。
入力部11は、装置外部から入力された符号化対象のデータを記憶部12に記憶させる。符号化対象のデータは、例えば、文字コード、画像データ、プログラムコード、数値データなどの各種データを含み、複数バイト長の文字列により構成される。記憶部12には、適宜のサイズからなる入力バッファ121が設けられ、符号化対象のデータは、入力バッファ121のバッファサイズ分ずつ切り出され、入力バッファ121にて記憶される。
なお、符号化対象のデータは、入力部11を通じて装置外部から入力されるものだけでなく、装置内部で生成されたデータを符号化対象としてもよい。
抽出部13は、入力バッファ121に記憶した文字列データから、入力バッファ121中の各アドレスを起点として、例えば、3バイト長の文字列(3バイト文字列)、4バイト長の文字列(4バイト文字列)、及び5バイト長の文字列(5バイト文字列)をアドレス順次に抽出する。
リスト生成部14は、抽出部13が抽出した3バイト文字列、4バイト文字列、及び5バイト文字列の夫々について、抽出した文字列同士が一致する一致文字列を検出する。次いで、リスト生成部14は、検出した一致文字列同士の相対位置を示す情報をリスト化することにより、最近出現位置リストを生成する。リスト生成部14は、生成した最近出現位置リストを最近出現位置リスト保持部123a〜123cに記憶する。
リスト統合部15は、最近出現位置リスト保持部123a〜123cに記憶した最近出現位置リストを1つに統合し、統合リストを生成する。このとき、リスト統合部15は、最も長いバイト長の文字列(本実施の形態では5バイト文字列)の一致を優先的に選択し、一致文字列のバイト長(接頭語の長さ)及び一致文字列の相対位置を関連付けて記憶することにより、統合リストを生成する。リスト統合部15は、生成した統合リストを統合リスト保持部124に記憶する。
検出部16は、統合リスト保持部124に記憶した統合リストを参照して、入力バッファ121内の重複文字列を検出する。ここで、最長の接頭語(本実施の形態では、5バイト文字列)を含む重複文字列を検出する場合、検出部16は、各一致文字列の先頭バイトまで遡ってその接頭語を含んだ重複文字列を検出する。それ以外の長さの接頭語(本実施の形態では、3バイト文字列及び4バイト文字列)を検出する場合、検出部16は、統合リストに記憶されている相対位置で検出を終了する。
符号化部17は、入力バッファ121に記憶した文字列データを、検出部16が検出した重複文字列の(相対位置,一致長)により符号化を行う。符号化部17が出力する符号データは、例えば、圧縮データとして出力ファイルに格納され、必要に応じてファイル転送又はファイル格納が実行される。
本実施の形態では、入力バッファ121に記憶した文字列データから、3バイト長、4バイト長及び5バイト長の各文字列を抽出して符号化する構成について説明するが、抽出する文字列のバイト長は適宜設定することが可能である。例えば、本実施の形態では、3種類のバイト長の文字列を抽出する構成としたが、2種類以上のバイト長の文字列を抽出すればよく、nバイト長及びn+1バイト長(ここで、nは2以上の整数、例えばn=3)の文字列を抽出する構成としてもよい。また、抽出する文字列のバイト長は、連続した整数値をとる必要はなく、3バイト長、4バイト長、5バイト長、8バイト長のように、離散的な整数値に設定してもよい。
図2は本実施の形態に係る符号化装置のハードウェア構成を示すブロック図である。本実施の形態に係る符号化装置は、CPU101、ROM102、RAM103、通信インタフェース104、ハードディスクドライブ105、光ディスクドライブ106、キーボード107、及びディスプレイ108を備える。
ROM102には、上述したハードウェア各部の動作を制御するために必要な制御用プログラムが予め格納されている。また、ハードディスク105Dには、符号化装置に入力された文字列データを符号化するためのコンピュータプログラムが予め格納されている。
CPU101は、適宜のタイミングでROM102又はハードディスク105Dに格納されているコンピュータプログラムをRAM103上に読み出して実行することにより、上述したハードウェア各部の動作を制御し、装置全体を本願の符号化装置として動作させる。
RAM103は、DRAM(Dynamic RAM)、SRAM(Static RAM)、フラッシュメモリなどのデータを一時的に記憶するためのメモリである。RAM103には、上述した入力バッファ121及び各種リスト保持部122a〜122c,123a〜123c,124が設けられ、符号化対象のデータを記憶すると共に、CPU101によるコンピュータプログラムの実行時に発生する種々のデータ(例えば、各種パラメータ、演算の途中経過、演算結果等)を一時的に記憶する。
通信インタフェース104は、通信ネットワーク(不図示)を介して、外部の装置と通信を行うためのインタフェースである。
ハードディスクドライブ105は、ハードディスク105Dに対してデータの書き込み、及びハードディスク105Dからのデータの読み出しを制御する。ハードディスクドライブ105は、キーボード107を通じて受付けた情報、通信インタフェース104にて受信した情報、光ディスクドライブ106により光ディスク106Dから読み出された情報等をハードディスク105Dに書き込むことにより、ハードディスク105Dに各種情報を記憶させる。
光ディスクドライブ106は、光ディスク106Dに対してデータの書き込み、及び光ディスク106Dに記録されたデータの読み出しを制御する。なお、本実施の形態では、本願のコンピュータプログラムがハードディスク105Dに記憶されているものとするが、光ディスク106Dに記録された状態で提供されるものであってもよい。
キーボード107は、ユーザによる操作及び文字入力を受付ける。ディスプレイ108は、ユーザに報知すべき情報を表示する。
なお、符号化装置のハードウェア構成は上記のものに限定されるものではない。例えば、通信ネットワークを介して符号化装置10の遠隔操作が可能である場合には、光ディスクドライブ106、キーボード107、ディスプレイ108等が省略されていてもよい。
符号化装置は、ハードディスク105Dに格納されたコンピュータプログラムをCPU101に実行させ、ROM102に格納された制御用プログラムに従ってハードウェア各部を制御することにより、図1に示した記憶部12、抽出部13、リスト生成部14、リスト統合部15、検出部16、及び符号化部17としての機能を実現する。
次に、符号化装置の各処理部が実行する処理内容について説明する。図3は入力バッファ121に記憶した文字列データの一例を示す図である。図3に一例として示した入力バッファ121のバッファサイズは34バイトであり、入力バッファ121中の各アドレス「1」〜「34」に対応付けて、文字列データ「abcde…fgh」の各文字を記憶している様子を示している。
抽出部13は、入力バッファ121に記憶した文字列データから、各アドレスを起点とする3バイト文字列、4バイト文字列、及び5バイト文字列をそれぞれアドレス順次に抽出する。
例えば、図3に示す文字列データから3バイト文字列を抽出する場合、抽出部13は、入力バッファ121の先頭アドレスであるアドレス「1」を起点として文字列「abc」を抽出し、次いで、アドレス「2」を起点とする文字列「bcd」、アドレス「3」を起点とする文字列「cde」、…、アドレス「34」を起点とする文字列「h__」のように、アドレスを1バイトずつ変更しながら3バイト長の文字列を順次抽出する。ここで、「_」は該当する文字が存在しないことを示している。
4バイト文字列及び5バイト文字列を抽出する場合についても全く同様であり、抽出部13は、入力バッファ121に記憶した文字列データから、各アドレスを起点とする4バイト文字列及び5バイト文字列をアドレス順次に抽出する。
抽出部13は、抽出した文字列をソートして各バイト長の文字列について順位リストを生成する。図4は順位リストの一例を示す図である。例えば、図3に示す文字列データからアドレス順次に3バイト文字列を抽出した場合、前述したように、「abc」、「bcd」、「cde」、…等の文字列が得られる。抽出した文字列を、例えば、文字コードの小さい順にソートした場合、アドレス「1」,「9」,「15」,「21」及び「27」を起点として抽出される「abc」の文字列が第1順位となるので、これらのアドレスを「abc」の文字列と関連付けて順位リストに記憶する。同様に、抽出部13は、ソート結果の順に、ソートした文字列と当該文字列の先頭アドレスとを関連付けて記憶することにより、順位リストを生成する。図4(a)は、3バイト文字列から生成した順位リストの一例を表す。
4バイト文字列及び5バイト文字列をソートする場合も全く同様であり、4バイト文字列及び5バイト文字列から生成した順位リストは、それぞれ図4(b)及び図4(c)に示したようになる。
リスト生成部14は、抽出部13が生成した順位リストを参照し、最近出現位置リストを生成する。ここで、最近出現位置は、抽出した各バイト長の文字列同士が一致する一致文字列夫々の先頭アドレスのうち、任意のアドレス(第1アドレス)よりも上位であり、このアドレス(第1アドレス)に最も近いアドレス(第2アドレス)の位置を表す。最近出現位置リストは、入力バッファ121中のアドレス毎に最近出現位置を記憶したリストである。
例えば、図4(a)に示す順位リストを参照した場合、入力バッファ121のアドレス「9」を起点として抽出した「abc」という文字列は、アドレス「1」、「15」、「21」、「27」から抽出した文字列に一致する。このうち、アドレス「9」より上位であり、かつアドレス「9」に最も近いアドレスは、アドレス「1」である。このため、リスト生成部14は、アドレス「9」からみたアドレス「1」の相対位置(=8)を、アドレス「9」に関連付けて記憶する。なお、該当する最近出現位置が存在しない場合には「0」を記憶する。
このように、リスト生成部14は、最近出現した文字列がない場合には「0」を、文字列がある場合にはその相対位置を示す値をアドレス毎に記憶して、最近出現位置リストを生成する。図5は最近出現位置リストの一例を示す図であり、図5(a)〜図5(c)は、それぞれ3バイト文字列、4バイト文字列、5バイト文字列について生成した最近出現位置リストを表している。
リスト統合部15は、各バイト長の文字列についての最近出現位置リストを1つに統合する。このとき、リスト統合部15は、より長いバイト長の文字列を優先的に選択し、相対位置を示す値及び一致する文字列のバイト長をアドレス毎に記憶して、統合リストを生成する。図6は統合リストの一例を示す図である。図6に示した統合リストの上段は一致文字列(接頭語)のバイト長を表し、下段は、相対位置を示す値を表している。
例えば、図5(a)〜図5(c)に示す各最近出現位置リストのアドレス「1」〜「8」の欄を参照した場合、何れも「0」が記憶されているため、リスト統合部15は、統合リストのバイト長及び相対位置の欄に「0」を記憶する。
次いで、各最近出現位置リストのアドレス「9」の欄を参照した場合、一致文字列の相対位置を示す値として「8」が記憶されている。この場合、リスト統合部15は、より長いバイト長の相対位置、すなわち5バイト長の一致文字列の相対位置を示す「8」を選択し、バイト長及び相対位置を示す値(「5」及び「8」)を統合リストに記憶する。
以下同様にして、リスト統合部15は、アドレス毎に採用する相対位置を選択し、選択した相対位置を示す値、及び一致文字列のバイト長を記憶することにより、統合リストを生成する。
検出部16は、統合リストを参照して重複文字列を検出する。このとき、検出部16は、最長バイト長の5バイト文字列については、各一致文字列の先頭バイトまで遡って検出対象の文字列を含んだ重複文字列を検出し、それ以外のバイト長の文字列(3バイト文字列及び4バイト文字列)については、統合リストに記憶された相対位置で検出を終了する。すなわち、検出部16は、接頭語のバイト長が最長バイト長である場合にのみ、統合リストをリンクドリストとして使用して重複文字列の検出を行う。
符号化部17は、検出部16による検出結果を利用して、重複文字列の(相対位置,一致長)で入力バッファ121に記憶された文字列データを符号化する。
図7は符号化手法を説明する説明図である。入力バッファ121に、図3に示した文字列データが記憶されているものとした場合、前述したように、図6に示した統合リストが得られる。入力バッファ121の先頭バイト(アドレス「1」)から順次符号化を行い、現在の符号化位置がアドレス「24」であったとする。統合リストのアドレス「24」の欄を参照すると、相対位置は「13」であり、記憶されているバイト長は「3」であるため、検出部16は、アドレス「24」を先頭バイトとする3バイト文字列「cbe」と一致する文字列を、アドレス「24」から13バイト前の位置(アドレス「11」)から検出する。この場合、3バイト文字列「cbe」が重複文字列として検出される。統合リストのアドレス「24」の欄に記憶されているバイト長は最長バイト長の「5」ではないため、検出部16は、検出した位置以外に一致候補は存在しないと判断し、アドレス「11」の位置で検出を終了する。検出結果により得られる重複文字列「cbe」の相対位置及び一致長は13及び3であるため、符号化部17は、アドレス「24」を先頭バイトとする3バイト文字列「cde」を、(13,3)で符号化する。
アドレス「24」を先頭バイトとする3バイト文字列の符号化が完了したので、符号化部17は、次の符号化位置をアドレス「27」に設定する。統合リストのアドレス「27」の欄を参照すると、相対位置は「18」であり、記憶されているバイト長は「5」であるため、検出部16は、アドレス「27」を先頭バイトとする5バイト文字列「abcde」を含む重複文字列を、アドレス「27」から18バイト前の位置(アドレス「9」)から検出する。この場合、アドレス「9」からアドレス「14」までの6バイト文字列「abcdef」が第1候補の重複文字列として検出される。
統合リストのアドレス「27」の欄に記憶されているバイト長は最長バイト長の「5」であるため、検出部16は、検出した位置以外に一致候補が存在する可能性があると判断し、更に入力バッファ121中のアドレスを上位アドレス側へ遡って一致候補、すなわち、前述した5バイト文字列「abcde」を含む重複文字列を検出する。この結果、アドレス「1」からアドレス「8」までの8バイト文字列「abcdefgh」が第2候補の重複文字列として検出される。
検出部16による検出により複数の候補が得られた場合、符号化部17は、最も長いバイト長の重複文字列を選択し、選択した重複文字列の相対位置及び一致長で文字列を符号化する。前述した例では、第2候補の重複文字列の方が第1候補の重複文字列より長いため、符号化部17は、第2候補の重複文字列を選択し、選択した第2候補の重複文字列の相対位置及び一致長で文字列を符号化する。すなわち、符号化位置であるアドレス「27」からみた第2候補の重複文字列の相対位置は「26」であり、一致長は「8」であるため、符号化部17は、アドレス「27」を先頭とする8バイト文字列「abcdefgh」を、(26,8)で符号化する。
このようにして、検出部16及び符号化部17は、入力バッファ121の先頭バイトから最終バイトまで検出及び符号化を繰り返して実行することにより、入力バッファ121に記憶された文字列データを符号化する。
次に、符号化装置が実行する符号化処理の処理手順について説明する。図8及び図9は符号化処理の処理手順を説明するフローチャートである。符号化装置は、まず、入力バッファ121に符号化対象のデータを入力する(ステップS11)。入力するデータは文字列データであり、対象の文字列データのバイト数が入力バッファ121のバッファサイズより大きい場合、バッファサイズ分だけ切出して文字列データを入力バッファ121に記憶する。ここで、入力バッファ121の表記をInBuf[BUFF_SIZE]とする。BUFF_SIZEは、入力バッファ121のバッファサイズを表す。
次いで、符号化装置の抽出部13は、入力バッファ121に記憶した文字列データから、各アドレスを起点とする3バイト文字列、4バイト文字列、及び5バイト文字列をそれぞれアドレス順次に抽出する。抽出部13は、抽出した3バイト文字列、4バイト文字列、及び5バイト文字列をそれぞれソートして、各バイト長の順位リストを生成し、生成した順位リストを記憶部12内の順位リスト保持部122a〜122cに記憶する。
リスト生成部14は、順位リスト保持部122a〜122cに記憶した順位リストを参照して、最近出現位置リストを生成する(ステップS12)。このとき、リスト生成部14は、3バイト文字列、4バイト文字列、及び5バイト文字列の夫々について最近出現位置リストを生成する。ここで、3バイト文字列、4バイト文字列、及び5バイト文字列の最近出現位置リストをそれぞれPrev3P[BUFF_SIZE]、Prev4P[BUFF_SIZE]、Prev5P[BUFF_SIZE]により表記する。
リスト生成部14は、生成した各バイト長の最近出現位置リストをそれぞれ記憶部12内の最近出現位置リスト保持部123a〜123cに記憶する。
リスト統合部15は、最近出現位置リスト保持部123a〜123cに記憶した最近出現位置リストを参照して、統合リストを生成する(ステップS13)。このとき、リスト統合部15は、より長いバイト長の文字列を優先的に選択し、相対位置を示す値及び一致する文字列(接頭語)のバイト長をアドレス毎に記憶して、統合リストを生成する。統合リストの表記を、Prev3−5P[BUFF_SIZE][2]とする。ここで、Prev3−5P[X][0]は、統合リスト内のアドレス「X」の欄に記憶されたバイト長を表し、Prev3−5P[X][1]は、統合リスト内のアドレス「X」の欄に記憶された相対位置を表すものとする。
リスト統合部15は、生成した統合リストを記憶部12内の統合リスト保持部124に記憶する。
次いで、符号化部17は、符号化位置を初期化(i=0)すると共に(ステップS14)、コピー位置及び一致長を初期化し(ステップS15)、比較アドレスを初期化する(ステップS16)。ここで、コピー位置及び一致長の表記を、それぞれoffset及びlenとした場合、符号化部17は、統合リストに記憶されたPrev3−5P[i][1]をoffsetに入力し、Prev3−5P[i][0]をlenに入力することにより、コピー位置及び一致長の初期化を行う。また、比較アドレスをcmp_pとした場合、符号化部17は、cmp_pにiの値を入力することにより、比較アドレスの初期化を行う。
符号化部17は、初期化した符号化位置、コピー位置、一致長、及び比較アドレスを検出部16に通知する。
検出部16は、Prev3−5P[cmp_p][0]<5であるか否かを判断する(ステップS17)。すなわち、検出部16は、現在の符号化位置iに対応して統合リストに記憶してあるバイト長が最長バイト長(本実施の形態の場合では「5」)より短いか否かを判断する。
現在の符号化位置iに対応して統合リストに記憶してあるバイト長が5である場合(S17:NO)、検出部16は、比較アドレスcmp_pを、cmp_p−Prev3−5P[cmp_p][1]に設定し(ステップS18)、比較アドレスcmp_pから始まる文字列と、現在の符号化位置iから始まる文字列とを比較して、重複文字列の一致長tmp_lenを求める(ステップS19)。
次いで、検出部16は、重複文字列の一致長tmp_lenが、現時点で記憶されている一致長lenより長いか否かを判断する(ステップS20)。
重複文字列の一致長tmp_lenが、現時点で記憶されている一致長lenより長い場合(S20:YES)、検出部16は、一致長lenを重複文字列の一致長tmp_lenに更新し、コピー位置offsetをi−cmp_pに更新する(ステップS21)。
ステップS21で一致長及びコピー位置を更新した場合(S21)、又はステップS20で、重複文字列の一致長tmp_lenが、現時点で記憶されている一致長len以下であると判断した場合(S20:NO)、検出部16は、処理をステップS17へ戻す。
ステップS17において、現在の符号化位置iに対応して統合リストに記憶してあるバイト長が5より短いと判断した場合(S17:YES)、検出部16は、現時点のコピー位置offset及び一致長lenを符号化部17に通知する。
符号化部17は、現時点の一致長lenが0であるか否かを判断する(ステップS22)。現時点の一致長lenが0である場合(S22:YES)、符号化部17は、InBuf[i]を符号化し(ステップS23)、符号化位置iを1だけインクリメントする(ステップS24)。なお、一致長lenが0の場合、符号化位置iの文字データ(InBuf[i])を出力することによって符号化を行う。
ステップS22において、現時点の一致長lenが0でない場合(S22:NO)、符号化部17は、InBuf[i],…,InBuf[i+len]の文字列データを、(offset,len)で符号化し(ステップS25)、次の符号化位置をi+lenに設定する(ステップS26)。
次いで、符号化部17は、iの値が入力バッファ121に入力したサイズ以上であるか否かを判断する(ステップS27)。iの値が入力バッファ121に入力したサイズより小さいと判断した場合(S27:NO)、符号化部17は、処理をステップS15へ戻す。
一方、iの値が入力バッファ121に入力したサイズ以上であると符号化部17にて判断した場合(S27:YES)、符号化装置は、符号化対象のデータが終了したか否かを判断する(ステップS28)。
符号化対象のデータが終了していないと判断した場合(S28:NO)、符号化装置は、処理をステップS11へ戻し、残る符号化対象データの入力バッファ121への読込み、及び入力バッファ121に読込んだ文字列データの符号化を行う。
符号化対象のデータが終了したと判断した場合(S28:YES)、符号化装置は、本フローチャートによる処理を終了する。
以上のように、本実施の形態では、複数のバイト長の接頭語の最近出現位置をそれぞれ求め、1つのリスト(統合リスト)に統合する。この統合リストを用いて、符号化対照文字列の過去の出現位置を検出する。統合の際には、図6に示すように、より長い接頭語の最近出現位置とその接頭語の長さとを関連付けて記憶する。重複文字列の検出の際には、最近出現位置をリンクドリストとして遡ってより長い一致を求める。このとき、図7に示すように、リンクドリストとして辿る際に、最近出現位置として記憶しているアドレスの接頭語長を確認し、最長の5バイト文字列の場合にのみ、リンクドリストとして遡る構成としている。
この構成により、短い重複文字列は短い接頭語により検出することができ、長い重複文字列は長い接頭語により検出することができる。従来技術の課題であった重複文字列の候補が多いものは、より長い接頭語で振り分けられて候補を絞り込むことができるため、重複文字列の検出を高速化することができる。
なお、本実施の形態では、複数のバイト長の接頭語に関する最近出現位置リストから統合リストを生成し、生成した統合リストを参照して重複文字列を検出する構成としたが、統合リストを生成せずに、各最近出現位置リストを参照して重複文字列を検出する構成としてもよい。例えば、各最近出現位置リストを参照し、より長い接頭語の最近出現位置リストに最近出現位置が記憶されている場合には、この最近出現位置及び接頭語を優先して重複文字列を検出する構成とすることができる。また、最長の接頭語の最近出現位置リストに最近出現位置が記憶されている場合には、リンクドリストとして遡ってより長い一致を求める構成とすることができる。
また、本実施の形態では、3種類のバイト長の文字列を抽出する構成としたが、2種類のバイト長の文字列を抽出する構成であってもよいことは勿論のことである。この場合、Nバイト長及びMバイト長(N,Mは2以上の整数、かつN≠M)の文字列を抽出すればよい。また、3バイト長、4バイト長、5バイト長、8バイト長のように、4種類以上のバイト長の文字列を抽出する構成であってもよい。
抽出すべき文字列のバイト長については、一致文字列や重複文字列の検索効率の観点から適宜設定することが可能である。例えば、抽出すべき文字列として2バイト長及び3バイト長の文字列を設定している場合、符号化すべきデータに依っては、入力バッファ121から抽出される2バイト長の一致文字列が非常に多くなり、2バイト長のバリエーションである3バイト長の一致文字列も数多く抽出される可能性がある。このようなケースでは、文字列の検索効率はあまり良くないため、2バイト長及び3バイト長の組み合わせより、3バイト長及び4バイト長(又は3バイト長、4バイト長及び5バイト長)の組み合わせが好ましい。このように、一致文字列や重複文字列の検索効率の観点から、抽出すべき文字列のバイト長を適宜設定することが好ましい。
実施の形態2.
実施の形態1では、最長の接頭語を含む重複文字列を検索する場合、各一致文字列の先頭バイトまで遡って検出する構成としたが、遡る回数に上限を設定し、設定した上限回数の範囲内で重複文字列を検出する構成としてもよい。
本実施の形態では、設定した上限回数の範囲内で重複文字列を検出する構成について説明する。なお、符号化装置の機能的構成及びハードウェア構成は、実施の形態1と全く同様であるため、その説明を省略することとする。
図10及び図11は実施の形態2に係る符号化処理の処理手順を説明するフローチャートである。実施の形態1と同様に、符号化装置は、入力バッファ121に符号化対象のデータを入力する(ステップS31)。ここで、入力バッファ121の表記をInBuf[BUFF_SIZE]とする。BUFF_SIZEは、入力バッファ121のバッファサイズを表す。
次いで、符号化装置の抽出部13は、入力バッファ121に記憶した文字列データから、各アドレスを起点とする3バイト文字列、4バイト文字列、及び5バイト文字列をそれぞれアドレス順次に抽出する。抽出部13は、抽出した3バイト文字列、4バイト文字列、及び5バイト文字列をそれぞれソートして、各バイト長の順位リストを生成し、生成した順位リストを記憶部12内の順位リスト保持部122a〜122cに記憶する。
リスト生成部14は、順位リスト保持部122a〜122cに記憶した順位リストを参照して、最近出現位置リストを生成する(ステップS32)。このとき、リスト生成部14は、3バイト文字列、4バイト文字列、及び5バイト文字列の夫々について最近出現位置リストを生成する。ここで、3バイト文字列、4バイト文字列、及び5バイト文字列の最近出現位置リストをそれぞれPrev3P[BUFF_SIZE]、Prev4P[BUFF_SIZE]、Prev5P[BUFF_SIZE]により表記する。リスト生成部14は、生成した各バイト長の最近出現位置リストをそれぞれ記憶部12内の最近出現位置リスト保持部123a〜123cに記憶する。
リスト統合部15は、最近出現位置リスト保持部123a〜123cに記憶した最近出現位置リストを参照して、統合リストを生成する(ステップS33)。このとき、リスト統合部15は、より長いバイト長の文字列を優先的に選択し、相対位置を示す値及び一致する文字列(接頭語)のバイト長をアドレス毎に記憶して、統合リストを生成する。統合リストの表記を、Prev3−5P[BUFF_SIZE][2]とする。ここで、Prev3−5P[X][0]は、統合リスト内のアドレス「X」の欄に記憶されたバイト長を表し、Prev3−5P[X][1]は、統合リスト内のアドレス「X」の欄に記憶された相対位置を表すものとする。
リスト統合部15は、生成した統合リストを記憶部12内の統合リスト保持部124に記憶する。
次いで、符号化部17は、符号化位置を初期化(i=0)すると共に(ステップS34)、コピー位置及び一致長を初期化する(ステップS35)。ここで、コピー位置及び一致長の表記を、それぞれoffset及びlenとした場合、符号化部17は、統合リストに記憶されたPrev3−5P[i][1]をoffsetに入力し、Prev3−5P[i][0]をlenに入力することにより、コピー位置及び一致長の初期化を行う。
また、符号化部17は、比較アドレスを初期化し、重複文字列を検出する際の上限回数を設定する(ステップS36)。比較アドレスをcmp_pとした場合、符号化部17は、cmp_pにiの値を入力することにより、比較アドレスの初期化を行う。また、現在の検出回数をsearch_numと表記した場合、ステップS36においてsearch_numを上限回数S(例えば、S=8)に設定する。
符号化部17は、符号化位置、コピー位置、一致長、比較アドレス、及び上限回数を検出部16に通知する。
検出部16は、Prev3−5P[cmp_p][0]<5であるか否かを判断する(ステップS37)。すなわち、検出部16は、現在の符号化位置iに対応して統合リストに記憶してあるバイト長が最長バイト長(本実施の形態の場合では「5」)より短いか否かを判断する。
現在の符号化位置iに対応して統合リストに記憶してあるバイト長が5である場合(S37:NO)、検出部16は、現在の検出回数search_numが0より大きいか否かを判断する(ステップS38)。
現在の検出回数search_numが0より大きい場合(S38:YES)、検出部16は、比較アドレスcmp_pを、cmp_p−Prev3−5P[cmp_p][1]に設定し(ステップS39)、比較アドレスcmp_pから始まる文字列と、現在の符号化位置iから始まる文字列とを比較して、重複文字列の一致長tmp_lenを求める(ステップS40)。
次いで、検出部16は、重複文字列の一致長tmp_lenが、現時点で記憶されている一致長lenより長いか否かを判断する(ステップS41)。
重複文字列の一致長tmp_lenが、現時点で記憶されている一致長lenより長い場合(S41:YES)、検出部16は、一致長len及びコピー位置offsetを、それぞれtmp_len及びi−cmp_pに更新すると共に、検出回数search_numを1だけデクリメントする(ステップS42)。
ステップS42で一致長、コピー位置、及び検出回数を更新した場合(S42)、又はステップS41で、重複文字列の一致長tmp_lenが、現時点で記憶されている一致長len以下であると判断した場合(S41:NO)、検出部16は、処理をステップS37へ戻す。
ステップS37において、現在の符号化位置iに対応して統合リストに記憶してあるバイト長が5より短いと判断した場合(S37:YES)、又はステップS38で検出回数が0になったと判断した場合(S38:NO)、検出部16は、現時点のコピー位置offset及び一致長lenを符号化部17に通知する。
符号化部17は、現時点の一致長lenが0であるか否かを判断する(ステップS43)。現時点の一致長lenが0である場合(S43:YES)、符号化部17は、InBuf[i]を符号化し(ステップS44)、符号化位置iを1だけインクリメントする(ステップS45)。なお、一致長lenが0の場合、符号化位置iの文字データ(InBuf[i])を出力することによって符号化を行う。
ステップS43において、現時点の一致長lenが0でない場合(S43:NO)、符号化部17は、InBuf[i],…,InBuf[i+len]の文字列データを、(offset,len)で符号化し(ステップS46)、次の符号化位置をi+lenに設定する(ステップS47)。
次いで、符号化部17は、iの値が入力バッファ121に入力したサイズ以上であるか否かを判断する(ステップS48)。iの値が入力バッファ121に入力したサイズより小さいと判断した場合(S48:NO)、符号化部17は、処理をステップS35へ戻す。
一方、iの値が入力バッファ121に入力したサイズ以上であると符号化部17にて判断した場合(S48:YES)、符号化装置は、符号化対象のデータが終了したか否かを判断する(ステップS49)。
符号化対象のデータが終了していないと判断した場合(S49:NO)、符号化装置は、処理をステップS31へ戻し、残る符号化対象データの入力バッファ121への読込み、及び入力バッファ121に読込んだ文字列データの符号化を行う。
符号化対象のデータが終了したと判断した場合(S49:YES)、符号化装置は、本フローチャートによる処理を終了する。
以上のように、実施の形態2では、最長の接頭語を含む重複文字列を検索する際の上限回数を設定しているので、重複文字列の検出時間をより短くすることができる。
以上の実施の形態に関し、更に以下の付記を開示する。
(付記1)
バイト単位にアドレスを指定してデータを記憶する記憶部に、複数バイトからなる文字列データを記憶し、
前記記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出し、
抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報を、該第1アドレスに関連付けて記憶し、
関連付けて記憶した前記第1及び第2アドレスを参照して、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出し、
検出した結果に基づき、前記文字列データを符号化する
ことを特徴とする符号化方法。
(付記2)
前記第2バイト長の一致文字列を含む重複文字列を検出する場合、各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする付記1に記載の符号化方法。
(付記3)
前記第2バイト長の一致文字列を含む重複文字列を検出する場合、予め定めた上限回数の範囲内で各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする付記1に記載の符号化方法。
(付記4)
前記第1及び第2バイト長の文字列から取得した前記第2アドレスの情報のうち、前記第2バイト長の文字列から取得した第2アドレスの情報を優先的に選択して、第2アドレスの情報と一致文字列のバイト長とを関連付けたリストを生成し、
前記第2バイト長の一致文字列を含む文字列、及び前記第1バイト長の一致文字列と一致する文字列を検出する際、前記リストを参照する
ことを特徴とする付記1から付記3の何れか1つに記載の符号化方法。
(付記5)
前記第1バイト長は、nバイト(nは2以上の整数)であり、前記第2バイト長はn+1バイト長であることを特徴とする付記1から付記4の何れか1つに記載の符号化方法。
(付記6)
前記第1バイト長は3バイトであり、前記第2バイト長は4バイトであることを特徴とする付記5に記載の符号化方法。
(付記7)
異なる長さの2種類以上の第1バイト長の文字列を抽出するようにしてあることを特徴とする付記1から付記4の何れか1つに記載の符号化方法。
(付記8)
前記第1バイト長は3バイト及び4バイトであり、前記第2バイト長は5バイトであることを特徴とする付記7に記載の符号化方法。
(付記9)
複数バイトからなる文字列データを、バイト単位にアドレスを指定して記憶する記憶部、
該記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出する抽出部、
該抽出部により抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報と、該第1アドレスとを関連付けて記憶したリストを生成するリスト生成部、
該リスト生成部が生成したリストに基づき、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出する検出部、及び
該検出部による検出結果に基づき、前記文字列データを符号化する符号化部
を備えることを特徴とする符号化装置。
(付記10)
前記第2バイト長の一致文字列を含む重複文字列を検出する場合、各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする付記9に記載の符号化装置。
(付記11)
前記第2バイト長の一致文字列を含む重複文字列を検出する場合、予め定めた上限回数の範囲内で各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする付記9に記載の符号化装置。
(付記12)
前記第1及び第2バイト長の文字列から取得した前記第2アドレスの情報のうち、前記2バイト長の文字列から取得した第2アドレスの情報を優先的に選択して、第2アドレスの情報と一致文字列のバイト長とを関連付けたリストを生成する統合リスト生成部を備え、
前記第2バイト長の一致文字列を含む文字列、及び前記第1バイト長の一致文字列と一致する文字列を検出する際、前記統合リスト生成部が生成したリストを参照することを特徴とする付記9から付記11の何れか1つに記載の符号化装置。
(付記13)
前記第1バイト長は、nバイト(nは2以上の整数)であり、前記第2バイト長はn+1バイト長であることを特徴とする付記9から付記12の何れか1つに記載の符号化装置。
(付記14)
前記第1バイト長は3バイトであり、前記第2バイト長は4バイトであることを特徴とする付記13に記載の符号化装置。
(付記15)
異なる長さの2種類以上の第1バイト長の文字列を抽出するようにしてあることを特徴とする付記9から付記12の何れか1つに記載の符号化装置。
(付記16)
前記第1バイト長は3バイト及び4バイトであり、前記第2バイト長は5バイトであることを特徴とする付記15に記載の符号化装置。
(付記17)
バイト単位にアドレスを指定して文字列データを記憶する記憶部を備えたコンピュータに、
該記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出する抽出処理、
該抽出処理により抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報と、該第1アドレスとを関連付けて記憶したリストを生成するリスト生成処理、
該リスト生成処理により生成したリストに基づき、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出する検出処理、及び
該検出処理による検出結果に基づき、前記文字列データを符号化する符号化処理
を実行させることを特徴とするコンピュータプログラム。
(付記18)
前記検出処理にて、前記第2バイト長の一致文字列を含む重複文字列を検出する場合、各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする付記17に記載のコンピュータプログラム。
(付記19)
前記検出処理にて、前記第2バイト長の一致文字列を含む重複文字列を検出する場合、予め定めた上限回数の範囲内で各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする付記17に記載のコンピュータプログラム。
(付記20)
コンピュータに、前記第1及び第2バイト長の文字列から取得した前記第2アドレスの情報のうち、前記2バイト長の文字列から取得した第2アドレスの情報を優先的に選択して、第2アドレスの情報と一致文字列のバイト長とを関連付けたリストを生成する統合リスト処理を実行させ、
前記検出処理にて、前記第2バイト長の一致文字列を含む文字列、及び前記第1バイト長の一致文字列と一致する文字列を検出する際、前記リストを参照することを特徴とする付記17から付記19の何れか1つに記載のコンピュータプログラム。
(付記21)
前記第1バイト長は、nバイト(nは2以上の整数)であり、前記第2バイト長はn+1バイト長であることを特徴とする付記17から付記20の何れか1つに記載のコンピュータプログラム。
(付記22)
前記第1バイト長は3バイトであり、前記第2バイト長は4バイトであることを特徴とする付記21に記載のコンピュータプログラム。
(付記23)
異なる長さの2種類以上の第1バイト長の文字列を抽出するようにしてあることを特徴とする付記17から付記20の何れか1つに記載のコンピュータプログラム。
(付記24)
前記第1バイト長は3バイト及び4バイトであり、前記第2バイト長は5バイトであることを特徴とする付記23に記載のコンピュータプログラム。
11 入力部
12 記憶部
13 抽出部
14 リスト生成部
15 リスト統合部
16 検出部
17 符号化部
121 入力バッファ
122a〜122c 順位リスト保持部
123a〜123c 最近出現位置リスト保持部
124 統合リスト保持部

Claims (7)

  1. バイト単位に上位から下位の順にアドレスを指定してデータを記憶する記憶部に、複数バイトからなる文字列データを記憶し、
    前記記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出し、
    抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報を、該第1アドレスに関連付けて記憶し、
    関連付けて記憶した前記第1及び第2アドレスを参照して、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出し、
    検出した結果に基づき、前記文字列データを符号化する
    ことを特徴とする符号化方法。
  2. 前記第2バイト長の一致文字列を含む重複文字列を検出する場合、各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする請求項1に記載の符号化方法。
  3. 前記第2バイト長の一致文字列を含む重複文字列を検出する場合、予め定めた上限回数の範囲内で各一致文字列の先頭バイトまで遡って検出し、前記第1バイト長の一致文字列を検出する場合、前記第2アドレスで検出を終了することを特徴とする請求項1に記載の符号化方法。
  4. 前記第1及び第2バイト長の文字列から取得した前記第2アドレスの情報のうち、前記第2バイト長の文字列から取得した第2アドレスの情報を優先的に選択して、第2アドレスの情報と一致文字列のバイト長とを関連付けたリストを生成し、
    前記第2バイト長の一致文字列を含む文字列、及び前記第1バイト長の一致文字列と一致する文字列を検出する際、前記リストを参照する
    ことを特徴とする請求項1から請求項3の何れか1つに記載の符号化方法。
  5. 前記第1バイト長は、nバイト(nは2以上の整数)であり、前記第2バイト長はn+1バイト長であることを特徴とする請求項1から請求項4の何れか1つに記載の符号化方法。
  6. 複数バイトからなる文字列データを、バイト単位に上位から下位の順にアドレスを指定して記憶する記憶部、
    該記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出する抽出部、
    該抽出部により抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報と、該第1アドレスとを関連付けて記憶したリストを生成するリスト生成部、
    該リスト生成部が生成したリストに基づき、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出する検出部、及び
    該検出部による検出結果に基づき、前記文字列データを符号化する符号化部
    を備えることを特徴とする符号化装置。
  7. バイト単位に上位から下位の順にアドレスを指定して文字列データを記憶する記憶部を備えたコンピュータに、
    該記憶部に記憶した文字列データから、各アドレスを起点とする第1バイト長の文字列及び該第1バイト長よりも長い第2バイト長の文字列を、夫々アドレス順次に抽出する抽出処理、
    該抽出処理により抽出した第1及び第2バイト長の文字列夫々について、抽出した文字列同士が一致する一致文字列夫々の先頭バイトのアドレスのうち、任意の第1アドレスよりも上位であり、該第1アドレスに最も近い第2アドレスの情報と、該第1アドレスとを関連付けて記憶したリストを生成するリスト生成処理、
    該リスト生成処理により生成したリストに基づき、前記第2バイト長の一致文字列を含む重複文字列、及び前記第1バイト長の一致文字列と一致する文字列を、前記記憶部に記憶した文字列データから検出する検出処理、及び
    該検出処理による検出結果に基づき、前記文字列データを符号化する符号化処理
    を実行させることを特徴とするコンピュータプログラム。
JP2012062475A 2012-03-19 2012-03-19 符号化方法、符号化装置及びコンピュータプログラム Expired - Fee Related JP5807592B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012062475A JP5807592B2 (ja) 2012-03-19 2012-03-19 符号化方法、符号化装置及びコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012062475A JP5807592B2 (ja) 2012-03-19 2012-03-19 符号化方法、符号化装置及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2013197850A JP2013197850A (ja) 2013-09-30
JP5807592B2 true JP5807592B2 (ja) 2015-11-10

Family

ID=49396286

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012062475A Expired - Fee Related JP5807592B2 (ja) 2012-03-19 2012-03-19 符号化方法、符号化装置及びコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP5807592B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015159352A (ja) * 2014-02-21 2015-09-03 富士通株式会社 データ圧縮装置、データ圧縮方法、及びプログラム
CN110515655B (zh) * 2019-08-27 2023-04-18 内蒙古工业大学 一种数据指令分析方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2746228B2 (ja) * 1995-09-29 1998-05-06 日本電気株式会社 データ圧縮方法
JP4261779B2 (ja) * 2000-03-31 2009-04-30 富士通株式会社 データ圧縮装置および方法
US6707400B2 (en) * 2001-08-02 2004-03-16 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for fast longest match search
JP3889762B2 (ja) * 2002-12-26 2007-03-07 富士通株式会社 データ圧縮方法、プログラム及び装置

Also Published As

Publication number Publication date
JP2013197850A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
US8712977B2 (en) Computer product, information retrieval method, and information retrieval apparatus
JP4535130B2 (ja) 文字列照合装置および文字列照合プログラム
KR100552085B1 (ko) 감소된 키보드 명확화 시스템
US20160321282A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
JP5831298B2 (ja) プログラム、情報処理装置およびインデックス生成方法
KR100490240B1 (ko) 데이타압축장치,데이타복원장치,데이타압축방법,데이타복원방법및프로그램기록매체
JP6107513B2 (ja) 情報処理システム、情報処理方法、および情報処理プログラム
JP2008299867A (ja) データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法
US9916314B2 (en) File extraction method, computer product, file extracting apparatus, and file extracting system
JP6447161B2 (ja) 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法
JPWO2014147672A1 (ja) 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム
JP4114600B2 (ja) 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム
JPWO2008090606A1 (ja) 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
JP5807592B2 (ja) 符号化方法、符号化装置及びコンピュータプログラム
JP2000201080A (ja) 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
JPH10261969A (ja) データ圧縮方法および装置
JP4726046B2 (ja) 文字列検索装置及びコンピュータプログラム及び文字列検索方法
JP5077380B2 (ja) 文字列照合装置および文字列照合プログラム
JP6304302B2 (ja) 情報生成方法、情報生成装置、および情報生成プログラム
JPH09219650A (ja) データ符号化装置およびデータ復号装置およびその方法
JP2005004560A (ja) インバーテッドファイル作成方法
JP2016149160A5 (ja)
EP1610228A1 (en) Data conversion method capable of optimally performing mark-up language processing
JPWO2002101935A1 (ja) 復号化装置、復号化方法、ルックアップテーブルおよび復号化プログラム
JP4329493B2 (ja) 辞書データ圧縮装置、電子辞書装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150623

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150722

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150824

R150 Certificate of patent or registration of utility model

Ref document number: 5807592

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees