A novel lossless data compression scheme based on the error correcting Hamming codes

Similar documents
Enhancing the Compression Ratio of the HCDC Text Compression Algorithm

THE RELATIVE EFFICIENCY OF DATA COMPRESSION BY LZW AND LZSS

Research Article Does an Arithmetic Coding Followed by Run-length Coding Enhance the Compression Ratio?

Data Compression. Media Signal Processing, Presentation 2. Presented By: Jahanzeb Farooq Michael Osadebey

So, what is data compression, and why do we need it?

IMAGE COMPRESSION TECHNIQUES

Comparative Study of Dictionary based Compression Algorithms on Text Data

Data Compression. An overview of Compression. Multimedia Systems and Applications. Binary Image Compression. Binary Image Compression

Digital Communication Prof. Bikash Kumar Dey Department of Electrical Engineering Indian Institute of Technology, Bombay

WIRE/WIRELESS SENSOR NETWORKS USING K-RLE ALGORITHM FOR A LOW POWER DATA COMPRESSION

EE67I Multimedia Communication Systems Lecture 4

A Simple Lossless Compression Heuristic for Grey Scale Images

Engineering Mathematics II Lecture 16 Compression

A Research Paper on Lossless Data Compression Techniques

Ch. 2: Compression Basics Multimedia Systems

Lossless Compression Algorithms

A Compression Technique Based On Optimality Of LZW Code (OLZW)

Integrating Error Detection into Arithmetic Coding

A Comparative Study of Entropy Encoding Techniques for Lossless Text Data Compression

IMAGE PROCESSING (RRY025) LECTURE 13 IMAGE COMPRESSION - I

Keywords Data compression, Lossless data compression technique, Huffman Coding, Arithmetic coding etc.

A Comparative Study Of Text Compression Algorithms

Multimedia Communications ECE 728 (Data Compression)

A Comparative Study of Lossless Compression Algorithm on Text Data

Welcome Back to Fundamentals of Multimedia (MR412) Fall, 2012 Lecture 10 (Chapter 7) ZHU Yongxin, Winson

Analysis of Parallelization Effects on Textual Data Compression

Image Compression - An Overview Jagroop Singh 1

Compression. storage medium/ communications network. For the purpose of this lecture, we observe the following constraints:

CS 493: Algorithms for Massive Data Sets Dictionary-based compression February 14, 2002 Scribe: Tony Wirth LZ77

CS 335 Graphics and Multimedia. Image Compression

OPTIMIZATION OF LZW (LEMPEL-ZIV-WELCH) ALGORITHM TO REDUCE TIME COMPLEXITY FOR DICTIONARY CREATION IN ENCODING AND DECODING

Fundamentals of Multimedia. Lecture 5 Lossless Data Compression Variable Length Coding

EE-575 INFORMATION THEORY - SEM 092

An Asymmetric, Semi-adaptive Text Compression Algorithm

Data Encryption on FPGA using Huffman Coding

Video Compression An Introduction

Digital Communication Prof. Bikash Kumar Dey Department of Electrical Engineering Indian Institute of Technology, Bombay

Entropy Coding. - to shorten the average code length by assigning shorter codes to more probable symbols => Morse-, Huffman-, Arithmetic Code

An On-line Variable Length Binary. Institute for Systems Research and. Institute for Advanced Computer Studies. University of Maryland

Journal of Computer Engineering and Technology (IJCET), ISSN (Print), International Journal of Computer Engineering

David Rappaport School of Computing Queen s University CANADA. Copyright, 1996 Dale Carnegie & Associates, Inc.

IJSRD - International Journal for Scientific Research & Development Vol. 3, Issue 10, 2015 ISSN (online):

Chapter 1. Digital Data Representation and Communication. Part 2

Compressing Data. Konstantin Tretyakov

Multimedia Systems. Part 20. Mahdi Vasighi

An Advanced Text Encryption & Compression System Based on ASCII Values & Arithmetic Encoding to Improve Data Security

