1.Introduction and Historical Review 5 Figure 1.2 Baking a cake. ingredients (software) (hardware) oven recipe utensils baker cake Recipes,as just mentioned,are called algorithms here,while the area of human study,knowledge,and expertise that concerns algorithms will be termed algorith- mics in this book.The analogy drawn here has been made as exact as possible:the recipe,which is in a sense an abstract entity,is the algorithm;the formal written ver- sion of the recipe,such as the one found in a cookbook,is analogous to a computer program.Software actually refers more to programs-precise representations of algorithms written in special computer-readable languages-than to the algorithms themselves.However,until we discuss programming languages in Chapter 3,this distinction is quite immaterial. We confront algorithms wherever we go.Many everyday processes are governed by algorithms:changing a flat tire,constructing a do-it-yourself cabinet,knitting a sweater,dividing numbers,looking up a telephone number,updating a list of expenses,or filling out an income tax form.Some of these(division,for example) might be more immediately related in our minds to computers,than others (cabinet construction,for example),but this is of less concern to us here.Although computers are fundamental to the topic of this book,we shall not concentrate on their physical aspects at all,except implicitly in parts of Chapters 3 and 9.It is with their spirit that we are concerned;with the recipes that make them tick-with their algorithms. Algorithmics vs.Computer Science Algorithmics is more than a branch of computer science.It is the core of computer science,and,in all fairness,can be said to be relevant to most of science,business, and technology.The very nature of algorithmics renders it particularly applicable to those disciplines that benefit from the use of computers,and these are fast becoming an overwhelming majority.P1: GIG PE002-01drv PE002-Harel PE002-Harel-v4.cls February 25, 2004 14:38 1. Introduction and Historical Review 5 recipe oven utensils baker (software) (hardware) ingredients cake Figure 1.2 Baking a cake. Recipes, as just mentioned, are called algorithms here, while the area of human study, knowledge, and expertise that concerns algorithms will be termed algorithmics in this book. The analogy drawn here has been made as exact as possible: the recipe, which is in a sense an abstract entity, is the algorithm; the formal written version of the recipe, such as the one found in a cookbook, is analogous to a computer program. Software actually refers more to programs—precise representations of algorithms written in special computer-readable languages—than to the algorithms themselves. However, until we discuss programming languages in Chapter 3, this distinction is quite immaterial. We confront algorithms wherever we go. Many everyday processes are governed by algorithms: changing a flat tire, constructing a do-it-yourself cabinet, knitting a sweater, dividing numbers, looking up a telephone number, updating a list of expenses, or filling out an income tax form. Some of these (division, for example) might be more immediately related in our minds to computers, than others (cabinet construction, for example), but this is of less concern to us here. Although computers are fundamental to the topic of this book, we shall not concentrate on their physical aspects at all, except implicitly in parts of Chapters 3 and 9. It is with their spirit that we are concerned; with the recipes that make them tick—with their algorithms. ■ Algorithmics vs. Computer Science Algorithmics is more than a branch of computer science. It is the core of computer science, and, in all fairness, can be said to be relevant to most of science, business, and technology. The very nature of algorithmics renders it particularly applicable to those disciplines that benefit from the use of computers, and these are fast becoming an overwhelming majority