Steven Skiena_The Algorithm Design Manual.pdf

中文名叫《算法设计手册》
Steven s. skiena Department of Computer science State University of New York Stony brook skiena cs sunysb. edu ISBN:9781848000698 eⅠSBN:9781848000704 DOI:10.1007/9781848000704 British Library Cataloguing in Publication Data A catalogue record for this book is available from the British Library Library of Congress Control Number: 2008931136 C SpringerVerlag London Limited 2008 Apart from any fair dealing for the purposes of research or private study, or criticism or review, as permitted under the Copyright, Designs and Patents Act 1988, this publication may only be reproduced, stored or trans mitted, in any form or by any means, with the prior permission in writing of the publishers, or in the case of reprographic reproduction in accordance with the terms of licenses issued by the Copyright Licensing Agency Enquiries concerning reproduction outside those terms should be sent to the publishers The use of registered names, trademarks, etc, in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant laws and regulations and therefore free for l The publisher makes no representation, express or implied, with regard to the accuracy of the information contained in this book and cannot accept any legal responsibility or liability for any errors or omissions that be made Printed on acidfree paper Springer science+Business media springer. com P reface Most professional programmers that Ive encountered are not well prepared to tackle algorithm design problems. This is a pity, because the techniques of algorithm design form one of the core practical technologies of computer science. Designing correct, efficient, and implementable algorithms for realworld problems requires access to two distinct bodies of knowledge Techniques Good algorithm designers understand several fundamental al gorithm design techniques, including data structures, dynamic programming depthfirst search, backtracking, and heuristics. Perhaps the single most im portant design technique is modeling, the art of abstracting a messy realworld application into a clean problem suitable for algorithmic attack Resources Good algorithm designers stand on the shoulders of giants Rather than laboring from scratch to produce a new algorithm for every tasl they can figure out what is known about a particular problem. Rather than reimplementing popular algorithms from scratch, they seek existing imple mentations to serve as a starting point. They are familiar with many classic algorithmic problems, which provide sufficient source material to model most any application This book is intended as a manual on algorithm design, providing access te combinatorial algorithm technology for both students and computer professionals It is divided into two parts: Techniques and Resources. The former is a general guide to techniques for the design and analysis of computer algorithms. The Re sources section is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations, and an extensive bibliography PREFACE To the reader I have been gratified by the warm reception the first edition of The Algorithm De sign Manual has received since its initial publication in 1997. It has been recognized as a unique guide to using algorithmic techniques to solve problems that often arise in practice. But much has changed in the world since the The Algorithm Design Manual was first published over ten years ago. Indeed, if we date the origins of modern algorithm design and analysis to about 1970, then roughly 30% of modern algorithmic history has happened since the first coming of The Algorithm Design Manual Three aspects of The Algorithm Design Manual have been particularly beloved (1) the catalog of algorithmic problems,(2)the war stories, and(3) the electronic component of the book. These features have been preserved and strengthened in this edition: o The Catalog of Algorithmic Problems Since finding out what is known about an algorithmic problem can be a difficult task, I provide a catalog of the 75 most important problems arising in practice. By browsing through this catalog, the student or practitioner can quickly identify what their problem is called, what is known about it, and how they should proceed to solve it. To aid in problem identification, we include a pair of“' before”and“ after” pictures for each problem, illustrating the required input and output specifications. One perceptive reviewer called my book"The Hitchhiker's guide to algorithms on the strength of this catalog The catalog is the most important part of this book. To update the catalog for this edition, I have solicited feedback from the worlds leading experts on each associated problem. Particular attention has been paid to updating the discussion of available software implementations for each problem War StoriesIn practice, algorithm problems do not arise at the beginning of a large project. Rather, they typically arise as subproblems when it becomes clear that the programmer does not know how to proceed or that the current solution is inadequate To provide a better perspective on how algorithm problems arise in the real world, we include a collection of "war stories, or tales from our experience with real problems. The moral of these stories is that algorithm design and nalysis is not just theory, but an important tool to be pulled out and used as needed This edition retains all the original war stories(with updates as appropriate) plus additional new war stories covering external sorting, graph algorithms simulated annealing, and other topics Electronic Component Since the practical person is usually looking for a program more than an algorithm, we provide pointers to solid implementa tions whenever they are available. We have collected these implementations PREFACE atonecentralwebsitesite(http://www.cs.sunysb.edu/algorith)foreasyre trieval. We have been the number one"Algorithm" site on Google pretty much since the initial publication of the book Further, we provide recommendations to make it easier to identify the correct code for the job. With these implementations available, the critical issue in algorithm design becomes properly modeling your application, more so than becoming intimate with the details of the actual algorithm. This focus permeates the entire book Equally important is what we do not do in this book. We do not stress the mathematical analysis of algorithms, leaving most of the analysis as informal ar guments. You will not find a single theorem anywhere in this book. When more details are needed, the reader should study the cited programs or references. The goal of this manual is to get you going in the right direction as quickly as possible To the Instructor This book covers enough material for a standard Introduction to algorithms course We assume the reader has completed the equivalent of a second programming course,typically titled Data Structures or Computer Science In a full set of lecture slides for teaching this course is available online at http:/www.algorist.comFurther,Imakeavailableonlineaudioandvideolectures using these slides to teach a fullsemester algorithm course. Let me help teach your course. by the magic of the internet! This book stresses design over analysis. It is suitable for both traditional lecture courses and the new"active learning"method, where the professor does not lecture but instead guides student groups to solve real problems. The"war stories" provide an appropriate introduction to the active learning method I have made several pedagogical improvements throughout the book. Textbook oriented features include More Leisurely DiscussionThe tutorial material in the first part of the book has been doubled over the previous edition. The pages have been devoted to more thorough and careful exposition of fundamental material, instead of adding more specialized topics False starts Algorithms textbooks generally present important algorithms as a fait accompli, obscuring the ideas involved in designing them and the subtle reasons why other approaches fail. The war stories illustrate such de velopment on certain applied problems, but I have expanded such coverage into classical algorithm design material as well Stop and Think Here I illustrate my thought process as I solve a topic specific homework problemfalse starts and all. I have interspersed such PREFACE problem blocks throughout the text to increase the problemsolving activity of my readers. Answers appear immediately following each problem More and Improved Homework Problems This edition of The Algorithm Design Manual has twice as many homework exercises as the previous one Exercises that proved confusing or ambiguous have been improved or re placed. Degree of difficulty ratings(from 1 to 10) have been assigned to all problems SelfMotivating Exam DesignIn my algorithms courses, I promise the stu dents that all midterm and final exam questions will be taken directly from homework problems in this book. This provides a"studentmotivated exam so students know exactly how to study to do well on the exam. I have carefully picked the quantity, variety, and difficulty of homework exercises to make this work; ensuring there are neither too few or too many candidate problems TakeHome Lessons Highlighted "takehome lesson boxes scattered throughout the text emphasize the bigpicture concepts to be gained from the chapter Links to Programming Challenge Problems Each chapters exercises will contain links to 35 relevant "Programming Challenge" problems from http://wwa.programmingchallenges.comThesecanbeusedtoaddapro gramming component to paperandpencil algorithms courses More Code, Less Pseudocode more algorithms in this book appear as code (written in C) instead of pseudocode. I believe the concreteness and relia bility of actual tested implementations provides a big win over less formal presentations for simple algorithms. Full implementations are available for studyathttp://www.algorist.com Chapter Notes Each tutorial chapter concludes with a brief notes section pointing readers to primary sources and additional references Acknowledgments pdating a book dedication after ten years focuses attention on the effects of time Since the first edition, Renee has become my wife and then the mother of our two children, Bonnie and Abby. My father has left this world, but Mom and my brothers Len and rob remain a vital presence in my life. I dedicate this book to my family, new and old, here and departed I would like to thank several people for their concrete contributions to this new edition. Andrew Gaun and Betson Thomas helped in many ways, particularly inbuildingtheinfrastructureforthenewhttp://www.cs.sunysb.edu/algorithand dealing with a variety of manuscript preparation issues. David gries offered valu able feedback well beyond the call of duty. Himanshu gupta and Bin Tang bravely PREFACE IX taught courses using a manuscript version of this edition. Thanks also to my SpringerVerlag editors, Wayne Wheeler and Allan Wylde A select group of algorithmic sages reviewed sections of the Hitchhiker's guide sharing their wisdom and alerting me to new developments. Thanks to Ami Amir. Herve Bronnimann. Bernard Chazelle. Chris Chu. Scott Cotton, Yefim Dinitz, Komei Fukuda, Michael Goodrich, Lenny Heath Cihat Imamoglu, Tao Jiang, David Karger, Giuseppe Liotta, Albert Mao, Silvano Martello, Catherine McGeoch, Kurt Mehlhorn, Scott A. Mitchell, Naceur Meskini, Gene Myers, Gonzalo Navarro, Stephen North. Joe o'Rourke. Mike paterson. Theo Pavlidis. Seth Pettie. Michel Pocchiola, Bart Preneel, Tomasz Radzik, Edward Reingold, Frank Ruskey, Peter Sanders, Joao Setubal, Jonathan Shewchuk, Robert Skeel, Jens Stoye, Torsten Suel, Bruce Watson, and Uri Zwick Several exercises were originated by colleagues or inspired by other texts. Re constructing the original sources years later can be challenging, but credits for each problem(to the best of my recollection) appear on the website It would be rude not to thank important contributors to the original edition Ricky Bradley and Dario Vlah built up the substantial infrastructure required for the www site in a logical and extensible manner. Zhong li drew most of the catalog figures using xfig. Richard Crandall, Ron Danielson, Takis Metaxas, Dave Miller, Giri Narasimhan, and Joe Zachary all reviewed preliminary versions of the first edition; their thoughtful feedback helped to shape what you see here Much of what I know about algorithms I learned along with my graduate students. Several of them(YawLing Lin, Sundaram Gopalakrishnan, Ting Chen Francine Evans, Harald Rau, Ricky Bradley, and Dimitris Margaritis) are the real heroes of the war stories related within. My Stony Brook friends and algorithm colleagues Estie Arkin, Michael Bender, Jie Gao, and Joe Mitchell have always been a pleasure to work and be with. Finally, thanks to Michael Brochstein and the rest of the city contingent for revealing a proper life well beyond Stony Brook Caveat It is traditional for the author to magnanimously accept the blame for whatever deficiencies remain. I dont. Any errors, deficiencies, or problems in this book are somebody else's fault, but I would appreciate knowing about them so as to deter mine who is to blame Steven s. Skiena Department of Computer Science Stony Brook universit Stony Brook, NY 117944400 http://www.cs.sunysb.edu/skiena April 2008 Contents I Practical Algorithm Design 1 Introduction to Algorithm Design 1. 1 Robot Tour Optimization 1359 1.2 Selecting the Right Jobs 1.3 Reasoning about Correctness 1.4 Modeling the Problem 1.5 About the War Stories 22 1.6 War Story: Psychic modelin 1.7 Exercises 7 2 Algorithm Analysis 31 2.1 The RAM Model of Computation 31 2.2 The Big Oh Notation 2.3 Growth Rates and dominance relations 37 2.4 Working with the Big Oh 2.5 Reasoning about efficiency 2.6 Logarithms and Their Applications 46 2.7 Properties of logarithms 50 2.8 War Story: Mystery of the Pyramids 51 2.9 Advanced Analysis() 54 2.10 Exercises 57 3 Data structures 65 3.1 Contiguous vs. Linked Data Structures 66 11 CONTENTS 3.2 Stacks and Queues 71 3.3 Dictionaries 72 3.4 Binary Search Trees 3.5 Priority Queues 3.6 War Story: Stripping Triangulations 3.7 Hashing and Strings 89 3.8 Specialized Data Structures 93 3.9 War Story: String em Up 94 3.10 Exercises 98 4 Sorting and searching 103 4.1 Applications of Sorting 104 4.2 Pragmatics of Sorting 107 4.3 Heapsort: Fast Sorting via Data Structures 108 4.4 War Story: Give me a Ticket on an airplane 11 4.5 Mergesort: Sorting by DivideandConquer 4.6 Quicksort Sorting by randomization 123 4.7 Distribution Sort: Sorting via Bucketing 129 4.8 War Story: Skiena for the Defense 131 4.9 Binary Search and Related Algorithms 132 4.10 DivideandConquer 135 4.11 Exercises 5 Graph Traversal 145 5.1 Flavors of graphs 146 5.2 Data Structures for graphs 151 5.3 War Story: I was a Victim of Moore's law 155 5.4 War Story: Getting the Graph 5.5 Traversing a Graph 5.6 BreadthFirst Search 162 5.7 Applications of BreadthFirst Search 166 5.8 DepthFirst Search 169 5.9 Applications of DepthFirst Search 5.10 DepthFirst Search on Directed graphs 5.11 Exercises 184 6 Weighted Graph algorithms 191 6.1 Minimum Spanning Trees 192 6.2 War Story: Nothing but Nets 202 6.3 Shortest Paths 205 6.4 War Story: Dialing for Documents 212 6.5 Network Flows and Bipartite Matching 217 6.6 Design Graphs, Not algorithms 222 6.7 Exercises 225
 3.81MB