An Effective Approach to Improve Storage Efficiency Using Variable bit Representation

15 Data Compression 2014/9/21. Objectives After studying this chapter, the student should be able to: 15-1 LOSSLESS COMPRESSION

A Hybrid Approach to Text Compression

Multimedia Networking ECE 599

IMAGE COMPRESSION. Image Compression. Why? Reducing transportation times Reducing file size. A two way event - compression and decompression

Design and Implementation of a Data Compression Scheme: A Partial Matching Approach

DEFLATE COMPRESSION ALGORITHM

Enhancing Text Compression Method Using Information Source Indexing

University of Mustansiriyah, Baghdad, Iraq

International Journal of Advanced Research in Computer Science and Software Engineering

HARDWARE IMPLEMENTATION OF LOSSLESS LZMA DATA COMPRESSION ALGORITHM

FPGA based Data Compression using Dictionary based LZW Algorithm

Data Compression Techniques

A New Compression Method Strictly for English Textual Data

ITCT Lecture 8.2: Dictionary Codes and Lempel-Ziv Coding

Compression; Error detection & correction

Information Technology Department, PCCOE-Pimpri Chinchwad, College of Engineering, Pune, Maharashtra, India 2

Intro. To Multimedia Engineering Lossless Compression

DigiPoints Volume 1. Student Workbook. Module 8 Digital Compression

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

Image compression. Stefano Ferrari. Università degli Studi di Milano Methods for Image Processing. academic year

An Analytical Review of Lossy Image Compression using n-tv Method

Chapter 7 Lossless Compression Algorithms

Digital Image Processing

COMPRESSION OF SMALL TEXT FILES

Optimized Compression and Decompression Software

Topic 5 Image Compression

Text Data Compression and Decompression Using Modified Deflate Algorithm

Design and Implementation of FPGA- based Systolic Array for LZ Data Compression

TEXT COMPRESSION ALGORITHMS - A COMPARATIVE STUDY

Digital Image Processing

A Novel Image Compression Technique using Simple Arithmetic Addition

Highly Secure Invertible Data Embedding Scheme Using Histogram Shifting Method

A COMPRESSION TECHNIQUES IN DIGITAL IMAGE PROCESSING - REVIEW

T. Bell and K. Pawlikowski University of Canterbury Christchurch, New Zealand

LIPT-Derived Transform Methods Used in Lossless Compression of Text Files

Using Shift Number Coding with Wavelet Transform for Image Compression

Encoding. A thesis submitted to the Graduate School of University of Cincinnati in

Achieving Reliable Digital Data Communication through Mathematical Algebraic Coding Techniques

Simple variant of coding with a variable number of symbols and fixlength codewords.

The Effect of Non-Greedy Parsing in Ziv-Lempel Compression Methods

Department of electronics and telecommunication, J.D.I.E.T.Yavatmal, India 2

ADVANCED LOSSLESS TEXT COMPRESSION ALGORITHM BASED ON SPLAY TREE ADAPTIVE METHODS

Data Compression Fundamentals

A QUAD-TREE DECOMPOSITION APPROACH TO CARTOON IMAGE COMPRESSION. Yi-Chen Tsai, Ming-Sui Lee, Meiyin Shen and C.-C. Jay Kuo

Implementation and Optimization of LZW Compression Algorithm Based on Bridge Vibration Data

Fundamentals of Video Compression. Video Compression

ADAPTIVE-QUALITY IMAGE COMPRESSION ALGORITHM

Lossless compression II

A Review of IP Packet Compression Techniques

Improving LZW Image Compression

A Method for the Construction of Minimum-Redundancy Codes*

ENSC Multimedia Communications Engineering Topic 4: Huffman Coding 2

Compression; Error detection & correction

Transcription:

