当前位置: 首页 > news >正文

图-基础概念

是什么

图是一种抽象的数据类型,在图中的数据元素通常称作节点,V是所以定点的集合,E是所有边的集合

图的分类

有向图

如果两个订单v,w,只能由v向w,而不能w向v,那么我们就把何种情况叫做一个从v到w的有向边。v也被陈作初始点,w也被称为终点。这种图也被称为有向图

无向图

如果v和w是没有顺序的,从v到达w和从w到达v是完全相同的,这种图就叫做无向图

常见的图表达方式
邻接矩阵

通过一个二维数组G[N][N]表示N个点到N-1编号,通过邻街矩阵可以立即看到两个订单直接是否存在一条边

邻接表

存储方式如下

在javascript中永Object进行表示
const graph = {A: [2, 3, 5],B: [2],C: [0, 1, 3],D: [0, 2],E: [6],F: [0, 6],G: [4, 5] 
}

用数组进行表示

 代码A

const graph = {0: [1, 4],1: [2, 4],2: [2, 3],3: [],4: [3], }

常见的操作方式

深度优先遍历

广度优先遍历

数据如上面的代码A

深度优先
const visited = new Set()
const dfs = (n) => {console.log(n)visited.add(n) // graph[n].forEach(c => {if(!visited.has(c)){ //demo,第一次,遍历graph下的graph[1]和graph[4]dfs(c)}}) }dfs(0)

结果:0,1,2,3,4

这里只是恰巧是顺数,如果把graph[0]改为[4,1]那结果会变成0,4,3,1,2

广度优先
const visited = new Set()
const dfs = (n) => {visited.add(n)const q = [n]while(q.length){const n = q.shift()console.log(n)graph[n].forEach(c => {if(!visited.has(c)){q.push(c) visited.add(c)}})} }dfs(0)

结果

0,1, 4,2,3

备注

上面的set是用来做去重的 

使用场景

社交网络。

社交网络是典型的网络结构,图可以用点来表达社交关系中的人,用点与点之间的连接来表达人与人的关系。比如我们想要去表示谁认识谁、谁和谁沟通、谁能够影响谁等人与人之间的关系。一个具体的例子是在小红书上,比如,A 关注了 B 的小红书,可以用 A 指向 B 的线来连接表示。这些人与人的社交信息,可以用来去解释社交网络的信息流动。人与人之间的联系也定义了我们是谁。

交通网络。
交通网络也可以用图来表达。比如所有的城市可以用图的节点来表示,城市间的交通渠道可以用边来表示。像最近大家关注的疫情封城措施,也可以用数据结构来理解,就是把交通网络图的一些边进行了阻隔。
互联网网站连接。

我们经常看到网站上会有指向其他网址的超链接。如果我们把互联网所有的网页定义成图的节点,那么网页与网页之间的边就是这些链接了。如果大家熟悉 Google 经典的网页排名算法 PageRank,就会知道,搜索引擎正是用指向一个网页的引用数量去判断一个网页的质量。

第 13 讲:用图来表达更为复杂的数据关系 · 数据结构精讲:从原理到实战 · 看云

更多

https://www.cnblogs.com/jaxu/p/11338294.html

相关文章:

图-基础概念

是什么 图是一种抽象的数据类型,在图中的数据元素通常称作节点,V是所以定点的集合,E是所有边的集合 图的分类 有向图 如果两个订单v,w,只能由v向w,而不能w向v,那么我们就把何种情况叫做一个从…...

Javascript前端基础面试(十)

MVVM Vue MVVM这一篇就够啦&#xff01;_vue r mvvm-CSDN博客 点容器内的图标,图标边框变成border 1px solid red&#xff0c;点空白处重置 <div id"container"> <img src"icon.png" alt"Icon" class"icon"> <!…...

书生大模型实战营闯关记录----第五关:LlamaIndex+Internlm2 RAG实践Demo:效果对比,文档加载,向量库构建,检索器,模型推理

文章目录 1. 前置知识RAG背景RAG 效果比对 2. 环境、模型准备2.1 配置基础环境2.2 安装 Python环境和依赖包2.3 下载 Sentence Transformer 模型2.4 下载 NLTK 相关资源 3. LlamaIndex HuggingFaceLLM4. LlamaIndex RAG加载文档构建向量存储索引库检索器RAG代码 5. LlamaIndex …...

如何使用极狐GitLab CI/CD Component Catalog?【上】

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

详解Xilinx FPGA高速串行收发器GTX/GTP(3)--GTX的时钟架构

目录 1、参考时钟 2、时钟方案 2.1、单个外部参考时钟驱动单个QUAD中的多个transceiver 2.2、单个外部参考时钟驱动多个QUAD中的多个transceiver 2.3、同一个Quad中,多个GTX Transceiver使用多个参考时钟 2.4、不同Quad中,多个GTX Transceiver 使用多个参考时钟 3、QP…...

简单搭建dns服务器

目录 一.安装服务 二.编写子配置文件 三.编写主配置文件 四.编写文件 五.重启服务测试 配置端&#xff1a;IP地址为172.25.254.100、主机名为node1.rhel9.org 测试端&#xff1a;IP地址为172.25.254.101、主机名为node2.rhel9.org 一.安装服务 [rootnode1 ~]# dnf inst…...

大数据进阶(Advanced Big Data)

大数据进阶&#xff08;Advanced Big Data&#xff09; 目录 引言大数据架构 Lambda架构Kappa架构 大数据技术栈 数据采集与预处理数据存储与管理数据处理与分析数据可视化与展示 大数据分析方法 机器学习深度学习自然语言处理图数据分析 大数据在工业中的应用 制造业能源管理…...

微信小程序开发优惠券制作源码

微信小程序开发优惠券制作源码。制作一个自带流量的小程序商城,功能强大玩法新,轻松实现引流,推广,卖货,分销,会员管理,直播等多种功能需求需要哪些编辑代码源码呢?http://m.bokequ.com/list/124-2.html 代码分享 <!DOCTYPE HTML> <html xmlns"http://www.w3.o…...

mongodb的安装操作记录

mongodb的安装操作记录 1 上传软件包&#xff0c;并解压 [rootmonitor local]# tar -xvf mongodb-linux-x86_64-rhel70-7.0.12.tgz mongodb-linux-x86_64-rhel70-7.0.12/LICENSE-Community.txt mongodb-linux-x86_64-rhel70-7.0.12/MPL-2 mongodb-linux-x86_64-rhel70-7.0.1…...

C++客户端Qt开发——多线程编程(二)

多线程编程&#xff08;二&#xff09; ③线程池 Qt中线程池的使用 | 爱编程的大丙 1>线程池 我们使用线程的时候就去创建一个线程&#xff0c;这样实现起来非常简便&#xff0c;但是就会有一个问题&#xff1a;如果并发的线程数量很多&#xff0c;并且每个线程都是执行…...

ubuntu20复现NBV探索

官网代码 后退地平线下一个最佳景观规划师 这个代码有些久远&#xff0c;issue里面有人已经在ubuntu20里面使用了3dmr&#xff0c;但是他那个代码我也运行不成功&#xff0c;docker网络一直也不佳&#xff0c;所以还是自己重新修改源码靠谱。 最终实现的代码等有时间上传到gi…...

【51单片机仿真】基于51单片机设计的温湿度采集检测系统仿真源码文档视频——文末资料下载

演示 目录 1.系统功能 2.背景介绍 3.硬件电路设计 4.软件设计 4.1 主程序设计 4.2 温湿度采集模块程序设计 4.3 LCD显示屏程序设计 5.系统测试 6.结束语 源码、仿真、文档视频等资料下载链接 1.系统功能 该系统通过与AT89C51单片机、LCD1602显示屏和DHT11温湿度传感器…...

【Hadoop-驯化】一文学会hadoop访问hdfs中常用命令使用技巧

【Hadoop-驯化】一文学会hadoop访问hdfs中常用命令使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&am…...

【Spring】Bean详细解析

1.Spring Bean的生命周期 整体上可以简单分为四步&#xff1a;实例化 —> 属性赋值 —> 初始化 —> 销毁。初始化这一步涉及到的步骤比较多&#xff0c;包含 Aware 接口的依赖注入、BeanPostProcessor 在初始化前后的处理以及 InitializingBean 和 init-method 的初始…...

决策树总结

决策树总结 决策树是一种广泛应用的机器学习算法&#xff0c;它模拟了人类进行决策时的逻辑思维过程&#xff0c;通过构建一棵树状结构来进行数据的分类或回归预测。决策树模型因其直观易懂、易于解释、能够处理多类问题以及无需进行复杂的特征缩放等优点&#xff0c;在数据挖…...

通俗易懂!495页看漫画学Python入门教程(全彩版)Git首发破万Star

前言 在编程的世界里&#xff0c;Python无疑是一颗璀璨的明星。从最初作为打发圣诞节闲暇时间的项目&#xff0c;到如今成为最受欢迎的程序设计语言之一&#xff0c;Python以其简洁、易学、强大的特点吸引了无数编程爱好者。然而&#xff0c;对于初学者来说&#xff0c;编程的…...

websocket实现简易聊天室

websocket实现简易聊天室 又做了一个关于websocket广播和在线人数统计的练习&#xff0c;实现一个简易的聊天室。 前端vue3 前端里的内容主要包含&#xff1a; 1.css的animation来实现公告从右到左的轮播。 2.websocket的onmessage里对不同消息的处理。 <template>&l…...

vulhub-wordpress

1.打开wordpress关卡&#xff0c;选择简体中文 添加信息——点击安装WordPress 安装完成——登录 点击外观——编辑主题 可以加入一句话木马&#xff0c;但是我写入的是探针文件 也可以去上传一个带有木马的主题 上传之后会自动解压 1.php就是里面的木马文件...

【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记

一、模型的保存与加载 逻辑回归是一种常见的机器学习算法&#xff0c;广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型&#xff0c;我们通常需要将其保存和加载。 保存模型 训练模型&#xff1a;首先&#xff0c;你需要用你的数据训练一个逻辑回归模型。例如&…...

自动驾驶行业知识汇总

应届生月薪2W的自动驾驶开发、机器人、后端开发&#xff0c;软件开发该如何学习相关技术栈_哔哩哔哩_bilibili 两万字详解自动驾驶开发工具链的现状与趋势 (qq.com) 九章智驾 - 2023年度文章大合集 (qq.com) 九章 - 2022年度文章大合集 (qq.com)...

draw.io vs ProcessOn:两款在线流程图工具深度对比,哪款更适合你?

draw.io vs ProcessOn&#xff1a;专业流程图工具全方位评测与选型指南 在数字化协作时代&#xff0c;流程图工具已成为技术团队、产品经理和业务分析师日常工作的刚需。面对市场上众多选择&#xff0c;如何找到既满足专业绘图需求又符合团队协作习惯的工具&#xff1f;本文将…...

大模型迁移

目录 大模型迁移 = 大模型搬家 一、为什么要 “迁移”? 二、大模型迁移到底在 “迁” 什么?(核心 4 件事) 1. 模型格式迁移(最外层) 2. 算子迁移(最核心、最难) 3. 编译器迁移 4. 运行时 / 驱动迁移(就是你现在做的这块) 三、用你最熟的流程比喻(一下就懂) …...

MIPS寄存器文件设计避坑指南:从零开始用Logisim实现4x32位寄存器组

MIPS寄存器文件设计避坑指南&#xff1a;从零开始用Logisim实现4x32位寄存器组 在计算机体系结构的学习中&#xff0c;理解寄存器文件的工作原理是掌握CPU设计的关键一步。MIPS架构作为经典的RISC指令集&#xff0c;其寄存器文件设计体现了精简指令集的核心理念。本文将带您从零…...

FreeRTOS信号量避坑指南:二值与计数信号量的5个关键差异点(附STM32测试案例)

FreeRTOS信号量深度解析&#xff1a;二值与计数信号量的实战差异与STM32优化策略 在嵌入式实时操作系统中&#xff0c;信号量作为任务间通信的核心机制&#xff0c;其正确使用直接关系到系统的稳定性和响应效率。对于使用STM32平台的中级开发者而言&#xff0c;深入理解二值信号…...

探索大气压等离子体电离波在介质管中的动态传输机制

1. 电离波&#xff1a;介质管中的"闪电侠" 第一次在实验室看到电离波在介质管中传输的场景时&#xff0c;我盯着高速摄像机拍下的画面看了整整半小时——那道蓝色的光波像是有生命一样&#xff0c;以肉眼难以捕捉的速度在管中穿梭。这种被称为"电离波"的物…...

ECharts双柱状图对比设计:共享Y轴标签的高效实现

1. 双柱状图对比设计的核心价值 在日常数据可视化工作中&#xff0c;我们经常需要对比两组相关联的数据指标。比如电商平台的销售额与退货量、企业的收入与支出、产品的用户增长与流失率等。传统的单柱状图往往无法直观呈现这种对比关系&#xff0c;而简单的并排放置又会导致图…...

WQ9101模组移植避坑实录:当WiFi6遇上Ubuntu 20.04的那些坑

WQ9101模组移植避坑实录&#xff1a;当WiFi6遇上Ubuntu 20.04的那些坑 在嵌入式Linux开发中&#xff0c;硬件模组的移植工作往往伴随着各种意想不到的挑战。WQ9101作为一款支持WiFi6和蓝牙5.3的双模芯片&#xff0c;其性能优势明显&#xff0c;但在实际移植过程中&#xff0c;开…...

Autodock Tools加氢加电荷实战:用Linux命令行处理蛋白与小分子

Autodock Tools加氢加电荷实战&#xff1a;用Linux命令行处理蛋白与小分子 在生物分子模拟领域&#xff0c;蛋白和小分子的预处理是分子对接、虚拟筛选等研究的关键第一步。Autodock Tools作为经典的计算化学工具&#xff0c;其加氢加电荷功能被广泛用于优化分子结构。本文将深…...

从 0 到可用:Claude Code × Amazon Bedrock 实战打通指南

这条链路本质就是一件事&#xff1a;让 Claude Code 不再走 Anthropic 直连&#xff0c;而是通过 AWS Bedrock 调模型。路径很清晰&#xff0c;两段&#xff1a;Bedrock 开通 Claude 权限 → Claude Code 切 AWS 凭证下面把整个过程拆成一套可以直接落地的流程。一、先把 Bedr…...

OpenAI 的 Harness Engineering介绍

OpenAI 的 Harness Engineering(驾驭工程)是其在 2026 年初提出的一种全新软件工程范式,旨在应对“智能体优先”(agent-first)的开发环境。这一概念的核心在于:人类工程师不再直接编写代码,而是设计环境、明确意图并构建反馈循环,让 AI 智能体(如 Codex)自主完成编码…...