The Algorithm Design Manual Second Edition 20带书签目录超清文字版.pdf
20181111The Algorithm Design Manual Second Edition 20带书签目录超清文字版.pdf 这个是带完整目录书签的文字版本，文本内容可以复制的哦
 3.89MB
TheAlgorithmDesignManual.pdf
20130108The Algorithm Design ManualSteven S. Skiena 第二版,英文版,目录如下: I Practical Algorithm Design 1 1 Introduc
 35.58MB
《算法设计手册》第2版 中文版.pdf
20170419《算法设计手册》第2版 中文版.pdf 个人收集电子书，仅用学习使用，不可用于商业用途，如有版权问题，请联系删除！
 5.50MB
The Algorithm Design Manual(2nd) 无水印原版pdf
20180327The Algorithm Design Manual(2nd) 英文无水印原版pdf 第2版 pdf所有页面使用FoxitReader、PDFXChangeViewer、SumatraPDF和Fi
 3.99MB
The Algorithm Design Manual算法红皮书
20170804The Algorithm Design Manual算法红皮书
 41.21MB
The.Algorithm.Design.Manual中文版+英文原版
20180611数据结构与算法是程序员必须掌握的一门课程，本书作为国外经典教材。自从出版以来，深受大家的喜欢。
 3.89MB
