图论:图的表示方法

2. 图的表示

2.1 邻接矩阵

邻接矩阵 是一种编程语言中用二维数组表示图的方法,更适用于节点数量够的多的 稠密图(边数接近顶点数的平方)

class Node{int id;//节点的id,用于寻址Object obj;//存储的内容vector<Edge>edges;//表示与节点的出度
}
class Edge{/**存在不同权重的边*/double weight;/**表示边的出发节点*/Node* start;/**表示边的终点*/Node* end;
}/** 用邻接矩阵来表示图:Graph m个节点 n条边* 用给出的边的关系来初始化整个邻接矩阵* 邻接矩阵表示为:* * * * * * *> 横轴表示目标节点* ** *    adjMat[y][x]=weight 表示y节点和x节点之间边权重* *    weight = 0 说明从 y节点不能直接到x节点* *    weight!=0 说明从 y节点能直接到x节点* ** V纵轴表示出发节点*/
int main(){vector<vector<double>>adjMatrix(n,vector<double>(n));vector<Edge>Graph(n);for(Edge edge:Graph){adjMatrix[edge.start.id][edge.end.id]=edge.weight;}
}

2.2 邻接表

邻接表 是由一个顶点数组和多个链表组成,每一个顶点都有一个链表来表示与顶点相连的边 (在关系不需要多次变动的情况下可以用vector来优化)

class Node{int id;//节点的id,用于寻址Object obj;//存储的内容vector<Edge>edges;//表示与节点的出度
}
class Edge{/**存在不同权重的边*/double weight;/**表示边的出发节点*/Node* start;/**表示边的终点*/Node* end;
}//用节点数组+链表实现vector<List<Node*>>adjList(n,List<Node>());vector<Edge>graph;for(const Edge& edge:graph){adjList[edge.start.id].emplace_back(edge.end);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【仿真】UR机器人相机标定、立体标定、手眼标定、视觉追踪(双目)

实现在CoppeliaSim环境中进行手眼标定和目标追踪的一个例子。它主要涉及到机器人、机器视觉和控制算法的编程&#xff0c;使用了Python语言。接下来对该代码的主要类和方法进行解析&#xff1a; 1. 导入相关库 用于与CoppeliaSim模拟器通过ZeroMQ接口通信。包含Rotation类&…

想一次卸载一堆应用程序吗?这里有你想认识的一个应用程序

序言 Windows不允许你批量卸载应用程序。但默认的Windows卸载管理器并不是从电脑中删除应用程序的唯一方法。如果你经常希望一次卸载多个项目,这样你就不必等待按顺序执行,我们为你提供了该工具。 默认Windows卸载程序无法执行的所有操作 在Windows上卸载应用程序可能会一…

SF-YOLOv5——基于改进的特征融合模式的轻量级小目标检测算法

概述 提出了一种改进的YOLOv5模型&#xff0c;名为Small-Fast-YOLOv5 (SF-YOLOv5)&#xff0c;专门用于小目标检测。通过合理裁剪大目标检测层的特征图输出&#xff0c;显著减少了模型所需的计算资源&#xff0c;使模型变得更加轻量级。 还提出了一种改进的特征融合方法&#…

CV每日论文--2024.6.24

1、Whiteboard-of-Thought: Thinking Step-by-Step Across Modalities 中文标题&#xff1a;思维白板&#xff1a;跨模式逐步思考 简介&#xff1a;这段话描述了一种利用思维白板提示来增强大型语言模型在视觉推理任务中的性能的方法。 人类在解决需要视觉思考的问题时,通常会…

英语口语练习评测的开发实现

英语口语评测是一个复杂的系统&#xff0c;需要综合考虑语音识别、语音评测、自然语言处理等多种技术。以下是一些常见的英语口语评测开发框架。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 基于语音识别的口语评测框架这种框架主要…

第28课 绘制原理图——绘制导线

概述 放置完元器件之后&#xff0c;接着就要用导线将元器件的管脚一个一个连起来了。 绘制导线的方法 点击快速工具条上的“线”命令&#xff0c;进入绘制导线的过程。 点击选择某个管脚或电源端口&#xff0c;作为导线的起始端。 再点击选择另一个管脚或电源端口&#xff0c…

React@16.x(40)路由v5.x(5)常见应用场景(2)- 实现类似 vue 的路由模式

目录 1&#xff0c;vue-router2&#xff0c;React 模拟实现 1&#xff0c;vue-router vue 的路由配置文件&#xff0c; // src/router/index.ts const routes [{path: "/news",children: [{ path: "", component: NewsView },{ path: "detail"…

瞄准Windows的新兴僵尸网络:Kraken

2021 年 10 月&#xff0c;ZeroFox Intelligence 披露了名为 Kraken 的僵尸网络。Kraken 通过 SmokeLoader 进行传播&#xff0c;每次更新攻击基础设施时都会扩大规模。尽管与 2008 年发现的 Kraken 僵尸网络同名&#xff0c;但二者并没有其他共同点。 功能 自从 2021 年 10 …

