欢迎来到相识电子书!

标签:Algorithm

  • 算法分析导论

    作者:(美)Robert Sedgewick,

    本书阐述了用于算法数学分析的主要方法,所涉及的材料来自经典数学课题,包括离散数学、初等实分析、组合数学,以及来自经典的计算机科学课题,包括算法和数据结构,本书内容集中覆盖基础、重要和有趣的算法,前面侧重数学,后面集中讨论算法分析的应用,重点的算法分的的数学方法。每章包含大量习题以及参考文献,使读者可以更深入地理解书中的内容。 本书适合作为高等院校数学、计算机科学以及相关专业的本科生和研究生的教材,也可供相关技术人员参考。
  • Programming Pearls

    作者:Jon Bentley

  • C++算法

    作者:Robert Sedgewick

    《国外经典教材•C++算法:图算法(第3版)》所关注的是图算法领域。从实用的视角,以独特的结构将有关内容组织在一起,从而使读者不仅可以对这一领域有系统性的认识,而且还可在实践中灵活使用所提供的算法工具。本版中,增加了数以千计的新练习、数百年新图表以及数十个新程序,而且对所有的图表和程序都做了详尽的注释说明;不仅涵盖了新的主题,还对许多经典算法提供了更为充分的解释。所有读者都可从中得到极为丰富的学习资料,从而更好地理解基本概念。
  • 计算机程序设计艺术(第1卷 英文版・第3版)

    作者:高德纳

    《计算机程序设计艺术(第1卷):基本算法(英文版·第3版)》主要内容:关于算法分析的这多卷论著已经长期被公认为经典计算机科学的定义性描述。迄今已出版的完整的三卷已经组成了程序设计理论和实践的惟一的珍贵资源,无数读者都赞扬Knuth的著作对个人的深远影响,科学家们为他的分析的美丽和优雅所惊叹,而从事实践的程序员已经成功地将他的“菜谱式”的解应用到日常问题上,所有人都由于Knuth在书中表现出的博学、清晰、精确和高度幽默而对他无比敬仰。第1卷为基本算法,分“基本概念”和“信息结构”两章。本卷以基本的编程概念和技术开始,然后讲述信息结构——计算机内信息的表示法、数据元素间的结构关系以及处理它们的有效方法。
  • 柔性字符串匹配

    作者:纳瓦罗

    本书是一本不可多得的字符串匹配方面的专业书籍。书中对串匹配问题进行了系统化的分类,从实际效果出发,着重详细介绍了串匹配领域内效果最好的若干种算法。并且给出了具有统一接口的算法伪码,使读者能清晰理解算法原理,易于实现算法编程,从而提高专业水平。此外,书中通过严谨的理论分析和大量实验数据,说明了每种算法在实际应用中的适用范围,由此提供了良好的应用指导,解决了串匹配算法的最佳适用性问题。 本书可帮助本领域的研究人员从整体上把握字符串匹配方面的脉络,而其他相关领域的人员也可借助本书非常清晰地了解串匹配问题的概况。
  • 算法:C语言实现

    作者:塞奇威克

    本书是Sedgewick彻底修订和重写的C算法系列的第一本。全书分为四部分,共16章,第一部分“基础知识”(第1-2章)介绍基本算法分析原理。第二部分“数据结构”(第3-5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构,抽象数据结构,递归和树。
  • 算法:C语言实现

    作者:塞奇威克

    本书是Sedgewick彻底修订和重写的丛书中的第二本,集中讲解图算法。全书共有6章(第17-22章)。第17章详细讨论图性质和类型,第18-22章分别讲解图搜索、有向图和DAG、最小生成树、最短路径以及网络流。   书中提供了用C语言描述的完整算法源程序,并且配有丰富插图和练习。作者用简洁的实现将理论和实践成功地结合了起来,这些实现均可在真实应用上测试,使得本书自问世以来备受程序员的欢迎。 本书可作为高等院校计算机相关专业算法与数据结构课程的教材和补充读物,也可供自学之用。
  • Algorithms in C, Parts 1-4

    作者:Robert Sedgewick

    "This is an eminently readable book which an ordinary programmer, unskilled in mathematical analysis and wary of theoretical algorithms, ought to be able to pick up and get a lot out of.." - Steve Summit, author of C Programming FAQs Sedgewick has a real gift for explaining concepts in a way that makes them easy to understand. The use of real programs in page-size (or less) chunks that can be easily understood is a real plus. The figures, programs, and tables are a significant contribution to the learning experience of the reader; they make this book distinctive. - William A. Ward, University of South Alabama Robert Sedgewick has thoroughly rewritten and substantially expanded his popular work to provide current and comprehensive coverage of important algorithms and data structures. Many new algorithms are presented, and the explanations of each algorithm are much more detailed than in previous editions. A new text design and detailed, innovative figures, with accompanying commentary, greatly enhance the presentation. The third edition retains the successful blend of theory and practice that has made Sedgewick's work an invaluable resource for more than 250,000 programmers! This particular book, Parts 1-4, represents the essential first half of Sedgewick's complete work. It provides extensive coverage of fundamental data structures and algorithms for sorting, searching, and related applications. The algorithms and data structures are expressed in concise implementations in C, so that you can both appreciate their fundamental properties and test them on real applications. Of course, the substance of the book applies to programming in any language. Highlights * Expanded coverage of arrays, linked lists, strings, trees, and other basic data structures * Greater emphasis on abstract data types (ADTs) than in previous editions * Over 100 algorithms for sorting, selection, priority queue ADT implementations, and symbol table ADT (searching) implementations * New implementations of binomial queues, multiway radix sorting, Batcher's sorting networks, randomized BSTs, splay trees, skip lists, multiway tries, and much more * Increased quantitative information about the algorithms, including extensive empirical studies and basic analytic studies, giving you a basis for comparing them * Over 1000 new exercises to help you learn the properties of algorithms Whether you are a student learning the algorithms for the first time or a professional interested in having up-to-date reference material, you will find a wealth of useful information in this book.
  • 算法竞赛入门经典

    作者:刘汝佳,陈锋

    《算法竞赛入门经典:训练指南》是《算法竞赛入门经典》的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,并且用大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。《算法竞赛入门经典:训练指南》共6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型和更多算法专题,全书通过近200道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式以及程序实现的常见方法和技巧,并在章末和附录中给出了丰富的分类习题,供读者查漏补缺和强化学习效果。
  • Think Complexity

    作者:Allen B. Downey

    Dive into Python's advanced possibilities, including algorithm analysis, graphs, scale-free networks, and cellular automata with this in-depth, hands-on guide. Whether you're an intermediate-level Python programmer, or a student of computational modeling, you'll examine data structures, complexity science, and other fascinating topics through a series of exercises, easy-to-understand explanations, and case studies. Think Complexity presents features that make Python such a simple and powerful language. Author Allen Downey provides code to help you get started, along with a solution for each exercise. With this book, you will: Work with graphs and graph algorithms, NumPy arrays and SciPy methods, basic signal processing and Fast Fourier Transform, and hash tables. Discover complexity science, the field that studies abstract models of complex physical systems, including power laws, fractals and pink noise, and Turing machines. Explore the philosophy of science through the models and results in this book about the nature of scientific laws, theory choice, and realism and instrumentalism, and more.
  • How to Think About Algorithms

    作者:JEFF EDMONDS

    HOW TO THINK ABOUT ALGORITHMS There are many algorithm texts that provide lots of well-polished code and proofs of correctness. Instead, this one presents insights, notations, and analogies to help the novice describe and think about algorithms like an expert. It is a bit like a carpenter studying hammers instead of houses. Jeff Edmonds provides both the big picture and easy step-by-step methods for developing algorithms, while avoiding the comon pitfalls. Paradigms such as loop invariants and recursion help to unify a huge range of algorithms into a few meta-algorithms. Part of the goal is to teach students to think abstractly. Without getting bogged down in formal proofs, the book fosters deeper understanding so that how and why each algorithm works is trans- parent. These insights are presented in a slow and clear manner accessible to second- or third-year students of computer science, preparing them to find on their own innovative ways to solve problems. Abstraction is when you translate the equations, the rules, and the under- lying essences of the problem not only into a language that can be commu- nicated to your friend standing with you on a streetcar, but also into a form that can percolate down and dwell in your subconscious. Because, remem- ber, it is your subconscious that makes the miraculous leaps of inspiration, not your plodding perspiration and not your cocky logic. And remember, unlike you, your subconscious does not understand Java code. Bookmarks Cover Half-title Title Copyright CONTENTS PREFACE Introduction PART ONE: Iterative Algorithms and Loop Invariants 1 Iterative Algorithms: Measures of Progress and Loop Invariants 1.1 A Paradigm Shift: A Sequence of Actions vs. a Sequence of Assertions 1.2 The Steps to Develop an Iterative Algorithm 1.3 More about the Steps 1.4 Different Types of Iterative Algorithms 1.5 Typical Errors 1.6 Exercises 2 Examples Using More-of-the-Input Loop Invariants 2.1 Coloring the Plane 2.2 Deterministic Finite Automaton 2.3 More of the Input vs. More of the Output 3 Abstract Data Types 3.1 Specifications and Hints at Implementations 3.2 Link List Implementation 3.3 Merging with a Queue 3.4 Parsing with a Stack 4 Narrowing the Search Space: Binary Search 4.1 Binary Search Trees 4.2 Magic Sevens 4.3 VLSI Chip Testing 4.4 Exercises 5 Iterative Sorting Algorithms 5.1 Bucket Sort by Hand 5.2 Counting Sort (a Stable Sort) 5.3 Radix Sort 5.4 Radix Counting Sort 6 Euclid’s GCD Algorithm 7 The Loop Invariant for Lower Bounds PART TWO: Recursion 8 Abstractions, Techniques, and Theory 8.1 Thinking about Recursion 8.2 Looking Forward vs. Backward 8.3 With a Little Help from Your Friends 8.4 The Towers of Hanoi 8.5 Checklist for Recursive Algorithms 8.6 The Stack Frame 8.7 Proving Correctness with Strong Induction 9 Some Simple Examples of Recursive Algorithms 9.1 Sorting and Selecting Algorithms 9.2 Operations on Integers 9.3 Ackermann's Function 9.4 Exercises 10 Recursion on Trees 10.1 Tree Traversals 10.2 Simple Examples 10.3 Generalizing the Problem Solved 10.4 Heap Sort and Priority Queues 10.5 Representing Expressions with Trees 11 Recursive Images 11.1 Drawing a Recursive Image from a Fixed Recursive and a Base Case Image 11.2 Randomly Generating a Maze 12 Parsing with Context-Free Grammars PART THREE: Optimization Problems 13 Definition of Optimization Problems 14 Graph Search Algorithms 14.1 A Generic Search Algorithm 14.2 Breadth-First Search for Shortest Paths 14.3 Dijkstra's Shortest-Weighted-Path Algorithm 14.4 Depth-First Search 14.5 Recursive Depth-First Search 14.6 Linear Ordering of a Partial Order 14.7 Exercise 15 Network Flows and Linear Programming 15.1 A Hill-Climbing Algorithm with a Small Local Maximum 15.2 The Primal…Dual Hill-Climbing Method 15.3 The Steepest-Ascent Hill-Climbing Algorithm 15.4 Linear Programming 15.5 Exercises 16 Greedy Algorithms 16.1 Abstractions, Techniques, and Theory 16.2 Examples of Greedy Algorithms 16.2.1 Example: The Job/Event Scheduling Problem 16.2.2 Example: The Interval Cover Problem 16.2.3 Example: The Minimum-Spanning-Tree Problem 16.3 Exercises 17 Recursive Backtracking 17.1 Recursive Backtracking Algorithms 17.2 The Steps in Developing a Recursive Backtracking 17.3 Pruning Branches 17.4 Satisfiability 17.5 Exercises 18 Dynamic Programming Algorithms 18.1 Start by Developing a Recursive Backtracking 18.2 The Steps in Developing a Dynamic Programming Algorithm 18.3 Subtle Points 18.3.1 The Question for the Little Bird 18.3.2 Subinstances and Subsolutions 18.3.3 The Set of Subinstances 18.3.4 Decreasing Time and Space 18.3.5 Counting the Number of Solutions 18.3.6 The New Code 19 Examples of Dynamic Programs 19.1 The Longest-Common-Subsequence Problem 19.2 Dynamic Programs as More-of-the-Input Iterative Loop Invariant Algorithms 19.3 A Greedy Dynamic Program: The Weighted Job/Event Scheduling Problem 19.4 The Solution Viewed as a Tree: Chains of Matrix Multiplications 19.5 Generalizing the Problem Solved: Best AVL Tree 19.6 All Pairs Using Matrix Multiplication 19.7 Parsing with Context-Free Grammars 19.8 Designing Dynamic Programming Algorithms via Reductions 20 Reductions and NP-Completeness 20.1 Satisfiability Is at Least as Hard as Any Optimization Problem 20.2 Steps to Prove NP-Completeness 20.3 Example: 3-Coloring Is NP-Complete 20.4 An Algorithm for Bipartite Matching Using the Network Flow Algorithm 21 Randomized Algorithms 21.1 Using Randomness to Hide the Worst Cases 21.2 Solutions of Optimization Problems with a Random Structure PART FOUR: Appendix 22 Existential and Universal Quantifiers 23 Time Complexity 23.1 The Time (and Space) Complexity of an Algorithm 23.2 The Time Complexity of a Computational Problem 24 Logarithms and Exponentials 25 Asymptotic Growth 25.1 Steps to Classify a Function 25.2 More about Asymptotic Notation 26 Adding-Made-Easy Approximations 26.1 The Technique 26.2 Some Proofs for the Adding-Made-Easy Technique 27 Recurrence Relations 27.1 The Technique 27.2 Some Proofs 28 A Formal Proof of Correctness PART FIVE: Exercise Solutions Chapter 1. Iterative Algorithms: Measures of Progress and Loop Invariants Chapter 2. Examples UsingMore-of-the-Input Loop Invariant Chapter 3. Abstract Data Types Chapter 4. Narrowing the Search Space: Binary Search Chapter 6. Euclid’s GCD Algorithm Chapter 7. The Loop Invariant for Lower Bounds Chapter 8. Abstractions, Techniques, and Theory Chapter 9. Some Simple Examples of Recursive Algorithms Chapter 10. Recursion on Trees Chapter 11. Recursive Images Chapter 12. Parsingwith Context-Free Grammars Chapter 14. Graph Search Algorithms Chapter 15. Network Flows and Linear Programming Chapter 16: Greedy Algorithms Chapter 17. Recursive Backtracking Chapter 18. Dynamic Programming Algorithms Chapter 19. Examples of Dynamic Programs Chapter 20. Reductions and NP-Completeness Chapter 22. Existential and Universal Quantifiers Chapter 23. Time Complexity Chapter 24. Logarithms and Exponentials Chapter 25. Asymptotic Growth Chapter 26. Adding-Made-Easy Approximations Chapter 27. Recurrence Relations CONCLUSION INDEX
  • Encyclopedia of Algorithms

    作者:Ming-Yang Kao

    The Encyclopedia of Algorithms will provide a comprehensive set of solutions to important algorithmic problems for students and researchers interested in quickly locating useful information. The first edition of the reference will focus on high-impact solutions from the most recent decade; later editions will widen the scope of the work. Nearly 500 entries will be organized alphabetically by problem, with subentries allowing for distinct solutions and special cases to be listed by the year. An entry will include: a description of the basic algorithmic problem the input and output specifications the key results examples of applications citations to the key literature Open problems, links to downloadable code, experimental results, data sets, and illustrations may be provided. All entries will be written by experts; links to Internet sites that outline their research work will also be provided. The entries will be peer-reviewed. This defining reference will be published in print and on line. The print publication will include an index of subjects and authors as well as a chronology for locating recent solutions. The online edition will supplement this index with hyperlinks as well as include hyperlinks in the text of the entries to related entries, xRefer citations, and other useful URLs mentioned above.
  • 啊哈!算法

    作者:啊哈磊

    这不过是一本有趣的算法书而已。和别的算法书比较,如果硬要说它有什么特点的话,那就是你能看懂它。 这是一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点, 通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜 游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。 本书中涉及到的数据结构有栈、队列、链表、树、并查集、堆和图等;涉及到的算法有排序、枚举、 深度和广度优先搜索、图的遍历,当然还有图论中不可以缺少的四种最短路径算法、两种最小生成树算法、 割点与割边算法、二分图的最大匹配算法等。 网名啊哈磊。 曾在中科院玩过单片机。武汉大学历史上第一位以本科生身份加入MSRA(微软亚洲研究院)的小伙伴,在机器学习组从事搜索引擎方面的研究。 发表国际会议论文一篇(IEEE)。 全国青少年信息学奥林匹克金牌教练。 超萌超简洁的C语言编译器——“啊哈C编译器”作者。 2013年我的著作,有趣的编程科普书《啊哈C!》出版。 网址:www.ahalei.com 微博:weibo.com/ahalei 非常喜欢小朋友,每天都过得都非常开心。 至于为什么叫“啊哈磊”,因为我觉得这是一个很喜庆的名字。
  • 算法谜题

    作者:Anany Levitin,Maria

    算法是计算机科学领域最重要的基石之一。算法谜题,就是能够直接或间接地采用算法来加以解决的谜题。求解算法谜题是培养和锻炼算法思维能力一种最有效和最有乐趣的途径。 本书是一本经典算法谜题的合集。本书包括了一些古已有之的谜题,数学和计算机科学有一部分知识就发源于此。本书中还有一些较新的谜题,其中有一部分谜题被用作知名IT企业的面试题。全书可分为4个部分,分别是概览、谜题、提示和答案。概览介绍了算法设计的通用策略和算法分析的技术,还附带有不少的实例。谜题部分将谜题按照简单、中等难度和较难三个层级分别列出。提示部分依次给出谜题提示,帮助读者找到正确的解题方向,同时仍然为读者留下了独立求解的空间。答案部分则给出了谜题的详细解答。 本书可以为对算法感兴趣的广大读者提供系统丰富而实用的资料,能够帮助读者提升高阶算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及在准备面试的应聘者和面试官阅读参考。
  • 算法设计

    作者:[美]克菜因伯格,塔多斯

    《大学计算机教育国外著名教材系列:算法设计(影印版)》是近年来关于算法设计和分析的不可多得的优秀教材。《大学计算机教育国外著名教材系列:算法设计(影印版)》围绕算法设计技术组织素材,对每种算法技术选择了多个典型范例进行分析。《大学计算机教育国外著名教材系列:算法设计(影印版)》将直观性与严谨性完美地结合起来。每章从实际问题出发,经过具体、深入、细致的分析,自然且富有启发性地引出相应的算法设计思想,并对算法的正确性、复杂性进行恰当的分析、论证。《大学计算机教育国外著名教材系列:算法设计(影印版)》覆盖的面较宽,凡属串行算法的经典论题都有涉及,并且论述深入有新意。全书共200多道丰富而精彩的习题是《大学计算机教育国外著名教材系列:算法设计(影印版)》的重要组成部分,也是《大学计算机教育国外著名教材系列:算法设计(影印版)》的突出特色之一。
  • 计算机程序设计艺术(第3卷)-排序和查找(英文影印版)

    作者:(美)Donald E.Knuth

    《计算机程序设计艺术排序和查找(第3卷)(第2版)》内容简介:这是对第3卷的头一次修订,不仅是对经典计算机排序和查找技术的最全面介绍,而且还对第1卷中的数据结构处理技术作了进一步的扩充,通盘考虑了将大小型数据库和内外存储器。它遴选了一些经过反复检验的计算机方法,并对其效率做了定量分析。第3卷的突出特点是对“最优排序”一节作了修订,对排列论原理与通用散列法作了全新讨论。
  • 算法设计技巧与分析

    作者:[沙特]M. H. Alsuwaiyel

    本书是国际著名算法专家李德财教授主编的系列丛书“Lecture Notes Series on Computing”中的一本。本书涵盖了绝大多数算法设计中的一般技术,在表达每一种技术时,阐述它的应用背景,注意用与其他技术比较的方法说明它的特征,并提供大量相应实际问题的例子。本书同时也强调了对每一种算法的详细的复杂性分析。全书分七部分19章,从算法设计和算法分析的基本概念和方法入手,先后介绍了递归技术、分治、动态规划、贪心算法、图的遍历等技术,对NP完全问题进行了基本但清楚的讨论。对概率算法、近似算法和计算几何这些近年来发展迅猛的领域也用一定的篇幅讲述了基本内容。书中每章后都附有大量的练习题,有利于读者对书中内容的理解和应用。 本书结构简明,内容丰富,适合于作为计算机学科以及相关学科算法课程的教材和参考书,尤其适宜于学过数据结构和离散数学课程之后的算法课教材。同时也可作为从事算法研究的一本好的入门书。
  • Approximation Algorithms

    作者:Vijay V. Vazirani

    'This book covers the dominant theoretical approaches to the approximate solution of hard combinatorial optimization and enumeration problems. It contains elegant combinatorial theory, useful and interesting algorithms, and deep results about the intrinsic complexity of combinatorial problems. Its clarity of exposition and excellent selection of exercises will make it accessible and appealing to all those with a taste for mathematics and algorithms' - Richard Karp, University Professor, University of California at Berkeley. Following the development of basic combinatorial optimization techniques in the 1960s and 1970s, a main open question was to develop a theory of approximation algorithms. In the 1990s, parallel developments in techniques for designing approximation algorithms as well as methods for proving hardness of approximation results have led to a beautiful theory. The need to solve truly large instances of computationally hard problems, such as those arising from the Internet or the human genome project, has also increased interest in this theory. The field is currently very active, with the toolbox of approximation algorithm design techniques getting always richer. It is a pleasure to recommend Vijay Vazirani's well-written and comprehensive book on this important and timely topic. "I am sure the reader will find it most useful both as an introduction to approximability as well as a reference to the many aspects of approximation algorithms' - Laszlo Lovasz, Senior Researcher, Microsoft Research.
  • 算法设计

    作者:Jon Kleinberg,Éva Ta

    算法设计,ISBN:9787302143352,作者:(美)克林伯格(Kleinberg,J.),()塔多斯(Tardos,E.) 著,张立昂,屈婉玲 译
  • Algorithmic Puzzles

    作者:Anany Levitin,Maria

    Algorithmic puzzles are puzzles involving well-defined procedures for solving problems. This book will provide an enjoyable and accessible introduction to algorithmic puzzles that will develop the reader's algorithmic thinking. The first part of this book is a tutorial on algorithm design strategies and analysis techniques. Algorithm design strategies - exhaustive search, backtracking, divide-and-conquer and a few others - are general approaches to designing step-by-step instructions for solving problems. Analysis techniques are methods for investigating such procedures to answer questions about the ultimate result of the procedure or how many steps are executed before the procedure stops. The discussion is an elementary level, with puzzle examples, and requires neither programming nor mathematics beyond a secondary school level. Thus, the tutorial provides a gentle and entertaining introduction to main ideas in high-level algorithmic problem solving. The second and main part of the book contains 150 puzzles, from centuries-old classics to newcomers often asked during job interviews at computing, engineering, and financial companies. The puzzles are divided into three groups by their difficulty levels. The first fifty puzzles in the Easier Puzzles section require only middle school mathematics. The sixty puzzle of average difficulty and forty harder puzzles require just high school mathematics plus a few topics such as binary numbers and simple recurrences, which are reviewed in the tutorial. All the puzzles are provided with hints, detailed solutions, and brief comments. The comments deal with the puzzle origins and design or analysis techniques used in the solution. The book should be of interest to puzzle lovers, students and teachers of algorithm courses, and persons expecting to be given puzzles during job interviews.