Wednesday 9 October 2013

ROLE OF ALGORITHMS IN REAL WORLD APPLICATIONS

      
                  People who analyze algorithms have double happiness. First of all they experience the sheer beauty of elegant mathematical patterns that surround elegant computational procedures. Then they receive a practical payoff when their theories make it possible to get other jobs done more quickly and more economically.      D. E. Knuth

Algorithms are procedures that take in some input and produce some output. The reason why algorithms should be studied is because it does not rely specifically on technology. Algorithms do not require you to know java or c++ or whatever technology comes out tomorrow. It requires that you have an understanding of the concept of the steps that are involved to solve a problem for a given set of programming languages with common features.
In the past, there were no such things as having multiple processors in the early days. When the newer technology arrived, computer scientists, through the study of algorithms, were able to develop newer ways of solving problems...there are a lot of different programming languages that offer multi-core programming and it doesn't matter as much which language you use...you can get the same rate of growth of performance/memory as the ones developed bycomputerscientists. 
        The topic of algorithms is important in computer science because it allows for analysis on different ways to compute things and ultimately come up with the best way to solve a particular problem. By best I mean one that consumes the least amount of resources or has the fastest running time.
Analysis of Algorithms.
 A complete analysis of the running time of an algorithm involves the following steps:
  • Implement the algorithm completely.
  • Determine the time required for each basic operation.
  • Identify unknown quantities that can be used to describe the frequency of execution of the basic operations.
  • Develop a realistic model for the input to the program.
  • Analyze the unknown quantities, assuming the modelled input.
  • Calculate the total running time by multiplying the time by the frequency for each operation, then adding all the products.
     Why Algorithms are Necessary?
·         Most problems are complex hard to see entire solution from outset All components & their interactions
·         Can’t sit down and code the problem immediately
·         Abstract out the unnecessary details
·         Refine and sub-divide the problem (Manageability)
·         Programming Language Independence
·          Algorithms encourage fore-planning
·         Early emphasis on real challenges(Resource Efficient)

EXAMPLES
                  
Ø  SEARCHING A COLLECTION OF DATA
Consider the problem of finding a phone number in a phone book. The phonebook problem is one example of a common task: searching for an item in a collection of data.

Sequential Search

·         Look at every page of the phone book from left to right until number is found.
·         If there were 1000 pages in the phone book, how many pages would we look at in the worst case scenario?

Binary Search

·         Divide the book in half
·         If the number is in first half, toss out the second half
·         Else if number is in second half, toss out the first half
·         Repeat above steps until number is found

ROBOTICS
http://media.brainz.org/uploads/2009/02/3-robotics.jpg
Robotics involves human designers and engineers trying out all sorts of things in order to create useful machines that can do work for humans. Each robot's design is dependent on the job or jobs it is intended to do, so there are many different designs out there. GAs can be programmed to search for a range of optimal designs and components for each specific use, or to return results for entirely new types of robots that can perform multiple tasks and have more general application. GA-designed robotics just might get us that nifty multi-purpose, learning robots we've been expecting any year now since we watched the Jet sons as kids, who will cook our meals, do our laundry and even clean the bathroom for us!
Evolvable Hardware
http://media.brainz.org/uploads/2009/02/4-hardware.gif
Evolvable hardware applications are electronic circuits created by GA computer models that use stochastic (statistically random) operators to evolve new configurations from old ones. As the algorithm does its thing in the running model, eventually a circuit configuration will come along that does what the designer wants. Think of reconfigurable circuits in something like a space robot. It could use a built-in GA library and simulator to re-design itself after something like radiation exposure that messes up its normal configuration, or encounters a novel situation in which it needs a function it doesn't already have. Such GAs would enable self-adaptation and self-repair.
Ø  GENE EXPRESSION PROFILING
http://media.brainz.org/uploads/2009/02/12-microarray.jpg

The development of microarray technology for taking 'snapshots' of the genes being expressed in a cell or group of cells has been a boon to medical research. Gas  have been and are being developed to make analysis of gene expression profiles much quicker and easier. This helps to classify what genes play a part in various diseases, and further can help to identify genetic causes for the development of diseases. Being able to do this work quickly and efficiently will allow researchers to focus on individual patients' unique genetic and gene expression profiles, enabling the hoped-for "personalized medicine" we've been hearing about for several years.

No comments:

Post a Comment