Hello 算法 1.2.0 typescript版
18.49 MB
383 页
0 下载
2 浏览
0 评论
0 收藏
| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档系统阐述了算法和数据结构的基础知识,重点介绍了图的广度优先遍历和深度优先遍历方法。通过代码示例展示了哈希表的实现细节,并讨论了邻接表在图表示中的应用。 | ||
| AI总结 | ||
# Hello 算法 1.2.0 TypeScript 版
## 第9章 图
图的广度优先遍历(BFS)是一种常用算法,用于从一个起点访问所有其他顶点。以下是关键点总结:
### 广度优先遍历的核心要点
1. **顺序不唯一**:相同距离的顶点可以按任意顺序被访问。
2. **时间复杂度**:O(|V| + |E|),其中|V|是顶点数,|E|是边的数量。
3. **实现步骤**:
- 使用队列(que)来管理待访问的顶点。
- 记录已访问过的顶点以避免重复访问。
4. **代码示例**:
```typescript
// 队列初始化为空
let que = [];
// 初始化结果数组
let res: (Vertex | null)[] = [];
// 访问队列中的每个顶点
while (que.length > 0) {
const node = que.shift();
if (node === undefined) continue;
// 遍历当前节点的所有邻接顶点
for (let neighbor of node.adjacent) {
if (!visited[neighbor]) {
visited[neighbor] = true;
res.push(neighbor);
que.push(neighbor);
}
}
}
```
### 广度优先遍历的示例图解
图9‑10展示了从顶点1、3出发时,广度优先遍历的具体步骤。例如:
- 顶点1和3的访问顺序可以交换;
- 顶点2、4、6的访问顺序也可以任意调整。
### 相关代码实现
本书配套代码托管在GitHub仓库中,相关文件如`graph.ts`提供了图的表示和广度优先遍历算法的具体实现:
```typescript
class Vertex {
id: number;
}
class Edge {
to: Vertex;
weight?: number;
}
class Graph {
vertices: Vertex[];
edges: Edge[];
}
// 初始化图的邻接表表示
graph = new Graph();
graph.vertices.push(new Vertex(1));
graph.vertices.push(new Vertex(2));
// 添加边(示例)
graph.edges.push(new Edge(graph.vertices[0], graph.vertices[1]));
```
### 广度优先遍历的优缺点
- **优点**:保证按“由近及远”的顺序访问顶点,适用于无权图中的最短路径问题。
- **缺点**:对于大规模图或稀疏图来说,广度优先遍历可能效率不高。
通过以上总结可以看出,广度优先遍历是一种基础且实用的算法,适合处理许多图相关的问题。 | ||
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
P16
P17
P18
P19
P20
P21
P22
P23
P24
P25
P26
P27
P28
P29
P30
P31
P32
P33
P34
P35
P36
P37
P38
P39
P40
P41
P42
P43
P44
P45
P46
P47
P48
P49
P50
P51
P52
P53
P54
P55
P56
P57
P58
P59
P60
P61
P62
P63
P64
P65
P66
P67
P68
P69
P70
P71
P72
P73
P74
P75
P76
P77
P78
P79
P80
P81
P82
P83
P84
P85
P86
P87
P88
P89
P90
P91
P92
P93
P94
P95
P96
P97
P98
P99
P100
P101
P102
P103
P104
P105
P106
P107
P108
P109
P110
P111
P112
P113
P114
P115
P116
P117
P118
P119
P120
P121
P122
P123
P124
P125
P126
P127
P128
P129
P130
P131
P132
P133
P134
P135
P136
P137
P138
P139
P140
P141
P142
P143
P144
P145
P146
P147
P148
P149
P150
P151
P152
P153
P154
P155
P156
P157
P158
P159
P160
P161
P162
P163
P164
P165
P166
P167
P168
P169
P170
P171
P172
P173
P174
P175
P176
P177
P178
P179
P180
P181
P182
P183
P184
P185
P186
P187
P188
P189
P190
P191
P192
P193
P194
P195
P196
P197
P198
P199
P200
P201
P202
P203
P204
P205
P206
P207
P208
P209
P210
P211
P212
P213
P214
P215
P216
P217
P218
P219
P220
P221
P222
P223
P224
P225
P226
P227
P228
P229
P230
P231
P232
P233
P234
P235
P236
P237
P238
P239
P240
P241
P242
P243
P244
P245
P246
P247
P248
P249
P250
P251
P252
P253
P254
P255
P256
P257
P258
P259
P260
P261
P262
P263
P264
P265
P266
P267
P268
P269
P270
P271
P272
P273
P274
P275
P276
P277
P278
P279
P280
P281
P282
P283
P284
P285
P286
P287
P288
P289
P290
P291
P292
P293
P294
P295
P296
P297
P298
P299
P300
P301
P302
P303
P304
P305
P306
P307
P308
P309
P310
P311
P312
P313
P314
P315
P316
P317
P318
P319
P320
P321
P322
P323
P324
P325
P326
P327
P328
P329
P330
P331
P332
P333
P334
P335
P336
P337
P338
P339
P340
P341
P342
P343
P344
P345
P346
P347
P348
P349
P350
P351
P352
P353
P354
P355
P356
P357
P358
P359
P360
P361
P362
P363
P364
P365
P366
P367
P368
P369
P370
P371
P372
P373
P374
P375
P376
P377
P378
P379
P380
P381
P382
P383
下载文档到本地,方便使用
文档评分







