2022届秋招笔试题小结:图
一、准备知识
图的相关概念:
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
无向图(Undirected graphs)和有向图(Directed graphs);
连通图:在无向图G中,如果从顶点 v v v到顶点 v ′ v' v′有路径,则称 v v v和 v ′ v' v′是连通的。如果对于图中任意两个顶点 v i v_i vi、 v j v_j vj∈V, v i v_i vi和 v j v_j vj都是连通的,则称G是连通图(Connected Graph)。
二、图的遍历算法
图的遍历是指给定一个图 G G G 和其中任意一个顶点 v 0 v_0 v0,从 v 0 v_0 v0出发,沿着图中各边访遍图中所有顶点,且每个顶点仅被访问一次。
1. 深度优先搜索(DFS) 算法
vivo笔试题:游戏地图路径
华为提前批笔试题:中国象棋
给定地图上两点,判断是否可以从 src 到达 dst 。若可达,则输出最短路径,若不可达,输出 -1 。C++:DFS求最优路径
2. 广度优先搜索(BFS)算法
待续
三、最小生成树算法
1. 克鲁斯卡尔(Kruskal)算法
2. 普里姆(Prim)算法
待续
四、最短路径
1. 迪杰斯特拉(Dijkstra)算法
华为提前批笔试题:逛动物园
从指定点出发是否可以走完图所有节点,要求输出最长距离。
此题和 LC 743 相似,但是却要求输出最长距离,因此只需要改变优先级队列的排序函数 cmp 即可,使队列元素按照权值从大到小排序。LC 743. 网络延迟时间
2. 弗洛伊德(Floyd)算法
待续
五、拓扑排序
拓扑排序通常用在用顶点表示活动的网络(AOV网络),构造 AOV 网络的全部顶点的拓扑有序序列的运算就叫做拓扑排序。
基本算法
vivo笔试题:编译依赖问题
这道题主要用拓扑排序的方法求解,拓扑排序部分的实现没什么问题,需要注意ACM模式下数据的输入和输出问题。拓扑排序:编译依赖问题