Computers and Mathematics with Applications 56 (2008) 143 150 www.elsevier.com/locate/camwa A novel lossless data compression scheme based on the error correcting Hamming codes Hussein Al-Bahadili Department of Computer Information Systems, Faculty of Information Systems and Technology, The Arab Academy for Banking and Financial Sciences, P.O. Box 13190, Amman 11942, Jordan Received 21 August 2006; received in revised form 27 February 2007; accepted 17 November 2007 Abstract This paper introduces a novel lossless binary data compression scheme that is based on the error correcting Hamming codes, namely the HCDC scheme. In this scheme, the binary sequence to be compressed is divided into blocks of n bits length. To utilize the Hamming codes, the block is considered as a Hamming codeword that consists of p parity bits and d data bits (n = d + p). Then each block is tested to find if it is a valid or a non-valid Hamming codeword. For a valid block, only the d data bits preceded by 1 are written to the compressed file, while for a non-valid block all n bits preceded by 0 are written to the compressed file. These additional 1 and 0 bits are used to distinguish the valid and the non-valid blocks during the decompression process. An analytical formula is derived for computing the compression ratio as a function of block size, and fraction of valid data blocks in the sequence. The performance of the HCDC scheme is analyzed, and the results obtained are presented in tables and graphs. Finally, conclusions and recommendations for future works are pointed out. c 2007 Elsevier Ltd. All rights reserved. Keywords: Data compression; Lossless and lossy data compression; Error correcting Hamming codes 1. Introduction Data compression algorithms are designed to reduce the size of the data so that it requires less disk space for storage and less bandwidth to be transmitted on a data communication channel [1 3]. Data compression algorithms are generally classified into either lossless or lossy [4,5]. Lossless data compression involves a transformation of the representation of the original data set such that it is possible to reproduce exactly the original data set by performing a decompression transformation. Lossless compression is used in compressing text files, executable codes, word processing files, database files, tabulation files, and whenever it is important that the original and the decompressed files must be identical. Thus, lossless data compression algorithms find numerous applications in information technology. For example, packing utilities in Windows, Linux, and Unix operating systems; modem standards such as V.32bis and V.42bis; fax standards such as CCITT; back-end for lossy compression algorithms such as JPEG and MPEG; compression of headers of TCP/IP packets [4,6]. Lossy data compression involves a transformation of the representation of the E-mail addresses: hbahadili@aabfs.org, hussein963@yahoo.com. 0898-1221/$ - see front matter c 2007 Elsevier Ltd. All rights reserved. doi:10.1016/j.camwa.2007.11.043

