当前位置: 首页 > 网络应用技术

JavaScript实现图结构

时间:2023-03-07 16:09:09 网络应用技术

  什么是图片?

  该图的特征:

  QIQIAO地图

  图形抽象

  问题:如何不反复穿过每座桥,最后返回起点?(任何起点)

  Euler最终以图形的形式抽象了它。每行代表每个桥,a,b,c,d,代表起点

  结论:出发点的桥梁数量无法返回起点。

  图形的常用术语:

  相邻矩阵的常见方式表示:相邻矩阵。

  如图所示:

  相邻矩阵的问题:

  指示相邻表图的另一种方法是:相邻表。

  如图所示:

  相邻表的问题:

  在实施过程中,相邻表用于表示侧面,并使用字典地图来存储相邻的表。

  首先创建图形类图,添加基本属性,然后实现Graph类的常见方法:

  如图所示:

  创建一个数组对象顶点存储顶点;创建一个地图对象边缘存储边缘,其中键是顶点,值是存储密钥顶点的相邻顶点的数组。

  代码:

  将ToString方法添加到图形中,以相邻表的形式在图中实现顶点。

  代码:

  测试代码:

  检测结果:

  该人物的遍历思想:

  遍历图的两种算法:

  为了记录是否访问了顶点,使用三种颜色表示其状态

  首先封装了初始化方法,以将图中的所有顶点初始化为白色,并且代码如下实现:

  广度优先搜索广度优先级搜索算法的想法:

  实施思想:

  根据队列,您可以简单地实现广度优先级搜索算法:

  代码:

  详细过程:

  指定的第一个顶点的第一个顶点的遍历过程是:

  这样,元素在队列中为0,也就是说,所有顶点在停止之前变成黑色,并从队列中出来。目前,图中的顶点已经通过了所有人。

  测试代码:

  测试结果:['a','b','c','d','e','f','g','h','i']

  可以看出,广度优先搜索的顺序并未反复穿越所有顶点。

  深入优先搜索深度优先算法的想法:

  实施思想:

  基于递归实现深度优先搜索算法:定义DFS方法来调用递归方法dfsvisit,并为递归访问图中的每个顶点定义DFSVisit方法。

  在DFS方法中:

  在DFSVisit方法中:

  代码:

  详细过程:

  在这里,我们主要解释代码中的步骤3:访问指定顶点的相邻顶点。

  下图显示了遍历图中每个点的完整过程:

  测试代码:

  测试结果:['a','b','e','i','f','c','d','g','h']

  原始:https://juejin.cn/post/7101924711667335199