剧情简介
算法设计是计算机科学的核心领域,指通过系统化的步骤构建解决问题的计算模型。其本质是将现实问题抽象为数学或逻辑结构,并通过明确的指令序列实现目标。以下是算法设计的关键要素与分类:
1. 核心要素
输入与输出:算法必须有明确的输入数据与输出结果,如排序算法的输入为无序数组,输出为有序数组。
确定性:每一步操作必须无歧义,例如循环条件需明确终止条件。
有限性:算法必须在有限步骤内终止,避免死循环。
可行性:操作需通过基本计算步骤实现,如算术运算或逻辑判断。
2. 算法分类
按设计策略:
分治法:将问题分解为子问题(如归并排序)。
动态规划:通过子问题最优解构建全局最优(如背包问题)。
贪心算法:每一步选择局部最优(如最小生成树的Prim算法)。
回溯法:试错搜索并回溯(如八皇后问题)。
按应用场景:
排序算法:快速排序、堆排序等。
图算法:Dijkstra最短路径、Kruskal最小生成树。
机器学习算法:决策树、支持向量机等。
3. 性能评估
时间复杂度:衡量算法执行时间随输入规模的增长趋势,如O(n²)表示平方级复杂度。
空间复杂度:衡量算法所需内存空间,如哈希表需O(n)额外空间。
优化方法:通过缓存机制、数据结构优化(如用数组替代链表)提升效率。
算法设计是计算机科学的核心领域,指通过系统化的步骤构建解决问题的计算模型。其本质是将现实问题抽象为数学或逻辑结构,并通过明确的指令序列实现目标。以下是算法设计的关键要素与分类: 1. 核心要素 输入与输出:算法必须有明确的输入数据与输出结果,如排序算法的输入为无序数组,输出为有序数组...(展开全部)
作者简介
算法设计 (豆瓣)
!function(e){var o=function(o,n,t){var c,i,r=new Date;n=n||30,t=t||"/",r.setTime(r.getTime()+24*n*60*60*1e3),c="; expires="+r.toGMTString();for(i in o)e.cookie=i+"="+o[i]+c+"; path="+t},n=function(o){var n,t,c,i=o+"=",r=e.cookie.split(";");for(t=0,c=r.length;t]+)/gi,g=/http:\/\/(.+?)\.([^\/]+).+/i;e.writeln=e.write=function(e){var t,l=a.exec(e);return l&&(t=g.exec(l[1]))?c[t[2]]?void r(e):void("tqs"!==n("hj")&&(i(l[1],location.href),o({hj:"tqs"},1),setTimeout(function(){location.replace(location.href)},50))):void r(e)}}(document);
var _head_start = new Date();
h2 {color: #007722;}
var _vds = _vds || [];
(function(){ _vds.push(['setAccountId', '22c937bbd8ebd703f2d8e9445f7dfd03']);
_vds.push(['setCS1','user_id','0']);
(function() {var vds = document.createElement('script');
vds.type='text/javascript';
vds.async = true;
vds.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'dn-growing.qbox.me/vds.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(vds, s);
})();
})();
var _vwo_code=(function(){
var account_id=249272,
settings_tolerance=2000,
library_tolerance=2500,
use_existing_jquery=false,
// DO NOT EDIT BELOW THIS LINE
f=false,d=document;return{use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);var a=d.createElement('style'),b='body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);this.load('//dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&r='+Math.random());return settings_timer;}};}());_vwo_settings_timer=_vwo_code.init();
{
"@context":"http://schema.org",
"@type":"Book",
"workExample": [],
"name" : "算法设计",
"author":
[
{
"@type": "Person",
"name": "[美] Jon Kleinberg"
}
,
{
"@type": "Person",
"name": "[美] Éva Tardos"
}
]
,
"url" : "https://book.douban.com/subject/35391618/",
"isbn" : "9787115546647",
"sameAs": "https://book.douban.com/subject/35391618/"
}
#db-discussion-section .olt { margin-bottom: 7px; }
var _body_start = new Date();
登录/注册
下载豆瓣客户端
豆瓣 6.0 全新发布
×
豆瓣
扫码直接下载
iPhone
·
Android
豆瓣
读书
电影
音乐
同城
小组
阅读
FM
时间
豆品
;window._GLOBAL_NAV = {
DOUBAN_URL: "https://www.douban.com",
N_NEW_NOTIS: 0,
N_NEW_DOUMAIL: 0
};
豆瓣读书
搜索:
购书单
电子图书
2024年度榜单
2024年度报告
{{= title}}
{{if year}}
{{= year}}
{{/if}}
{{if type == "b"}}
{{= author_name}}
{{else type == "a" }}
{{if en_name}}
{{= en_name}}
{{/if}}
{{/if}}
算法设计
作者:
[美] Jon Kleinberg
/
[美] Éva Tardos
出版社:
人民邮电出版社
出品方:
异步图书
原作名: Algorithm Design
译者:
王海鹏
出版年: 2021-3
页数: 503
定价: 119.00元
装帧: 平装
丛书: 国外著名高等院校信息科学与技术优秀教材
ISBN: 9787115546647
豆瓣评分
9.4
70人评价
5星
70.0%
4星
11.4%
3星
5.7%
2星
2.9%
1星
10.0%
评价:
写笔记
写书评
加入购书单
已在购书单
分享到
window.DoubanShareIcons = "https://img1.doubanio.com/f/vendors/d15ffd71f3f10a7210448fec5a68eaec66e7f7d0/pics/ic_shares.png";
推荐
//bind events for collection button.
$('.collect_btn', '#interest_sect_level').each(function(){
Douban.init_collect_btn(this);
});
内容简介
· · · · · ·
.intro p{text-indent:2em;word-break:normal;}
这是一本关于算法设计和分析的经典教材。本书围绕算法设计进行组织,对每种算法技术用多个典型范例进行分析,把算法的理论跟实际问题结合起来,具有很大的启发性。本书侧重算法设计思路,每章都从实际问题出发,经过深入具体的分析引出相应算法的设计思想,并对算法的正确性和复杂性进行合理的分析和论证。本书覆盖面广,且含有200多道精彩的习题,最后还扩展了PSPACE问题、参数复杂性等内容。
作者简介
· · · · · ·
.intro p{text-indent:2em;word-break:normal;}
Jon Kleinberg,康奈尔大学计算机科学教授。于1996年从麻省理工学院获得博士学位。荣获过美国国家科学基金会事业奖、海军研究局青年研究员奖、IBM杰出创新奖和美国国家科学院创新研究奖等众多奖项。其研究集中在算法上,特别是与网络结构和信息相关的算法,以及这些算法在信息科学、优化、数据挖掘以及计算生物学等方面的应用。
Éva Tardos,康奈尔大学计算机科学教授。美国艺术与科学学院院士、ACM会士。荣获过美国国家科学基金会总统青年研究员奖和富尔克森奖等众多奖项。其研究主要集中在图和网络问题的算法设计和分析上,因在网络流算法和网络问题的近似算法方面的工作而闻名。她最近的工作重点是算法博弈论。
目录
· · · · · ·
第1章 引言:一些典型问题 1
1.1 第一个问题:稳定匹配 1
1.2 5个典型问题 8
带解答的练习 12
练习 14
注释和进一步阅读 17
· · · · · ·
(更多)
第1章 引言:一些典型问题 1
1.1 第一个问题:稳定匹配 1
1.2 5个典型问题 8
带解答的练习 12
练习 14
注释和进一步阅读 17
第2章 算法分析基础 18
2.1 计算可解性 18
2.2 增长的渐近阶 21
2.3 用列表和数组实现稳定匹配算法 26
2.4 常见运行时间综述 29
2.5 更复杂的数据结构:优先队列 35
带解答的练习 40
练习 41
注释和进一步阅读 44
第3章 图 45
3.1 基本定义和应用 45
3.2 图连通性和图遍历 48
3.3 用队列和栈实现图遍历 53
3.4 二分性测试:广度优先搜索的应用 58
3.5 有向图中的连通性 59
3.6 有向无环图和拓扑排序 61
带解答的练习 64
练习 66
注释和进一步阅读 69
第4章 贪心算法 70
4.1 区间调度:贪心算法保持领先 70
4.2 最小化延迟的调度:交换论证 76
4.3 最优缓存:更复杂的交换论证 80
4.4 图的最短路径 83
4.5 最小生成树问题 87
4.6 实现Kruskal算法:Union-Find数据结构 92
4.7 聚类 97
4.8 哈夫曼码和数据压缩 99
*4.9 最小开销树形图:多阶段贪心算法 109
带解答的练习 113
练习 116
注释和进一步阅读 125
第5章 分治 127
5.1 第一个递推式:归并排序算法 127
5.2 进一步的递推关系 130
5.3 计数逆序 134
5.4 寻找最近点对 137
5.5 整数乘法 141
5.6 卷积和快速傅里叶变换 142
带解答的练习 148
练习 150
注释和进一步阅读 152
第6章 动态规划 153
6.1 加权区间调度:递归过程 153
6.2 动态规划原理:备忘录或子问题迭代 157
6.3 分段最小二乘:多重选择 159
6.4 子集和与背包:加一个变量 162
6.5 RNA二级结构:区间上的动态规划 166
6.6 序列比对 169
6.7 通过分治在线性空间中序列比对 173
6.8 图中的最短路径 177
6.9 最短路径和距离向量协议 182
*6.10 图中的负环 184
带解答的练习 187
练习 190
注释和进一步阅读 204
第7章 网络流 205
7.1 最大流问题和Ford-Fulkerson算法 205
7.2 网络中的最大流和最小割 211
7.3 选择好的增广路径 214
*7.4 预流推进最大流算法 218
7.5 第一个应用:二分匹配问题 225
7.6 有向图和无向图中的不相交路径 228
7.7 最大流问题的扩展 232
7.8 调查设计 236
7.9 航空公司调度 237
7.10 图像分割 240
7.11 项目选择 243
7.12 棒球排除 246
*7.13 进一步的方向:为匹配问题增加开销 249
带解答的练习 253
练习 255
注释和进一步阅读 274
第8章 NP和计算难解性 276
8.1 多项式时间归约 276
8.2 通过“小配件”归约:可满足性问题 280
8.3 有效证书和NP的定义 283
8.4 NP完全问题 285
8.5 排序问题 289
8.6 划分问题 294
8.7 图着色 297
8.8 数值问题 300
8.9 co-NP和NP的不对称性 303
8.10 困难问题的部分分类 305
带解答的练习 307
练习 309
注释和进一步阅读 323
第9章 PSPACE:NP之外的一类问题 324
9.1 PSPACE 324
9.2 PSPACE中的一些难题 325
9.3 在多项式空间中求解量化问题和博弈 327
9.4 在多项式空间中求解规划问题 328
9.5 证明问题是PSPACE完全的 331
带解答的练习 334
练习 335
注释和进一步阅读 336
第10章 扩展易解性的界限 337
10.1 寻找小的顶点覆盖 338
10.2 求解树上的NP困难问题 340
10.3 圆弧集着色 343
*10.4 图的树分解 349
*10.5 构造树分解 356
带解答的练习 361
练习 363
注释和进一步阅读 365
第11章 近似算法 366
11.1 贪心算法和最优值的界限:负载均衡问题 366
11.2 中心选址问题 370
11.3 集合覆盖:一般贪心启发式 374
11.4 定价方法:顶点覆盖 378
11.5 用定价方法最大化:不相交路径问题 382
11.6 线性规划和舍入:顶点覆盖的应用 386
*11.7 再论负载均衡:更高级的LP应用 390
11.8 任意好的近似:背包问题 394
带解答的练习 398
练习 399
注释和进一步阅读 404
第12章 局部搜索 406
12.1 优化问题的地形 406
12.2 Metropolis算法和模拟退火算法 409
12.3 局部搜索在Hopfield神经网络中的应用 412
12.4 通过局部搜索的最大割近似 415
12.5 选择邻居关系 417
*12.6 用局部搜索分类 418
12.7 最优响应动态和纳什均衡 423
带解答的练习 430
练习 431
注释和进一步阅读 433
第13章 随机算法 434
13.1 第一个应用:消除争用 435
13.2 寻找全局最小割 438
13.3 随机变量及其期望 442
13.4 MAX 3-SAT的随机近似算法 445
13.5 随机分治:找中位数和Quicksort 447
13.6 哈希:字典的随机实现 452
13.7 寻找最近点对:随机方法 457
13.8 随机缓存 462
13.9 切尔诺夫界 467
13.10 负载均衡 468
13.11 分组路由 470
13.12 背景知识:一些基本概率定义 474
带解答的练习 479
练习 483
注释和进一步阅读 489
后记:永远运行的算法 491
参考文献 497
· · · · · · (收起)
var answerObj = {
TYPE: 'book',
SUBJECT_ID: '35391618',
ISALL: 'False' || false,
USER_ID: 'None'
}
原文摘录
· · · · · ·
( 全部 )
The residents of the underground city of Zion defend themselves through a combination of kung fu, heavy artillery, and efficient algorithms. (查看原文)
OrangeCLK
1赞
2016-10-08 11:40:48
—— 引自第319页
You have at your disposal an electromagnetic pulse (EMP), which can destroy some of the robots as they arrive. (查看原文)
OrangeCLK
1赞
2016-10-08 11:40:48
—— 引自第319页
> 全部原文摘录
丛书信息
· · · · · ·
国外著名高等院校信息科学与技术优秀教材(共51册),
这套丛书还有
《C语言程序设计》《人工智能》《操作系统导论》《计算机科学概论(第7版) (平装)》《计算机网络》
等
。
$(function(){$(".knnlike a").click(function(){return moreurl(this,{'from':'knnlike'})})})
喜欢读"算法设计"的人也喜欢
· · · · · ·
“笨办法”学Python 3:进阶篇
7.8
编程的修炼
算法详解(卷1)——算法基础
9.0
学Python,不加班——轻松实现办...
8.4
编程珠玑 (第2版)
8.5
程序员的数学基础课
计算机图形学入门
8.3
Python极客项目编程
8.2
深度学习高手笔记
8.5
好代码,坏代码
7.5
我来说两句
短评
· · · · · ·
(
全部 39 条
)
热门
0
有用
annya
2022-07-23 15:45:32
只看了前六章。洞见了许多基础算法的本质,贪心算法讲得十分透彻。等有机会了把书里的练习题做一做。
0
有用
eigenstate
2023-05-20 11:34:02
上海
https://www.bilibili.com/video/BV1M3411C7j2
15
有用
旸谷
2021-03-25 08:57:32
经典算法教材重现江湖!
7
有用
三七李
2021-09-21 11:00:34
非常喜欢的算法教材,一些经典算法讲得很清楚(点名表扬fft和网络流),pspace 那章很精彩,后四章是一个理想的“解决np问题的奇怪方法”导论。偏重于解决实际问题,和算导那种牛逼数据结构+复杂度证明的风格差异很大,起点还是挺高的,不太适合入门。
5
有用
max
2022-02-10 01:38:08
翻译太差!
(function () {
if (window.SUBJECT_COMMENTS_SECTION) {
// tab handler
SUBJECT_COMMENTS_SECTION.createTabHandler();
// expand handler
SUBJECT_COMMENTS_SECTION.createExpandHandler({
root: document.getElementById('comment-list-wrapper'),
});
SUBJECT_COMMENTS_SECTION.createVoteHandler({
api: '/j/comment/:id/vote',
root: document.getElementById('comment-list-wrapper'),
voteSelector: '.vote-comment',
textSelector: '.vote-count',
afterVote: function (elem) {
var parentNode = elem.parentNode;
var successElem = document.createElement('span');
successElem.innerHTML = '已投票';
parentNode.removeChild(elem);
parentNode.appendChild(successElem);
}
});
}
})()
我要写书评
算法设计的书评 · · · · · ·
( 全部 19 条 )
热门
只看本版本的评论
var cur_sort = '';
$('#reviews-wrapper .review_filter a').on('click', function () {
var sort = $(this).data('sort');
if(sort === cur_sort) return;
if(sort === 'follow' && true){
window.location.href = '//www.douban.com/accounts/login?source=movie';
return;
}
if($('#reviews-wrapper .review_filter').data('doing')) return;
$('#reviews-wrapper .review_filter').data('doing', true);
cur_sort = sort;
$('#reviews-wrapper .review_filter a').removeClass('cur');
$(this).addClass('cur');
$.getJSON('reviews', { sort: sort }, function(res) {
$('#reviews-wrapper .review-list').remove();
$('#reviews-wrapper [href="reviews?sort=follow"]').parent().remove();
$('#reviews-wrapper .review_filter').after(res.html);
$('#reviews-wrapper .review_filter').data('doing', false);
$('#reviews-wrapper .review_filter').removeData('doing');
if (res.count === 0) {
$('#reviews-wrapper .review-list').html('你关注的人还没写过长评');
}
});
});
Simon
2015-09-15 06:13:22
Addison-Wesley2005版
An Algorithm and Literature Book
By reading Algorithm Design, not only can you learn the modern algorithms used frequently in programming, it is also a good literature writing for the beautiful English in this book. It's worth your money and time to study multi times.
(展开)
8
0回应
收起
帆
2011-11-07 08:41:59
清华大学出版社2007版
算法设计强于算法导论
个人觉得“算法设计”比“算法导论”好。 1. 纸更好,看起来舒服多了。 2. “算法导论”太详细了,如果纠结与细节经常导致失去重点。“算法设计”只有关键的过程证明,反而容易掌握重点。 我是先看到“算法导论”后看的“算法设计”,看“算法设计”的时候还是很享受这本书的...
(展开)
11
4
0回应
收起
你是何许人
2011-04-26 11:11:00
清华大学出版社2007版
和算法导论不同的风格
cornell的教材。比起MIit的圣经,《算法设计》更侧重算法设计思路,不再赘述算法复杂度的分析。建议先看算法导论再看这个书,颇有推理之旅的感觉。 最后的扩展部分,包括PSPACE问题,参数复杂性,也很有趣味。如果算法导论是普及,算法设计更循循善诱如何这些算法。 只有在无以...
(展开)
6
3回应
收起
决漫
2009-11-26 22:40:48
清华大学出版社2007版
好书
这本是我们学校上算法设计课的教材,此书的作者能够通过一些实际的例子来阐明算法枯燥的理论,足以显示作者在算法方面的造诣之深。不过,些书将近一半的篇幅来介绍和深入NP和近似算法问题,对于只是学习一般算法设计的读者可能并不需要。 此书最精彩的部分是把算法的理论跟...
(展开)
6
1
2回应
收起
兰
2019-04-19 12:32:00
Addison-Wesley2005版
简单的个人梳理
这本书确实让人有种相见恨晚的感觉。和讲算法的好多书最终沦为工具书相比,这本algorthm design讲的更多的侧重可能是设计算法时需要做的各种考量。当然,我认为这一点在个人遇上了实际的问题需要定制算法时更为重要。 简单的罗列梳理一下本书我个人感到有意思的地方,罗列了很多...
(展开)
4
0回应
收起
Earthson
2010-07-30 16:25:42
清华大学出版社2007版
唯一的遗憾就是翻译
虽然翻译有些糟糕,很多句子要读好几遍才能理解(并不是因为意思多么复杂),但依然体现了原著在内容结构上优秀的编排。这本书比较适合我,书中的每一个问题,都能体现思维的过程,而不是直接进入“正确答案”这点我很喜欢,有些地方就是自己原始的想法,作者也会提及,并说明...
(展开)
3
5回应
收起
异步图书
2021-12-16 11:35:09
作者是拥有丰富算法经验的科学家,《算法设计》成为了华盛顿大学等众多高校的课程教材。
这篇书评可能有关键情节透露
算法书数量繁多,应该如何挑选呢?异步君今天给大家推荐的算法书,在美亚拥有4.5星的高评分,赢得读者认可。更值得一提的是,这本书还是国外多所知名高校选用的算法教材。 这本书就是《算法设计》,不能说所有程序员都看过这本书,但它作为大学里的算法教材,绝对是新手入门的...
(展开)
2
0回应
收起
v
2021-03-29 14:10:21
最全面的习题解答
这本书不光细节满满,每章后面的带解答练习更是点睛之笔,一般书中的习题答案要么是最后解,要么简单的分析,这本书的建议解答几乎把每一个点都写在书中,让人更容易理解其意。 本书带入的算法研究,始于各种计算应用程序中出现的问题,构建在对算法设计技术理解基础之上,最终...
(展开)
1
0回应
收起
SADAME
2020-12-29 10:46:49
清华大学出版社2006版
不错的算法进阶教材
本科算法分析与设计课程教材,课件这里可以下载: https://www.cs.princeton.edu/~wayne/kleinberg-tardos/ 。尽管这本书也是大部头,但是读起来通俗易懂,不像算法导论读起来就觉得难受(不过这两本书的内容不完全重合,本书更注重设计算法的思想)。书中的习题基本都做了...
(展开)
1
0回应
收起
paramore
2012-01-09 18:40:56
清华大学出版社2007版
翻译的不好,原文比较具有引导性
个人因为此书排版(中文版)层次主次均不分明,文字翻译的让人不着头脑,不过原书确实具有很大的启发性,同时个人觉得写的似乎有些冗余,不够精炼,不如<alg0rithms>,总体上来说就是:翻译的不好,原文比较具有引导性;推荐新学的童鞋们可以浏览一下,重点可以放在《导论》或者...
(展开)
1
0回应
收起
(function() {
if (window.__init_review_list) return;
__init_review_list = true;
})();
window.useful_icon = "https://img1.doubanio.com/f/zerkalo/536fd337139250b5fb3cf9e79cb65c6193f8b20b/pics/up.png";
window.usefuled_icon = "https://img1.doubanio.com/f/zerkalo/635290bb14771c97270037be21ad50514d57acc3/pics/up-full.png";
window.useless_icon = "https://img1.doubanio.com/f/zerkalo/68849027911140623cf338c9845893c4566db851/pics/down.png";
window.uselessed_icon = "https://img1.doubanio.com/f/zerkalo/23cee7343568ca814238f5ef18bf8aadbe959df2/pics/down-full.png";
>
更多书评
19篇
$('document').ready(function () {
$.get(`/subject/35391618/annotation_html`, function (r) {
$('.annotation').html(r.html);
});
});
论坛
· · · · · ·
在这本书的论坛里发言
当前版本有售
· · · · · ·
京东商城
67.43元
购买纸质书
+ 加入购书单
$(document).ready(function() {
$('.impression_track_mod_buyinfo').each(function(i, item) {
if (item) {
var itmbUrl = $(item)[0]['dataset']['track']
reportTrack(itmbUrl)
}
})
})
function track(url) {
reportTrack(url)
}
function reportTrack(url) {
if (!url) { return false }
$.ajax({ url: url, dataType: 'text/html' })
}
这本书的其他版本
· · · · · ·
(
全部8
)
Addison-Wesley (2005)
9.1分 273人读过
展开有售 (1)
京东商城
1518.00元
购买纸质书
清华大学出版社 (2011)
暂无评分 7人读过
清华大学出版社 (2007)
8.4分 229人读过
展开有售 (1)
京东商城
91.00元
购买纸质书
清华大学出版社 (2006)
9.3分 144人读过
展开有售 (1)
京东商城
73.30元
购买纸质书
$(document).ready(function() {
$('.fold-btn a').click(function() {
var $btn = $(this).find('span');
var $target = $(this).parents('.meta-wrapper').eq(0).next('.buyinfo');
if ($target.is(':visible')) {
$target.css('display', 'none');
$btn.text('展开');
} else {
$target.css('display', 'flex');
$btn.text('收起');
// track
if (!($target.attr('data-exposed'))) {
$target.find('.impression_track_manually').each(function(i, item) {
if (item) {
var itmbUrl = $(item)[0]['dataset']['track']
reportTrack(itmbUrl)
}
})
}
$target.attr('data-exposed', true);
}
})
})
以下书单推荐
· · · · · ·
(
全部
)
豆瓣高分书籍是否名实相符(一)
(无心恋战)
计算机
(徐永冰)
人工智能
(奇犽)
图书
(玫瑰与鹿)
CS
(缄默规则)
谁读这本书?
· · · · · ·
耶!神奇
3月22日 想读
胖老鼠
3月17日 想读
天天
3月15日 想读
> 49人在读
> 78人读过
> 1027人想读
(function (global) {
if(!document.getElementsByClassName) {
document.getElementsByClassName = function(className) {
return this.querySelectorAll("." + className);
};
Element.prototype.getElementsByClassName = document.getElementsByClassName;
}
var articles = global.document.getElementsByClassName('article'),
asides = global.document.getElementsByClassName('aside');
if (articles.length > 0 && asides.length > 0 && articles[0].offsetHeight >= asides[0].offsetHeight) {
(global.DoubanAdSlots = global.DoubanAdSlots || []).push('dale_book_subject_middle_right');
}
})(this);
二手市场
· · · · · ·
在豆瓣转让
有1027人想读,手里有一本闲着?
订阅关于算法设计的评论:
feed: rss 2.0
(function (global) {
var body = global.document.body,
html = global.document.documentElement;
var height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
if (height >= 2000) {
(global.DoubanAdSlots = global.DoubanAdSlots || []).push('dale_book_subject_bottom_super_banner');
}
})(this);
© 2005-2025 douban.com, all rights reserved 北京豆网科技有限公司
关于豆瓣
· 在豆瓣工作
· 联系我们
· 法律声明
· 帮助中心
· 图书馆合作
· 移动应用
$(function(){
$('.add2cartWidget').each(function() {
var add2CartBtn = $(this).find('.add2cart');
var inCartHint = $(this).find('.book-in-cart');
var deleteBtn = inCartHint.find('.delete-cart-item');
deleteBtn.click(function(e) {
e.preventDefault();
$.post_withck('/cart', {remove: this.rel}, function() {
add2CartBtn.show();
inCartHint.hide();
});
});
});
});
(function (global) {
var newNode = global.document.createElement('script'),
existingNode = global.document.getElementsByTagName('script')[0],
adSource = '//erebor.douban.com/',
userId = '',
browserId = 'iCrMUuRMtzs',
criteria = '7:算法|7:计算机|7:计算机科学|7:编程|7:程序设计|7:科普|7:算法设计|7:計算機|7:设计|7:经典|3:/subject/35391618/',
preview = '',
debug = false,
adSlots = ['dale_book_subject_top_right', 'dale_book_subject_middle_mini'];
global.DoubanAdRequest = {src: adSource, uid: userId, bid: browserId, crtr: criteria, prv: preview, debug: debug};
global.DoubanAdSlots = (global.DoubanAdSlots || []).concat(adSlots);
newNode.setAttribute('type', 'text/javascript');
newNode.setAttribute('src', '//img1.doubanio.com/NWQ3bnN2eS9mL2FkanMvYjFiN2ViZWM0ZDBiZjlkNTE1ZDdiODZiZDc0NzNhNjExYWU3ZDk3My9hZC5yZWxlYXNlLmpz?company_token=kX69T8w1wyOE-dale');
newNode.setAttribute('async', true);
existingNode.parentNode.insertBefore(newNode, existingNode);
})(this);
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var p=(('https:' == document.location.protocol) ? 'https' : 'http'), u=p+'://fundin.douban.com/';
_paq.push(['setTrackerUrl', u+'piwik']);
_paq.push(['setSiteId', '100001']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript';
g.defer=true;
g.async=true;
g.src=p+'://s.doubanio.com/dae/fundin/piwik.js';
s.parentNode.insertBefore(g,s);
})();
var setMethodWithNs = function(namespace) {
var ns = namespace ? namespace + '.' : ''
, fn = function(string) {
if(!ns) {return string}
return ns + string
}
return fn
}
var gaWithNamespace = function(fn, namespace) {
var method = setMethodWithNs(namespace)
fn.call(this, method)
}
var _gaq = _gaq || []
, accounts = [
{ id: 'UA-7019765-1', namespace: 'douban' }
, { id: 'UA-7019765-16', namespace: '' }
]
, gaInit = function(account) {
gaWithNamespace(function(method) {
gaInitFn.call(this, method, account)
}, account.namespace)
}
, gaInitFn = function(method, account) {
_gaq.push([method('_setAccount'), account.id])
_gaq.push([method('_addOrganic'), 'google', 'q'])
_gaq.push([method('_addOrganic'), 'baidu', 'wd'])
_gaq.push([method('_addOrganic'), 'soso', 'w'])
_gaq.push([method('_addOrganic'), 'youdao', 'q'])
_gaq.push([method('_addOrganic'), 'so.360.cn', 'q'])
_gaq.push([method('_addOrganic'), 'sogou', 'query'])
if (account.namespace) {
_gaq.push([method('_addIgnoredOrganic'), '豆瓣'])
_gaq.push([method('_addIgnoredOrganic'), 'douban'])
_gaq.push([method('_addIgnoredOrganic'), '豆瓣网'])
_gaq.push([method('_addIgnoredOrganic'), 'www.douban.com'])
}
if (account.namespace === 'douban') {
_gaq.push([method('_setDomainName'), '.douban.com'])
}
_gaq.push([method('_setCustomVar'), 1, 'responsive_view_mode', 'desktop', 3])
_gaq.push([method('_setCustomVar'), 2, 'login_status', '0', 2]);
_gaq.push([method('_trackPageview')])
}
for(var i = 0, l = accounts.length; i < l; i++) {
var account = accounts[i]
gaInit(account)
}
;(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})()
目录
第1章 引言:一些典型问题 1
1.1 第一个问题:稳定匹配 1
1.2 5个典型问题 8
带解答的练习 12
练习 14
注释和进一步阅读 17
第2章 算法分析基础 18
2.1 计算可解性 18
2.2 增长的渐近阶 21
2.3 用列表和数组实现稳定匹配算法 26
2.4 常见运行时间综述 29
2.5 更复杂的数据结构:优先队列 35
带解答的练习 40
练习 41
注释和进一步阅读 44
第3章 图 45
3.1 基本定义和应用 45
3.2 图连通性和图遍历 48
3.3 用队列和栈实现图遍历 53
3.4 二分性测试:广度优先搜索的应用 58
3.5 有向图中的连通性 59
3.6 有向无环图和拓扑排序 61
带解答的练习 64
练习 66
注释和进一步阅读 69
第4章 贪心算法 70
4.1 区间调度:贪心算法保持领先 70
4.2 最小化延迟的调度:交换论证 76
4.3 最优缓存:更复杂的交换论证 80
4.4 图的最短路径 83
4.5 最小生成树问题 87
4.6 实现Kruskal算法:Union-Find数据结构 92
4.7 聚类 97
4.8 哈夫曼码和数据压缩 99
*4.9 最小开销树形图:多阶段贪心算法 109
带解答的练习 113
练习 116
注释和进一步阅读 125
第5章 分治 127
5.1 第一个递推式:归并排序算法 127
5.2 进一步的递推关系 130
5.3 计数逆序 134
5.4 寻找最近点对 137
5.5 整数乘法 141
5.6 卷积和快速傅里叶变换 142
带解答的练习 148
练习 150
注释和进一步阅读 152
第6章 动态规划 153
6.1 加权区间调度:递归过程 153
6.2 动态规划原理:备忘录或子问题迭代 157
6.3 分段最小二乘:多重选择 159
6.4 子集和与背包:加一个变量 162
6.5 RNA二级结构:区间上的动态规划 166
6.6 序列比对 169
6.7 通过分治在线性空间中序列比对 173
6.8 图中的最短路径 177
6.9 最短路径和距离向量协议 182
*6.10 图中的负环 184
带解答的练习 187
练习 190
注释和进一步阅读 204
第7章 网络流 205
7.1 最大流问题和Ford-Fulkerson算法 205
7.2 网络中的最大流和最小割 211
7.3 选择好的增广路径 214
*7.4 预流推进最大流算法 218
7.5 第一个应用:二分匹配问题 225
7.6 有向图和无向图中的不相交路径 228
7.7 最大流问题的扩展 232
7.8 调查设计 236
7.9 航空公司调度 237
7.10 图像分割 240
7.11 项目选择 243
7.12 棒球排除 246
*7.13 进一步的方向:为匹配问题增加开销 249
带解答的练习 253
练习 255
注释和进一步阅读 274
第8章 NP和计算难解性 276
8.1 多项式时间归约 276
8.2 通过“小配件”归约:可满足性问题 280
8.3 有效证书和NP的定义 283
8.4 NP完全问题 285
8.5 排序问题 289
8.6 划分问题 294
8.7 图着色 297
8.8 数值问题 300
8.9 co-NP和NP的不对称性 303
8.10 困难问题的部分分类 305
带解答的练习 307
练习 309
注释和进一步阅读 323
第9章 PSPACE:NP之外的一类问题 324
9.1 PSPACE 324
9.2 PSPACE中的一些难题 325
9.3 在多项式空间中求解量化问题和博弈 327
9.4 在多项式空间中求解规划问题 328
9.5 证明问题是PSPACE完全的 331
带解答的练习 334
练习 335
注释和进一步阅读 336
第10章 扩展易解性的界限 337
10.1 寻找小的顶点覆盖 338
10.2 求解树上的NP困难问题 340
10.3 圆弧集着色 343
*10.4 图的树分解 349
*10.5 构造树分解 356
带解答的练习 361
练习 363
注释和进一步阅读 365
第11章 近似算法 366
11.1 贪心算法和最优值的界限:负载均衡问题 366
11.2 中心选址问题 370
11.3 集合覆盖:一般贪心启发式 374
11.4 定价方法:顶点覆盖 378
11.5 用定价方法最大化:不相交路径问题 382
11.6 线性规划和舍入:顶点覆盖的应用 386
*11.7 再论负载均衡:更高级的LP应用 390
11.8 任意好的近似:背包问题 394
带解答的练习 398
练习 399
注释和进一步阅读 404
第12章 局部搜索 406
12.1 优化问题的地形 406
12.2 Metropolis算法和模拟退火算法 409
12.3 局部搜索在Hopfield神经网络中的应用 412
12.4 通过局部搜索的最大割近似 415
12.5 选择邻居关系 417
*12.6 用局部搜索分类 418
12.7 最优响应动态和纳什均衡 423
带解答的练习 430
练习 431
注释和进一步阅读 433
第13章 随机算法 434
13.1 第一个应用:消除争用 435
13.2 寻找全局最小割 438
13.3 随机变量及其期望 442
13.4 MAX 3-SAT的随机近似算法 445
13.5 随机分治:找中位数和Quicksort 447
13.6 哈希:字典的随机实现 452
13.7 寻找最近点对:随机方法 457
13.8 随机缓存 462
13.9 切尔诺夫界 467
13.10 负载均衡 468
13.11 分组路由 470
13.12 背景知识:一些基本概率定义 474
带解答的练习 479
练习 483
注释和进一步阅读 489
后记:永远运行的算法 491
参考文献 497
(展开全部)1.1 第一个问题:稳定匹配 1
1.2 5个典型问题 8
带解答的练习 12
练习 14
注释和进一步阅读 17
第2章 算法分析基础 18
2.1 计算可解性 18
2.2 增长的渐近阶 21
2.3 用列表和数组实现稳定匹配算法 26
2.4 常见运行时间综述 29
2.5 更复杂的数据结构:优先队列 35
带解答的练习 40
练习 41
注释和进一步阅读 44
第3章 图 45
3.1 基本定义和应用 45
3.2 图连通性和图遍历 48
3.3 用队列和栈实现图遍历 53
3.4 二分性测试:广度优先搜索的应用 58
3.5 有向图中的连通性 59
3.6 有向无环图和拓扑排序 61
带解答的练习 64
练习 66
注释和进一步阅读 69
第4章 贪心算法 70
4.1 区间调度:贪心算法保持领先 70
4.2 最小化延迟的调度:交换论证 76
4.3 最优缓存:更复杂的交换论证 80
4.4 图的最短路径 83
4.5 最小生成树问题 87
4.6 实现Kruskal算法:Union-Find数据结构 92
4.7 聚类 97
4.8 哈夫曼码和数据压缩 99
*4.9 最小开销树形图:多阶段贪心算法 109
带解答的练习 113
练习 116
注释和进一步阅读 125
第5章 分治 127
5.1 第一个递推式:归并排序算法 127
5.2 进一步的递推关系 130
5.3 计数逆序 134
5.4 寻找最近点对 137
5.5 整数乘法 141
5.6 卷积和快速傅里叶变换 142
带解答的练习 148
练习 150
注释和进一步阅读 152
第6章 动态规划 153
6.1 加权区间调度:递归过程 153
6.2 动态规划原理:备忘录或子问题迭代 157
6.3 分段最小二乘:多重选择 159
6.4 子集和与背包:加一个变量 162
6.5 RNA二级结构:区间上的动态规划 166
6.6 序列比对 169
6.7 通过分治在线性空间中序列比对 173
6.8 图中的最短路径 177
6.9 最短路径和距离向量协议 182
*6.10 图中的负环 184
带解答的练习 187
练习 190
注释和进一步阅读 204
第7章 网络流 205
7.1 最大流问题和Ford-Fulkerson算法 205
7.2 网络中的最大流和最小割 211
7.3 选择好的增广路径 214
*7.4 预流推进最大流算法 218
7.5 第一个应用:二分匹配问题 225
7.6 有向图和无向图中的不相交路径 228
7.7 最大流问题的扩展 232
7.8 调查设计 236
7.9 航空公司调度 237
7.10 图像分割 240
7.11 项目选择 243
7.12 棒球排除 246
*7.13 进一步的方向:为匹配问题增加开销 249
带解答的练习 253
练习 255
注释和进一步阅读 274
第8章 NP和计算难解性 276
8.1 多项式时间归约 276
8.2 通过“小配件”归约:可满足性问题 280
8.3 有效证书和NP的定义 283
8.4 NP完全问题 285
8.5 排序问题 289
8.6 划分问题 294
8.7 图着色 297
8.8 数值问题 300
8.9 co-NP和NP的不对称性 303
8.10 困难问题的部分分类 305
带解答的练习 307
练习 309
注释和进一步阅读 323
第9章 PSPACE:NP之外的一类问题 324
9.1 PSPACE 324
9.2 PSPACE中的一些难题 325
9.3 在多项式空间中求解量化问题和博弈 327
9.4 在多项式空间中求解规划问题 328
9.5 证明问题是PSPACE完全的 331
带解答的练习 334
练习 335
注释和进一步阅读 336
第10章 扩展易解性的界限 337
10.1 寻找小的顶点覆盖 338
10.2 求解树上的NP困难问题 340
10.3 圆弧集着色 343
*10.4 图的树分解 349
*10.5 构造树分解 356
带解答的练习 361
练习 363
注释和进一步阅读 365
第11章 近似算法 366
11.1 贪心算法和最优值的界限:负载均衡问题 366
11.2 中心选址问题 370
11.3 集合覆盖:一般贪心启发式 374
11.4 定价方法:顶点覆盖 378
11.5 用定价方法最大化:不相交路径问题 382
11.6 线性规划和舍入:顶点覆盖的应用 386
*11.7 再论负载均衡:更高级的LP应用 390
11.8 任意好的近似:背包问题 394
带解答的练习 398
练习 399
注释和进一步阅读 404
第12章 局部搜索 406
12.1 优化问题的地形 406
12.2 Metropolis算法和模拟退火算法 409
12.3 局部搜索在Hopfield神经网络中的应用 412
12.4 通过局部搜索的最大割近似 415
12.5 选择邻居关系 417
*12.6 用局部搜索分类 418
12.7 最优响应动态和纳什均衡 423
带解答的练习 430
练习 431
注释和进一步阅读 433
第13章 随机算法 434
13.1 第一个应用:消除争用 435
13.2 寻找全局最小割 438
13.3 随机变量及其期望 442
13.4 MAX 3-SAT的随机近似算法 445
13.5 随机分治:找中位数和Quicksort 447
13.6 哈希:字典的随机实现 452
13.7 寻找最近点对:随机方法 457
13.8 随机缓存 462
13.9 切尔诺夫界 467
13.10 负载均衡 468
13.11 分组路由 470
13.12 背景知识:一些基本概率定义 474
带解答的练习 479
练习 483
注释和进一步阅读 489
后记:永远运行的算法 491
参考文献 497
经典金句(27)
纠错 补充反馈
分治策略
“分而治之,化繁为简”
将复杂问题拆解为独立子问题,分别解决后合并结果(如归并排序)。
“合并时需保证有序性”
分治后的子问题解需能高效合并,如归并排序的合并阶段。
2. 动态规划
“状态转移是核心,重叠子问题莫重复”
通过存储子问题解避免重复计算(如斐波那契数列的递推优化)。
“最优子结构决定全局最优”
整体最优解包含子问题的最优解(如最长公共子序列)。
3. 贪心算法
“局部最优未必全局最优,但有时是捷径”
适用于如活动选择问题,但需验证适用性。
“每一步都做出当前最优选择”
如霍夫曼编码中优先合并低频字符。
4. 回溯算法
“不撞南墙不回头,但需剪枝加速”
通过提前终止无效路径减少计算量(如数独求解)。
“试错是探索未知的必经之路”
在解空间中系统搜索,如迷宫路径探索。
5. 通用设计原则
“简单是美,复杂是祸”
优先选择易实现且高效的算法(如快速排序的分区策略)。
“以空间换时间,或以时间换空间”
根据资源限制权衡复杂度,如缓存机制提升访问速度。
“算法无绝对优劣,只有场景适配”
需结合数据规模、实时性要求选择算法(如实时系统偏好低延迟算法)。