144 H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 original data set such that it is impossible to reproduce exactly the original data set, but an approximate representation is reproduced by performing a decompression transformation. This type of compression is used on the Internet and especially in streaming media and telephony applications. Distinction between lossless and lossy methods is important because lossy techniques have higher compression ratio than lossless methods. Lossless compression techniques can usually achieve a 2:1 to 8:1 compression ratio. Lossy compression can provide compression ratios of 100:1 to 200:1, depending on the type of information being compressed. In addition, higher compression ratio can be achieved if more errors are allowed to be introduced into the original data [7 10]. There are three major models of data compression techniques: Substitution, Statistical and Dictionary-based compression. Substitution compression involves the swapping of repeating characters by a shorter representation, such as Null Suppression, Run Length Encoding (RLE), Bit Mapping and Half-Byte Packing [4,11]. Statistical data compression techniques involve the generation of the shortest average code length based on an estimated probability of the characters, such as Shannon Fano coding [5,12], static and dynamic Huffman coding [13 15], and arithmetic coding [16,17]. In such techniques, the characters in the source file are converted to a binary code, where the most common characters in the file have the shortest binary codes, and the least common have the longest, the binary codes are generated based on the estimated probability of the character within the file. Then, the binary coded file is compressed using 8-bit character wordlength, or by applying the adaptive character wordlength (ACW) algorithm [18]. Finally, dictionary-based data compression techniques, which involve substitution of substrings of text by indices or pointer code, relative to a dictionary of the substrings, such as Lempel Zif Welch (LZW) [19 21]. Many compression algorithms use a combination of different data compression techniques to improve compression ratios. Data coding techniques have been widely used in developing both lossless and lossy data compression algorithms, since coding techniques may lend themselves well to the above concept [12]. Data coding involves processing an input sequence, X = {x[1] x[m]}, where each input symbol, x[i], is drawn from a source alphabet, S = {s i,..., s m } whose probabilities are ρ = {ρ 1,..., ρ m } with 2 m < (for binary alphabet m = 2 and S is either 0 or 1). Throughout this paper, we limit our discussion to binary data sources. These binary data source are either readily generated or be produced by any statistical data compression algorithm. The encoding process is rendered by transforming X into an output sequence, Y = {y[1]..., y[q]}, where each output symbol, y[i], is drawn from a code alphabet A = {a 1,..., a q }, here the code alphabet is still binary (i.e., either 0 or 1, q = 2), but Q must be much less than M. The main problem in lossless data compression is to find an encoding scheme that minimizes the size of Y, in such a way that X can be completely recovered by applying the decompression process. Although, Hamming codes [22,23] are widely used as an error correcting codes, it is also can be used for data compression allowing a small amount of distortion [24 26]. In this paper, we introduce a scheme that enables us to develop a lossless binary data compression scheme based on the error correcting Hamming codes, namely, the HCDC scheme. We derive an analytical formula for computing the compression ratio that can be achieved by applying this scheme on a particular data, and compute the maximum and minimum compression ratios for that particular set of data. The compression ratio depends on the block size and the fraction of valid blocks in the data sequence. In Section 2, we discuss the criteria for comparing data compression techniques. A description of the HCDC scheme is given in Section 3. In Section 4, we present the derivation of a formula for computing data compression ratio. Also, in this section the performance of the HCDC scheme is investigated and the results are presented in tables and graphs. Finally, in Section 5, conclusions and recommendations for future works are pointed out. 2. Criteria for comparing data compression algorithms The effectiveness of the data compression techniques depends on the type of the data that is to be compressed. Therefore, to be able to compare different data compression techniques reliably, not allowing extreme cases to cloud or bias the technique unfairly, certain issues need to be considered, such as amount of compression, algorithm complexity, and processing time. The amount of compression is measured by a factor known as compression ratio (C), which is defined as the ratio between the size of the original file (S o ) and the size of the compressed file (S c ), it can be expressed

H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 145 as: C = S o S c. The amount of compression is expressed as C:1. It can also be expressed to measure the reduction in the original data quantity, which we refer to as R, where R is given by: R = S o S c S o. R is usually given in percents. Practically, other conditions that must be considered, in comparing the different data compression algorithms, may include: finite memory, error control, type of data and compression style (static, adaptive, semi-adaptive). These conditions have to be equally considered for the decompression process [27]. The compression ratio is also closely related to the concept of coding rate, which expresses the same concept but relates the ratio to a more tangible quantity. For example, for a text file, the coding rate may be expressed in bits/character (bpc), where in uncompressed text file a coding rate of 8 bpc is used. The coding rate of an audio stream may be expressed in bits/analogue, or image compression may be expressed in bits/pixel. The coding rate can be converted to C if the physical characteristics of content of the original file are known. In contrast to C, a lower coding rate indicates a higher C. There are extreme cases where data compression works very well or other conditions where it is inefficient, the type of data that the file contains has an appreciable effect on the efficiency of the technique selected. Therefore, it is important to select the most appropriate technique for a particular data profile. In fact, with random information it is difficult to estimate a precise value for C. The types of files that are commonly used can be classified into two main categories: binary or textual. These types of files further can be classified with respect to their purpose and format (e.g., text, image, audio, executable). Some of these files may contain repeating sets of various or of the same characters. In addition, repeated strings and substrings may also present. In other cases, certain characters may have probabilities that are higher than others, thereby prompting the use of shorter codes for them. Each case is dependent on the context of the information contained within it; therefore, some patterns may be common across files of these types and so prompting that a certain technique can deal with them all effectively. This is normally rare for optimum compression or speed as there will always be trade-off between the two, depending on the demanding nature of compression. Investigation on the effects of each method for each of these file types can be determined by carrying out an experiment by applying each compression and decompression algorithm for each method to each of these file type. Note that an initial selection of files needs to have been made to maintain a fair comparison though the experiment. The time taken for the process to complete and the compression ratio should be monitored and recorded. This will help in determining a relationship between these two factors and enable the most appropriate algorithm to be used [11]. 3. The Hamming codes-based data compression algorithm Hamming proposed an error-correcting code that is widely used in computer networks and digital data communication; it could correct a single bit and detect two bits errors. It also can be tricked to correct burst errors [22,23]. Consider a message having d data bits which is to be coded using Hamming codes. The key to Hamming codes is the use of extra parity bits (p) to allow the identification of a single bit and a detection of two bits errors. The coded message will have a length of n bits (n = d + p). Each parity bit forces the parity of some collection of data bits, including itself, to be even (or odd), where each parity is computed on different subsets of the data bits. The bits of the codeword are numbered consecutively, starting with bit 1 at the left end, bit 2 to its immediate right, and so on. In Hamming codes, the data and the parity bits are located at particular locations in the codeword. The parity bits are located at positions 2 0, 2 1, 2 2,..., 2 p 1 in the sequence, which has at most 2 p 1 1 positions. The remaining positions are reserved for the data bits, see Fig. 1(a). For a codeword of n bits, there are 2 n possible codewords having values from 0 to 2 n 1, only 2 d of them are valid codewords and 2 n 2 d are non-valid codewords. (1) (2)

