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.
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
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
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
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