JP5062131B2 - 情報処理プログラム、情報処理装置、および情報処理方法 - Google Patents
情報処理プログラム、情報処理装置、および情報処理方法 Download PDFInfo
- Publication number
- JP5062131B2 JP5062131B2 JP2008259507A JP2008259507A JP5062131B2 JP 5062131 B2 JP5062131 B2 JP 5062131B2 JP 2008259507 A JP2008259507 A JP 2008259507A JP 2008259507 A JP2008259507 A JP 2008259507A JP 5062131 B2 JP5062131 B2 JP 5062131B2
- Authority
- JP
- Japan
- Prior art keywords
- leaf
- layer
- node
- pointer
- huffman tree
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
図1は、2n(n=4により2n=16)分枝ハフマン木の生成元となる節点集合体を示す説明図である。この節点集合体100において、第1階層では1個の節点の構造体セル、第2階層では16個の節点の構造体セル、第3階層では256個の節点の構造体セル、第4階層では4096個の節点の構造体セルを有する。各構造体セルC(i,j)は、リンク元となる上位節点のポインタを格納している。最上位となる第1階層の節点の構造体C(1,1)は、根の構造体であるため、上位節点のポインタはない。
図3は、圧縮前処理を示す説明図である。対象ファイル300には数千〜数万種の文字が記述されており、本プログラムでは、対象ファイル300内の文字コードについて出現頻度を集計して降順にソートする。そして、高位(たとえば、1〜1024位まで)の文字コードと低位(1025位以下)の文字コードにわける。
図4は、実施の形態にかかる情報処理装置のハードウェア構成を示すブロック図である。図4において、情報処理装置は、CPU(Central Processing Unit)401と、ROM(Read‐Only Memory)402と、RAM(Random Access Memory)403と、磁気ディスクドライブ404と、磁気ディスク405と、光ディスクドライブ406と、光ディスク407と、ディスプレイ408と、I/F(Interface)409と、キーボード410と、マウス411と、スキャナ412と、プリンタ413と、を備えている。また、各構成部はバス400によってそれぞれ接続されている。
図5は、実施の形態にかかる情報処理装置の機能的構成1を示すブロック図である。図5において、情報処理装置500は、入力部501と、取得部502と、分類部506と、算出部507と、2n分枝ハフマン木生成部(ポインタ生成部508、ポインタ格納部509、葉生成部510、文字コード格納部511)と、検出部512と、特定部513と、最適化部514と、文字構造体生成部515と、を備えている。
ンタ数Npse(i)、末尾までの空きセル数Ncse(i)を算出する。
ただし、端数は切り捨て。また、i=nのときは、下位節点が存在しないため、Nnp(i)=0。
ただし、端数は切り捨て。
インタ数Nlp(i)の総和である。
ただし、i=1のときは、Ncst(i)=0。
=N(i)×2n−Nlp(i)−Nnp(i)−Ncst(i)×2n・・・(4)
図19は、情報処理装置500が自動実行する2n分枝ハフマン木生成処理手順を示すフローチャートである。図19において、まず、入力部501により対象ファイル300を読み込む(ステップS1901)。つぎに、集計部503により文字コードと予約語の出現頻度を集計する(ステップS1902)。そして、葉数削減処理を実行する(ステップS1903)。つぎに、分類部506により、文字コード等をその出現確率Pに応じて階層別に分類する(ステップS1904)。
p(i)、第i階層における先頭からの空きセル数Ncst(i)、第i階層における末尾までの空きポインタ数Npse(i)、第i階層における末尾までの空きセル数Ncse(i)を算出する(ステップS2103〜S2109)。
つぎに、無節点ハフマン木について説明する。無節点ハフマン木とは、根と葉のみからなる内部節点のないハフマン木である。無節点ハフマン木は、枝の本数が多くなるが、根から1パスで葉にアクセスすることができる。
無節点ハフマン木H2は、2n分枝ハフマン木H1からの変換により生成することができる。具体的には、たとえば、2n分枝ハフマン木H1から2m分枝(m=n×k)の無節点ハフマン木H2を生成することができる。以下、2m分枝の無節点ハフマン木H2へ変換するための機能的構成について説明する。
図30は、実施の形態にかかる情報処理装置500の機能的構成2を示すブロック図である。なお、図5に示した構成と同一構成には同一符号を付し、その説明を省略する。図30において、情報処理装置500は、決定部3001と、複製部3002と、根生成部3003と、第1の構築部3004と、第2の構築部3005と、文字構造体生成部515と、を備えている。決定部3001〜第2の構築部3005は、図4に示したRAM403、磁気ディスク405、光ディスク407などの記憶媒体に記憶されたプログラムをCPU401に実行させることにより、または、I/F409により、その機能を実現する。
ポインタL1P( 2):000000000001
ポインタL1P( 3):000000000010
ポインタL1P( 4):000000000011
・ ・
・ ・
・ ・
ポインタL1P(256):000011111111
ポインタL4P( 2):001100000001
ポインタL4P( 3):001100000010
ポインタL4P( 4):001100000011
・ ・
・ ・
・ ・
ポインタL4P(16):001100001111
図31は、情報処理装置500が自動実行する2n分枝ハフマン木H1→2m分枝無節点ハフマン木変換処理手順を示すフローチャートである。図31において、まず、2n分枝ハフマン木H1の構造体を読み込み(ステップS3101)、決定部3001により、階層ごとの葉へのポインタの種類数を決定する(ステップS3102)。
つぎに、2m分枝の無節点ハフマン木H2を用いた圧縮伸長について説明する。2m分枝の無節点ハフマン木H2では1パスで葉にアクセスできるため、検索速度の高速化を図ることができる。以下、そのための機能的構成について説明する。
図32は、実施の形態にかかる情報処理装置500の機能的構成3を示すブロック図である。なお、図5に示した構成と同一構成には同一符号を付し、その説明を省略する。図32において、情報処理装置500は、分割部505と、設定部3201と、圧縮対象文字コード探索部3202と、ハフマン木探索部3204と、圧縮符号格納部3205と、抽出部3206と、伸長コード格納部3207と、記憶部3210と、を備えている。
つぎに、2m分枝の無節点ハフマン木H2を用いた圧縮処理について説明する。2m分枝の無節点ハフマン木H2を用いた圧縮処理では、ハフマン木探索において、内部節点がないため根に向かって探索する必要はなく、ポイントされた葉L♯の構造体に格納されている文字コードを抽出して、圧縮バッファ3211に書き込む。これにより、圧縮処理の高速化を図ることができる。
図35は、2m分枝の無節点ハフマン木H2を用いた圧縮処理の具体例を示す説明図である。まず、対象ファイル300から1文字目の圧縮対象文字コードを取得し、対象ファイル300上の位置を保持しておく。そして、予約語の構造体1600に対して2分木探索をおこなう。予約語は2文字以上の文字コード列であるため、1文字目の圧縮対象文字コードがヒットした場合、2文字目の文字コードを圧縮対象文字コードとして取得する。
図36は、情報処理装置500が自動実行する2m分枝の無節点ハフマン木H2を用いた圧縮処理手順を示すフローチャート(その1)である。図36において、まず、対象ファイル300に圧縮対象文字コードがあるか否かを判断する(ステップS3601)。ある場合(ステップS3601:Yes)、圧縮対象文字コードを取得してレジスタにセットする(ステップS3602)。そして、先頭の圧縮対象文字コードか否かを判断する(ステップS3603)。
図39−1〜図39−5は、2m分枝の無節点ハフマン木H2を用いた伸長処理の具体例を示す説明図である。図39−1〜図39−5では、図34に示した圧縮符号列を伸長する例を示している。伸長処理では、レジスタに圧縮符号列をセットし、マスクパターンにより圧縮符号を抽出する。抽出した圧縮符号を、1パス(1枝分のアクセス)で2m分枝の無節点ハフマン木H2の根から探索する。そして、アクセスした葉L♯の構造体に格納されている文字コードを読み出して伸長バッファ3212に格納する。
図40および図41は、情報処理装置500が自動実行する無節点ハフマン木を用いた伸長処理手順を示すフローチャートである。図40において、まず、ビットアドレスabiをabi=0とし(ステップS4001)、バイトオフセットbyosを算出し(ステップS4002)、ビットオフセットbiosを算出する(ステップS4003)。そして、バイトオフセットbyosの位置からの圧縮符号列をレジスタにセットする(ステップS4004)。
節点の階層数がk階層(kはk≧2の自然数)、節点からその下位節点への枝数が2n本(nはn≧2の自然数)、第i階層(iは1≦i≦kの自然数)の節点数が2n(i-1)であり、前記各節点が上位節点へのポインタを格納しており、かつ、葉または下位節点への2n個のポインタを格納可能な節点集合を記憶する記憶手段、
対象ファイルに記述されている文字コードの出現頻度の集計結果を取得する取得手段、
前記取得手段によって取得された集計結果に基づいて、前記文字コードを出現確率P(Pは1/2ni≦P<1/2n(i-1)。ただし、i=1のときは1/2ni≦P<1、i=nのときはP<1/2n(i-1))に応じて階層別に分類する分類手段、
前記分類手段によって分類された前記第i階層の文字コード数に基づいて、前記第i階層の葉へのポインタ数を算出するとともに、当該第i階層の葉へのポインタ数に基づいて、(i+1)階層の節点をリンク先とする前記第i階層の下位節点へのポインタ数と前記第i階層の節点の使用数とを算出する算出手段、
前記算出手段によって算出された算出結果に基づいて、2n分枝ハフマン木を生成する2n分枝ハフマン木生成手段、
前記2n分枝ハフマン木生成手段によって生成された2n分枝ハフマン木を、2m分枝(ただし、m=n×k)の無節点ハフマン木に変換して、前記記憶手段に記憶する変換手段、
として機能させることを特徴とする情報処理プログラム。
前記算出手段によって算出された算出結果に基づいて、前記第i階層の葉へのポインタと前記第i階層の下位節点へのポインタを生成するポインタ生成手段、
前記第i階層の使用数分の節点に、前記ポインタ生成手段によって生成された前記第i階層の葉へのポインタと前記第i階層の下位節点へのポインタとを格納するポインタ格納手段、
前記分類手段によって分類された前記第i階層の文字ごとに、前記ポインタ格納手段によって前記第i階層の節点に格納された葉へのポインタにより前記第i階層の節点のリンク先となる葉を、前記文字コードごとに生成する葉生成手段、
前記葉生成手段によって生成された葉に、当該葉の番号に対応付けられた文字コードを格納することにより、2n分枝ハフマン木を生成する文字コード格納手段を備えることを特徴とする付記1に記載の情報処理プログラム。
前記2n分枝ハフマン木において前記第i階層の葉へのポインタ数と第(i−1)階層の空き節点内の空きポインタ数とを検出する検出手段、
前記検出手段によって検出された前記第i階層の葉へのポインタ数と第(i−1)階層の空き節点内の空きポインタ数とに基づいて、前記第i階層から前記第(i−1)階層の空き節点への移動対象となる前記第i階層の葉へのポインタ(以下、「移動対象ポインタ」という)を特定する特定手段、
前記特定手段によって特定された移動対象ポインタを格納する節点へのポインタを前記第(i−1)階層の節点から削除し、前記移動対象ポインタを前記第(i−1)階層の節点に移動させる最適化手段として機能させ、
前記変換手段は、
前記最適化手段によって最適化された2n分枝ハフマン木を、前記2m分枝の無節点ハフマン木に変換して、前記記憶手段に記憶することを特徴とする付記2に記載の情報処理プログラム。
前記2n分枝ハフマン木の階層数と前記第i階層の葉の数に基づいて、前記第i階層の葉ごとに葉へのポインタの種類数を決定する決定手段と、
前記2n分枝ハフマン木の葉を複製する複製手段と、
2m個の葉へのポインタを格納可能な根を生成して、前記記憶手段に格納する根生成手段と、
前記決定手段によって決定された種類数に基づいて、前記複製手段によって複製された葉ごとに当該葉へのポインタを生成して、前記根生成手段によって生成された根に格納する第1の構築手段と、
前記葉に対する当該葉へのポインタ群に共通のビット列からなる圧縮符号を抽出し、当該圧縮符号およびその圧縮符号長を前記葉に格納して前記葉を再構築することにより、前記根および前記葉からなる無節点ハフマン木を生成する第2の構築手段と、
を備えることを特徴とする付記1〜3のいずれか一つに記載の情報処理プログラム。
前記文字コードを出現頻度の降順にソートするソート手段、
前記ソート手段によってソートされた結果、前記文字コードのうち前記出現頻度の高位の文字コードと低位の文字コードとに分け、前記低位の文字コードを上位ビットコードと下位ビットコードに分割する分割手段、
前記分割手段によって分割された上位ビットコードおよび下位ビットコードの出現頻度を集計する集計手段として機能させ、
前記分類手段は、
前記高位の文字コードの集計結果と前記集計手段によって集計された集計結果とに基づいて、前記文字コードを出現確率Pに応じて階層別に分類することを特徴とする付記1〜4のいずれか一つに記載の情報処理プログラム。
圧縮対象文字コード列を設定する文字コード設定手段、
前記文字コード設定手段によって設定された圧縮対象文字コード列の中から圧縮対象文字コードを取り出して、前記無節点ハフマン木の葉の中から前記圧縮対象文字コードを含む葉を特定し、特定された葉の中から圧縮符号を抽出するハフマン木探索手段、
前記ハフマン木探索手段によって抽出された圧縮符号を所定の記憶領域に格納する圧縮符号格納手段、
として機能させることを特徴とする付記1〜4のいずれか一つに記載の情報処理プログラム。
前記文字コードごとに、前記文字コードと当該文字コードを格納する葉へのポインタとからなる文字構造体を生成して、前記記憶手段に記憶する文字構造体生成手段、
前記文字構造体生成手段によって生成された文字構造体を探索することにより、前記圧縮対象文字コードを格納する葉へのポインタを抽出する圧縮対象文字コード探索手段として機能させ、
前記ハフマン木探索手段は、
前記圧縮対象文字コード探索手段によって抽出された葉へのポインタにより前記無節点ハフマン木の該当する葉にアクセスし、アクセス先の葉の中から圧縮符号を抽出することを特徴とする付記6に記載の情報処理プログラム。
前記高位の文字コードごとに、前記文字コードと当該文字コードを格納する葉へのポインタとからなる第1の文字構造体を生成するとともに、前記上位ビットコードおよび前記下位ビットコードごとに、前記ビットコードと当該ビットコードを格納する葉へのポインタとからなる第2の文字構造体を生成して、前記記憶手段に記憶する文字構造体生成手段、
圧縮対象文字コード列を設定する文字コード設定手段、
前記文字構造体生成手段によって生成された第1の文字構造体を探索することにより、前記圧縮対象文字コードを格納する葉へのポインタを抽出する圧縮対象文字コード探索手段、
前記圧縮対象文字コード探索手段によって抽出された葉へのポインタにより前記無節点ハフマン木の該当する葉にアクセスし、アクセス先の葉の中から圧縮符号を抽出するハフマン木探索手段、
前記ハフマン木探索手段によって抽出された圧縮符号を所定の記憶領域に格納する圧縮符号格納手段、
として機能させることを特徴とする付記5に記載の情報処理プログラム。
前記ハフマン木探索手段によって前記第1の文字構造体の中から前記圧縮対象文字コードに該当する文字コードが探索されなかった場合、前記圧縮対象文字コードを圧縮対象上位ビットコードと圧縮対象下位ビットコードに分割し、
前記圧縮対象文字コード探索手段は、
前記分割手段によって前記圧縮対象文字コードが前記圧縮対象上位ビットコードと前記圧縮対象下位ビットコードに分割された場合、前記文字構造体生成手段によって生成された第2の文字構造体を探索することにより、前記圧縮対象上位ビットコードを格納する葉へのポインタを抽出するとともに、前記圧縮対象下位ビットコードを格納する葉へのポインタを抽出し、
前記ハフマン木探索手段は、
前記圧縮対象文字コード探索手段によって抽出された前記圧縮対象上位ビットコードを格納する葉へのポインタを読み出して前記無節点ハフマン木の該当する葉にアクセスし、アクセス先の葉の中から前記圧縮対象上位ビットコードの圧縮符号を抽出するとともに、前記圧縮対象下位ビットコードを格納する葉へのポインタを読み出して前記無節点ハフマン木の該当する葉にアクセスし、アクセス先の葉の中から前記圧縮対象下位ビットコードの圧縮符号を抽出し、
前記圧縮符号格納手段は、
前記ハフマン木探索手段によって抽出された前記圧縮対象上位ビットコードの圧縮符号を前記所定の記憶領域に格納するとともに、前記ハフマン木探索手段によって抽出された前記圧縮対象下位ビットコードの圧縮符号を前記所定の記憶領域に格納することを特徴とする付記8に記載の情報処理プログラム。
圧縮符号列を設定する圧縮符号列設定手段、
前記圧縮符号列設定手段によって設定された圧縮符号列の中からmビットの圧縮符号を順次抽出する抽出手段、
前記抽出手段によって抽出された圧縮符号を用いて、前記無節点ハフマン木の根から探索するハフマン木探索手段、
前記ハフマン木探索手段によって探索された葉に格納されている文字コードを抽出して、前記所定の記憶領域に格納する伸長コード格納手段、
として機能させることを特徴とする付記6〜9のいずれか一つに記載の情報処理プログラム。
対象ファイルに記述されている2nビットの文字コードの出現頻度の集計結果を取得する取得手段と、
前記取得手段によって取得された集計結果に基づいて、前記文字コードを出現確率P(Pは1/2ni≦P<1/2n(i-1)。ただし、i=1のときは1/2ni≦P<1、i=nのときはP<1/2n(i-1))に応じて階層別に分類する分類手段と、
前記分類手段によって分類された前記第i階層の文字コード数に基づいて、前記第i階層の葉へのポインタ数を算出するとともに、当該第i階層の葉へのポインタ数に基づいて、(i+1)階層の節点をリンク先とする前記第i階層の下位節点へのポインタ数と前記第i階層の節点の使用数とを算出する算出手段と、
前記算出手段によって算出された算出結果に基づいて、2n分枝ハフマン木を生成する2n分枝ハフマン木生成手段と、
前記2n分枝ハフマン木生成手段によって生成された2n分枝ハフマン木を、2m分枝(ただし、m=n×k)の無節点ハフマン木に変換して、前記記憶手段に記憶する変換手段と、
を備えることを特徴とする情報処理装置。
対象ファイルに記述されている文字コードの出現頻度の集計結果を取得する取得工程と、
前記取得工程によって取得された集計結果に基づいて、前記文字コードを出現確率P(Pは1/2ni≦P<1/2n(i-1)。ただし、i=1のときは1/2ni≦P<1、i=nのときはP<1/2n(i-1))に応じて階層別に分類する分類工程と、
前記分類手段によって分類された前記第i階層の文字コード数に基づいて、前記第i階層の葉へのポインタ数を算出するとともに、当該第i階層の葉へのポインタ数に基づいて、(i+1)階層の節点をリンク先とする前記第i階層の下位節点へのポインタ数と前記第i階層の節点の使用数とを算出する算出工程と、
前記算出手段によって算出された算出結果に基づいて、2n分枝ハフマン木を生成する2n分枝ハフマン木生成工程と、
前記2n分枝ハフマン木生成手段によって生成された2n分枝ハフマン木を、2m分枝(ただし、m=n×k)の無節点ハフマン木に変換して、前記記憶手段に記憶する変換工程と、
を実行することを特徴とする情報処理方法。
300 対象ファイル
500 情報処理装置
501 入力部
502 取得部
503 集計部
504 ソート部
505 分割部
506 分類部
507 算出部
508 ポインタ生成部
509 ポインタ格納部
510 葉生成部
511 文字コード格納部
512 検出部
513 特定部
514 最適化部
515 文字構造体生成部
520 算出結果テーブル
530 文字構造体
3001 決定部
3002 複製部
3003 根生成部
3004 第1の構築部
3005 第2の構築部
3201 設定部
3202 圧縮対象文字コード探索部
3204 ハフマン木探索部
3205 圧縮符号格納部
3206 抽出部
3207 伸長コード格納部
3210 記憶部
3211 圧縮バッファ
3212 伸長バッファ
Claims (7)
- コンピュータを、
節点の階層数がk階層(kはk≧2の自然数)、節点からその下位節点への枝数が2n本(nはn≧2の自然数)、第i階層(iは1≦i≦kの自然数)の節点数が2n(i-1)であり、前記各節点が上位節点へのポインタを格納しており、かつ、葉または下位節点への2n個のポインタを格納可能な節点集合を記憶する記憶手段、
対象ファイルに記述されている文字コードの出現頻度の集計結果を取得する取得手段、
前記取得手段によって取得された集計結果に基づいて、前記文字コードを出現確率P(Pは1/2ni≦P<1/2n(i-1)。ただし、i=1のときは1/2n≦P<1、i=nのときはP<1/2n(n-1))に応じて階層別に分類する分類手段、
前記分類手段によって分類された前記第i階層の文字コード数に基づいて、前記第i階層の葉へのポインタ数を算出するとともに、当該第i階層の葉へのポインタ数に基づいて、(i+1)階層の節点をリンク先とする前記第i階層の下位節点へのポインタ数と前記第i階層の節点の使用数とを算出する算出手段、
前記算出手段によって算出された算出結果に基づいて、2n分枝ハフマン木を生成する2n分枝ハフマン木生成手段、
前記2n分枝ハフマン木生成手段によって生成された2n分枝ハフマン木を、2m分枝(ただし、m=n×k)の無節点ハフマン木に変換して、前記記憶手段に記憶する変換手段、
として機能させることを特徴とする情報処理プログラム。 - 前記2n分枝ハフマン木生成手段は、
前記算出手段によって算出された算出結果に基づいて、前記第i階層の葉へのポインタと前記第i階層の下位節点へのポインタを生成するポインタ生成手段、
前記第i階層の使用数分の節点に、前記ポインタ生成手段によって生成された前記第i階層の葉へのポインタと前記第i階層の下位節点へのポインタとを格納するポインタ格納手段、
前記分類手段によって分類された前記第i階層の文字ごとに、前記ポインタ格納手段によって前記第i階層の節点に格納された葉へのポインタにより前記第i階層の節点のリンク先となる葉を、前記文字コードごとに生成する葉生成手段、
前記葉生成手段によって生成された葉に、当該葉の番号に対応付けられた文字コードを格納することにより、2n分枝ハフマン木を生成する文字コード格納手段を備えることを特徴とする請求項1に記載の情報処理プログラム。 - 前記コンピュータを、
前記2n分枝ハフマン木において前記第i階層の葉へのポインタ数と第(i−1)階層
の空き節点内の空きポインタ数とを検出する検出手段、
前記検出手段によって検出された前記第i階層の葉へのポインタ数と第(i−1)階層の空き節点内の空きポインタ数とに基づいて、前記第i階層から前記第(i−1)階層の空き節点への移動対象となる前記第i階層の葉へのポインタ(以下、「移動対象ポインタ」という)を特定する特定手段、
前記特定手段によって特定された移動対象ポインタを格納する節点へのポインタを前記第(i−1)階層の節点から削除し、前記移動対象ポインタを前記第(i−1)階層の節点に移動させる最適化手段として機能させ、
前記変換手段は、
前記最適化手段によって最適化された2n分枝ハフマン木を、前記2m分枝の無節点ハフマン木に変換して、前記記憶手段に記憶することを特徴とする請求項2に記載の情報処理プログラム。 - 前記変換手段は、
前記2n分枝ハフマン木の階層数と前記第i階層の葉の数に基づいて、前記第i階層の葉ごとに葉へのポインタの種類数を決定する決定手段と、
前記2n分枝ハフマン木の葉を複製する複製手段と、
葉へのポインタを格納可能な根を生成して、前記記憶手段に格納する根生成手段と、
前記決定手段によって決定された種類数に基づいて、前記複製手段によって複製された葉ごとに当該葉へのポインタを生成して、前記根生成手段によって生成された根に格納する第1の構築手段と、
前記葉に対する当該葉へのポインタ群に共通のビット列からなる圧縮符号を抽出し、当該圧縮符号およびその圧縮符号長を前記葉に格納して前記葉を再構築することにより、前記根および前記葉からなる無節点ハフマン木を生成する第2の構築手段と、
を備えることを特徴とする請求項1〜3のいずれか一つに記載の情報処理プログラム。 - 前記コンピュータを、
前記文字コードを出現頻度の降順にソートするソート手段、
前記ソート手段によってソートされた結果、前記文字コードのうち前記出現頻度の高位の文字コードと低位の文字コードとに分け、前記低位の文字コードを上位ビットコードと下位ビットコードに分割する分割手段、
前記分割手段によって分割された上位ビットコードおよび下位ビットコードの出現頻度を集計する集計手段として機能させ、
前記分類手段は、
前記高位の文字コードの集計結果と前記集計手段によって集計された集計結果とに基づいて、前記文字コードを出現確率Pに応じて階層別に分類することを特徴とする請求項1〜4のいずれか一つに記載の情報処理プログラム。 - 節点の階層数がk階層(kはk≧2の自然数)、節点からその下位節点への枝数が2n本(nはn≧2の自然数)、第i階層(iは1≦i≦kの自然数)の節点数が2n(i-1)であり、前記各節点が上位節点へのポインタを格納しており、かつ、葉または下位節点への2n個のポインタを格納可能な節点集合を記憶する記憶手段と、
対象ファイルに記述されている文字コードの出現頻度の集計結果を取得する取得手段と、
前記取得手段によって取得された集計結果に基づいて、前記文字コードを出現確率P(Pは1/2ni≦P<1/2n(i-1)。ただし、i=1のときは1/2n≦P<1、i=nのときはP<1/2n(n-1))に応じて階層別に分類する分類手段と、
前記分類手段によって分類された前記第i階層の文字コード数に基づいて、前記第i階層の葉へのポインタ数を算出するとともに、当該第i階層の葉へのポインタ数に基づいて、(i+1)階層の節点をリンク先とする前記第i階層の下位節点へのポインタ数と前記第i階層の節点の使用数とを算出する算出手段と、
前記算出手段によって算出された算出結果に基づいて、2n分枝ハフマン木を生成する2n分枝ハフマン木生成手段と、
前記2n分枝ハフマン木生成手段によって生成された2n分枝ハフマン木を、2m分枝(ただし、m=n×k)の無節点ハフマン木に変換して、前記記憶手段に記憶する変換手段と、
を備えることを特徴とする情報処理装置。 - 節点の階層数がk階層(kはk≧2の自然数)、節点からその下位節点への枝数が2n本(nはn≧2の自然数)、第i階層(iは1≦i≦kの自然数)の節点数が2n(i-1)であり、前記各節点が上位節点へのポインタを格納しており、かつ、葉または下位節点への2n個のポインタを格納可能な節点集合を記憶する記憶手段を備える情報処理装置が、
対象ファイルに記述されている文字コードの出現頻度の集計結果を取得する取得工程と、
前記取得工程によって取得された集計結果に基づいて、前記文字コードを出現確率P(Pは1/2ni≦P<1/2n(i-1)。ただし、i=1のときは1/2n≦P<1、i=nのときはP<1/2n(n-1))に応じて階層別に分類する分類工程と、
前記分類工程によって分類された前記第i階層の文字コード数に基づいて、前記第i階層の葉へのポインタ数を算出するとともに、当該第i階層の葉へのポインタ数に基づいて、(i+1)階層の節点をリンク先とする前記第i階層の下位節点へのポインタ数と前記第i階層の節点の使用数とを算出する算出工程と、
前記算出工程によって算出された算出結果に基づいて、2n分枝ハフマン木を生成する2n分枝ハフマン木生成工程と、
前記2n分枝ハフマン木生成工程によって生成された2n分枝ハフマン木を、2m分枝(ただし、m=n×k)の無節点ハフマン木に変換して、前記記憶手段に記憶する変換工程と、
を実行することを特徴とする情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008259507A JP5062131B2 (ja) | 2008-10-06 | 2008-10-06 | 情報処理プログラム、情報処理装置、および情報処理方法 |
US12/543,243 US7880648B2 (en) | 2008-10-06 | 2009-08-18 | Information processing apparatus, information processing method, and computer product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008259507A JP5062131B2 (ja) | 2008-10-06 | 2008-10-06 | 情報処理プログラム、情報処理装置、および情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010093414A JP2010093414A (ja) | 2010-04-22 |
JP5062131B2 true JP5062131B2 (ja) | 2012-10-31 |
Family
ID=42075373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008259507A Active JP5062131B2 (ja) | 2008-10-06 | 2008-10-06 | 情報処理プログラム、情報処理装置、および情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7880648B2 (ja) |
JP (1) | JP5062131B2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9031216B1 (en) * | 2009-03-05 | 2015-05-12 | Google Inc. | In-conversation search |
JP5505524B2 (ja) * | 2011-02-14 | 2014-05-28 | 富士通株式会社 | 生成プログラム、生成装置、および生成方法 |
JP5605288B2 (ja) * | 2011-03-31 | 2014-10-15 | 富士通株式会社 | 出現マップ生成方法、ファイル抽出方法、出現マップ生成プログラム、ファイル抽出プログラム、出現マップ生成装置、およびファイル抽出装置 |
JP5845824B2 (ja) | 2011-11-04 | 2016-01-20 | 富士通株式会社 | 暗号化プログラム、復号化プログラム、暗号化方法、復号化方法、システム、コンテンツの生成方法およびコンテンツの復号化方法 |
JP5766588B2 (ja) * | 2011-11-16 | 2015-08-19 | クラリオン株式会社 | 検索端末装置、検索サーバ装置、及びセンタ連携型検索システム |
JP5895545B2 (ja) | 2012-01-17 | 2016-03-30 | 富士通株式会社 | プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体 |
CN104584439B (zh) * | 2012-08-20 | 2019-05-21 | 富士通株式会社 | 存储程序、存储方法、存储装置、解压缩程序、解压缩方法和解压缩装置 |
JP6065914B2 (ja) | 2012-09-21 | 2017-01-25 | 富士通株式会社 | 制御プログラム、制御方法および制御装置 |
WO2014147672A1 (ja) | 2013-03-22 | 2014-09-25 | 富士通株式会社 | 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム |
KR101750646B1 (ko) | 2013-03-22 | 2017-06-23 | 후지쯔 가부시끼가이샤 | 압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템 |
JP6447161B2 (ja) | 2015-01-20 | 2019-01-09 | 富士通株式会社 | 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法 |
JP2016171589A (ja) * | 2016-05-23 | 2016-09-23 | 富士通株式会社 | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置 |
JP6737025B2 (ja) | 2016-07-19 | 2020-08-05 | 富士通株式会社 | 符号化プログラム、検索プログラム、符号化装置、検索装置、符号化方法、及び検索方法 |
JP6680126B2 (ja) * | 2016-07-25 | 2020-04-15 | 富士通株式会社 | 符号化プログラム、符号化装置、符号化方法、及び検索方法 |
JP2017195628A (ja) * | 2017-06-26 | 2017-10-26 | 富士通株式会社 | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05110450A (ja) * | 1991-10-18 | 1993-04-30 | Canon Inc | 符号生成装置 |
JPH06131151A (ja) * | 1992-10-15 | 1994-05-13 | Sony Corp | データ伝送装置及びデータ伝送方法 |
JPH0936748A (ja) * | 1995-07-19 | 1997-02-07 | Toshiba Corp | ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置 |
JP3305190B2 (ja) * | 1996-03-11 | 2002-07-22 | 富士通株式会社 | データ圧縮装置及びデータ復元装置 |
JP3421563B2 (ja) | 1997-01-21 | 2003-06-30 | 富士通株式会社 | データ符号化方法及びデータ符号化装置、並びに、データ復号化方法及びデータ復号化装置、並びに、それらをコンピュータで実現するためのプログラムが記憶された記録媒体 |
JP3421700B2 (ja) * | 1998-01-22 | 2003-06-30 | 富士通株式会社 | データ圧縮装置及び復元装置並びにその方法 |
US6040790A (en) * | 1998-05-29 | 2000-03-21 | Xerox Corporation | Method of building an adaptive huffman codeword tree |
JP3970448B2 (ja) * | 1998-12-21 | 2007-09-05 | 株式会社日立製作所 | 情報中継方法および装置 |
JP2001136075A (ja) * | 1999-11-05 | 2001-05-18 | Fujitsu Ltd | データ圧縮/復元装置及びデータ圧縮/復元プログラムを記録した記憶媒体 |
JP2002330076A (ja) * | 2001-04-27 | 2002-11-15 | Sanyo Electric Co Ltd | ハフマン復号装置及び復号方法 |
JP3425143B2 (ja) * | 2001-12-28 | 2003-07-07 | 富士通株式会社 | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 |
EP1645037B1 (en) * | 2003-09-02 | 2017-05-24 | HMD Global Oy | Huffman decoding |
-
2008
- 2008-10-06 JP JP2008259507A patent/JP5062131B2/ja active Active
-
2009
- 2009-08-18 US US12/543,243 patent/US7880648B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US7880648B2 (en) | 2011-02-01 |
US20100085222A1 (en) | 2010-04-08 |
JP2010093414A (ja) | 2010-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5062131B2 (ja) | 情報処理プログラム、情報処理装置、および情報処理方法 | |
JP4893805B2 (ja) | 情報処理プログラム、情報検索プログラム、および情報処理装置 | |
JP5418218B2 (ja) | 情報処理プログラム、情報検索プログラム、情報処理装置、および情報検索装置 | |
JP4805315B2 (ja) | データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法 | |
US8037035B2 (en) | Apparatus for searching and managing compressed files | |
JP5741699B2 (ja) | 抽出方法、抽出プログラム、抽出装置、および抽出システム | |
US20160321282A1 (en) | Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus | |
US20140214854A1 (en) | Extracting method, computer product, extracting system, information generating method, and information contents | |
Mäkinen et al. | Linear time construction of indexable founder block graphs | |
JP6447161B2 (ja) | 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法 | |
Nishimoto et al. | An optimal-time RLBWT construction in BWT-runs bounded space | |
US9542427B2 (en) | Computer product, generating apparatus, and generating method for generating Huffman tree, and computer product for file compression using Huffman tree | |
CN101944086A (zh) | 全字索引词典 | |
KR102006283B1 (ko) | 패스트맵을 이용한 데이터셋의 m-트리 적재방법 | |
WO2012117544A1 (ja) | 検索プログラム、検索装置、および検索方法 | |
Ristov et al. | Ziv Lempel compression of huge natural language data tries using suffix arrays | |
JP2006073035A (ja) | 電子化文書検索システム、検索装置、および記録媒体 | |
Aref et al. | Supporting electronic ink databases | |
Haapasalmi | Optimized Compressed Data Structures for Infinite-order Lan-guage Models | |
JP7077387B1 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP2022083920A (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP2023013868A (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
CN113420570A (zh) | 一种用于提升翻译准确性的方法、系统及装置 | |
Külekci et al. | Range selection and predecessor queries in data aware space and time | |
Lifchitz | A FAST LEXICALLY CONSTRAINED VITERBI ALGORITHM FOR ON LINE HANDWRITING RECOGNITIO Lifchitz, A.; Maire, F. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110708 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120224 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120306 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120417 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120618 |
|
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: 20120710 |
|
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: 20120723 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5062131 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150817 Year of fee payment: 3 |