存儲程序、存儲方法、存儲裝置、解壓縮程序、解壓縮方法和解壓縮裝置的制造方法
【技術領域】
[0001]本發明涉及一種數據壓縮/解壓縮技術。
【背景技術】
[0002]在被稱為哈夫曼(Huffman)編碼的壓縮/解壓縮算法中,包括在要被壓縮的數據中的每個符號(字符等)與被分配給該符號的壓縮碼之間的關系由二叉樹結構指示。該二叉樹被稱為哈夫曼樹。哈夫曼樹的每個葉部分(尾端)的數據指示符號,并且與該符號相對應的壓縮碼指示從哈夫曼樹的根(開始端)至葉的搜索路徑。在使用哈夫曼編碼的解壓縮處理中,通過反復從經壓縮數據讀出I位的數據并且確定在哈夫曼樹中的與所讀取數據相對應的分支(樹結構的根或節點部分)來執行對哈夫曼樹的搜索。通過執行對哈夫曼樹的搜索來識別與壓縮數據中的位串(即,壓縮碼)相對應的符號。
[0003]在針對哈夫曼編碼的壓縮/解壓縮算法中,包括指示引用(reference)目的地的信息(諸如指針;在下文中被稱為指針)以及解壓縮字符碼的數據結構被包括在哈夫曼樹的數據結構中的每個中。在對哈夫曼樹的搜索中進行的分支的確定是通過根據從壓縮數據所讀出的位選擇指示下一個引用目的地的指針執行的。也就是說,根據從壓縮數據所讀出的位來確定包括在每個分支的數據結構中的多個指針中的哪個指針被使用。下一個要被引用的數據結構由與從壓縮數據所讀出的位相對應的指針指示。在經歷了根據壓縮碼的末位進行的確定的數據結構中,指示與壓縮碼相對應的符號的葉的數據結構被存儲。
[0004]同時,存在有從壓縮數據讀出預定長度位串并且基于所讀取的位串來識別解壓縮字符數據的技術(例如,專利文獻I)。在哈夫曼編碼中,根據出現的頻率來設置壓縮碼的碼長,所以存在有其碼長小于預定長度的壓縮碼。因此,通過額外的位被添加至壓縮碼的預定長度位串以及到包括解壓縮字符數據的數據結構的關聯指針來指示解壓縮字符數據與壓縮碼之間的對應關系。不同位被添加至同一壓縮碼的預定長度位串與同一指針關聯。在使用該算法的解壓縮處理中,從壓縮數據讀出包括額外的位的預定長度位串,并且基于所讀取的預定長度位來獲取指針,以及基于所獲取的指針來讀出解壓縮字符數據。此外,下一次從壓縮數據讀出預定長度位串的讀出位置被設置成從上一次讀出位置前進壓縮碼長度的位的位置。因此,基于用于根據出現的頻率來分配壓縮碼與碼長的壓縮/解壓縮算法,解壓縮處理基于從壓縮數據所讀出的位而執行。
[0005]在以上所描述的技術中,解壓縮的字符串是根據從壓縮數據所讀取的位串獲取的;因此,同一指針被冗余地存儲在不同的位被添加至同一壓縮碼的位串中的每個位串中。
[0006]專利文獻
[0007]專利文獻1:日本公開專利公報第2010-93414號
[0008]專利文獻2:國際公布冊第WO 2008/142800號
【發明內容】
[0009]技術問題
[0010]根據以上描述的技術,在解壓縮處理中產生兩個引用處理,即基于讀取的位串對指針的引用以及基于指針對解壓縮字符數據的引用。
[0011]本發明的一個方面是減小解壓縮處理的量。
[0012]根據一個方面,一種使得計算機執行下述的存儲程序:將要被壓縮的字符數據存儲在存儲區域內的由多種類型的預定長度位串指定的相應的存儲位置中,該多種類型的預定長度位串包括分配給字符數據的壓縮碼,在該存儲區域中,存儲位置由預定長度位串指定。
[0013]根據一個方面,一種用于使得計算機執行下述的存儲方法:將要被壓縮的字符數據存儲在存儲區域內的由多種類型的預定長度位串指定的相應的存儲位置中,該多種類型的預定長度位串包括分配給字符數據的壓縮碼,在該存儲區域中,存儲位置由預定長度位串指定。
[0014]根據一個方面,一種存儲裝置包括:存儲單元,該存儲單元包括存儲區域,在該存儲區域中,存儲位置由預定長度位串指定;以及控制單元,該控制單元將要被壓縮的字符數據存儲在存儲區域內的由多種類型的預定長度位串指定的相應的存儲位置中,該多種類型的預定長度位串包括分配給字符數據的壓縮碼。
[0015]根據一個方面,一種使得計算機執行下述的解壓縮程序:當在壓縮文件中的讀出位置從存儲區域讀出包括共有(common)壓縮碼的多種類型的預定長度位串時,從由所讀取的預定長度位串指定的存儲位置讀出解壓縮字符數據和碼長,在該存儲區域中,與壓縮碼相對應的解壓縮字符數據和壓縮碼的碼長被存儲在由包括該壓縮碼的預定長度位串指定的相應的存儲位置中;將從壓縮文件所讀出的預定長度位串轉換成解壓縮字符數據;以及基于碼長來調節讀出位置。
[0016]根據一個方面,一種用于使得計算機執行下述的解壓縮方法:當在壓縮文件中的讀出位置從存儲區域讀出包括共有壓縮碼的多種類型的預定長度位串時,從由所讀取的預定長度位串指定的存儲位置讀出解壓縮字符數據和碼長,在該存儲區域中,與壓縮碼相對應的解壓縮字符數據和壓縮碼的碼長被存儲在由包括該壓縮碼的預定長度位串指定的相應的存儲位置中;將從壓縮文件所讀出的預定長度位串轉換成解壓縮字符數據;以及基于碼長來調節讀出位置。
[0017]根據一個方面,一種解壓縮裝置,包括:存儲單元,該存儲單元包括存儲區域,在該存儲區域中,與共有壓縮碼相對應的解壓縮字符數據和壓縮碼的碼長被存儲在由包括該壓縮碼的多種類型的預定長度位串指定的相應的存儲位置中;讀出單元,該讀出單元當在壓縮文件中的讀出位置讀出包括壓縮碼的預定長度位串時,將解壓縮字符數據和碼長從由所讀取的預定長度位串指定的存儲位置讀出到存儲單元;轉換單元,該轉換單元將從壓縮文件讀出的預定長度位串轉換成解壓縮字符數據;以及調節單元,該調節單元基于碼長對讀出位置進行調節。
[0018]發明的有益效果
[0019]根據本發明的一個方面,可以減小解壓縮處理的量。
【附圖說明】
[0020]圖1示出了哈夫曼樹的示例。
[0021]圖2示出了數據結構之間的引用關系。
[0022]圖3示出了壓縮/解壓縮字典的數據結構的示例。
[0023]圖4示出了修改的哈夫曼樹的示例。
[0024]圖5示出了壓縮/解壓縮字典的數據結構的示例。
[0025]圖6示出了壓縮/解壓縮字典的修改的數據結構的示例。
[0026]圖7示出了計算機I的功能塊的配置示例。
[0027]圖8示出了計算機I的硬件配置示例。
[0028]圖9示出了計算機I的軟件配置示例。
[0029]圖10示出了使用計算機I的系統的配置示例。
[0030]圖11示出了通過壓縮單元101執行的壓縮處理的流程的示例。
[0031]圖12示出了生成壓縮/解壓縮字典數據的處理的流程的示例。
[0032]圖13示出了頻率制表表格T7的示例。
[0033]圖14示出了字符串列表T8的示例。
[0034]圖15示出了碼長分布表格T9的示例。
[0035]圖16示出了轉換處理的流程的示例。
[0036]圖17示出了通過解壓縮單元102執行的解壓縮處理的流程的示例。
[0037]圖18示出了轉換處理的流程的示例。
[0038]圖19示出了通過檢索單元103執行的檢索處理的流程的示例。
[0039]圖20示出了壓縮/解壓縮字典數據TlO的示例。
[0040]圖21示出了交叉檢查處理的流程的示例。
【具體實施方式】
[0041]首先,說明使用哈夫曼編碼的壓縮/解壓縮處理和修改示例。
[0042]圖1示出了哈夫曼樹的示例。在圖1中示出的哈夫曼樹表示字符數據(0,>,〈br>,1,〈,a,s,t,x)與壓縮碼之間的對應關系。
[0043]字符數據(0,>,<br>,1,〈,a,s,t,x)僅是用于說明哈夫曼樹的字符數據的示例。作為要被壓縮的字符數據,例如,使用諸如數字、字母、平假名字符、片假名字符、漢字字符、阿拉伯字母、西里爾字母或符號(兩字節或一字節)的字符碼,包括多個字符的組合的字符串(保留字),以及固定長度位串等。在圖1中示出的列表Tl是根據在壓縮目標數據中的出現的頻率排序的要被壓縮的字符數據的列表。此外,在要被壓縮的字符數據中,通過進一步使用不同于列表Tl的列表來管理其位長與字符碼不同的字符數據(在圖1的示例中,保留字“<br>”等)。在列表Tl中的字符數據分別存儲在哈夫曼樹的葉的數據結構HL(HLl至HL9)中。
[0044]列表Tl中的每條字符數據與壓縮碼之間的對應關系由從哈夫曼樹的根的數據結構HR到葉的數據結構HL(HLl至HL9)的搜索路徑來指示。在根的數據結構HR和節點的數據結構HN(HN11、HN12、HN21至HN23、HN31和HN32)中的每個中,依賴于位為“O”還是為“ I ”而存在有分支,并且壓縮碼由在搜索路徑上的分支中使用的位來指示。此外,在哈夫曼編碼中,字符數據的出現頻率越高,被分配給該字符數據的壓縮碼的長度越短;字符數據的出現的頻率越低,被分配給該字符數據的壓縮碼的長度越長。例如,字符數據“t”的壓縮碼由到存儲有字符數據“t”的葉的數據結構HL8的搜索路徑來指示。通過順序地追蹤由位“I”指示的從根HR至節點HN12的路徑、由位“I”指示的從節點HN12至節點HN23的路徑、由位“I”指示的從節點HN23至節點HN32的路徑、以及由位“O”指示的從節點HN32至葉HL8的路徑來進行從根HR至數據結構HL8的搜索。在圖1中,“1110”為被分配給字符數據“t”的壓縮碼,其是指示從根HR至葉的數據結構HL8的搜索路徑中包括的路徑的位串。
[0045]圖2示出了數據結構之間的引用關系。通過使用在圖2中示出的指針引用的關系來進行采用圖1所說明的搜索。在HXl至HX3中指示根的數據結構HR和節點的數據結構HN的附注。附注HXl包括到高層(high-order)數據結構的指針、指示指針被存儲的第一標識符(在圖2中的“0”)、到(第一)低層(low-order)數據結構的指針、指示指針被存儲的第二標識符(在圖2中的“O”)、以及到(第二)低層數據結構的指針。附注HX2包括到高層數據結構的指針、指示字符碼被存儲的標識符(在圖2中的“I”)、字符