Home   Learning Computing History

Algorithms and Complexity
 

Up

 

 

 

 

 

 

A Brief History of Algorithms and Complexity

Algorithms: a step by step procedure or instruction for solving a problem by a computer. Complexity: the resources required by the algorithms, most commonly known as the time -- how many steps it needs and the space -- how much memory it takes.  Algorithms and Complexity comprises the study of computational models, its inherent power or limitations, and the precise description of the problems to be solved. 

Data structures, graph theory and graph-theoretic algorithms, sorting and searching, shortest path and such are the building-block problems, the basic analysis are upper and average complexity bounds, or the best, average, and worst case behavior.  There are also well kwon algorithmic strategies, like Brute-Force algorithms, Greedy algorithms, Divide-and-Conquer, Backtracking, Branch-and-bound, Heuristics, numerical approximation algorithms and matrix algorithms. 

The ability for computing is simply how good the algorithm chosen and how well its implementation is. In fact, the whole computer science could be considered the study of algorithms’ formal properties, their hardware and software realizations and diverse applications.  

The Brief History of Algorithms and Complexity:

Early Algorithms, Analysis, and computability

  • C. 350 B.C.E. Euclid author of the most successful mathematics book -- “Elements” and proposed his GCD (Greatest Common Divisor) algorithm
  • C. 780-C. 850 Abu Ja’far Mohammed ibn Musa al-Khwarizmi composed the oldest works on arithmetic and algebra, the very name “algorism” derived from his surname.
  • 1845 Lamé’s theorem: Euclid’s algorithm takes at most (4.8 log(N)/log(10) - 0.32) steps.
  • 1874 Cantor developed diagonalization, and showed that in a certain sense 'almost all' numbers are transcendental
  • 1900 Hilbert’s 10th problem -- Is there a finite process which determines if a polynomial equation is solvable in integers?
  • 1910 H.C. Pocklington: describes the complexity of an algorithm as polynomial on the number of bits.
  • 1920 Emil L. Post first proved completeness of the classical propositional logic.

 

1930s started the mathematical notion of algorithms, such as recursive functions, Turing-machines, Church, Turing, post algorithmic and logical un-decidability

  • 1930 Alonzo Church introduced lambda-calculus and in six year late, solved the famous decision problem – Entscheidung’s problem
  • 1931 Kurt Gödel published “Gödel Incompleteness Theorems” and implies that a computer can never be programmed to answer all mathematical questions.
  • 1936 Alan Turing presented the “Turing Machine”, a general model of a computing machine.
  • 1947 George Dantzig  introduced simplex method

 

1950-60s focus was on the large scale optimization, the significance of running time for computers, the birth of computation complexity.

  • 1950 Yablonski  worked on the impossibility of eliminating issue of brute-force-search
  • Early 1960s, Yamada, Myhill and Smullyan all looked at time and space bounded machines
  • 1964 Cobham noted the independence of polynomial-time in deterministic machine models
  • 1965 Edmonds established the time complexity of a problem is polynomial or exponential,  or polynomial vs. exponential algorithms
  • 1965 Juris Hartmanis and Richard Stearns established the foundations of computational complexity theory and theoretical computer science as a whole.

 

1960-80s, the growth of complexity theory, included time, space information complexity, Non-determinism, completeness, polynomial hierarchy, classification of P vs. NP-complete, Parallelism and Randomization.

  • 1950s-1970s P=NP? question had drawn much of the attentions
    • P the set of decision problems that can be solved by a deterministic machine in polynomial time
    • NP the set of decision problems that can be solved by a non-deterministic machine in polynomial time.
  • 1971 Stephen Cook’s Theorem showed that any NP problem can be converted in polynomial time to the specific problem SAT.
  • 1971 Richard Karp proved eight central combinatorial problems are all NP-complete. Karp reductions--many to one reduction.
  • 1972 Meyer and Stockmeyer defined the polynomial-time hierarchy
  • 1972 Borodin and Trakhtenbrot (1964) independently proved the gap theorem
  • 1973 Levin Search one of the few speed up algorithms for universal sequential search problems
  • 1975 Baker, Gill, Solovay all worked on relativization: there exists oracles A and B such that PA = NPA and PB¹ NPB
  • 1975 Ladner claimed that every language in P has a polynomial size circuits
  • 1979 Khachyan showed that the ellipsoid method is a polynomial-time algorithm.
  • 1980 Savitch’s Theorem showed how to convert the nondeterministic polynomial
    space algorithm into a deterministic polynomial space algorithm
  • 1982 Richard Feynman suggested the possibility that computers built on quantum mechanics
  • 1984 Narendra Karmakar interior point algorithms
  • 1985 David Deutch developed a theoretical computation model  based on quantum mechanics
  • 1986 Hastad introduced “Switching lemma” and  bounds for parity

 

1990s upper and lower bounds on complexity with the increasing sophistication, the rise of new models, like quantum computers and propositional proof system.

  • Max Cut Problem: Given an undirected graph with edge weights, the MAX-CUT problem consists in finding a partition of the nodes into two subsets, such that the sum of the weights of the edges having endpoints in different subsets is maximized.” -- Randomized heuristics for the max-cut problem, P. Festa et al.
  • Quantum Computer: “ a machine that performs calculations based on the laws of quantum mechanics, which is the behavior of particles at the sub-atomic level” – Joseph Stelmach
  • 1994 Peter Shor came up with a quantum algorithm for factoring integers in polynomial time.
  • 1995 Peter Blum’s abstract complexity measure discussed union, speed-up and gap theorems, holds not only for time but also space.
  • 1997 Lov Grover  introduced a quantum search algorithm with O(√N) complexity
  • 1997 Bernstein and Vazirani  gave formal definition of the class BQP

 

 

Summary:  Algorithms and computation complexity had evolved forty good years, will someone show that P = NP? Or will an unexpected connection be there somewhere? Will you are the next one that surprises everybody?  Be ready!

 
Last modified: 2004 December 5