欢迎来到相识电子书!

标签:算法

  • 算法: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.
  • An Introduction to the Analysis of Algorithms

    作者:Robert Sedgewick,Phi

    This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discrete mathematics, elementary real analysis, and combinatorics; the second half discusses properties of discrete structures and covers the analysis of a variety of classical sorting, searching, and string processing algorithms.
  • 算法竞赛入门经典

    作者:刘汝佳,陈锋

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

    作者:Henry S. Warren

    In Hacker's Delight, Second Edition, Hank Warren once again compiles an irresistible collection of programming hacks: timesaving techniques, algorithms, and tricks that help programmers build more elegant and efficient software, while also gaining deeper insights into their craft. Warren's hacks are eminently practical, but they're also intrinsically interesting, and sometimes unexpected, much like the solution to a great puzzle. They are, in a word, a delight to any programmer who is excited by the opportunity to improve. Extensive additions in this edition include * A new chapter on cyclic redundancy checking (CRC), including routines for the commonly used CRC-32 code * A new chapter on error correcting codes (ECC), including routines for the Hamming code * More coverage of integer division by constants, including methods using only shifts and adds * Computing remainders without computing a quotient * More coverage of population count and counting leading zeros * Array population count * New algorithms for compress and expand * An LRU algorithm * Floating-point to/from integer conversions * Approximate floating-point reciprocal square root routine * A gallery of graphs of discrete functions * Now with exercises and answers
  • How to Solve It

    作者:Zbigniew Michalewicz

    This book is the only source that provides comprehensive, current, and correct information on problem solving using modern heuristics. It covers classic methods of optimization, including dynamic programming, the simplex method, and gradient techniques, as well as recent innovations such as simulated annealing, tabu search, and evolutionary computation. Integrated into the discourse is a series of problems and puzzles to challenge the reader. The book is written in a lively, engaging style and is intended for students and practitioners alike. Anyone who reads and understands the material in the book will be armed with the most powerful problem solving tools currently known. This second edition contains two new chapters, one on coevolutionary systems and one on multicriterial decision-making. Also some new puzzles are added and various subchapters are revised. The March 2002 issue of ACMs Computing Reviews identifies a review of "How to Solve It" as the best review they published in 2001. The review is then reprinted in its entirety. Reviewer: H. van Dyke Parunak. Excerpt: Like its predecessor, the new How to Solve It, combines deep mathematical insight with skilled pedagogy. Puzzle lovers will seek out the book for its insightful discussion of many intriguing brain twisters. Students of computational methods will find it an accessible but rigorous introduction to evolutionary algorithms. Teachers will learn from its expositions how to make their own subject matter clearer to their students. Polya would be honored to know that his spirit lives on in the computer age. From the reviews of the second edition: "This is an outstanding book. It takes the reader close to the current knowledge frontier … . The book’s writing style is lively and educational, and this makes it extremely interesting … . is intended for students and practitioners. … is an excellent choice for a course on heuristics … . One of the most comprehensive views … is provided in this book. It is written to be read and understood … . is a must-read and must-have for anyone engaged in the art of problem solving." (Dimitrios Katsaros, Computing Reviews, April, 2005)
  • 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.
  • Large-Scale Inference

    作者:Efron, Bradley

    We live in a new age for statistical inference, where modern scientific technology such as microarrays and fMRI machines routinely produce thousands and sometimes millions of parallel data sets, each with its own estimation or testing problem. Doing thousands of problems at once is more than repeated application of classical methods. Taking an empirical Bayes approach, Bradley Efron, inventor of the bootstrap, shows how information accrues across problems in a way that combines Bayesian and frequentist ideas. Estimation, testing and prediction blend in this framework, producing opportunities for new methodologies of increased power. New difficulties also arise, easily leading to flawed inferences. This book takes a careful look at both the promise and pitfalls of large-scale statistical inference, with particular attention to false discovery rates, the most successful of the new statistical techniques. Emphasis is on the inferential ideas underlying technical developments, illustrated using a large number of real examples.
  • 智能Web算法

    作者:Haralambos Marmanis,

    本书涵盖了五类重要的智能算法:搜索、推荐、聚类、分类和分类器组合,并结合具体的案例讨论了它们在Web应用中的角色及要注意的问题。除了第1章的概要性介绍以及第7章对所有技术的整合应用外,第2~6章以代码示例的形式分别对这五类算法进行了介绍。 本书面向的是广大普通读者,特别是对算法感兴趣的工程师与学生,所以对于读者的知识背景并没有过多的要求。本书中的例子和思想应用广泛,所以对于希望从业务角度更好地理解有关技术的技术经理、产品经理和管理层来说,本书也有一定的价值。
  • 算法设计与分析

    作者:屈婉玲,刘田,张立昂,王捍贫

    《算法设计与分析》为计算机科学技术专业核心课程“算法设计与分析”教材.全书以算法设计技术和分析方法为主线来组织各知识单元,主要内容包括基础知识、分治策略、动态规划、贪心法、回溯与分支限界、算法分析与问题的计算复杂度、NP完全性、近似算法、随机算法、处理难解问题的策略等。书中突出对问题本身的分析和求解方法的阐述,从问题建模、算法设计与分析、改进措施等方面给出适当的建议,同时也简要介绍了计算复杂性理论的核心内容和处理难解问题的一些新技术。 《算法设计与分析》有配套的学习指导与习题解析用书以及PPT电子教案。 《算法设计与分析》可作为大学计算机科学与技术、软件工程、信息安全、信息与计算机科学等专业本科生和研究生教学用书,也可以作为从事实际问题求解的算法设计与分析工作的参考书。
  • 图论算法理论、实现及应用

    作者:王桂平//王衍//任嘉辰

    《图论算法理论、实现及应用》系统地介绍了图论算法理论,并选取经典的ACM/ICPC竞赛题目为例题阐述图论算法思想,侧重于图论算法的程序实现及应用。《图论算法理论、实现及应用》第1章介绍图的基本概念和图的两种存储表示方法:邻接矩阵和邻接表,第2~9章分别讨论图的遍历与活动网络问题,树与图的生成树,最短路径问题,可行遍性问题,网络流问题,支配集、覆盖集、独立集与匹配,图的连通性问题,平面图及图的着色问题等。 《图论算法理论、实现及应用》可以作为高等院校计算机(或相关专业)图论等相关课程的主教材,也可作为ACM/ICPC竞赛的辅导教材。
  • Algorithms For Interviews

    作者:Adnan Aziz,Amit Prak

  • 数据结构与算法分析

    作者:韦斯(Mark Allen Weiss)

    《数据结构与算法分析:C语言描述》曾被评为20世纪顶尖的30部计算机著作之一,作者在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评,已被世界500余所大学选作教材。 在《数据结构与算法分析:C语言描述》中,作者精炼并强化了他对算法和数据结构方面创新的处理方法。通过C程序的实现,着重阐述了抽象数据类型的概念,并对算法的效率、性能和运行时间进行了分析。 《数据结构与算法分析:C语言描述》特色:着重讨论了算法设计技巧,包括贪婪算法、分治算法、动态规划、随机化算法以及回溯算法。系统介绍了当前流行的论题和新的数据结构,如斐波那契堆、斜堆、二项队列、跳跃表和伸展树。详细讨论了摊还分析,考查书中介绍的一些高级数据结构。增加了高级数据结构及其实现的内容,包括红黑树、自顶向下伸展树、treap树、k-d树、配对堆等。整合了堆排序平均情况分析的一些新结果。
  • 计算机程序设计艺术

    作者:Donald E.Knuth

    《计算机程序设计艺术(第4卷·第0册):组合算法与布尔函数概论(双语版)》是《计算机程序设计艺术,第4卷:组合算法》的第0册。《计算机程序设计艺术(第4卷·第0册):组合算法与布尔函数概论(双语版)》介绍了组合搜索历史和演化,涉及组合搜索技术的理论和实践应用,探究了布尔函数相关的所有重要问题,考察了如何最有效地计算一个布尔函数的值的技术。本册是《计算机程序设计艺术的》第7章,即组合搜索一长篇宏论的起始。
  • 程序员实用算法

    作者:Andrew Binstock,John

    《程序员实用算法》重点关注的是实用、立即可用的代码,并且广泛讨论了可移植性和特定于实现的细节。《程序员实用算法》作者介绍了一些有用但很少被讨论的算法,它们可用于语音查找、日期和时间例程(直到公元1年)、B树和索引文件、数据压缩、任意精度的算术、校验和与数据验证,并且还最全面地介绍了查找例程、排序算法和数据结构。 《程序员实用算法》结构清晰,示例丰富,可作为广大程序员的参考用书。
  • 计算智能

    作者:Russell C. Eberhart,

    《计算智能:从概念到实现(英文版)》面向智能系统学科的前沿领域,系统地讨论了计算智能的理论、技术及其应用,比较全面地反映了计算智能研究和应用的最新进展。书中涵盖了模糊控制、神经网络控制、进化计算以及其他一些技术及应用的内容。《计算智能:从概念到实现(英文版)》提供了大量的实用案例,重点强调实际的应用和计算工具,这些对于计算智能领域的进一步发展是非常有意义的。《计算智能:从概念到实现(英文版)》取材新颖,内容深入浅出,材料丰富,理论密切结合实际,具有较高的学术水平和参考价值。 《计算智能:从概念到实现(英文版)》可作为高等院校相关专业高年级本科生或研究生的教材及参考用书,也可供从事智能科学、自动控制、系统科学、计算机科学、应用数学等领域研究的教师和科研人员参考。
  • 随机算法

    作者:Rajeev Motwani,Prabh

    本书是斯坦福-剑桥项目(Stanford-Cambridge ProSram)之一。. 对于许多应用,随机算法是最简单可行的,或者是最快的,或者两者兼得。本书由该领域两位著名专家写成,给出了随机算法设计和分析的基本概念,适用于接近研究生开始阶段的水平。.. 本书的第一部分介绍了概率论的基本工具,以及在算法应用中经常使用的概率分析。为了说明每个工具的作用,在具体设置给出了一些算法示例。本书的第二部分为算法的应用,共包括七章,每一章集中在随机算法应用的一个重要领域,如数据结构、几何算法、图算法、数论、计数、并行算法及在线算法等。对于每个领域中的算法,做了全面并且具有代表性的选择。 尽管本书基本按照教材写成,也可作为一本有价值的参考书供专业人员和研究者使用。
  • 编程珠玑II

    作者:(美)Jon Bentley

    本书是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容结合成一个有机的整体,如一串串珠玑展示给程序员。本书适合各级程序员阅读参考。... 【媒体评论】 “《编程珠玑》第1版是对我职业生涯早期影响最大的书之一,其中的许多真知灼见多年之后仍然使我受益匪浅。Jon在第2版中对素材进行了大量更新,许多新内容让我耳目一新。”. ——Steve McConnell,软件工程大师,IEEE Software前主编,《代码大全》作者 “对每一位遇到的程序员,我都会毫不迟疑地建议他阅读并不断重读这部经典之作。”... ——Slashdot
  • 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
  • A=B

    作者:Marko Petkovsek,Herb

    At some point, this book describes methods of solving the problem raised by Donald E. Knuth in the classical book "The Art of Computer Programming, Volume 1: Fundamental Algorithms". The main purpose of this book is to explain how the discoveries and the proofs of "hypergeometric identities" have been very largely automated.