limits to computation this book describes many data structures that can be used in wide variety of problems there are also many examples of efficient algorithms in generalour search algorithms strive to be at worst in (log nto find recordwhile our sorting algorithms strive to be in ( log na few algorithms have higher asymptotic complexitysuch as floyd' all-pairs shortest-paths algorithmwhose running time is th( we can solve many problems efficiently because we have available (and choose to useefficient algorithms given any problem for which you know some algorithmit is always possible to write an inefficient algorithm to "solvethe problem for exampleconsider sorting algorithm that tests every possible permutation of its input until it finds the correct permutation that provides sorted list the running time for this algorithm would be unacceptably highbecause it is proportional to the number of permutations which is nfor inputs when solving the minimumcost spanning tree problemif we were to test every possible subset of edges to see which forms the shortest minimum spanning treethe amount of work would be proportional to |efor graph with |eedges fortunatelyfor both of these problems we have more clever algorithms that allow us to find answers (relativelyquickly without explicitly testing every possible solution unfortunatelythere are many computing problems for which the best possible algorithm takes long time to run simple example is the towers of hanoi problemwhich requires moves to "solvea tower with disks it is not possible for any computer program that solves the towers of hanoi problem to run in less than ohm( timebecause that many moves must be printed out besides those problems whose solutions must take long time to runthere are also many problems for which we simply do not know if there are efficient algorithms or not the best algorithms that we know for such problems are very