The Algorithm Design Manual
20101104Introduction to Algorithm Design 3 1.1 Robot Tour Optimization . . . . . . . . . . . . . . . . . . .
 2.81MB
The algorithm design manual 算法设计手册
20171219介绍了各种算法技术，着重强调了算法分析，全书包括两大部分，“技术”部分介绍了设计和分析计算机算法的各种方法，“资源”部分给出了大量的参考资源，以及算法实现的各种资源
 55.7MB
Algorithm Design 算法设计中文版
20160526
 55.7MB
算法设计 Algorithm Design 中文版
20170403《算法设计》围绕算法设计技术组织素材，对每种算法技术选择了多个典型范例进行分析。《算法设计》将直观性与严谨性完美地结合起来。每章从实际问题出发，经过具体、深入、细致的分析，自然且富有启发性地引出相应的
 3.13MB
算法设计手册 The.Algorithm.Design.Manual,2nd
20151104算法设计手册 The.Algorithm.Design.Manual,2nd.pdf 经典书籍 免积分下载
 10.91MB
The Algorithm Design Manual by Steven S Skiena
20141120详尽地介绍了各类算法，并给予设计算法的思考难点，阅读学习完整本书，可以自己上手优化算法
 6.2MB
Steven S. Skiena The Algorithm Design Manual
20131011Steven S. Skiena The Algorithm Design Manual
 3.89MB
