Selecting the Right Algorithm
Michail G. Lagoudakis, Michael L. Littman, Ronald Parr · 2001
Computer scientists always strive to find better and faster algorithms for any computational problem. It is usually true that programmers and/or users come across a plethora of dif-ferent algorithms when looking to solve a particular problem efficiently. Each one of these algorithms might offer differ-ent guarantees and properties, but it is unlikely that a sin-gle one of them is the best (fastest) in all possible cases. So, the question that the programmer/user typically faces is: "Which algorithm should I select?" This question is largely due to the uncertainty in the input space, the inner workings of the algorithm (especially true for randomized algorithms), and the hardware characteris-tics. It’s hard to know in advance what kind of inputs will be provided, how exactly the computation will proceed, or even how efficiently the underlying hardware will support