持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天。
图是一种非线性数据结构,很多前端开发人员对他可能并不了解,今天我们就从几个方面来了解一下什么是图吧。
定义
在数据结构与算法中,图可以说是比较难理解但是又相当重要的存在。小白学起来可谓相当费力,甚至有些摸不着头脑。今天我们就仔细说说图的相关知识,从基础到应用,希望可以帮到想学习的你。
图简介
据很多老程序员说,图是所有算法中最有用的,而且还经常用到,比如路线图啊、分布图啊等等。其中最常见的就是解决最短路径的问题,用到的是广度优先搜索。
我们以上图来说明图的定义。
组成
- 节点:节点可与多个节点直接相连。
- 边
广度优先搜索
广度优先搜索是一种用于图的查找算法,可帮助回答两类问题。
❑ 第一类问题:从节点A出发,有前往节点B的路径吗?
❑ 第二类问题:从节点A出发,前往节点B的哪条路径最短?
图是网络结构的抽象模型,是一组由边连接的节点。任何二元关系都可以用图来表示。
组成
一个图 G = (V,E)由以下元素组成:
- V:一组顶点
- E:一组边,连接V中的顶点
相关概念:
- 相邻顶点:由一条边连接在一起的顶点
- 度:一个顶点的度是其相邻顶点的数量。如上图A的度为3
- 路径:顶点的一个连续序列。如A B E I
有向图和无向图
有向图:边有方向
图还可以加权,加权图的边被赋予了权值。
- 无向图:边没有方向