写在前面

我们知道,图的表示法有很多,但是用多种方法来实现我们的算法,那就变的困难了,所以我们遇到图的时候就要想到转化为一般表示法,如果题目给的是别的表示方法,那么我们就进行转换,将题目给的图转化为我们的一般图表示法。


图的一般表示法

 // 点结构的描述
public class Node {public int value;//表示值public int in;//入度:有多少个边指向此处public int out;//出度:有多少指出去的边public ArrayList<Node> nexts;//直接邻居,指向下一个的点集合public ArrayList<Edge> edges;//边,从我出发的边的集合//out=next.size()public Node(int value) {this.value = value;in = 0;out = 0;nexts = new ArrayList<>();edges = new ArrayList<>();}
}
//边结构的描述
public class Edge {public int weight;//边的权重public Node from;//边的入点public Node to;//边的出点public Edge(int weight, Node from, Node to) {this.weight = weight;this.from = from;this.to = to;}
}//图的结构
public class Graph {public HashMap<Integer, Node> nodes;//k表示编号id,Node就是实际的点public HashSet<Edge> edges;public Graph() {nodes = new HashMap<>();edges = new HashSet<>();}
}

转化

例一

题目所给的图的结构是这样描述的

  • 用二维数组来表示图,共三个列,第一列表示边权,第二列表示入点id,第三列表示出点id。
  • [ 边权 ,from ,to ] 三个都是int型的
// matrix 所有的边
// N*3 的矩阵
// [weight, from节点上面的值,to节点上面的值]
//
// [ 5 , 0 , 7]
// [ 3 , 0,  1]
//
public static Graph createGraph(int[][] matrix) {Graph graph = new Graph();for (int i = 0; i < matrix.length; i++) {// 拿到每一条边, matrix[i] int weight = matrix[i][0];int from = matrix[i][1];int to = matrix[i][2];//给图加点if (!graph.nodes.containsKey(from)) {graph.nodes.put(from, new Node(from));}if (!graph.nodes.containsKey(to)) {graph.nodes.put(to, new Node(to));}//建立边Node fromNode = graph.nodes.get(from);Node toNode = graph.nodes.get(to);Edge newEdge = new Edge(weight, fromNode, toNode);//添加fromNode的直接邻居fromNode.nexts.add(toNode);fromNode.out++;//fromNode的出度++toNode.in++;   //toNode的入度++fromNode.edges.add(newEdge);//以fromNode开始的边//给图加边graph.edges.add(newEdge);}return graph;
}

邻接矩阵转换法

【图】图的一般表示法以及其他表示法转化为一般表示法相关推荐

  1. 图/图的存储/图的遍历

    图的概念:图的数据结构由两个集合构成,一个是顶点集V (vertex),一个是边集E(Edge):无向图一般记为G(V , E) :有向图记为 G<V, E> 有向图就是边的指向是有方向区 ...

  2. 世界上有没有无法破解的密码?揭秘量子通信 | 图图是道

    来源:文章2020年11月23日发表于<中国日报>的微信公众号 图图是道 科学顾问 / 中国科学技术大学副教授 袁岚峰 监制 / 柯荣谊   联合监制 / 邢志刚   统筹 / 张若琼 总 ...

  3. #589. 图图的游戏

    [题目描述]: 图图正在玩一个智力游戏:有一个n×n 的01 方格,图图要从中选出一个面积最大的矩形区域,要求这个矩形区域不能有超过k个1.这么难的问题图图当然不会做了,他想让你帮帮他,你能解决这个问 ...

  4. UOJ #588. 图图的旅行

    [题目描述]: 图图计划去Bzeroth 的精灵王国去旅游,精灵王国由n 座城市组成,第i 座城市有3 个属性x[i],w[i],t[i].在精灵王国的城市之间穿行只能依靠传送阵,第i 座城市的传送阵 ...

  5. UOJ #589. 图图的游戏

    [题目描述]: 图图正在玩一个智力游戏:有一个n×n 的01 方格,图图要从中选出一个面积最大的矩形区域,要求这个矩形区域不能有超过k个1. 这么难的问题图图当然不会做了,他想让你帮帮他,你能解决这个 ...

  6. HTML静态网页作业——图图影视影院5页 带报告

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 摄影作品 | 影视设计网页 | 在线电影 | 视频音频元素 | ...

  7. 数据结构(廿五) -- C语言版 -- 图 - 图的遍历 -- 邻接矩阵 - 深度/广度优先遍历/搜索(DFS、BFS)

    内容预览 零.读前说明 一.概 述 二.深度优先遍历(DFS) 2.1.无向图的遍历过程 2.2.有向图的遍历过程 2.3.总结说明 2.4.实现源代码 三.广度优先遍历(BFS) 3.1.广度优先的 ...

  8. 系统分析与设计作业(五):业务建模与活动图图绘制

    系统分析与设计作业(五):业务建模与活动图图绘制 题目 题目 1. 根据订旅馆建模文档,Asg-RH.pdf: 绘制用例图模型(到子用例) 给出 make reservation 用例的活动图 2.根 ...

  9. NeurIPS 2022 | 能量函数指导的图图翻译扩散模型

    EGSDE 扩散模型作为一种新的深度生成模型,在图像生成领域取得了 SOTA 的效果,并且逐渐在诸多应用领域展现出强大的性能,如视频生成.分子图建模等. 最近来自人民大学李崇轩课题组的研究者们提出了一 ...

最新文章

  1. 美多商城之购物车(购物车管理1)
  2. Angular 表单验证类库 ngx-validator 1.0 正式发布
  3. UVA1587-Box
  4. linux samba代码,Linux下Samba服务器源码安装及配置
  5. 高性能python_[转]【原创】High Performance Python(Python 高性能计算)(一)
  6. mysql column which is not functionally dependent GROUP BY clause
  7. div中赋值html字符串
  8. MyEclipse Web 项目导入 Eclipse 中需要改的文件
  9. server使用abp中调用存储过程 sql_ABP中连接已有数据库执行Sql或存储过程
  10. c++ 实现一个object类_一个Java类就能实现微服务架构的权限认证
  11. excel自动排班表_Excel通用值班表日历版,排班人员自动显示,万年历套用
  12. python获取验证码失败_python 爬虫:验证码一直错误
  13. 关于 RESTFUL API 安全认证方式的一些总结
  14. BGP 下一跳的理解和实验
  15. python词云分析文本_用python实现词频分析+词云
  16. 华为ensp配置AC+AP多个SSID信号
  17. UltralSO 软碟通制作U盘启动盘(图解详细 完美避坑)
  18. OpenFoam | 全面解析sprayFoam | 一、对象parcels属于哪个类
  19. 表单中enter键,导致表单提交
  20. 刺激战场灵敏度怎么调压枪最稳:花了4个小时调的灵敏度,适合所有段位

热门文章

  1. 07-20210305在WIN10下通过USB口给华为海思Hi3516DV300刷机(鸿蒙系统)
  2. 知识图谱与KBQA——槽填充
  3. sql server访问Excel97-2003 Excel2007
  4. 荣耀 MagicBook Pro 加装固态硬盘
  5. mybatis中的事务------我的笔记M11
  6. Java程序基础——异常
  7. wsl2教程可以代替linux吗,WSL2安装使用
  8. Kaggle泰坦尼克号生存预测挑战——模型建立、模型调参、融合
  9. Cadence 16.6 Allegro中如何设置多层板的每一层的单端信号的线宽以保证50Ω阻抗?
  10. 黑鲨3能升级鸿蒙5g吗,配上高通骁龙865 5G芯片的黑鲨游戏手机3,到底有多懂手游玩家!...