
The Best Algorithms of the 20th Century [pdf] - sirchristian
http://www.uta.edu/faculty/rcli/TopTen/topten.pdf
======
pmcjones
For more on #5 (original Fortran optimizing compiler), including the source
code, see <http://www.softwarepreservation.org/projects/FORTRAN/> .

For more on #7 (Quicksort), I especially recommend Hoare's paper in the
Computer Journal, which explains many details about the algorithm that are
unfortunately not widely known (such as the correct way to partition for
Quicksort): <http://comjnl.oxfordjournals.org/content/5/1/10.abstract> (the
full text is freely downloadable).

------
eternalban
Khawrazmi was a Persian Muslim. I stopped reading right there.

~~~
brianobush
What does religion have to do with algorithms?!

~~~
tzs
Suppose the article was about the greatest boxers of the 20th century, and it
talked about the Arab boxer Muhammad Ali. Would you object to someone pointing
out that Ali was not Arab, but rather an American Muslim? His being Muslim is
relevant not because it is his religion, but because it explains why an
American of his era has such a foreign name--he changed his name when he
converted to Islam.

Same thing is going on here. The article says al-Khwarizmi was an Arab. He was
actually a Persian who followed the Arab religion (Islam), which probably
explains the Arab-appearing aspects of his life and work.

Does it matter if he was Arab or Persian? Some might argue that all that
matters is what he discovered. The counter argument is that by mentioning
things like nationality, ethnicity, religion, etc., in these kind of articles,
it helps reinforce the idea that science transcends national borders, ethnic
boundaries, religion, and so on. I believe I read something by Asimov once
where he said that was the reason he always included the nationality of
scientists he wrote about.

~~~
da_n
So is it somewhat equivalent to saying someone is protestant when they are
catholic, and being outraged at such a mix-up? I still don't quite understand
why it has emoted such apparent disgust as to stop reading, but then I am not
a religious person.

~~~
lmm
It's not about religion. Equivalent would be something like saying an
important Mexican scholar was Canadian.

------
qoo
FFT FTW!

------
ten_fingers
Hmm, let's see: One of the algorithms is the fast Fourier transform (FFT). It
is sometimes described as a form of matrix factorization and multiplication.

Another algorithm is Dantzig's simplex algorithm for linear programming: It is
basically just elementary row operations much as in Gauss elimination on a,
usually, vastly 'under determined' system of linear equations. The math for
the simplex algorithm is mostly nicely presented via matrix theory.

A third algorithm in the list is the QR algorithm for finding eigenvalues.

So, of the 10 algorithms, at least three are closely related to just matrix
theory. Amazing.

Then, for computer science I would add an observation: A few days ago a
venture firm principal asked me about my project, "So you have an algorithm?".
I had to respond, "Well, yes, but by itself an algorithm doesn't have much to
recommend it and, thus, doesn't mean much.".

Well, this list of 10 algorithms supports my observation: For a problem as
complicated as those solved by the 10 algorithms in the list, an algorithm by
itself doesn't mean much, really doesn't mean anything. Instead, to take any
such algorithm seriously, we need something we can take seriously and
logically prior to the algorithm.

Well, as in the 10 algorithms, what is prior is just some applied math,
typically with theorems and proofs. Then due to the theorems and proofs, we
take the applied math seriously. Then we take the algorithm seriously because
and only because it is a careful implementation of the data manipulations in
the applied math. So, net, what is really crucial for such an algorithm is the
logically prior applied math.

Of course, at times we can proceed without any prior applied math and work
just with an algorithm that we got, say, from just heuristics. Then we may be
able to take the algorithms seriously after a lot of empirical testing.

So, here's my point: For reasonably complicated problems, the key is some
applied math, and we take a corresponding algorithm seriously only because of
the logically prior applied math.

Or, computer science: The most important work with algorithms is work with
logically prior applied math complete with theorems and proofs. Work with
algorithms without such prior applied math is close to hopeless.

Venture firms and limited partners: If an entrepreneur has some crucial, core
'secret sauce' in running code that can be called an 'algorithm', what is
crucial (prior to already having a financially successful company based on
that code) is the corresponding applied math, not the 'algorithm' and not just
the code.

Information technology entrepreneurs: If your business is trying to solve a
serious problem with an algorithms and some corresponding code, then don't
start with the algorithm and, instead, start with some applied math.

Computer science students: If you want to do good work with algorithms, study
appropriate topics in a math department, not 'algorithms' in a computer
science department.

Computer science professors: Algorithms are crucial to your field, but your
approach to algorithms skipping prior applied math complete with theorems and
proofs is bankrupt, with no good reason to take any such algorithm seriously,
and will lead to a long walk on a short pier and blocked progress for your
field. What's just crucial for your interest in algorithms is in the math
department and not in your department. Sorry 'bout that!

~~~
psykotic
It's an article from SIAM. Of course it's heavily biased towards applied
mathematics. It's not only biased against computer science, it's biased
against pure mathematics. Do you doubt that Buchberger's algorithm will
reverberate down through the millenia? Even within applied mathematics, the
list leaves out multigrid methods, the only linear-time algorithms in their
class, which seem a shoe-in given their criteria for inclusion.

It would hardly be difficult to make a very long list of pure CS algorithms
and data structures that could stand head to head against the likes of the
multipole method in both industrial application and scientific value.

Your knowledge of computer science is evidently shallow. Educate yourself and
you might think twice before making such ignorant pronouncements.

~~~
dvse
I wonder what proportion of "pure" CS algorithms can be conceptualized as an
application of one of the fixed point theorems and/or properties of monotone
operators. There has got to be _something_ useful about the functional
analysis perspective and people doing serious work in algorithms are certainly
familiar with it as a group.

~~~
psykotic
> I wonder what proportion of "pure" CS algorithms can be conceptualized as an
> application of one of the fixed point theorems and/or properties of monotone
> operators.

You might enjoy [http://www.amazon.com/Graphs-Dioids-Semirings-Algorithms-
Ope...](http://www.amazon.com/Graphs-Dioids-Semirings-Algorithms-
Operations/dp/0387754490). It has some cool ideas, but you'll first have to
wade through a sea of abstract nonsense a la Bourbaki.

