Movatterモバイル変換


[0]ホーム

URL:


Wayback Machine
102 captures
14 Aug 2004 - 03 Sep 2025
MarAPRMay
28
201420152016
success
fail
COLLECTED BY
Organization:Alexa Crawls
Starting in 1996,Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to theWayback Machine after an embargo period.
Collection:Alexa Crawls
Starting in 1996,Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to theWayback Machine after an embargo period.
TIMESTAMPS
loading
The Wayback Machine - https://web.archive.org/web/20150428201622/http://ww3.algorithmdesign.net:80/ch00-front.html



Algorithm Design

Foundations, Analysis, and Internet Examples












Wiley College

| | | | |

Copyright ©2002, byJohn Wiley & Sons, Inc..All rights reserved.

 
Preface


This book is designed to provide a comprehensive introduction to the design and analysis of computeralgorithms and data structures.In terms of the computer science and computer engineeringcurricula, we have written this book to be primarily focused on theJunior-Senior level Algorithms (CS7) course, which is taughtas a first-year graduate course in some schools.

Topics

The topics covered in this book are taken from a broad spectrum of discrete algorithm designand analysis, including the following:

About the Authors

Professors Goodrich and Tamassia are well-recognized researchers indata structures and algorithms, having published many papers in thisfield, with applications to Internet computing, informationvisualization, geographic information systems, and computer security.They have an extensive record of researchcollaboration and have served as principal investigatorsin several joint projects sponsored by the National Science Foundation,the Army Research Office, and the Defense Advanced Research Projects Agency. They are also active in educational technologyresearch, with special emphasis on algorithm visualization systemsand infrastructure support for distance learning.

Michael Goodrich received his Ph.D. in Computer Science from PurdueUniversity in 1987. He is currently a professor in the Department ofInformation and Computer Science at University of California, Irvine.Prior to this service we was Professor ofComputer Science at Johns Hopkins University, and director of theHopkins Center for Algorithm Engineering. He is an editor fortheInternational Journal of Computational Geometry & Applications,Journal of Computational and System Sciences, andJournal of Graph Algorithms and Applications.

Roberto Tamassia received his Ph.D. in Electrical and ComputerEngineering from the University of Illinois at Urbana-Champaignin 1988. He is currently a professor in the Department of ComputerScience and the director of the Center for Geometric Computing atBrown University. He is an editor forComputational Geometry: Theory and Applications and theJournal of Graph Algorithms and Applications, and he has previously served on the editorialboard of IEEETransactions on Computers.

In addition to their research accomplishments, the authors also haveextensive experience in the classroom. For example, Dr. Goodrich hastaught data structures and algorithms courses since 1987, including Data Structures asa freshman-sophomore level course and Introduction to Algorithms as aupper level course. He has earned several teaching awards inthis capacity. His teaching style is to involve the students inlively interactive classroom sessions that bring out the intuitionand insights behind data structuring and algorithmic techniques, aswell as in formulating solutions whose analysis is mathematicallyrigorous.Dr. Tamassia has taught Data Structures and Algorithms as anintroductory freshman-level course since 1988.He has also attracted many students (including severalundergraduates) to his advanced course on Computational Geometry,which is a popular graduate-level CS course at Brown. One thing thathas set his teaching style apart is his effective use of interactivehypermedia presentations, continuing the tradition of Brown's``electronic classroom.'' The carefully designed Web pages of thecourses taught by Dr. Tamassia have been used as reference materialby students and professionals worldwide.

For the Instructor

This book is intended primarily as a textbook for aJunior-Senior Algorithms (CS7) course, which is also taught as afirst-year graduate course in some schools.This book contains many exercises, which are divided betweenreinforcement exercises, creativity exercises, and implementation projects.Certain aspects ofthis book were specifically designed with the instructor in mind, including:

This book is also structured to allow the instructor a great deal of freedomin how to organize and present the material. Likewise, the dependence between chapters is rather flexible, allowing the instructor to customize an algorithms course to highlight the topicsthat he or she feels are most important.We have extensively discussedInternet Algorithmics topics, which should prove quite interesting to students.In addition, we have included examples of Internet applicationof traditional algorithms topics in several places as well.

We show in the table below how this book could be used for a traditionalIntroduction to Algorithms (CS7) course, albeit with some new topics motivated from the Internet.


 
Table:Example syllabus schedule for a traditional Introduction to Algorithms (CS7) course, including optional choices for each chapter.
Ch.TopicsOption
1Algorithm analysisExperimental analysis
2Data structuresHeap Java example
3SearchingInclude one balanced search tree
4SortingIn-place quick-sort
5Algorithmic techniquesThe FFT
6Graph algorithmsDFS Java example
7Weighted graphsDijkstra Java example
8Matching and flowInclude at end of course
9Text processing (at least one section)Tries
12Computational geometryInclude at end of course
13NP-completenessBacktracking
14Frameworks (at least one)Include at end of course

