TA的每日心情 | 开心 2018-4-8 22:14 |
---|
签到天数: 1 天 [LV.1]初学乍练
普通会员
- 积分
- 5517
|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《 算法设计与分析》
$ v" c6 E- [, P D- J- fjava电子书推荐理由:本书讲授算法设计与分析的基础知识。首先介绍计算模型的基本概念;其次围绕遍历、分治、贪心、动态规划这四个经典算法设计策略,讲解了排序、选择、查找、图遍历、小生成树、短路径等经典算法问题;后介绍了计算复杂性的基础知识。本书主要面向计算机专业本科生,以及其他需要学习计算机科学基础知识与了解计算机程序设计背后原理的读者。7 e4 [; o* T7 t0 _" E8 L/ U4 D
G F. V9 Q2 y& B* L7 \. l! i作者:黄宇
i# x4 f, ^4 ~出版社:机械工业出版社. _; H9 N' q9 z, G: a* p+ f* ~# C
出版时间:2017-07-27
( C- F$ V+ {# `; [" }6 r, a) g书籍价格:45.60元0 z- K9 X* _1 _ [) W. g! S
7 I7 A6 z& A+ ^- I8 A, ~$ n9 E/ J. `
4 _+ ~* g9 l* X C. E- b8 D0 f0 |* p; Z; O& i; q/ [! S
$ }" y! @) X" g/ _9 V( P9 x
java电子书目录:
! F/ t5 c: m t" C) i0 W第一部分 计算模型4 B& `2 Q4 v) P9 a
第1章 抽象的算法设计与分析2
: N& ^. I8 N8 a8 W, v# e. J t4 f 1.1 RAM模型的引入2
& E3 a, P( L" N* q& k 1.1.1 计算的基本概念2& V" g$ E" i" q& e8 r# {" ?0 [0 b
1.1.2 计算模型的基本概念3
3 H8 q, X* W5 ]* A 1.1.3 RAM模型4; z ^% N# Y6 r+ J% L5 Z
1.1.4 计算模型的选择:易用性和精确性6
* ~, i3 X# r }3 a: j7 E, V 1.2 抽象算法设计71 Q4 q8 D4 R! M3 L) n
1.2.1 算法问题规约71 A3 t6 g& g& i+ s" ]# o
1.2.2 算法正确性证明:数学归纳法8
2 K9 @; \$ o& Y1 C 1.3 抽象算法分析102 C) ]0 [3 O7 q7 w
1.3.1 抽象算法的性能指标10
$ K H7 |. I0 ^ 1.3.2 最坏情况时间复杂度分析11
% H+ m i/ |5 \! F- ~ 1.3.3 平均情况时间复杂度分析12
* s+ x' E9 K8 t+ X3 _ 1.4 习题130 u5 c; }7 a' f0 Z, a8 X, W
第2章 从算法的视角重新审视数学的概念16
2 h. b0 k5 g' e; u. v, t3 \ 2.1 数学运算背后的算法操作163 z% f6 U4 M G5 k; |
2.1.1 取整x和x16
- O% ]" \6 m% \+ ^8 l# S+ q7 f% | 2.1.2 对数log n17
7 F, p0 V# B6 l/ i6 u: K 2.1.3 阶乘n!185 n* @1 i+ |4 b# @3 B- n
2.1.4 常见级数求和∑ni=1f(i)19
8 k, |# t4 o, X5 d. q 2.1.5 期望E[X]206 ?+ y2 U- ~' h0 g
2.2 函数的渐近增长率22
* Y/ _9 J2 _- x4 l 2.3 “分治递归”求解24
; C$ v/ | t& k 2.3.1 替换法24
6 b1 v* b% S- x 2.3.2 分治递归与递归树25
$ j9 m7 [4 z5 x& U+ b 2.3.3 Master定理26
- Y% E! R5 l; r: S4 B, U+ ]' t 2.4 习题27
7 C8 W1 f; S/ n! G8 k, R% ^) F第二部分 朴素遍历
0 l5 N ~* `4 i+ O) `* A第3章 线性表的遍历32
" u& e. b, F; u/ O) S 3.1 基于遍历的选择与查找327 w1 h+ ?0 X$ v, L8 ^6 {- Q
3.2 基于遍历的排序33; q. i" x2 V" g0 E
3.2.1 选择排序34' x6 y/ O" p8 H/ ^' j7 c
3.2.2 插入排序35
( N6 H) E8 b. a) Y7 m! a 3.3 习题37
, W" J0 j, X- s0 t/ b9 Y+ n" m第4章 图的深度优先遍历39
' g/ G: R& N- |' s! |. f) P 4.1 图和图遍历39
* M) D! ?! Y- `* B# r8 O 4.2 有向图的深度优先遍历40( b7 u) o( P6 W& U6 E t7 o
4.2.1 有向图的深度优先遍历框架40* g1 F: ^7 C5 }& W- e0 L. f3 V
4.2.2 有向图的深度优先遍历树422 a9 `6 @/ o8 A J8 f8 W V6 U
4.2.3 活动区间431 V( A5 L' U; e' i" u% J0 W
4.3 有向图的深度优先遍历应用45: X& E9 v! b! c W
4.3.1 拓扑排序45 K% X e, R j/ _8 b7 R
4.3.2 关键路径48
, ~/ E5 V. Z' x) E9 K# R 4.3.3 有向图中的强连通片50
/ Y& s- Y h" D* Q8 H: ? 4.4 无向图的深度优先遍历54
1 p4 e r9 i( @: _ 4.4.1 无向图的深度优先遍历树55
, M0 D0 _# v( a: j; d 4.4.2 无向图的深度优先遍历框架56
1 m) t. f/ e& ]3 Z7 w" I 4.5 无向图的深度优先遍历应用573 M! s: Z/ ]0 i5 b
4.5.1 容错连通57
2 D; ~$ t" D; y. u) y5 W5 s 4.5.2 寻找割点58
w/ v3 ]4 A! b( Q. ~7 E9 v! G 4.5.3 寻找桥60# o, A1 a! G& D; ]" W b
4.6 习题61
( w) f) {; M5 h( C8 Y第5章 图的广度优先遍历662 V- ^- H/ ~% {1 y6 l' }' ^
5.1 广度优先遍历66
. a* F" Q; t8 E8 f' A7 G 5.1.1 广度优先遍历框架676 T0 H' S) L, Q1 C
5.1.2 有向图的广度优先遍历树702 G) H# c) N4 _, _7 \9 ]2 Q
5.1.3 无向图的广度优先遍历树70* O. d. `2 i7 g
5.2 广度优先遍历的应用726 Z& p% b& n$ A0 ?2 B3 Q1 E& M
5.2.1 判断二分图72
4 Z& g, D v0 b5 ~6 u! a 5.2.2 寻找k度子图73, Q+ |$ b0 |1 M1 H5 E- `$ @! `
5.3 习题74
% r+ t' l V. f# @# p( e' {第三部分 分治策略( v" u8 Q; C6 i ~: W. z& p
第6章 排序:从遍历到分治78
) a" v- N# ^7 M2 h6 g 6.1 快速排序78
) k1 f; ?1 o9 v7 g- ~. w' k 6.1.1 插入排序的不足78; u' |) K. W6 [6 i, R0 `3 ^( O7 [
6.1.2 快速排序的改进79
; d( z0 n* H" V2 Y1 N7 ^2 ]2 `8 f 6.1.3 快速排序的分析810 R9 X2 g: f/ T# n
6.2 合并排序843 e4 O! |5 O! Q6 V4 [! t" v
6.3 基于比较的排序的下界86, l. r5 N, T: b! Q" D; p: j
6.3.1 决策树的引入87; ?+ s3 H$ }( L! e4 Q( R& x* V
6.3.2 比较排序最坏情况时间复杂度的下界88, [4 J5 @( ^# ~/ N' B, q
6.3.3 比较排序平均情况时间复杂度的下界88
# h% D9 V% w3 W1 I' u6 a) M 6.4 习题90
2 U: x8 [/ r M- @9 y第7章 堆的设计与应用95/ S D5 M, l3 a' Z- ~4 `
7.1 堆的定义95" l% e% G4 ?1 x. I
7.2 堆的抽象维护96& g4 O9 c/ n* X$ o8 ?5 T8 f
7.2.1 堆的修复96+ L2 i9 \& d5 m: a Z0 [5 I( L
7.2.2 堆的构建97
3 `, X5 @. _) y- d/ V 7.3 堆的具体实现98
) n# }' m# F4 h/ ]4 P) I! |+ ~1 [ 7.4 堆的应用1004 S+ c: ^6 ]( A# e( A6 b
7.4.1 堆排序100: v0 w6 j: }- c- V. L/ W! g
7.4.2 基于堆实现优先队列1001 o, r0 }; ]; f) a" q# W2 |
7.5 习题1013 r/ {/ {, v% |( h
第8章 线性时间选择1037 h1 C. _' W7 i3 x
8.1 期望线性时间的选择103: o7 f( f* x4 m: K! r& v8 h
8.1.1 期望线性时间的选择算法设计103
0 ^3 k4 g! k$ `, _: s Z 8.1.2 期望线性时间的选择算法分析104+ u' B7 h! J7 e% j, x K9 x
8.2 最坏情况线性时间的选择106
. M" ]) m/ ~- L# g6 G, @% v 8.2.1 最坏情况线性时间的选择算法设计106
- \; T, [3 C7 h3 J# G3 M$ J, [ 8.2.2 最坏情况线性时间的选择算法分析107
5 w* m" |# m2 t1 r1 x4 _0 J 8.3 习题108$ \" r! j6 y5 E. | T
第9章 对数时间查找110
. ^. T( S5 Q& M# C/ d. L0 d! t7 o 9.1 折半查找110
+ N+ i z5 }1 ] 9.1.1 经典折半查找1100 ?& W4 J- i( B! w4 e
9.1.2 折半查找的推广111
) U- w* h* H8 H! O3 O# S 9.2 平衡二叉搜索树112
% X( }& E ?1 { V7 B+ W& M! Q 9.2.1 二叉搜索树及其平衡性113
5 t/ N* Y. s5 ]& z2 ^7 `) X: B 9.2.2 红黑树的定义114
1 d7 \8 e# Q- n$ N, J 9.2.3 红黑树的平衡性1158 {/ A5 C/ i( H, c1 F
9.3 习题116* T% t9 h4 Q5 p
第四部分 贪心策略
% f' E* ?' w$ R3 L& m& f第10章 最小生成树120
! g) Z/ ]3 T" q( ~ 10.1 Prim算法120' H+ a7 _3 L. F0 x
10.1.1 Prim算法的正确性122
& }7 r y7 M8 `1 w1 ~- `5 ^6 z" V* L 10.1.2 Prim算法的实现125% W: {8 I2 M3 H% H2 L9 s4 c
10.1.3 Prim算法的分析1263 B3 O( W8 p5 n7 E6 m2 r4 K
10.2 Kruskal算法127" i/ Z! B4 b4 n" s
10.2.1 Kruskal算法的正确性128
$ J2 p; E9 W4 l2 A& I9 ^ 10.2.2 判断是否成环——基于并查集的实现129
+ g' Q( ?! U; c4 i 10.2.3 Kruskal算法的实现与分析133
) {. U: y/ ?) v# r 10.3 最小生成树贪心构建框架MCE134
2 a& k( t8 j. k9 h' R: I' r 10.3.1 从MCE框架的角度分析Prim算法135
# {: d4 k+ P, c 10.3.2 从MCE框架的角度分析Kruskal算法136
0 c- I; ^# U, a. x0 O$ r2 j2 _ 10.4 习题137
( Q7 c4 W. F6 D0 G2 v( \第11章 给定源点的最短路径142% z" f; z6 ^* g) L
11.1 Dijkstra算法142
' @& R( U/ Z2 T3 y- s6 C$ g; B 11.1.1 Dijkstra算法的设计142
4 w$ A" l. U/ P+ c$ _+ l. z 11.1.2 Dijkstra算法的正确性与性能分析144$ p! h0 P! |2 `% E( B* x6 W% Z
11.2 从Dijkstra算法到贪心遍历框架BestFS146# b3 Y$ i: n- {1 [
11.3 习题147
& g J) C5 w, K, S第12章 贪心策略的其他应用151- {' Y+ K Z7 d4 ?5 f
12.1 相容任务调度问题151' _& |- ]* h1 Y; {. B
12.1.1 直觉的尝试151
4 I3 v2 _; K& F; H 12.1.2 基于任务结束时间的贪心算法152
4 Q5 G( A" K; K- w& t 12.2 Huffman编码153
& O. F( ~- v. _9 e' q( D/ S 12.2.1 可变长度编码153) B: b5 i. x0 f3 W) R; R
12.2.2 最优编码方案的性质154 X* z. q4 ]$ N; m( v9 |
12.2.3 贪心的Huffman编码156
7 G; f% s, H, l& s2 E7 M4 E$ r, w 12.3 习题156- [* U! J. K- T$ y, c7 D" W
第五部分 动态规划
8 s. a K, P( P; ]- g第13章 最短路径160% K: H! y# D- a6 k
13.1 有向无环图上的给定源点最短路径问题160: \4 z$ Y" `! F0 J& n+ i
13.2 传递闭包问题和Shortcut算法161$ \# y* H) ^& V) K8 F k: x y
13.3 所有点对最短路径:基于路径长度的递归163& A2 G( N1 U$ G0 R
13.4 Floyd-Warshall算法:基于中继节点范围的递归164! b( Y- D+ V4 f8 A6 Z' A7 E! [; s
13.5 习题166: o" i t# C* a( t% y
第14章 动态规划算法168( Z7 v8 _/ O4 v" M
14.1 动态规划的动机168: N6 ]$ F' [5 J* O+ {+ i1 I0 f
14.2 动态规划的基本过程169+ ?8 D9 L+ _# A
14.2.1 基于朴素遍历的递归170* f7 q2 x0 ` q5 g
14.2.2 未作规划的递归171
- _/ X( `% t$ v% S3 }8 V8 [& R 14.2.3 采用动态规划的递归171# ^0 r5 x/ Q: W0 Y' B6 o# Y
14.3 动态规划的应用174
& ^ b9 I5 f F* k 14.3.1 动态规划的要素174) A! {& U3 P! A4 [. e
14.3.2 编辑距离问题175
& l$ h9 K8 M/ R! F" X 14.3.3 硬币兑换问题176
3 v/ S0 c8 \: z7 }- ? 14.3.4 最大和连续子序列问题1782 v. d \0 X3 q+ T
14.3.5 相容任务调度问题179
n- S0 b$ L4 E; \$ a1 }) ~ 14.4 习题1790 e" c0 M0 q+ d5 P+ h& {- C
第六部分 计算复杂性理论初步* h5 ?! p9 R* K. K' v4 h
第15章 多项式时间归约188: R( t: {4 T% b4 | D9 M* m7 A9 ^6 ^2 ]
15.1 问题间的归约1887 i( a1 p- E3 o
15.1.1 优化问题和判定问题188
1 j% ]# p- s8 D% f, ^& ]' E: N 15.1.2 问题间归约的定义189
5 ~4 ^/ v9 A8 a$ Z" r( ^ 15.2 多项式时间:解决问题与完成归约190
8 V1 {1 U; j) p5 M$ d/ ` 15.2.1 多项式时间可解的问题190
6 }: |6 O; _) N+ W8 D4 X n$ W 15.2.2 多项式时间归约191( ~2 M% w6 X6 [+ D
15.3 习题192' K" [8 w# @( V
第16章 NP完全问题的基本概念1938 m5 S6 N+ }1 B8 z/ |+ L; C
16.1 NP完全问题的定义1930 O+ |# T$ A) u+ d
16.1.1 NP问题的定义1939 B' r: D! W3 R" t& @3 `
16.1.2 NP难与NP完全问题的定义194
2 m. {$ v g. w5 d 16.2 NP完全性证明的初步知识195
( i. |$ i6 W* H6 U2 Y3 ^ 16.2.1 一般问题和特例问题1953 ?7 N T9 Q1 k E) d5 K- J, @
16.2.2 等价的问题196
2 S' e) u9 C" X+ y: `) e 16.3 习题1977 q: F4 q" p! t' ~/ B
附录A 数学归纳法199
5 ]$ B3 d, q; t3 }* t附录B 二叉树200
7 P! z% v; M5 m# ~6 p2 c. G参考文献201
2 R4 P, T/ }" T1 w) w, Q
* c' `! q& o+ ~0 FJava资料百度网盘下载地址链接(百度云):java自学网(javazx.com) 算法设计与分析 PDF 高清 电子书 百度云.rar【密码回帖可见】# c7 O8 K! R9 Z$ o4 _6 e& M' r
0 V8 o4 r7 \5 j6 }! K5 F" U F/ X7 E! z1 Y% O; L6 Y" m# J
N `) i: V7 y- J! r3 N
T6 V( L! `# ]1 d+ A |
|