writing a survey paper, computer science homework help

User Generated

Fgrcura123

Computer Science

Description

please do meet the requirements which was describe in the file i uploaded

Unformatted Attachment Preview

Project 1 – Survey of an Algorithm CS3330 Data Structures and Algorithms Term 5 2017: May 29 – July 30 Dr. Jack Davault Overview This assignment consists of writing a research paper surveying a popular algorithm. Your paper must conform to the American Psychological Association (APA) writing style. There are many good online resources for the APA style. Your paper must use reputable scholarly references. Most Web sources such as blog, forums, and personal website are not considered reputable (do not cite or use any Wiki or Answer.com type websites). Your paper should use 11pt or 12pt font size for the main text. Other text such as figure and table labels and captions, if applicable, should be no smaller then 10pt. This assignment weighs 15% of your course grade. A typical research paper for this assignment is about 7-10 double spaced pages (not including the cover page or reference page). Sample research papers from other classes are available in the folder named Survey Papers in the Examples and Resources (for Project 1) folder within the Learning Modules area in Blackboard. These papers are not perfect, but they will give you an idea on what a good research paper looks like. An example survey paper template is also provided for download in the Examples and Resources (for Project 1) folder. I recommend that you use this template, but it is not required; however, your paper must include all of the required information for the assignment and must follow the APA style of writing. I also recommend that you review all of the notes and recommendation in the Examples and Resources (for Project 1) area to avoid many of the common mistakes that occur in formal research writing. For example, avoid telling stories. Your paper should have a formal tone like the reputable research articles that you read; cite your sources within the main text of the paper (even for paraphrased content and ideas); and avoid using contractions and words such as “I” and “you” in formal writing; etc. Topics Choose one of the following algorithms areas to write about. Potential algorithm topics related to the algorithm area are included in parenthesis as examples. 1. Hashing Algorithms (e.g. SHA-3; Message Digest-5; Cryptography algorithms such as Advanced Encryption Standard, Blowfish, Elliptic curve cryptography; Digital signature algorithms; Bitcoin Mining) 2. Compression Algorithms (e.g. LZO, Data differencing, Huffman Coding) 3. String Matching (e.g Google’s PageRank algorithm, DNA sequence algorithms, Spell checking algorithms) 4. Memory Management (e.g. Garbage Collection, Buddy Methods, Paging algorithms, Sequential-Fit Methods) 5. Other algorithms areas. If you would like to survey an algorithm area other than one of those listed above, you must contact me for approval prior to proceeding and submitting your paper. Unapproved off topic papers will result in a 25% reduction in your overall score for this assignment. Note: If you have taken this course before, you must choose a different topic for your survey paper than the one you chose previously. 1 Content I highly recommend that you use section headings in your paper. The paper must use uniform margins of 1 in. (2.54 cm) on the top, bottom, left, and right of every page. At a minimum, your paper should include the following sections: Title Page The title page should include the title of the paper and your name and course number. The heading of each page should include the title of the paper on the left corner and the page number on the right corner. If you would like to include an abstract, it must be on a separate page after the title page. All text in the paper except for figure and table captions must be double spaced. 1. Introduction The introduction should provide brief background information on the algorithm. It should also briefly discuss the problem that the algorithm tries to solve and provide a very brief overview on rest of the paper. 2. Origin The origin section should identify the person or organization that initially designed or developed the algorithm. Support your finding on the origin using reference citations from books, journal articles, or conference proceedings. 3. Detailed Description This section should describe the algorithm and provide one or two simple but specific examples that illustrate how the algorithm works. You may include additional sections (or subsections) as necessary. As an example, this section can include the follow type of information: a. b. c. d. e. f. g. 4. Identify the algorithms original intension Identify the algorithms primary purpose Identify the complexity of the algorithm (i.e. its big-O) Provide a brief and simple example showing how the algorithm works. For example, a paper on data compression could discuss the details of the MD5 on LZO implementation. Walk through a couple of simple examples using a small data set to help illustrate exactly how the algorithm works. Diagrams and figures also help to get the point across. If appropriate, provide a brief description mentioning how the algorithm is different from other algorithms that solve the same or similar problem Do not include long source code listings. If you must include source code, only provide small sample snippets or pseudo-code that will help your discussion. Be sure to properly cite your sources. You must support your discussion using reference citations from books and/or journal articles within the main text of the paper. Primary Uses This section can provide the following type of information: a. b. c. d. 5. What were the algorithms first successes? Identify any failures or short comings of the algorithm Give an example of who or what software products are currently using the algorithm Support your findings using reference citations from books and/or journal articles Future Considerations The paper must discuss future considerations for the algorithm. Explain what the literature says about it potential new uses or new areas where the algorithm is being used. For example: 2 a. b. c. 6. Are other new algorithms being made based on this one? Or is the algorithm dead – i.e. not being used anymore for some reason? Support your findings using reference citations from books and/or journal articles. Summary and Conclusion For example: a. Briefly summarize what you have discussed. References The references section must on a separate page. All sources listed in your reference list must be cited within the main text of the paper using the proper APA citation format. The reference list should be single spaced. The second and subsequence lines of the reference must be intended to follow the APA formatting style of writing. Remember that the title of the section for APA must be “References” and not “Work Cited” as used in MLA. a. b. The references section must include a minimum of four (4) scholarly/reputable sources not including your textbook. If you use the textbook as a source, you must include four other sources. References must consist of books, journal articles, conference proceedings, which are the best type of sources. For every three (3) references that you list, no more than one (1) reference can be from a reputable scholarly Web source. A Web source without an author’s name or a date usually indicates that the work is most likely not from a reputable source, and should not be used for this assignment. Do not cite or quote from blogs, Wiki sites, Answers.com, Stackoverflow.com, or other nonreputable/non-scholarly sources. You will not receive credit for those types of sources. Use these sections as a guide for the content and structure for your paper; however feel free to include additional sections that you feel are also be relevant to your topic. A Microsoft Word document template that is pre-formatted in APA format can be downloaded here: https://www.sworps.tennessee.edu/training/APA_6_0/resources/apa_doc_templates.html Grading Heuristics The overall weight of the paper will be 20 points broken down as follows:     [3 points] Grammar and spelling [3 points] Format of paper, APA style, and citations with in the paper [10 points] Depth of coverage and originality [4 points] References (at least 4 reputable sources) Other Notes Note that all research papers will be automatically run through Turnitin.com. No more than 20% of the content in your paper can be exact words or quoted text from various sources. Also, note that exact words from your sources must be cited. All sources where you received your information must be properly cited within the main text: even paraphrased material must be properly cited next to the appropriate sentences or paragraphs. Feel free to post questions in the Ask the Instructor forum. You may also contact me individually by email. You may also discuss this assignment among yourselves in the Student Lunge. Additional Resources APA (2003). Publication Manual of the American Psychological Association. Washington: American Psychological Association. 3 NIST (n.d.). Dictionary of Algorithms and Data Structures. Available online at http://www.nist.gov/dads. Shrunk, W., White, E.B., Angell, R. (1999). The Elements of Style, 4th Edition. New York: Longman Troy University Online Library Services. Available online at http://benning.troy.edu/ library.cfm Bibme is a freely web based tool that will properly format your references in APA style. You can access this site at: http://www.bibme.org/. Remember that all of the references you list in your references section must be properly cited somewhere within the main text of your paper. 4 Survey of the Java Programming Language By Vaughan Lynch CS 2265 November 27, 2005 Lynch 1 Survey of the Java Programming Language What if you could write a program, compile it and run on any platform or operating system? Well, this is exactly what Java is capable of doing. With it, you can practically compile your program once and have it run anywhere. The only thing that each machine needs is the Java Virtual Machine. So long as you have it, you can run the same program on a Windows, Linux, UNIX or Macintosh operating system. This capability makes Java a very unique language. Java has a very interesting origin, overall design, comparison to other languages and a very bright future. Java was developed by a group at Sun Micosystems. According to Herbert Schildt, the group that conceived Java included “James Golsing, Patrick Naughton, Chris Wrath, Ed Frank and Mike Sheridan” (Schildt 2005). One interesting fact is that the original name for Java was Oak. Its original implementation was released in 1992. According to an article on Wikipedia the name Oak had to be dropped because a “trademark search revealed that the name Oak had already been taken by a video adaptor card manufacturer” (Wikipedia n.d.). The name that the group decided to use to replace Oak was Java. No one exactly knows where the name Java came from but of course it is the name that has stuck for this language. In 1995, Java was released for public use for the first time. The original design of the language was for consumer devices such microwaves and not the internet. While Java is being used in many embedded devices such as cell phones and other devices, its use was greatly enhanced by the development and continued development of the World Wide Web. In fact, according to Schildt, “Had the web not taken shape about the same that that Java was being implemented, Java might have remained a useful but Lynch 2 obscure language for programming consumer electronics” (Schildt 2005). As stated above, this was very true in that Java did not begin to see wide use until the World Wide Web developed. Like C++ and other languages, Java is capable of dynamic programming or programs that can change their information. This ability has allowed Java to become a great boon for the web. This is because languages such as HTML, that were and still are used a lot on the web, were only capable of displaying static pages. According to Aaron Walsh, “Static means the web was designed to display information that does not change as you view it.” (Walsh 1998). You can therefore imagine that Java was a great advancement for the web. To know that Java can display dynamic content and it is platform independent is great, but how does it actually work? To start, you need to look at the function of the Java compiler. Instead of making executable machine level code like C++, the Java compiler makes what Sun calls byte code. According to Herbert Schildt, “Byte code is a highly optimized set of instructions designed to be executed by the Java run-time system which is called the Java Virtual Machine (JVM) (Schildt 2005). As stated above, this makes it so that the only thing a client system needs to have is the JVM, which makes the code very portable. Just the unique ability of the of the JVM to translate byte code in to machine code is okay, but unlike C++ which has the use of the operating system’s API (Application Program Interface) such as the Windows API or Mac API, Java has its own. According to David Flanagan, “the Java Platform provides APIs with a comparable breadth and depth to those defined by an operating system” (Flanagan 2005). This also makes a program more portable because the API usually allows a programmer to design a very advanced program. Without the Java API the portability would be extremely limited Lynch 3 except for the most basic of programs. Java has some other great benefits such as security and internationalization. Java was designed with an eye towards making it secure. How is it possible that it can do this? Flanagan showed, “the Java platform allows users to download untrusted code over a network and run it in a secure environment where it can do no harm” (Flanagan 2005). Imagine how advantageous this can be to a programmer. He or she would not have to worry about someone high jacking his or her program to do harm. Also, the end user would not have to worry when they download a Java program. One last interesting feature is the international features of Java. Flanagan again points out “Java uses 16-bit Unicode characters that represent the phonetic alphabet and ideographic character sets of the entire world” (Flanagan 2005). This is different from other languages which usually use characters that represent the English alphabet. While Java has very interesting features, it is not so different from other languages like C++. Java, like C++, Visual Basic and C#, is an object oriented language. A lot of very popular languages have this capability because of the power it gives to the programmer. Another similarity that has Java is uses very similar syntax to C++, but it is not just an update of C++ or C++ for the web. In fact, Herbert Schildt says “to make that comparison could be a large mistake” (Schildt 2005). One big difference between the Java and languages such as C++ is the portability factor. As stated above, Java is very portable. Languages like C++ must be compiled for every processor type such as Power PC or x86. In addition to this, for every complex application, C++ is dependent on OS APIs. So, it will be recoded for every OS, Java does not have this problem since it has its own APIs. Java does have one drawback to language such as C++ or Visual Basic. Lynch 4 Which is because it is portable, it runs a little slower than a program that has been specifically complied for a certain processor. The reason for this is that a program that has been specifically complied for a processor is already in a code that the processor understands, and Java byte code has to be interpreted into machine code by the virtual machine when the code is run. Obviously, this will make Java execute code more slowly. So, if a program needs to run as fast a possible Java may not be the best choice. One interesting thing the Java framework has done is that it has changed, somewhat, how languages are designed. The programming language C# is very similar to Java. This development really shows that Java has changed how programmers and designers look at programming language. The future for Java looks outstanding. The new version of Java, 5.0, has dramatically increased and upgraded features in the language. In fact David Flanagan pointed out the new version of, “Java introduces a number of changes to the core language itself” (Flanagan 2005). In fact, the previous version was known as 1.4 but the version was so different that Sun decided to increase the version number. At first, it looks weird that Sun went to Version 5. Should not the new version be 2.0? Well, the reason Sun did not use this is because they had already marketed Java Version 1.2 as Java 2. So, to decrease confusion, they opted to call the new version 5.0. The outlook for programs using Java looks excellent. More and more devices such as cell phones and other devices use Java. In fact, even NASA has used Java code. According to Aaron Walsh on July 4, 1997, the Mars rover pathfinder “landed on the surface of the red planet that day, was powered in part by Java” (Walsh 1998). It would be easy to imagine that with a cell phone, Java would be the perfect language. This is Lynch 5 because Java is not processor dependent. This would make it easier on a company to use different hardware based on what the phone was needed to do. Also it would make it a cell phone provider’s job simpler to provide after market programs, because as long a phone had java running on it would probably be able to run any Java based program. In addition to embedded devices, the use of Java for desktop programs is increasing. The reason for this is obvious. Java makes the life of a system or network administrator easier with it they would not have to be concerned about an operating system. This would make a business more flexible and would make a migration to any operating system simpler. For instance say a company has a few hundred computers and they need to develop a program to run on all of them. The only problem is that not all of the computers are running the same operating system. They are running Windows, Mac OS X, and Linux. In this case Java would be the best choice for the program because it would be able to run on all three of the systems. Any talk about the future of Java would not be complete without talking about the internet and World Wide Web. Greg Murray pointed out that, “Anyone who has used Flickr, GMail, Google Suggest, or Google Maps will realize that a new breed of dynamic web applications is emerging” (Murray 2005). A lot of these websites are based on a new technology called AJAX (Asynchronous JavaScript Technology and XML), which was invented to allow a webpage to be more dynamic than before. According to Greg Murray websites that use AJAX “look and act very similar to traditional desktop applications without relying on plug-ins or browser-specific features” (Murray 2005). Some people would think that this kind of webpage would be reserved for very high end applications that not may people are using. This is not the case, the Google Map program has really changed the way Lynch 6 online users think of a map site. A good portion of this is due to the AJAX technology that it uses. Also the only really good way to see how this technology has changed the way map programs are looked is to see that companies such as Yahoo are starting to use similar technology. Google’s GMail is staring to have the same effect on web based email programs. The future for this type of technology is really bright. More technology like this will and should be invented. Walsh put it best when he pointed out that “with Java, you are dealing with a fresh technology and facing absolutely unlimited field of dreams” (Walsh 1998). This is very true because Java is being used more and more in web pages. With almost any web page you visit there is bound to be a little Java code on it especially the commercial sites such as Google. As the web becomes more important to daily life, the amount of pages that will need dynamic content will increase dramatically. This will increase the very high demand for programmers that are efficient programming in Java. In fact William Stanek pointed out that, “Companies are paying huge sums to programmers who can demonstrate expertise in Java” (Stanek 2001). Java is a very interesting and unique language. It is hard to believe that this language has only been around for a little over tens years. Compared to languages such as C++ this makes Java a very young language. This shows how far Java has come a long way and still has a long way to go. With it portability, the sky is the limit for what it is capable of doing. While it may never replace languages, like C++, it is definitely a great compliment to any language. Java’s uniqueness will have it around for a long time to come. Lynch 7 References Flanagan, David. (2005). Java in a Nutshell, Fifth Edition. Sebastopol, CA: O’Reilly Media, Inc. Java programming language. (n.d.). Wikipedia. Retrieved November 8, 2005 http://en.wikipedia.org/wiki/Java_programming_language Murray, Greg. (2005, June 9). Asynchronous JavaScript Technology and XML (AJAX) With Java 2 Platform, Enterprise Edition. Sun Microsystems Inc. Retrieved November 10, 2005, from http://java.sun.com/developer/technicalArticles/J2EE/AJAX/index.html?cid=5975 4 Schildt, Herbert. (2005). Java: The Complete Reference, J2SE 5 Edition. Emeryville, CA: McGraw-Hill/Osborne Stanek, William. (2001)Java 2 Certification All-in-One Exam Guide, Third Edition. Berkley, CA: Osborne/McGraw-Hill. Walsh, Aaron. (1998). Java for Dummies, Third Edition. Foster City, CA: IDG Books Worldwide, Inc. THE DYNAMICS OF RECURSION The Dynamics of Recursion Tonsolia L Folson Troy University Dr. Jack Davault August 28, 2005 Folson 2 The Dynamics of Recursion 1. Introduction Recursion was primarily considered to be used for analog calculations; however, it has been later used to obtain analog illustration of classical calculation complexity classes. In the context of this research, the examination will be the dynamics of recursion and the fundamental uses of the varying recursive functions. The ideal purpose is to provide an overall generalized understanding with sufficient function examples as they apply to programming and the algorithmic logic, which demonstrate the recursive objective one is trying to achieve. In demonstrating recursion, it is the intentions of this report to breakdown the varying methods in such a way it makes it easily understandable for debugging recursive subprograms. First, discussing the origin and how it is linked to modern day computing. Second, explain the functions of recursion and its algorithmic logic. Lastly, the report will examine the instances where recursion is not the most efficient method. 2. Origin of Recursion Recursion refers to several related concepts in mathematics and logic, the origins of which date back much further than modern computing. However, “the systematic study of recursion began in the 1920’s when mathematical logic began to treat questions of definability, computability, and decidability” (Ralston, 2000, p. 1507). The formulation of recursive functions and its theories can be directly linked to the works of Alonzo Church, Kurt Gödel, Stephen Kleene, and Alan Turing. During the 1930s, the forenamed mathematicians published papers dealing with the theories of computation and the tasks involved with solving complex problems, which seemed unsolvable. Kurt Gödel delivered a series of lectures on the newly developed mathematical logic called “general recursive function” that he can be attributed. Folson 3 Kurt Gödel took the work of Alan Turing and Alonzo Church and demonstrated it was impossible to capture a portion of the mathematical logic as it relates to the Halting Problem. In turn, he demonstrated the limitations of the axiomatic method. The proof can be read in Gödel’s Incompleteness Theorem. In his paper Gödel stated, “any sufficiently rich axiomatic system contains undecidable but nonetheless true propositions” (Ralston, Reilly, & Hemmendinger, 2000, p. 1813). The widespread acceptances of Gödel’s theory, lead to the idea of “general recursive functions.” Therefore, the emergence of computers and software programming became second nature to use recursive function calculations through high-level languages based exclusively on these published papers. In the 1950s, developing algorithms for solving computer programs became a powerful technique and a significant milestone for the computer science field. 3. Description of Recursion Recursion is a powerful logic algorithm that has provided some rather simple solutions to complex problems. It emerges during our daily lives quite often. Have you ever discussed the origin of the chicken and the egg? On the other hand, have you ever been awaken from a dream only to discover that you were still dreaming? In order to understand recursion you must first understand recursion. A common method of solving a large problem is to break it down into smaller problems that can be solved rather easily. The solutions to the smaller problem are then combined to generate the solution to the original, larger problem. A recursive function consists of two parts: the base case and the general case (Malik, 2004). Here is the basic format of a recursive function: Folson 4 returnType recursiveFunction(argument) { if (Boolean expression) // this is the base case return 1; return recursiveFunction(argument – 1); // the general case } When developing a recursive function, it is essential to define the base case. The base case is the most important piece of recursion. Without it, the recursive function would not stop calling itself until all of the computer resources are consumed, thereby causing the computer to crash. The base case is the case for which the solution is obtained directly. A control structure (usually an “if – else” statement) uses the base case to determine whether the solution has been defined. As the recursive function calls itself, the arguments are used by a control structure to determine if the definition has been reached. It is important to determine the correct return value to pass the recursive function call. If the function is not correctly determined, it may render the base case useless resulting in a system crash. The general case then must eventually be reduced down to the base case. With each function call, the recursive definition breaks down the problem into smaller versions of the original. When the base case is reached, the chain of instances of each recursive function is returned in succession back to the point in the code where the first call was made. As control is passed back, the mini-solutions are combined so that the solution to the original problem is automatically generated and provided back to the function that started the recursive cycle. The function uses a “divide and conquer approach”. The problem is broken down into several sub-problems that are similar to the original. These smaller sub-problems are solved recursively. The solutions of these sub-problems are then combined to create the solution to the original problem (Cormen, Leiserson, Rivest, & Stein, 2001, p. 28). Folson 5 There are varying types of recursion. Direct recursion as explained above, occurs when a function calls itself. Indirect recursion occurs when a function calls another function and eventually results in the original function call. Tail recursion is another type of recursive call. In this type, there is nothing to be done once the recursive calls are returned (Drozdek, 2005). We have seen this type when we use recursion to print a string of characters in reverse order. Once the recursive call is completed, no further calculations need to be made; control is simply passed back to the point in the program that started the recursive calls. “Tail recursion is nothing more than a glorified loop and can be easily replaced by one” (Drozdek, 2005, p. 178). 4. Primary Uses Although recursion is a very powerful tool, it can also be very dangerous if it is not used properly. Recursion is, in some instances, used to simulate the functionality of repetition. In LISP (List Programming), there are no loop constructs, so recursion provides the only means by which these structures can be coded. LISP is very popular with programmers of artificial intelligence, and it is through the power of recursion they are able to efficiently search through trees (or lists) when designing code. The Cisco IOS (Internetworking Operating System) uses recursion in some of its routing protocols to build the routing tables for their internetworking equipment. The PBR (Policy-based Routing) Recursive Next Hop feature enhances route maps to enable configuration of a recursive next hop IP address that is used by PBR. The recursive next hop IP address is installed in the routing table and can be a subnet that is not directly connected. If the recursive next hop IP address is not available, packets are routed using the default route (PBR recursive”, 2005). Folson 6 Network administrators use VLSM (Variable Length Subnet Masking) to recursively divide an organization’s IP address space into hierarchical levels (Kane, 2004). VLSM allows an organization to use more than one subnet mask within the same network. This technique enables more efficient routing of packets by reducing the number of entries in the routing tables of the company’s routers. Nevertheless, if not used correctly, the network administrator could inadvertently create a recursive routing failure in the network – a problem that may not be easy to detect in a large heterogeneous network. In areas of mathematics, a Polish mathematician Benoit Mandlebrot developed a discipline of mathematics called fractal geometry. Fractals, geometrical forms that appear the same on all scales, developed independently of chaos and at first appeared to be unrelated, but after a closer examination they are realized as being closely related (Harris & Stocker, 1998). Fractals are a new and useful tool for expressing Chaos Theory and provide a means for us to explore the geometry of irregular shapes of nature. Snowflakes, galaxy clusters, clouds, and other natural phenomena all share the same fractal properties. In fractal geometry, certain sets of equations are recursively repeated many times, creating fractal images that are plotted on a computer screen, producing incredibly complex images. "Using fractal geometry, Koch’s snowflake is formed from an isosceles triangle by constructing three Koch’s curves. In each recursive step, the perimeter increases by a factor of 4/3, while the area remains finite" (Harris & Stocker, 1998, p. 113). It is with these techniques that computer programmers create the stunning visual images we see in video games. These techniques are also used in HDTV (High Definition Televisions) to display images of crystal clarity. Folson 7 5. Iteration v Recursion So far, we have discussed the power of recursion and its many uses that have had positive impacts on our daily lives. However, this does not mean recursion is always the best option when designing optimal code. There are many uses where recursion is not a desired solution. There are times where an iterative solution is more efficient than a recursive solution. The following recursive function generates a sequence of Fibonacci numbers: long fib(unsigned long n) { if (n
Purchase answer to see full attachment
User generated content is uploaded by users for the purposes of learning and should be used following Studypool's honor code & terms of service.