This book can also be used for a specialized Internet Algorithmics course,which reviews some traditional algorithms topics, but in a newInternet-motivated light, while also covering new algorithmic topics that arederived from Internet applications.We show in the table below how this book could be used for a such a course.


 
Table:Example syllabus schedule for an Internet Algorithmics course, including optional choices for each chapter.
Ch.TopicsOption
1Algorithm analysisExperimental analysis
2Data structures (incl. hashing)Quickly review
3Searching (incl. skip lists)Search tree Java example
4SortingIn-place quick-sort
5Algorithmic techniquesThe FFT
6Graph algorithmsDFS Java example
7Weighted graphsSkip one MST alg.
8Matching and flowMatching algorithms
9Text processingPattern matching
10Security & CryptographyJava examples
11Network algorithmsMulti-casting
13NP-completenessInclude at end of course
14Frameworks (at least two)Include at end of course

Of course, other options are also possible, including a course that isa mixture of a traditional Introduction to Algorithms (CS7) course and anInternet Algorithmics course. We do not belabor this point, however,leaving such creative arrangements to the interested instructor.

Web Added-Value Education

This book comes accompanied by an extensive Web site:

http://www.wiley.com/college/goodrich/
This Web site includes an extensive collection of educational aidsthat augment the topics of this book. Specifically for students weinclude:We feel that the hint server should be of particular interest,particularly for creativity problems that can be quite challenging forsome students.

For instructors using this book, there is a dedicated portion of theWeb site just for them, which includes the following additionalteaching aids:

Readers interested in the implementation of algorithms and datastructures can downloadJDSL theData Structures Library in Java, from

http://www.jdsl.org/

Prerequisites

We have written this book assuming that the reader comes to it withcertain knowledge. In particular, we assume that the reader has abasic understanding of elementary data structures, such as arrays andlinked lists, and is at least vaguely familiar witha high-level programming language, such as C, C++, or Java.Even so, all algorithms are described in a high-level ``pseudo-code,'' andspecific programming language constructs are only used in the optional Javaimplementation examplesections.

In terms of mathematical background, we assume the reader is familiar withtopics from first-year college mathematics, includingexponents, logarithms, summations, limits, and elementary probability. Even so, we reviewmost of these facts in Chapter 1,including exponents, logarithms, and summations, and we give a summaryof other useful mathematical facts, including elementary probability,in Appendix A.


Acknowledgments

There are a number of individuals who have helped us with the contentsof this book. Specifically, we thankJeff Achter, Ryan Baker,Devin Borland,Ulrik Brandes,Stina Bridgeman,Robert Cohen,David Emory,David Ginat,Natasha Gelfand,Mark Handy,Benoît Hudson,Jeremy Mullendore,Daniel Polivy,John Schultz,Andrew Schwerin,Michael Shin,Galina Shubina,and Luca Vismara.

We are grateful to all our former teaching assistants who helped us indeveloping exercises, programming assignments, and algorithm animationsystems. There have been a number of friends and colleagues whosecomments have lead to improvements in the text. We are particularlythankful to Karen Goodrich, Art Moorshead, and Scott Smith for theirinsightful comments. We are also truly indebted to the anonymousoutside reviewers for their detailed comments and constructivecriticism, which were extremely useful.

We are grateful to our editors, Paul Crockett and Bill Zobrist, fortheir enthusiastic support of this project. The production team atWiley has been great. Many thanks go to people who helped us with thebook development, includingSusannah Barr, Katherine Hepburn, Bonnie Kubat,Sharon Prendergast, Marc Ranger,Jeri Warner, and Jennifer Welter.

This manuscript was prepared primarily with LATEX for the text andAdobe FrameMaker and Visio for the figures. The LGrindsystem was used to format Java code fragments into LATEX. The CVSversion control system enabled smooth coordination of our (sometimesconcurrent) file editing.

Trademark Acknowledgments: Java is a trademark of Sun Microsystems, Inc. UNIX is a registered trademark in the United States and othercountries, licensed through X/Open Company, Ltd.All other product names mentioned herein are the trademarks of theirrespective owners.

Finally, we would like to warmly thank Isabel Cruz,Karen Goodrich, Giuseppe Di Battista,Franco Preparata,Ioannis Tollis,and our parents forproviding advice, encouragement, and support at various stages of thepreparation of this book. We also thank them for reminding us that thereare things in life beyond writing books.




Michael T. Goodrich
Roberto Tamassia

[8]ページ先頭

©2009-2025 Movatter.jp