前言
什么是图?它能用来干嘛?本文将以图文的形式带你解答上述疑惑,欢迎各位感兴趣的开发者阅读本文。
概念
如下图所示,圆圈叫做顶点(结点),连接顶点的线叫做“边”,也就是说,由顶点和连接每对顶点的边所构成的图形就是图。
作用
图可以用来表现各种关系:
-
人际关系
图可以变现社会中的各种关系,使用起来非常方便。假设我们要举行一场活动,将参加人员作为顶点,把互相认识的人用边连接,就能用来表现参加人员之间的人际关系了。
-
将车站作为顶点,把相邻两站用边连接,就能用图来表现地铁的路线。
-
在计算机网络中,把路由器作为顶点,将相互连接的两个路由器用边连接,这样就能用图来表现网络的连接关系。
分类
图大致分为无向图、加权图、有向图
加权图
上面讲到的都是由顶点和边构成的图,而我们还可以给边加上一个值。
这个值就叫做边的权重或者权,加了权的图被称为“加权图”。没有权的边只能表示两个顶点的连接状态,而有权的边就可以表示顶点之间的“连接程度”。
程度:根据图的内容不同,其表示的意思也不同,比如在计算机网络中,给两台路由器之间的边加上传输数据所需要的时间,这张图就能表示网络之间的通信时间了。
而在路线图中,如果把地铁在两个车站间行驶的时间加在边上,这张图就能表现整个路线的移动时间;如果两个车站间的票价加载边上,就能表现乘车费了。
有向图
当我们想在路线图中表示该路线只能单向行驶时,就可以给边上加上箭头,而这样的图就叫做“有向图”。比如网页里的链接也是有方向性的,用有向图来表示就会很方便。
边上没有箭头的图便是“无向图”。
如图所示,我们可以从顶点A到顶点B,但不能直接从B到A,而B和C之间有两条边分别指向两个方向,因此可以双向移动。
和无向图一样,有向图的边也可以加上权重。
如图所示,从顶点B到顶点C的权重为5,而从C到B的权重为7,如果做的是一个表示移动时间的图,从B到C就是下坡路。就像这样,有向图还可以设置非对称的权重
便利性
假设图中有两个顶点 s 和 t,而我们设计出了一种算法,可以找到“从s到t的权重之和最小”的那条路径。
那么,这种算法就可以应用到这些问题上:寻找计算机网络中通信时间最短的路径,寻找路线图中耗时最短的路径,寻找路线图中最省乘车费的路径等。
就像这样,只要能用图来表示这些关系,我们就可以用解决图问题的算法来解决这些看似不一样的问题。
图的搜索
图的搜索,指得是从图的某一个顶点开始,通过边到边到达不同的顶点,最终找到目标顶点的过程。根据搜索的顺序不同,图的搜索算法有“广度优先搜索”、“深度优先搜索”等。
图的搜索可以解决图的基本问题:最短路径问题的算法,最短路径问题即“从 s 到 t”的路径中,找到一条所经过的边的权重总和最小的路径。
写在最后
- 文中使用的图片源自《我的第一本算法书》,如若侵权,请评论区留言,作者立即删除相关图片。
- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于掘金,未经许可禁止转载💌
评论区