算法设计手册第二版
20140912《算法设计手册(第2版)》是算法设计畅销书的最新版本，是设计实用且高效算法的最全面指导书。
 70KB
获取Linux下Ftp目录树并逐步绑定到treeview
20120608在linux下抓取目录树，双击后获取该节点子节点（逐步生成）。另外有两个类，一个是windows下的（一次性获取目录树），一个是linux下的（足部获取目录树）
 399KB
NS网络模拟和协议仿真源代码
20150519NS网络模拟和协议仿真源代码，包含代码说明及协议分析

Nicolas0311
等级：

领英
绑定领英第三方账户获取 
GitHub
绑定GitHub第三方账户获取 
脉脉勋章
绑定脉脉第三方账户获得 
技术圈认证
用户完成年度认证，即可获得
关注 私信 TA的资源

下载
“3S”技术在现代地图学课程中的作用分析
“3S”技术在现代地图学课程中的作用分析

下载
助力可持续发展社会的ROHM新技术
助力可持续发展社会的ROHM新技术

下载
mac驱动安装软件OSX86 Tools v1.0.150 最新版
mac驱动安装软件OSX86 Tools v1.0.150 最新版

下载
我国矿区生态环境建设与土地复垦现状及问题分析
我国矿区生态环境建设与土地复垦现状及问题分析

