TA的每日心情 | 开心 2018-4-8 22:14 |
---|
签到天数: 1 天 [LV.1]初学乍练
普通会员
- 积分
- 5517
|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《 算法设计与分析》
: t& U. V5 f) |0 q& K w1 fjava电子书推荐理由:本书讲授算法设计与分析的基础知识。首先介绍计算模型的基本概念;其次围绕遍历、分治、贪心、动态规划这四个经典算法设计策略,讲解了排序、选择、查找、图遍历、小生成树、短路径等经典算法问题;后介绍了计算复杂性的基础知识。本书主要面向计算机专业本科生,以及其他需要学习计算机科学基础知识与了解计算机程序设计背后原理的读者。' _$ g% \7 N; |$ w4 }
5 W" c0 ^% f2 X# X% G. \0 ^作者:黄宇' d0 y" Z* u& E! N
出版社:机械工业出版社
8 g* }* e+ I9 i* j" v出版时间:2017-07-27
- [) g7 h* O. P4 T3 ~1 m/ ]; P书籍价格:45.60元+ b( b( N7 Y6 P+ J( s
* U* Q3 x. e+ n7 J. j. q7 v, @. i Z, y3 f8 P9 A4 T
9 ?+ a1 v3 D1 J( W( r% g
0 K( n+ H5 R0 b* bjava电子书目录:
( ?+ v, t- [. X G# Y第一部分 计算模型8 k {2 J) ~8 M% P* C
第1章 抽象的算法设计与分析2
5 e! i9 \5 c- B 1.1 RAM模型的引入2
5 K, i" d/ _ W3 ]0 \" E- a* @ 1.1.1 计算的基本概念2
/ \; J- {- N) I( @ 1.1.2 计算模型的基本概念3; r9 j' f# X( x8 F2 C" ~; w# f
1.1.3 RAM模型4* j5 \( f0 Q( R* p% H1 D$ [! a
1.1.4 计算模型的选择:易用性和精确性6
9 t# f! H* N/ ?, q# [ 1.2 抽象算法设计7" |6 L. q8 X) m. Z$ v/ G e
1.2.1 算法问题规约7
9 O' R0 w1 |6 A1 `# g 1.2.2 算法正确性证明:数学归纳法8
/ }% V" B$ A, U! N 1.3 抽象算法分析10 Q! u% p% _9 t& u/ S; H9 b/ v
1.3.1 抽象算法的性能指标10
$ P1 T$ h: j n) J 1.3.2 最坏情况时间复杂度分析11/ X! l5 A0 h+ ^
1.3.3 平均情况时间复杂度分析12$ L% H% g4 B j+ W( c
1.4 习题13/ C; N1 G. F3 p- {0 G+ S8 \: M
第2章 从算法的视角重新审视数学的概念16
5 x) \2 M8 k1 C6 M. K 2.1 数学运算背后的算法操作16) K3 H' `5 T8 U' c6 ~; [
2.1.1 取整x和x16
9 j$ F- d$ f9 I; y 2.1.2 对数log n17% F' G i6 B4 Y/ R2 [! }
2.1.3 阶乘n!189 w6 r, m2 ^0 a& Q6 K [9 @
2.1.4 常见级数求和∑ni=1f(i)19
$ u% ]" T+ G. ?- ~( @0 ~ 2.1.5 期望E[X]20
4 i& @* N- N2 Q 2.2 函数的渐近增长率22
" R0 ]9 C+ g* X- D 2.3 “分治递归”求解24
/ k5 n0 y5 n' e/ T& {2 k6 w 2.3.1 替换法24
6 t- ^+ E7 S. |, U% R7 } 2.3.2 分治递归与递归树25
8 u7 s9 H6 F( e8 p& }' G- [ 2.3.3 Master定理26
8 ^! Z+ |) t$ `% d 2.4 习题27/ o8 @- Z# X" t; o
第二部分 朴素遍历# ^+ F3 Q# \! Z" i+ ~7 a
第3章 线性表的遍历32, K3 s# u. Q- j5 P& z! `
3.1 基于遍历的选择与查找32
# j3 {# i+ ]6 o2 x 3.2 基于遍历的排序339 C1 M, p F6 D9 A( b
3.2.1 选择排序34
" A( `1 o' s! `; L. \$ o* p! Q 3.2.2 插入排序35
. n2 y- G9 k4 s/ o" _6 R* Z 3.3 习题374 m4 |' j1 t2 m/ o5 U' j! k" b
第4章 图的深度优先遍历39
) g( e* o7 B ~ 4.1 图和图遍历39; z$ u1 x: l0 o8 w. h/ Z* c" Z
4.2 有向图的深度优先遍历40/ I9 I- f* _" H' _
4.2.1 有向图的深度优先遍历框架406 m* w4 L; a- ~! d& X) N+ |
4.2.2 有向图的深度优先遍历树42
0 b: D8 ` f4 \ O 4.2.3 活动区间43$ j" k. z7 n$ w3 k, ?
4.3 有向图的深度优先遍历应用45
6 h2 F' b& H- \ 4.3.1 拓扑排序45
+ _- j5 b2 n4 d 4.3.2 关键路径480 x% @0 i7 ~! F' G
4.3.3 有向图中的强连通片50
8 C5 D6 C: w: n2 ~7 E# q 4.4 无向图的深度优先遍历54
. [% O' G% H, Q& D 4.4.1 无向图的深度优先遍历树55" z* c7 x9 H$ @$ y+ Q# q: Z
4.4.2 无向图的深度优先遍历框架56
5 X9 r# ^) |6 F8 t) }. M5 U N 4.5 无向图的深度优先遍历应用57
$ ^5 Z; Q& u5 H, h3 k+ o$ y 4.5.1 容错连通57
' b5 h p' i/ W3 `' a 4.5.2 寻找割点58# W& _6 g+ z- X1 d
4.5.3 寻找桥60
( B2 s+ E, D' q 4.6 习题61
$ x$ B( H, W' c% n第5章 图的广度优先遍历66
6 o7 W& R* T x! w, L1 P: w2 o/ d$ E0 ^ 5.1 广度优先遍历660 S) L& r8 H6 A1 D8 H
5.1.1 广度优先遍历框架67
! e: G4 V( ~( L' b 5.1.2 有向图的广度优先遍历树70
) H$ H. Q& ]# N; \ 5.1.3 无向图的广度优先遍历树70
: @1 t+ s l! C) t6 x 5.2 广度优先遍历的应用72
& M, [2 g: g# @; @5 h 5.2.1 判断二分图72" [! n$ w4 d+ T- H, Y% k
5.2.2 寻找k度子图738 q4 k' g! W+ V" h
5.3 习题74
% u6 R+ ?' P8 Z, C第三部分 分治策略
) y& s2 s: V h第6章 排序:从遍历到分治78' J' d5 a0 Q3 `4 g9 ]9 o2 K0 m
6.1 快速排序78* [3 b$ _) |/ Z/ C, D
6.1.1 插入排序的不足78
+ N$ @3 ~7 D( O; M9 y 6.1.2 快速排序的改进79
" o' j+ R3 s" o9 B* ?/ ^2 [& s 6.1.3 快速排序的分析81( \+ M, s1 J" ]" T; H/ f
6.2 合并排序84" O5 |: ^+ d- J6 |
6.3 基于比较的排序的下界86) X, ] M* y+ n& C8 P
6.3.1 决策树的引入87
9 s" h4 p5 w8 W6 f1 Q 6.3.2 比较排序最坏情况时间复杂度的下界88
8 @1 D) `6 x* z# C8 K8 x# l 6.3.3 比较排序平均情况时间复杂度的下界88
3 a% L$ E2 Y, C# T* U/ Q6 C 6.4 习题90
! O7 F# U! `) ?! u/ |7 p1 P第7章 堆的设计与应用95
2 F, M; \8 W$ B$ m! V3 s" P 7.1 堆的定义95
! d8 ?3 L, a7 g' A 7.2 堆的抽象维护96
8 r' D% r& v# ? 7.2.1 堆的修复960 @6 \' A1 c' Y3 a0 L# Q
7.2.2 堆的构建974 O) f! U2 Z* D- ~/ N
7.3 堆的具体实现98
4 l5 ]+ Z; m2 M. b! l3 @1 g 7.4 堆的应用100
# h8 k2 u# ^; u% n6 M 7.4.1 堆排序1002 B- R' t% m- i$ M
7.4.2 基于堆实现优先队列100
" V" Q& [6 Q: Q, ] ` 7.5 习题101
1 `& p% \ |$ N第8章 线性时间选择103) i: F. d% y1 E6 x' T9 @
8.1 期望线性时间的选择103" `$ h; D& K# E( S
8.1.1 期望线性时间的选择算法设计1037 C" o4 ?. I3 q; G
8.1.2 期望线性时间的选择算法分析104
2 X9 w7 @3 I# \ 8.2 最坏情况线性时间的选择106
. P# J5 f/ U' U5 Z0 T# _/ O1 W 8.2.1 最坏情况线性时间的选择算法设计106
7 N+ v; d. E$ ^2 |4 F( e 8.2.2 最坏情况线性时间的选择算法分析1076 l- f' K; @$ k) r7 B
8.3 习题108
+ k9 ^+ h8 s# Z& x* I& Z第9章 对数时间查找110+ {- _4 r9 P! V# B
9.1 折半查找110" J+ D' u' a" W( C$ r
9.1.1 经典折半查找110
# ]- t' C6 |! I) r2 v( I 9.1.2 折半查找的推广111# Q! F: ?. w8 z. {- I7 K* A7 n4 R; }
9.2 平衡二叉搜索树112$ h( r- ~" I' G6 J( u
9.2.1 二叉搜索树及其平衡性113
/ |* @, z- S0 W& l* e8 Q 9.2.2 红黑树的定义114
$ `& f! H* c; _# ^9 H9 y5 b4 N# @ 9.2.3 红黑树的平衡性115
( s0 u9 U5 E( k$ O& z9 D d 9.3 习题116+ c1 G2 K# n! @
第四部分 贪心策略
" l. V& \. Q5 \+ D0 c第10章 最小生成树1200 h# D' `2 v. _' I( K
10.1 Prim算法1205 Z6 @8 l* i. x6 s j( a
10.1.1 Prim算法的正确性122
; A) s/ A% s" S$ { 10.1.2 Prim算法的实现1252 G5 M5 E+ s% s
10.1.3 Prim算法的分析126
8 M ?) c, Q2 h 10.2 Kruskal算法127/ |( I5 y" I" p* c; o
10.2.1 Kruskal算法的正确性128- i8 [" r& `+ N/ U
10.2.2 判断是否成环——基于并查集的实现129
. U& |' \7 N, U+ A4 C- b# j9 T2 V 10.2.3 Kruskal算法的实现与分析133
9 t8 Q$ _1 F+ S+ k( i, W 10.3 最小生成树贪心构建框架MCE134
9 x; g0 m' ^. q/ ~3 a; P( `2 u' b! U- D 10.3.1 从MCE框架的角度分析Prim算法135
0 [# C+ K, P5 D# Q* X% [ 10.3.2 从MCE框架的角度分析Kruskal算法136
8 N( M; c6 d' V/ Z- d1 k4 ^+ k8 d& v 10.4 习题137 }* i0 \1 i4 o) |8 Y) M
第11章 给定源点的最短路径142* o* `: E) `. g
11.1 Dijkstra算法142 z) u! x- v5 c& @
11.1.1 Dijkstra算法的设计142
( `7 V. x; p! l2 w 11.1.2 Dijkstra算法的正确性与性能分析144$ h$ J5 ]" C$ {7 b
11.2 从Dijkstra算法到贪心遍历框架BestFS1461 I$ k' m- S7 U' L4 W: \
11.3 习题147
: u+ a9 p5 u& b4 S; ]第12章 贪心策略的其他应用151' ~1 e' p: D3 f, k/ M4 S
12.1 相容任务调度问题151, g% k; ]9 W5 Y1 |# C4 G' B
12.1.1 直觉的尝试151
, D- p. x7 K1 _) j 12.1.2 基于任务结束时间的贪心算法152
6 q6 J( H k. { 12.2 Huffman编码153
4 F& ]8 N* [7 V9 M% _ 12.2.1 可变长度编码153+ r2 z w# ]2 Q, s* m
12.2.2 最优编码方案的性质154
+ t; w$ J x9 C+ K! H' q; j C, g 12.2.3 贪心的Huffman编码1565 |3 u1 f) t- P7 e9 v, o6 ?
12.3 习题156
$ j4 s! ^" ~' s9 B2 ?第五部分 动态规划 y2 D7 V, m) J8 |5 V* Z8 ^" I: O
第13章 最短路径1604 z. ^& Q7 w! a
13.1 有向无环图上的给定源点最短路径问题160
8 i; t" y' \: ~, @# M 13.2 传递闭包问题和Shortcut算法161* F4 I9 @9 ?5 i+ q
13.3 所有点对最短路径:基于路径长度的递归1637 m: G. c, t* j& W( Z0 ^ \& G
13.4 Floyd-Warshall算法:基于中继节点范围的递归1648 J; Q% m$ j0 s# _: ?* }" ~
13.5 习题166
2 q) V6 D; P8 O8 i) B* K0 Q8 K第14章 动态规划算法168, b& o6 E/ P# g; Z/ q, f
14.1 动态规划的动机1681 j" _( c, W, X1 g
14.2 动态规划的基本过程1696 E* F5 L) N% d/ [9 o$ s2 P% a F
14.2.1 基于朴素遍历的递归170
. Z$ T( I$ W6 m3 x2 C 14.2.2 未作规划的递归171
* Y+ n/ H# y8 T; x# [; U 14.2.3 采用动态规划的递归171
. d1 N- b% E! }1 F 14.3 动态规划的应用174- P) p( w* X R: \# z2 E
14.3.1 动态规划的要素174
4 X, J' R% p' X: J8 s! G0 K, O8 E 14.3.2 编辑距离问题1759 M* Q# p# q0 J% E: R
14.3.3 硬币兑换问题176
; A( }4 h. H1 B. h0 ]8 @, z 14.3.4 最大和连续子序列问题178
) |0 R2 ^% t7 Z3 T' W 14.3.5 相容任务调度问题1795 L4 a& x% F0 a9 l- U: H! u- J
14.4 习题179! y& Z: \, ], D9 e! \
第六部分 计算复杂性理论初步
3 J5 E8 b# Q8 d4 j; m8 x7 d5 e第15章 多项式时间归约1880 c* L0 |4 z2 a" e. r4 I# L
15.1 问题间的归约1889 Q; _' i# E) F; c* d
15.1.1 优化问题和判定问题188; q: E% S; ^" n# f' l
15.1.2 问题间归约的定义1893 |% |* v2 K" q3 v3 |* U* O( i( t2 H
15.2 多项式时间:解决问题与完成归约1900 ]" H. V% W* ~1 u7 n. W. o
15.2.1 多项式时间可解的问题1902 {3 s1 |. Q9 }8 O; J
15.2.2 多项式时间归约1910 c2 G4 d1 n: l/ C9 i: s2 f% A
15.3 习题1923 z) m* g! m, B0 }$ V
第16章 NP完全问题的基本概念193
5 ^3 J6 y# R2 C) T+ m- s 16.1 NP完全问题的定义193
- w" x$ J+ _# B+ [3 V& N/ `! C9 K 16.1.1 NP问题的定义193
* S3 ?2 q4 z" c, C, ~ 16.1.2 NP难与NP完全问题的定义194
5 n$ K* `: l4 \! z9 ] 16.2 NP完全性证明的初步知识195
( ` }9 r' \4 R) @! ?) R 16.2.1 一般问题和特例问题195" ~* b5 q% k- C
16.2.2 等价的问题1963 X+ h# X# R( a6 V. i
16.3 习题1979 T9 ~5 Q1 ]) S" V" T4 }
附录A 数学归纳法199% L1 G, [, }" U5 s! h
附录B 二叉树200- S7 `! ^. j# Y1 m' i" G: C& Y
参考文献201, ~2 c/ d! }2 _+ @1 }) a
; D0 _) E! k# y
Java资料百度网盘下载地址链接(百度云):java自学网(javazx.com) 算法设计与分析 PDF 高清 电子书 百度云.rar【密码回帖可见】( v" Y# c7 N: L: N* j
8 p$ W% [8 p" |7 f; U% t
( q& ~9 b# F& W" } `4 S" a# R1 @0 q0 l2 B; @* F' m% v( A4 e4 m- x$ n
1 o# S: W& u) u. l G# ~7 o9 b |
|