146 H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 Fig. 1. HCDC algorithm: (a) 7 bits block, (b) 3 blocks (21 bits) not compressed sequence b 1 and b 3 are valid blocks, and b 2 is non-valid block, (c) compressed sequence (18 bits). Fig. 2. The HCDC compressor. In this paper, we propose a novel scheme that makes use of the error correcting Hamming codes to develop an efficient lossless binary compression algorithm, namely the HCDC. In this scheme, the binary sequence to be compressed is divided into b blocks of n-bit length as shown in Fig. 1(b). For an optimum data compression ratio, the length of each block is given by n = 2 p 1. Each block is then tested to find if it is a valid block (valid codeword) or a non-valid block (non-valid codeword). During the compression process, for each valid block, the parity bits are omitted, and the data bits are extracted and written into a temporarily file. However, these parity bits can be easily retrieved back during the decompression process using Hamming codes. For a non-valid block, the block is written into the temporarily file without change. In order to be able to distinguish the valid and the non-valid blocks during the decompression process, each valid block is preceded by 1, and each non-valid block is preceded by 0, Fig. 1(c). Figs. 2 and 3 summarize the flow of the compressor and the decompressor of the HCDC scheme. 4. Derivation of the compression ratio formula In this section, we derive a formula that can be used to compute C as a function of two parameters: the block size (n) and the fraction of valid blocks (r). The original binary file is divided into b blocks of n-bit length. These b blocks are either valid or non-valid blocks, therefore, we can say: b = ν + ω, (3)

H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 147 Fig. 3. The HCDC decompressor. where ν and ω are the number of valid and non-valid blocks, respectively. For a valid codeword, the compressor stores the bits that are located at data bits positions only, and omits all bits that are located at parity bits positions. These parity bits can be retrieved back during the decompression process using Hamming codes. In order for the decompressor to distinguish a valid from a non-valid block, what should be stored from a valid codeword is preceded by 1, and 0 for a non-valid codeword. Thus, the lengths of the valid and non-valid blocks after compression are given by: S ν = v(d + 1) S ω = ω(n + 1). (4) (5) The length of the compressed binary file is given by: S c = S ν + S ω = ν(d + 1) + ω(n + 1). (6) The above equation can be simplified to: S c = nb + b νp. (7) Substituting S o = nb and S c as it is given by Eq. (7) into Eq. (1) yields: C = n n + 1 r p, where r = ν/b, and it represents the fraction of the valid blocks. Substitute n = 2 p 1 into Eq. (8), it can be simplified to yield: C = 2p 1 2 p r p. It is clear from Eq. (8) that the maximum compression ratio (C max ) can be achieved when r = 1(ν = b, ω = 0). On the other hand, the minimum compression ratio (C min ) is reached when r = 0(ν = 0, ω = b). It also can be seen and proved from Eq. (9), that for each value of p, there is a critical value of r(r crit ) for which C = 1, and for any value below these critical values, C becomes less than unity (C < 1), i.e., data inflated. In this case, r crit = 1/p. There is a critical value for ν(ν crit = br crit ) since r = ν/b. Fig. 4 shows the variation of C min and C max with respect to p. The results are also tabulated in Table 1. It shows that C min, C max, and r crit are inversely proportional to p. Fig. 5 shows the variations of C with respect to r for values of p varies between 2 and 8. The results are also tabulated in Table 2. It can be seen from Figs. 4 and 5 that a satisfactory value of C can be achieved when p 4 and r r crit. (8) (9)