下载
浅谈电流消耗和压降的电流检测方案
浅谈电流消耗和压降的电流检测方案

下载
全网无水印视频采集(支持window和mac)
全网无水印视频采集(支持window和mac)

下载
标准pike 6480华硕SAS阵列卡驱动 官方版
标准pike 6480华硕SAS阵列卡驱动 官方版

下载
基于GIS数据格式转换系统的设计与实现
基于GIS数据格式转换系统的设计与实现

下载
光敏电阻的工作原理和作用_光敏电阻的检测
光敏电阻的工作原理和作用_光敏电阻的检测

下载
carsim和matlab的联合仿真.docx
carsim和matlab的联合仿真.docx

下载
基于MATLAB下GPS水准曲线拟合可靠性实验研究
基于MATLAB下GPS水准曲线拟合可靠性实验研究

下载
柯美600750复印机打印驱动
柯美600750复印机打印驱动

下载
光敏电阻具有什么特点
光敏电阻具有什么特点

下载
改革测量课堂教学 提升学生测量能力
改革测量课堂教学 提升学生测量能力

下载
MATRIX210固定式读码器套件(Matrix Tool) V3.1.0 官方版
MATRIX210固定式读码器套件(Matrix Tool) V3.1.0 官方版

下载
简析光敏电阻组成结构
简析光敏电阻组成结构

下载
全站仪角度测量误差探讨
全站仪角度测量误差探讨

下载
光敏电阻的性质和应用
光敏电阻的性质和应用

下载
armv8指令详细介绍官方pdf文件112页.rar
armv8指令详细介绍官方pdf文件112页.rar

下载
井下三角高程测量代替常规水准测量的方法
井下三角高程测量代替常规水准测量的方法

下载
光敏电阻典型应用电路
光敏电阻典型应用电路

下载
软件缺陷管理系统工程文件及数据库文件
软件缺陷管理系统工程文件及数据库文件

下载
A卡超频利器(iTurbo) V1.3.1 官方安装版
A卡超频利器(iTurbo) V1.3.1 官方安装版

下载
敏捷软件开发技术课件.rar
敏捷软件开发技术课件.rar

下载
炼化厂区地下管线探测技术综述
炼化厂区地下管线探测技术综述

下载
电子元件基础篇之光敏电阻
电子元件基础篇之光敏电阻

下载
微软无线耳机驱动(Microsoft LifeChat) v1.40.224.0 免费版
微软无线耳机驱动(Microsoft LifeChat) v1.40.224.0 免费版

下载
网络《工程测量》教学方法改革的探讨
网络《工程测量》教学方法改革的探讨

下载
光线感应器原理_光线感应器的作用
光线感应器原理_光线感应器的作用

下载
GYROMAT3000型陀螺仪在神东矿区的应用
GYROMAT3000型陀螺仪在神东矿区的应用