ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 1.5 Outline of This Book We are now ready to develop and analyze sophisticated algorithms. For the most part, our organization is by technique rather than by application area. As noted earlier, the purpose of this organization is to establish a repertoire of techniques that can be investigated as possible ways to approach a new problem. [Chapter 2](LiB0014.html#141) discusses a technique called "divide-and-conquer." [Chapter 3](LiB0024.html#252) covers dynamic programming. [Chapter 4](LiB0032.html#359) addresses "the greedy approach." In [Chapter 5](LiB0039.html#471), the backtracking technique is presented. [Chapter 6](LiB0047.html#565) discusses a technique related to backtracking called "branch-and-bound." In [Chapters 7](LiB0052.html#627) and [8](LiB0067.html#759), we switch from developing and analyzing algorithms to analyzing problems themselves. Such an analysis, which is called a computational complexity analysis, involves determining a lower bound for the time complexities of all algorithms for a given problem. [Chapter 7](LiB0052.html#627) analyzes the Sorting Problem, and [Chapter 8](LiB0067.html#759) analyzes the Searching Problem. [Chapter 9](LiB0074.html#880) is devoted to a special class of problems. That class contains problems for which no one has ever developed an algorithm whose time complexity is better than exponential in the worst case. Yet no one has ever proven that such an algorithm is not possible. It turns out that there are thousands of such problems and that they are all closely related. The study of these problems has become a relatively new and exciting area of computer science. In [Chapter 10](LiB0080.html#989) we revert back to developing algorithms. However, unlike the methods presented in [Chapters 2](LiB0014.html#141)-[6](LiB0047.html#565), we discuss algorithms for solving a certain type of problem. That is, we discuss number-theoretic algorithms, which are algorithms that solve problems involving the integers. All of the algorithms discussed in the first nine chapters are developed for a computer containing a single processor that executes a single sequence of instructions. Owing to the drastic reduction in the price of computer hardware, there has been a recent increase in the development of parallel computers. Such computers have more than one processor, and all the processors can execute instructions simultaneously (in parallel). Algorithms written for such computers are called "parallel algorithms." [Chapter 11](LiB0089.html#1224) is an introduction to such algorithms.