欢迎来到相识电子书!

标签:计算机科学

  • An Introduction to Functional Programming Through Lambda Calculus

    作者:Greg Michaelson,Math

    This well-respected text offers an accessible introduction to functional programming concepts and techniques for students of mathematics and computer science. The treatment is as nontechnical as possible, assuming no prior knowledge of mathematics or functional programming. Numerous exercises appear throughout the text, and all problems feature complete solutions. 1989 edition.
  • Scaling up Machine Learning

    作者:Bekkerman, Ron; Bile

    This book presents an integrated collection of representative approaches for scaling up machine learning and data mining methods on parallel and distributed computing platforms. Demand for parallelizing learning algorithms is highly task-specific: in some settings it is driven by the enormous dataset sizes, in others by model complexity or by real-time performance requirements. Making task-appropriate algorithm and platform choices for large-scale machine learning requires understanding the benefits, trade-offs and constraints of the available options. Solutions presented in the book cover a range of parallelization platforms from FPGAs and GPUs to multi-core systems and commodity clusters, concurrent programming frameworks including CUDA, MPI, MapReduce and DryadLINQ, and learning settings (supervised, unsupervised, semi-supervised and online learning). Extensive coverage of parallelization of boosted trees, SVMs, spectral clustering, belief propagation and other popular learning algorithms and deep dives into several applications make the book equally useful for researchers, students and practitioners.
  • 数据结构与算法分析

    作者:韦斯(Mark Allen Weiss)

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

    作者:Donald E.Knuth

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

    作者:W.Bruce Croft,Donald

    本书介绍了信息检索(IR)中的关键问题,以及这些问题如何影响搜索引擎的设计与实现,并且用数学模型强化了重要的概念。对于网络搜素引擎这一重要的话题,书中主要涵盖了在网络上广泛使用的搜索技术。 本书适用于高等院校计算机科学或计算机工程专业的本科生、研究生,对于专业人士而言,本书也不失为一本理想的入门教材。
  • Physically Based Rendering, Second Edition

    作者:Matt Pharr,Greg Hump

  • 数字图像处理

    作者:[美]冈萨雷斯,[美]伍兹

    《数字图像处理(第3版)(英文版)》是数字图像处理经典著作,作者在对32个国家的134个院校和研究所的教师、学生及自学者进行广泛调查的基础上编写了第三版。除保留了第二版的大部分主要内容外,还根据收集的建议从13个方面进行了修订,新增400多幅图像、200多个图表和80多道习题,同时融入了近年来本科学领域的重要发展,使《数字图像处理(第3版)(英文版)》具有相当的特色与先进性。全书分为12章,包括绪论、数字图像基础、灰度变换与空间滤波、频域滤波、图像复原与重建、彩色图像处理、小波及多分辨率处理、图像压缩、形态学图像处理、图像分割、表现与描述、目标识别。
  • 可视化数据

    作者:Ben Fry

    这是一本关于计算信息设计的书籍。从如何获取原始数据开始,到如何理解原始数据,本书都作了非常详尽的介绍。书中使用由作者开发的开源编程环境Processing编程,它非常简单易用。对于熟悉Java的程序员来说,本书后面的章节还介绍了如何将Processing和Java结合使用。 本书是写给那些拥有一个数据集合,好奇如何探索它,并且考虑如何交流这些数据的人们的。随着我们处理越来越多的信息,需要可视化数据的人的数量增长非常迅速。更重要的是,读者已经超越了某些可视化领域的专家。通过让更大范围的人接触到可视化思想,在接下来的几十年中应该可以看到一些真正让人惊叹的成果。
  • 随机算法

    作者:Rajeev Motwani,Prabh

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

    作者:霍普克罗夫特 (John E.Hopcr

    自动机理论、语言和计算导论(原书第3版),ISBN:9787111240358,作者:(美)霍普克罗夫特(Hopcroft,J.E) 等著;孙家骕 等译
  • 图解密码技术

    作者:[日] 结城浩

    本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。 第一部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第二部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第三部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技术在现实生活中的应用。
  • 计算的本质

    作者:[英] Tom Stuart

    《计算的本质:深入剖析程序和计算机》借助Ruby全面介绍计算理论和编程语言的设计。作者注重实用性,不仅尽量抛开复杂难懂的数学符号,而且特别选用简单快捷的编程语言Ruby,在读者熟知的背景知识下,以明晰的可工作代码阐明形式语义、自动机理论,以及通过lambda演算进行函数式编程等计算机科学知识,并为让其自行探索做足准备。 本书适合计算机科学系学生,以及熟知现代编程语言,想要系统地学习计算机科学知识的程序员、软件工程师阅读参考。
  • 比特币

    作者:李钧,长铗

    2009年,比特币诞生。比特币是一种通过密码编码,在复杂算法的大量计算下产生的电子货币。虽然是虚拟货币,比特币却引起了前所未有的全球关注热潮。 这一串凝结着加密算法与运算能力的数字不仅可以安全流通、换取实物,1比特币价值甚至曾高达8 000元人民币。有研究者认为比特币具备打破几千年来全球货币由国家垄断发行的可能性。在不经意间,比特币引起的金融新浪潮已悄然成型。 虚拟货币并不是新鲜事物,为什么只有比特币受到如此追捧?它激烈变动的价格行情更让投资者们担心:比特币的合理价格到底是多少?其价格的支撑体系又在哪里?如此剧烈的上下波动是不是预示着它的不稳定直至最终崩盘? 作为国内首批参与并研究比特币的开拓者,《比特币:一个虚幻而真实的金融世界》作者们对这些问题都有着深刻的理解。本书从介绍比特币的概念出发,全面、系统地阐述了比特币的起源、发展、技术原理、生态圈等关键问题,还大胆畅想了比特币的现实应用、未来前景。 《比特币:一个虚幻而真实的金融世界》坦然面对比特币引发的种种争议,针对政府、货币体系等问题,以开放的态度、翔实的资料与读者交流,深入探讨比特币改变全球现行货币体系,朝货币发行非国家化的方向前进的可能性,揭示了比特币对现实金融业,甚至对未来世界的影响。 《比特币:一个虚幻而真实的金融世界》讲述的是一场伟大的货币实验,及一个虚幻而真实的金融世界。如何认识与思考这一实验,有助于理解互联网时代金融世界的逻辑。
  • 自然计算:DNA、量子比特和智能机器的未来

    作者:[美]丹尼斯·萨莎 凯茜·拉瑟

    《自然计算:DNA、量子比特和智能机器的未来》介绍了16位致力于解决计算领域前沿问题的科学家,他们分别在科学、工程金融等领域从事极富挑战性的工作。《自然计算:DNA、量子比特和智能机器的未来》记录了与这些科学家的对话内容,描绘了新的计算机架构和丰富多彩的新型软件技术。书中每章自成一体,揭示了这些科学家独特的探索之路;同时,还介绍了作者写作过程中产生的一系列奇思妙想,这些思想注定会让这个世界变得更好。 《自然计算:DNA、量子比特和智能机器的未来》适合所有对未来智能机器及未来计算感兴趣的读者阅读。
  • 算法谜题

    作者:Anany Levitin,Maria

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

    作者:[奥地利] Dietmar Jannac

    编辑推荐: 通过对本书的学习,读者不仅可以全面系统地了解该领域的基础原理,还能试验如何搭建一套真正的推荐系统。 —— 百度主任架构师、百度技术委员会主席 廖若雪 本书比较全面地介绍了推荐系统涉及的相关知识点,很适合对于推荐系统感兴趣的相关人员作为入门教程,目前能够系统全面介绍相关技术的中文书籍还显得匮乏,相信这本译著对于缓解这种情况大有裨益。 ——新浪微博数据挖掘技术专家 张俊林 本书不但介绍了比较成熟的经典算法,还介绍了最近几年的一些新进展,并辅之以实际应用的案例介绍。希望看到越来越多的朋友加入到推荐引擎的研究和应用中来! ——百分点信息科技有限公司首席运营官兼技术副总裁 张韶峰 由蒋凡执笔翻译的这本《推荐系统》是一本从基础介绍推荐引擎的难得的好书,给人启迪良多。愿越来越多的互联网爱好者认真阅读本书,走在互联网发展大潮的前沿,成为下一代互联网产品真正需要的人才。 ——人民搜索商务搜索部总监 常兴龙 读者评价: 这是迄今为止市面上所有讲推荐系统的书中最全面、最实用的一本入门指南。如果你是教这门课的大学老师,万万不能错过这本“推荐系统大全”。尤其值得称道的是,这本书广泛涵盖了不同类型的推荐系统,并对它们逐一进行了鞭辟入里、细致入微的剖析。虽然这本书定位于初中级读者,但是我认为即使是经验丰富的专业人员,也会在其中发现新鲜有趣的内容。 ——Robin Burke, 芝加哥德保罗大学教授 本书涵盖了推荐系统领域的全部知识,并为应对未来新的挑战提供了前瞻性建议。书中全面解释了一系列生成推荐的经典算法和方法,概述了源自社交计算和语义网的新手段对推荐系统的作用。希望这本书能够点燃你的激情,释放你的创造力和进取精神,把推荐系统的研究与应用推向新的高度。 ——Joseph A. Konstan, 美国明尼苏达大学教授 内容简介: 本书全面阐述了开发最先进推荐系统的方法,其中呈现了许多经典算法,并讨论了如何衡量推荐系统的有效性。书中内容分为基本概念和最新进展两部分:前者涉及协同推荐、基于内容的推荐、基于知识的推荐、混合推荐方法,推荐系统的解释、评估推荐系统和实例分析;后者包括针对推荐系统的攻击、在线消费决策、推荐系统和下一代互联网以及普适环境中的推荐。此外,本书还包含大量的图、表和示例,有助于读者理解和把握相关知识。 本书适用于从事搜索引擎、推荐算法、数据挖掘等研发工作的专业人员以及对推荐系统感兴趣的读者。
  • 复杂性思考

    作者:Allen B. Downey

    本书的灵感来源于无聊与迷恋的感觉:对常规的数据结构与算法介绍的无聊,对复杂系统的迷恋。数据结构的问题在于教师在教授这门课程的时候通常不会调动起学生的积极性;复杂性科学的问题在于学校通常不会教授这门课程。 2005年,我在欧林学院讲授了一门新课程,学生要阅读关于复杂性的主题,使用Python进行实验,并学习算法与数据结构。当我在2008年再次讲授这门课程时,我写了本书的初稿。 在2011年第3次讲授这门课程时,我准备出版该书并邀请学生们以案例研究的形式提交其工作成果并包含在书中。我在欧林学院找了9位教授成立了项目委员会,选择可供出版的报告。符合标准的案例研究被纳入到本书中。我们将在下一版吸纳来自读者的更多稿件(参见附录A)。 对教师的建议 本书可以用作Python编程与算法的大学中级课程教材。我的教学遵循如下结构: 阅读 复杂性科学涵盖了各种主题。这些主题之间相互关联,但需要花费不少时间才能搞清楚这些联系。为了帮助学生们看到全景,我会向他们介绍一些阅读列表,这些都来自于该领域最流行的研究成果。我的阅读列表以及关于如何使用它的建议在附录B中。 练习 本书提供了一系列练习;很多练习都要求学生重新实现一些开创性实验并对其进行扩展。复杂性吸引人的一个地方在于我们可以通过适当的编程技能与数学知识接触研究前沿。 讨论 书中的主题提出了关于科学哲学的问题,这需要学生们进一步阅读并进行课堂讨论。 案例研究 在我的课堂上,我们将几乎半个学期的时间都用在了案例研究上。学生们经由构思产生过程、形成团队,并在一系列实验上花费6~7周的时间,然后以4~6页可发表的报告形式来呈现其工作成果。 可以通过https://sites.google.com/site/compmodolin了解课程大纲与我的说明。 对自学者的建议 在2009~2010年,我作为Google的一名访问学者在其剑桥办公室工作。在与我共事的软件工程师中,让我印象深刻的一点是他们广博的求知欲以及增长知识与技能的动力。 我希望本书能够帮助像他们一样的人们来探索他们可能遇不到的一些主题与想法,练习Python编程技能,以及学习关于数据结构与算法的更多知识(或者看看有哪些内容不适合放在第1版中)。 本书针对自学者的一些特点有: 技术深度
  • 大数据

    作者:Anand Rajaraman,Jeff

    大数据:互联网大规模数据挖掘与分布式处理,ISBN:9787115291318,作者:(美) Anand Rajaraman (美) Jeffrey David Ullman 著,王 斌 译
  • 计算机图形学与几何造型导论

    作者:戈德曼

    《世界著名计算机教材精选:计算机图形学与几何造型导论》是世界著名计算机教材精选之一。《世界著名计算机教材精选:计算机图形学与几何造型导论》共四部分三十章节,内容包括乌龟绘图,应用递归乌龟程序生成分形,分形的奇特性质,仿射变换,仿射几何:二维计算机图形学的连点过程,应用迭代函数系统生成分形,不动点定理及其推论,递归乌龟程序与共形迭代函数系统等。《世界著名计算机教材精选:计算机图形学与几何造型导论》可作为高等学校高年级本科生和研究生的教材,亦可作为相关学科研究人员和技术人员的参考用书。