养殖自动化通风系统:未来畜牧业的智能守护者

在现代畜牧业中&#xff0c;养殖环境的控制对于动物的健康成长和养殖业者的成功至关重要。养殖自动化通风系统凭借其先进技术和精密设备&#xff0c;实现了对养殖场内环境条件的精准调控&#xff0c;显著提升了养殖效率和动物福利。本文将深入探讨养殖自动化通风系统的必要性、…

Unity3D 有限状态机(FSM)的架构与实现详解

一、引言 在游戏开发中&#xff0c;特别是使用Unity3D这样的游戏引擎时&#xff0c;控制游戏对象的行为往往是一个复杂且关键的任务。有限状态机&#xff08;Finite State Machine&#xff0c;FSM&#xff09;作为一种强大的工具&#xff0c;被广泛用于管理游戏对象的状态转换…

CompletableFuture 场景DEMO代码展示

自定义线程池 自定义线程池好处参考&#xff1a; 线程是稀缺资源&#xff0c;如果被无限制的创建&#xff0c;不 仅会消耗系统资源&#xff0c;还会降低系统的稳定性&#xff0c;因此Java中提供线程池对线程进行统一分配、 调优和监控的框架。 自定义线程池ThreadPoolExecutor_…

Talking Web

1. curl 1.1 http curl http://127.0.0.1:80 向目标主机端口发送http请求 1.2 httphead curl -H “Host: 18ed3df584cd48328b5839443aa7b42b” http://127.0.0.1:80 1.3 httppath curl http://127.0.0.1:80/853c64cd218f80d0a59665666fb2ab80 1.4 URL编码路径 &#xff0…

LeetCode 2732. 找到矩阵中的好子集

一、题目描述 给定一个 m x n 的整数矩阵 mat 和一个整数 k&#xff0c;我们需要找到一个大小为 k 的子集 rows&#xff0c;使得这个子集对应的行在矩阵 mat 中构成的子矩阵中&#xff0c;所有元素之和最大。返回这个子矩阵中所有元素之和的最大值。 注意&#xff1a; 子集 …

天天大爆推文玩法营销号软件下载地址

天天大爆推文玩法营销号软件下载地址 天天大爆推文玩法营销号是一种营销策略&#xff0c;通过在社交媒体上发布频繁的推文来吸引关注和增加品牌曝光度。以下是一些可以用于天天大爆推文玩法营销号的策略&#xff1a; 营销号工具使用教程&#xff1a;https://iimenvrieak.feis…

数据结构之前缀树

写在前面 源码 。 前缀树&#xff0c;又叫做trie树&#xff0c;字典树&#xff0c;是一种多叉的树&#xff0c;一般用于单词前缀匹配的相关场景中&#xff0c;比如&#xff1a; 本文看下使用Java如何来实现这种数据结构。 1&#xff1a;基本介绍 思想&#xff1a;空间换时…

典型传感器简介及驱动安装

双目视觉传感器 Indemind 传感器简介 INDEMIND M1 是专为开发者提供的一款硬件&#xff0c;采用“双目摄像头IMU”多传感器融合架构与 微秒级时间同步机制&#xff0c;为视觉 SLAM 研究提供精准稳定数据源&#xff0c;以满足 SLAM 研究、导航及 避障开发、视觉动作捕捉开发、…

C++基础编程100题-014 OpenJudge-1.3-12 计算球的体积

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/12/ 描述 对于半径为r的球&#xff0c;其体积的计算公式为$ V4/3*πr^3 $&#xff0c;这里取π 3.14。 现给定r&#xff0c;求V。 输入 输入为一个不超过100的非负实数&#xff0c;即球半径&#xff0…

C# 高频面试题

C# 初级面试题及详细解答 1. C#中的值类型和引用类型的区别是什么&#xff1f; 解答: 值类型存储在堆栈上&#xff0c;直接包含数据&#xff1b;引用类型存储在堆上&#xff0c;存储的是对象的引用。值类型包括基本类型如 int、float 和 struct&#xff1b;引用类型包括 clas…

Perl编程探索:深入理解数组变量

Perl语言以其在文本处理和系统管理任务中的强大能力而受到广泛欢迎。在Perl中&#xff0c;数组是处理多个值集合的一种关键数据结构。本文将深入探讨Perl中的数组变量&#xff0c;包括它们的声明、初始化、访问和操作。 Perl数组的基本概念 在Perl中&#xff0c;数组可以用来…

FL Studio 21 集成了音频剪辑和增益控制,你可以更快、更精确地控制音频电平,包括自动交叉淡入淡出及更多功能

以通过控制色调、饱和度、亮度、文本、仪表和步进序列器的颜色来改变你的DAW外观&#xff0c; DAW“情绪主题”控制&#xff0c;水果编曲将变得与众不同。 更快的音频编辑 FL Studio 21 集成了音频剪辑包络和增益控制&#xff0c;你可以更快、更精确地控制音频电平&#xff0c…