Explanation & Answer

Attached.

Survey of Compression Algorithms: Huffman Encoding

Survey of Compression Algorithms: Huffman Encoding
Insert name of school
Insert your name
Insert professor name
June 2017

1

Survey of Compression Algorithms: Huffman Encoding

2

Table of Contents
1.

INTRODUCTION ..............................................................................................................................................3

2.

ORIGIN OF COMPRESSION ALGORITHMS’ ............................................................................................4

3.

DETAILED DESCRIPTION .............................................................................................................................5
A VARIABLE-LENGTH ENCODING ...............................................................................................................................7
ENCODING SEEN AS A TREE ........................................................................................................................................9
DECODING USING THE TREE ..................................................................................................................................... 10

4.

PRIMARY USES .............................................................................................................................................. 11

5.

FUTURE CONSIDERATIONS ....................................................................................................................... 11

6.

SUMMARY AND CONCLUSION.................................................................................................................. 15

7.

REFERENCES.................................................................................................................................................. 16

Survey of Compression Algorithms: Huffman Encoding

3

Survey of Compression Algorithms: Huffman Encoding
1. Introduction
In the past decades dating back to 1980s, personal computers had a maximum memory space of
only 10 MB (Grochowski et al.1993). On the other hand, the current generation is utilizing disks
measured in hundreds of gigabytes but still space isn’t sufficient to store the vast amount of data
at hand. The hard drives may get bigger but the data involved is too overwhelming since the
growth in disk space is equally proportionate to the growth in data to be stored, therefore making
the current large sized disk to be deemed insufficient to accommodate every available data. One
of the best methods to utilize our storage optimally is through compressing the data files to a size
that disks can accommodate. This method makes use of the patterns or redundancy which allows
end users to abbreviate the contents of data in a way to occupy less space but still be able to later
on reconstruct a complete version of the original document as and when it is needed.
Compression of data is important especially when users try to cram a lot of data on a
single disk or even when they try to reduce the time taken to make copies of files or
disseminating the same to a third party over a given network (Sayood, K. (2012). There are a
number of compression algorithms which were first developed by Morse code in the year 1838
in formats such as MPEG, JPEG and MP3.this versions were specifically modeled to
accommodate specific types of data files. One algorithm applicable to the current computer
setting is the Huffman encoding algorithm which is an algorithm developed by David A
Huffman while he was a student of MIT. These algorithms make use of available features of of
the available data including the propensity for pixels in images to create a resemblance in colors
to their neighbors’ so as to compress it (Salomon, D. (2004).

Survey of Compression Algorithms: Huffman Encoding

4

2. Origin of Compression Algorithms’
Data compression is made up of the Huffman encoding scheme which is an algorithm that was
developed to take advantage of the existing disparity between frequencies and utilizes less space
for frequently occurring characters at the cost of having to use additional space for each unique
character. (Salomon, D. (2004) Therefore Huffman coding was developed as an example of a
variable length coding with certain characters using 2 or 3 bits and other characters utilizing
additional bits up to 7, 10, or 12 bits. Tools such as Zip, compress, pack, zip it and stuffLt were
generally utilized to compress any other type of files since they had no advance expectations and
used to rely upon specific data file contents in order to obtain required patterns and redundancy
which facilitated the process of data compression.
Certain compression algorithm such as MPEG and JPEG were considered to be lossy
algorithms since the process of further decompressing data that is already decompressed had no
ability to recreate a unique copy of the original version of the data. There, these algorithms used
to compress data via summaries in which the summary used to retain the basic structure while
deleting the less important portions of the data. Data that used to exist inform of videos, sound
and images, the imprecision was allowed on grounds that the huge amount of data would be
maintained and a number of pixels or microseconds of videos delay were assumed to be less of a
big deal. (Salomon, D. (2004) A lossy algorithm would not be a proper choice for text data since
in the process of compressing text, such an algorithm would do away with all the vowels
implying that once the text is compressed it would end up creating a structure like n xmpl f lssy
lgrthm fr cmprssng txt wld b t rmv ll th vwls from original data given.
The above example indicate that original data provided 87 characters which has
subsequently been shrinked to 61 characters implying that it require only 70 of the actual storage.

Survey of Compression Algorithms: Huffman Encoding

5

However, algorithms were also developed with the capability of decompressing data simply by
trying to make a match between consonant patterns to English words with vowels being
introduced even though it was impossible to reconstruct the actual data in with this method.
Therefore with algorithms, computers can help as conclude that, for instance the compressed
word “fr” is an abbreviation of the word four or even fir or even far, implying that an intelligent
reader can easily figure out the context but to a computer that is brainless or rather unprogrammed cannot have the ability to honestly reproduce the actual data. Therefore, in order to
avoid ambiguity in the process of data recreation, users need to apply a lossless algorithm.
3. Detailed Description
The investment funds from not using an entire 8 bits for the most well-known characters
compensates for using more than 8 bits for the uncommon characters and the general impact is
that the record quite often requires less space. This is so in light of the fact that The standard
ASCII character encoding utilizes a similar measure of space (one byte or eight bits, where each
piece is either a 0 or a 1) to store each character. Regular characters don't get any unique
treatment; they require a similar 8 bits that are utilized for considerably rarer characters, for
example, "ü" or '¥'. A record of 1000 characters encoded utilizing the ASCII plan will take 1000
bytes (8000 bits); no more, no less, regardless of whether it be a document of 1000 spaces to a
document containing 4 examples each of 250 distinct characters. A settled length encoding like
ASCII is helpful in light of the fact that the limits between characters are effortlessly decided and
the example utilized for each character is totally settled (i.e. "an" is dependably precisely 97). - 1
- by and by, it is not the case that each of the 256 characters in the ASCII set happen with break
even with recurrence. In an English content record, the reality of the situation might prove that
exclusive 90 or so particular characters are utilized by any stretch of the imagination (which

6

Survey of Compression Algorithms: Huffman Encoding
means 166 characters in the ASCII never at any point show up) and inside those 90 there are
probably going to be critical contrasts in the character numbers.
The illustration will use all through this gift is encoding the specific string "cheerful hip
jump" (don't ask me what it implies, I simply made it up!). Utilizing the standard ASCII
encoding, this 13-character string requires 13*8 = 104 bits add up to. The table underneath
demonstrates the pertinent sub...


Anonymous
Excellent resource! Really helped me get the gist of things.

Studypool
4.7
Trustpilot
4.5
Sitejabber
4.4

Similar Content

Related Tags