148 H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 Fig. 4. Variation of C min and C max with p. Table 1 Variation of C min, C max, and ν crit with number of parity bits (p) p C min C max ν crit 2 0.750 1.500 0.500 3 0.875 1.400 0.333 4 0.938 1.250 0.250 5 0.969 1.148 0.200 6 0.984 1.086 0.167 7 0.992 1.050 0.143 8 0.996 1.028 0.125 Fig. 5. Variations of C with respect to r for various values of p. One important feature of the HCDC algorithm is that it can be repeatedly applied on the binary sequence, and an equation can be derived to compute the accumulated compression ratio (C k ) as: C k = S 0. k C i i=1 (10) 5. Conclusions The compression ratio (C) that can be achieved by the HCDC algorithm depends on n and r. The value of C is directly proportional to r, and inversely proportional to n. The maximum value for C is achieved when all blocks are valid codewords (r = 1, ν = b, ω = 0). On the other hand, the minimum value for C is reached when all blocks are found to have non-valid codewords (r = 0, ν = 0, ω = b). These maximum and minimum limits depend on p. Satisfactory values of C can be achieved for p 4, for r r crit.

H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 149 Table 2 Variations of C with respect to r for various values of p r Number of the parity bits (p) 2 3 4 5 6 7 8 0.0 0.750 0.875 0.938 0.969 0.984 0.992 0.996 0.1 0.789 0.909 0.962 0.984 0.994 0.998 0.999 0.2 0.833 0.946 0.987 1.000 1.003 1.003 1.002 0.3 0.882 0.986 1.014 1.016 1.013 1.009 1.006 0.4 0.938 1.029 1.042 1.033 1.023 1.014 1.009 0.5 1.000 1.077 1.071 1.051 1.033 1.020 1.012 0.6 1.071 1.129 1.103 1.069 1.043 1.026 1.015 0.7 1.154 1.186 1.136 1.088 1.054 1.032 1.018 0.8 1.250 1.250 1.172 1.107 1.064 1.038 1.022 0.9 1.364 1.321 1.210 1.127 1.075 1.044 1.025 1.0 1.500 1.40 1.250 1.148 1.086 1.050 1.028 The HCDC algorithm can be used as a complementary algorithm to any statistical lossless data compression algorithm, such as Shanon Fano coding, Huffman coding, arithmetic coding, a combination of these algorithms, or any modified form of them. It can also be used as a pre-stage to the ACW data compression algorithm. One of the important features of this algorithm is that it can be implemented on hardware. So that it can be used for on-line applications in computer networks and in all forms of digital communication systems. Performance evaluation of the HCDC algorithm for different file formats and its software and hardware are under investigation and development. The adaptive version of the algorithm to be developed is to find the value of p that gives an optimum value for r (r 1) to achieve the highest possible C. In addition, the optimization process may include predicting of the optimum value of k that gives maximum C k. Acknowledgments The author would like to express his appreciation to the Middle-East Advanced Semiconductor Inc. (MEASI), the leader in communications in Iraq, where he works as a consultant in support of their IT and Wireless Communication Division. References [1] K. Sayood, Introduction to Data Compression, Morgan Kaufmann Publishers, 2000. [2] G. Held, T.R. Marshell, Data and Image Compression, John Wiley and Sons, 1996. [3] R. Gryder, K. Hake, Survey of Data Compression Techniques, ORNL/TM-11797, 1991. [4] S.W. Smith, The Scientist and Engineer s Guide to Digital Signal Processing, California Technical Publishing, 1997. [5] http://www.data-compression.com/ lossless.shtml, 2007. [6] G. Caire, S. Shamai, S. Verdu, Noiseless data compression with low-density parity-check codes, in: Discrete Mathematics and Theoretical Computer Science, AMS, 2004. [7] G.W. Drost, N.G. Bourbakis, A hybrid system for real-time lossless image compression, Microprocessors and Microsystems 25 (1) (2001) 19 31. [8] H. Yu-Chen, C.C. Chang, A new lossless compression scheme based on Huffman coding scheme for image compression, Signal Processing: Image Communication 16 (4) (2000) 367 372. [9] A.Z. Asli, S. Alipour, An effective method for still image compression decompression for transmission on PSTN lines based on modification of Huffman coding, Computer and Electrical Engineering 30 (2) (2004) 129 145. [10] D.A. Lelewer, D.S. Hirschberg, Data compression, ACM Computing Surveys 19 (3) (1987) 261 296. [11] M.K. Pandya, Data Compression: Efficiency of Varied Compression Techniques, Report, University of Brunel, UK, 2000. [12] L. Rueda, J. Oommen, A fast and efficient nearly-optimal adaptive Fano coding scheme, Information Science 176 (12) (2006) 1656 1683. [13] D.A. Huffman, A method for the construction of minimum-redundancy codes, Proceeding IRE 40 (9) (1952) 1098 1101. [14] D.E. Knuth, Dynamic Huffman coding, Journal of Algorithms 6 (2) (1985) 163 180. [15] J.S. Vitter, Dynamic Huffman coding, Journal of ACM 15 (2) (1989) 158 167. [16] P.G. Howard, J.S. Vitter, Arithmetic coding for data compression, Proceedings of the IEEE 82 (6) (1994) 857 865. [17] I.H. Witten, R.M. Neal, J.G. Cleary, Arithmetic coding for data compression, communications of the ACM, Computing Practices 30 (6) (1987) 520 540.

