12人加入学习
(0人评价)
算法面试必备数据结构和算法
价格 $9,999美元
该课程属于 2023.7.9 CS课程 请加入后再学习
  • 图 graph
  • 图的基本概念
  • 分类存储
  • 遍历
  • 最短路径算法
  • 最小生成树
  • 例题讲解(对于面试很复杂,所以题量少,)

 

 

  • 图论
  1. 图的组成。顶点+边

vertex:度degree(与他连接的点的个数之和)入度(所有接入该点的边数之和)和出度(outdegree)

边(edge)

 

  • 图的分类

有向图和无向图。

有权图(每条边具有一定的权重(weight))和无权图(无权重或者权=1)。

有环图(如果遍历图的顶点,某个顶点可以被访问超过一次)和无环图(tree)。 (这是有向图的分类)

连通图(任意两个顶点都是连通)和非连通图(存在两个顶点不连通)和完全图(所有顶点和其他顶点是连通的)

 

  • 图的存储方式

n个顶点的图有一个n*n大小的邻接矩阵

一个无权图中1代表两点联通,0代表不连通

有权图中每个元素代表权重,0代表不相连。

无向图中,邻接矩阵关于对角线相等。

 

稠密图适合邻接矩阵,稀疏图适合邻接链表

 

邻接链表:每一个点存储一个链表指向所有与该店直接相连的点。 (增加或者删除复杂度更小)

有权图中链表中的元素值对应着权重

 

 

  • 图的遍历

操作有+-vertex。

DFS:访问顶点v,依次v未被访问的邻接点出发,深度优先遍历,直至途中和v有路径相同的顶点都被访问。使用stack

若此时仍有顶点未被访问,则重新开始DFS

 

BFS:使用queue。从队列中取出一个节点然后直接将所有未检验子节点push到queue中。

可以用来解决最短路径的问题。但是需要存储的信息量很大。 

对于稀疏图来说,DFS容易陷进去最长的一支分路。

但是每一层数量过多,BFS也容易耗时。

 

总体来说,倾向于dfs,内存小,解决问题更多一点

 

例题:lc133. clone graph。42min处 

 

  • 最短路径算法。
  • dijistra算法

适用于非负权值的单源最短路径,斐波那契堆。

使用BFS。

 

  • bellman-ford算法

无负权回路(一个回路的权值相加为负)的图每对节点之间的单源最短路径,并能检测负圈。

  • floyd算法

权值有负的单源最短路径,但不能有负圈回路

  • SPFA算法

有负权值,且欸有负圈的图的单源最短路径。

 

 

LC743 network delay time 1h53min,直接可以用dikistra

Lc787。bellman-ford或者BFS。kstop可以直接停

 

 

  • 最小生成树。
  • kruskal算法,prim算法

kruskal算法,

 

 

 

 

 

 

[展开全文]
shaning · 2023-11-06 · Session 8 0

授课教师

Yuhan老师

课程特色

视频(9)

学员动态

Bianyw 加入学习
shjm 加入学习
YanHuang 加入学习
duoduo99 加入学习
wuhaojia 加入学习