js中的图是什么?

news/2024/11/19 3:39:58/

什么是图?

图是网络结构的抽象模型,是一组由边连接的节点。图可以表示任何二元关系,比如道路、航班等。在 JavaScript 中没有图,但是可以通过 Object 和 Array 来构建图。

常用操作

  • 深度优先遍历
  • 广度优先遍历

图的表示法

  • 邻接矩阵
  • 邻接表
  • 关联矩阵

  • 在这里插入图片描述

邻接矩阵

ABCDE
A01000
B00110
C00001
D10000
E00010

邻接表

并非仅限于通过对象/数组表示,其他形式也可以。

{"A": ["B"],"B": ["C", "D"],"C": ["E"],"D": ["A"],"E": ["D"]
}

图的深度/广度优先遍历

深度优先遍历

尽可能深的搜索图的分支。

口诀:

  1. 先访问根节点
  2. 对根节点的没访问过的相邻节点挨个进行深度优先遍历(因为相邻节点可能也会指向当前节点)
const graph = {A: ['B'],B: ['C', 'D'],C: ['E'],D: ['A'],E: ['D']
}const visited = new Set()const dfs = (n) => {console.log(n)visited.add(n)graph[n].forEach((item) => {if (!visited.has(item)) {dfs(item)}})
}dfs('A') // A B C E D

广度优先遍历

先访问离根节点最新的节点。

口诀:

  1. 新建一个队列,把根节点入队
  2. 把队头出队并访问
  3. 把队头的没有访问过的相邻节点入队
  4. 重复第 2、3 步直到队列为空
const graph = {A: ['B'],B: ['C', 'D'],C: ['E'],D: ['A'],E: ['D']
}const bfs = (head) => {const visited = new Set()visited.add(head)const q = [head]while (q.length) {const n = q.shift()console.log(n)graph[n].forEach((item) => {if (!visited.has(item)) {q.push(item)visited.add(item)}})}
}bfs('A') // A B C D E

原文链接:菜园前端


http://www.ppmy.cn/news/651092.html

相关文章

使用gitlab 自带 CI/CD 构建部署项目

首先是处理网络问题 这里我用的是桥接模式 桥接模式方便局域网内的小伙伴一起使用 如果没有这个打算可跳过这步 # 使用ip addr 查看网络 ip addr编辑网络 vi /etc/sysconfig/network-scripts/ifcfg-你的网络名称 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改如下内容 B…

笔记本电脑升级后无法用拓展坞供电,提示显示器连接可能受限。

今天准备在笔记本电脑上 上Github刷题来着。 突然遇到了一个问题,连接了电源充不了电!!! 经过我反复插拔电源,电脑反复提示“显示器连接受限,请检查dispplayport接口......” 然后我经过了几次测试 1.华…

笔记本电脑硬件软件全升级:内存条-固态硬盘-重装系统

笔记本电脑全升级:内存条-固态硬盘-重装系统 前言1 了解自己电脑的配置2 拆机-安装内存条和固态硬盘2.1 写在前面的注意事项2.2 正式拆机2.3 拆掉电池2.4 更换内存条2.5 更换固态硬盘2.6 装机 3 重装系统3.1 重装系统的方式3.2 系统盘制作3.3 进入BIOS更改开机启动项…

Http协议的几种常见状态码

HTTP协议是当前使用最广泛的一种通信协议,在性能测试中,也使用的非常广泛。 HTTP状态码,是客户端通过HTTP协议向服务器发送请求时,用于描述返回的请求结果。 借助状态码,可以知道请求的接收端是否正常处理了请求&#…

【DAY3】类,构造函数

#include<iostream> using namespace std; class Person { private:int age;int *p; public:Person():p(new int(89)){age18;}Person(int age,int num){this->ageage;this->pnew int(num);}//拷贝构造Person(Person &other):age(other.age),p(new int(*(other.…

2021年中国发电量及用电量情况:全社会用电量较去年增涨约10%[图]

一、发电量 随着电网工程建设的增加&#xff0c;我国发电总量也在稳定增涨。2021年全国发电总量为81122亿千瓦时&#xff0c;同比2020年增涨6.41%。2020年全国发电总量为76236亿千瓦时&#xff0c;同比增涨4.05%。 2015-2021年中国发电总量&#xff08;单位&#xff1a;亿千瓦…

时间序列预测12:用电量预测 02 朴素模型多步预测建模

【时间序列预测/分类】 全系列60篇由浅入深的博文汇总&#xff1a;传送门 接上文&#xff0c;本文使用朴素模型来对家庭用电数据集进行单变量多步预测。主要内容如下&#xff1a; 如何为模型准备数据集&#xff1b;如何开发指标、划分数据集、评估预测模型&#xff1b;如何开发…