150 H. Al-Bahadili / Computers and Mathematics with Applications 56 (2008) 143 150 [18] H. Al-Bahadili, S. Hussain, An adaptive character wordlength algorithm for data compression, Computers & Mathematics with Applications, (in press) manuscript number CAM7136, received 19th May, 2006, accepted 16 May 2007, available online 24 October 2007. [19] J. Ziv, A. Lempel, Compression of information sequences via variable-rate coding, IEEE Transaction on Information Theory 24 (5) (1978) 530 536. [20] J. Ziv, A. Lempel, A universal algorithm for sequential data compression, IEEE Transaction on Information Theory 23 (3) (1977) 337 343. [21] M. Nelson, LZW data compression, Dr Dobb s Journal 14 (10) (1989) 62 75. [22] R.W. Hamming, Error detecting and error correcting codes, Bell System Technical Journal 29 (1950) 147 160. [23] A. Tanenbaum, Computer Networks, Prentice Hall, 2003. [24] G. Caire, S. Shamai, S. Verdu, Lossless data compression with error correction codes, IEEE International Symposium on Information Theory (2003). [25] G. Caire, S. Shamai, S. Verdu, A new data compression algorithm for sources with memory based on error correcting codes, IEEE Workshop on Information Theory (2003) 291 295. [26] A.A. Sharieh, An enhancement of Huffman coding for the compression of multimedia files, Transactions on Engineering, Computing and Technology 3 (2004) 303 305. [27] T.C. Bell, I.H. Witten, J. G, Cleary Text Compression, Prentice Hall, 1990.