Академический Документы
Профессиональный Документы
Культура Документы
Introduction
The word Algorithm is attributed to the great 9th century Iranian
mathematician and astronomer Khowrezmi * . Algorithm is a sequence of
clear instructions for solving a problem, i.e. for obtaining a required output
for any legitimate input in a finite amount of time. Note that:
The range of inputs for which an algorithm works must be specified.
The same algorithm can be represented in several different ways.
The same algorithm, with possibly small modification, maybe able to
solve several different problems.
Several algorithms may exist for solving the same problem.
Algorithms for the same problem can be based on very different ideas
and can solve the problem with very different speeds and efficiency.
Musa Khowrazmi (also known as Al-Khowrezmi) was born in the province of Khorasan,
northwest of Iran, and lived about 780-850 A.D. He became the chief mathematician in the
"House of Wisdom", the academy of sciences of the time. The word "algebra" comes from
the title of his book "Kitab al muhtasar fi hisab algabr w'al muqubalah". This title has been
translated as "A compact book on calculation using rules of completion and reduction." When
Al-Khorezmi's book on the new science (algebra) reached Europe, the Europeans called its
use "algorism" or "algorithm," a corruption of the author's name. For more information see a
long and charming article about Khorezmi, his work and his times, by Heinz Zemanek of
Vienna, Austria. In September 1979, in what was the 1200th anniversary of Al-Khorezmi's
birth, mathematicians marked the occasion by convening at the site of the Khorazem oasis a
conference "Algorithms in Modern Mathematics and Computer Science." Dr. Zemanek's
article opens the bound proceedings of that conference, edited by A.P. Ershov and D.E.
Knuth and published in 1981 by Springer Verlag as volume 122 of "Lecture Notes in
Computer Science."
Unfortunately during the recent invasion and occupation of Iraq, and the pillage of Baghdads
museums and libraries, almost all the art and science treasures including mathematical
manuscripts were looted under the watchful eyes of the occupation forces. See the lead
article in the Newsletter of the British Society for History of Mathematics (BSHM
Newsletter, vol. 49, Autumn 2003, pp.1-9) by Dr. Eleanor Robson where the author attempts
to assess the damage to Iraqs mathematical and cultural heritage based on the expert
assessments and eyewitness reports.
Amount of Space:
The number of bytes of memory needed for the program is the amount of
space.
Some programs require making copies of data during execution, and thus
need more space.
In modern computers space is not a critical factor for most programs.
Simplicity:
A simple and straight forward algorithm is not usually the most efficient
one.
It is desirable to have a simple algorithm, but efficiency is usually the
deciding factor.
Optimality:
A program is optimal for a given problem if there is no other algorithm
that performs fewer basic operations.
Each problem has an inherent least complexity, i.e. it needs some
minimum amount of work to solve it.
methods are those that require (n lg n ) in the worst case and for any set of
inputs. However, there is no sorting method that best fits all situations.
Note: This course assumes that you are already well familiar with sorting
algorithms and their analysis, using asymptotic notations, , , , and
that you have some familiarity with recurrence relations.
Searching: Finding a key in a given set. Simple sequential search to
efficient binary search and interpolation search. Some are fast but are
applicable only to sorted arrays, others may require more memory. Some
are suitable for static dictionary search, i.e. items are fixed. Others, such as
balanced search trees, are applicable to the dynamic dictionary search where
insertion, deletion and search are supported.
Note: This course assumes that you have covered in other courses the main
searching methods including binary search, binary search trees, and
balanced search trees.
String Processing: The rapid increase in applications such as internet
search engines and bioinformatics, dealing with non-numerical data has
brought about interest in string handling algorithms. One particular
problem, that of searching for a given word in a text, has attracted
considerable attention. It is called string matching and several algorithms
exist for this problem.
Graph Problems: One of the oldest and most useful area in algorithms is
graphs. Graphs can be used for modeling a wide variety of real-life
applications, including transportation, communication networks, project
scheduling, and games. Basic graphs algorithms include graph traversal,
shortest path, topological sorting, minimal spanning tree, connectivity and
strong connectivity, etc.
Some graph algorithms are computationally very hard, and that only very
small instances of such problems can be solved in reasonable amount of time
even on fastest computers.
Note: This course assumes that you know the basic graph algorithms listed
above. A review of the basic graph problems can be found in Chapter -1