关于图:算法图

图的基础知识图是一种十分重要的数据结构,用来示意物体与物体之间的关系。图由若干节点及节点之间的边组成。确定图中的节点和边是利用图相干算法解决问题的前提。通常,物体对应图中的节点,如果两个物体存在某种关系,那么它们在图中对应的节点有一条边相连。 图能够分为有向图和无向图。如果给图的每条边规定一个方向,那么这样的图就是有向图,它的边为有向边。有向边就像城市里的单向路,只能沿着一个方向后退。与之相同的是无向图,无向图中的边都没有方向,它的边称为无向边。 通常,图能够用邻接表或邻接矩阵示意。邻接表为图中的每个节点创立一个容器,第i个容器保留所有与第i个节点相邻的节点。 邻接表如果一个图中有n个节点,那么它的邻接矩阵M的大小是n×n。如果节点i和节点j之间有一条边,那么Mi等于1;反之,如果节点i和节点j之间没有边,那么Mi等于0。 邻接矩阵如果一个图是用邻接矩阵示意的,那么判断两个节点之间是否有边相连就非常简单,只须要判断矩阵中对应地位是1还是0即可,工夫复杂度为O(1)。但如果一个图中的节点数目十分大但比拟稠密(大部分节点之间没有边),那么邻接表的空间效率更高。 图还能够分为有权图和无权图。在有权图中,每条边都有一个数值权重,用来示意两个节点的某种关系,如两个节点的间隔等。在无权图中所有的边都没有权重。 图的搜寻在图中搜寻,如找出一条从起始节点到指标节点的门路或遍历所有节点,是与图相干的最重要的算法。依照搜寻程序不同能够将搜索算法分为广度优先搜寻和深度优先搜寻。 广度优先搜寻深度优先搜寻技巧广度优先搜寻和深度优先搜寻在算法面试中都是十分有用的工具,很多时候应用任意一种搜索算法就能解决某些与图相干的面试题。如果面试题要求在无权图中找出两个节点之间的最短距离,那么广度优先搜寻可能是更适合的算法。如果面试题要求找出符合条件的门路,那么深度优先搜寻可能是更适合的算法。 后面介绍了如何实现树的广度优先搜寻和深度优先搜寻。树也能够看成图。实际上,树是一类非凡的图,树中肯定不存在环。但图不一样,图中可能蕴含环。 防止死循环的方法是记录曾经搜寻过的节点,在拜访一个节点之前先判断该节点之前是否曾经拜访过,如果之前拜访过那么这次就略过不再反复拜访。 假如一个图有v个节点、e条边。不论是采纳广度优先搜寻还是深度优先搜寻,每个节点都只会拜访一次,并且会沿着每条边判断与某个节点相邻的节点是否曾经拜访过,因而工夫复杂度是O(v+e)。 最大的岛屿陆地岛屿地图能够用由0、1组成的二维数组示意,程度或竖直方向相连的一组1示意一个岛屿,请计算最大的岛屿的面积(即岛屿中1的数目)。例如,在图15.5中有4个岛屿,其中最大的岛屿的面积为5。 深度优先遍历/** * @param {number[][]} grid * @return {number} */var maxAreaOfIsland = function(grid) { const rows = grid.length; const cols = grid[0].length let visited = new Array(rows).fill().map(() =>new Array(cols).fill(0)); let maxArea = 0; for(let i = 0; i < rows; i++) { for(let j = 0; j < cols; j++) { if(grid[i][j] == 1 && !visited[i][j]) { const area = getArea(grid, visited, i, j) maxArea = Math.max(maxArea, area) } } } return maxArea;};var getArea = function(grid, visited, i, j) { let area = 1; visited[i][j] = true; let dirs = [ [-1, 0], [1, 0], [0, -1], [0, 1] ] for(const dir of dirs) { const r = i + dir[0]; const c = j + dir[1]; if(r>=0 && r < grid.length && c>=0 && c < grid[0].length && grid[r][c] === 1 && !visited[r][c]) { area += getArea(grid, visited, r, c) } } return area;};广度优先遍历拓扑排序(TODO)并查集(TODO)

May 28, 2022 · 1 min · jiezi

关于图:面试中图论都考什么这篇文章告诉你

图图论〔Graph Theory〕是数学的一个分支。它以图为钻研对象。图论中的图是由若干给定的点及连贯两点的线所形成的图形,这种图形通常用来形容某些事物之间的某种特定关系,用点代表事物,用连贯两点的线示意相应两个事物间具备这种关系。 如下就是一种逻辑上的图构造: 图是一种最简单的数据结构,后面讲的数据结构都能够看成是图的特例。那为什么不都用图就好了,还要分那么多种数据结构呢? 这是因为很多时候不须要用到那么简单的性能,图的很多个性都不具备,如果抽象地都称为图那么十分不利于沟通。你想你和他人沟通总不至于说这道题是考查一种非凡的图,这种图。。。。 这未免太啰嗦了,因而给其余图的非凡的图起了非凡的名字,这样就不便沟通了。直到遇到了非常复杂的状况,咱们才会用到 ”真正“的图。 后面章节提到了数据结构就是为了算法服务的,数据结构就是存储数据用的,目标是为了更高效。 那么什么时候须要用图来存储数据,在这种状况图高效在哪里呢?答案很简略,那就是如果你用其余简略的数据结构无奈很好地进行存储,就应该应用图了。 比方咱们须要存储一种双向的敌人关系,并且这种敌人关系是多对多的,那就肯定要用到图,因为其余数据结构无奈模仿。 基本概念无向图 & 有向图〔Undirected Graph & Deriected Graph〕后面提到了二叉树齐全能够实现其余树结构,相似地,有向图也齐全能够实现无向图和混合图,因而有向图的钻研始终是重点考查对象。 本文讲的所有图都是有向图。 后面提到了咱们用连贯两点的线示意相应两个事物间具备这种关系。因而如果两个事物间的关系是有方向的,就是有向图,否则就是无向图。比方:A 意识 B,那么 B 不肯定意识 A。那么关系就是单向的,咱们须要用有向图来示意。因为如果用无向图示意,咱们无奈辨别 A 和 B 的边示意的是 A 意识 B 还是 B 意识 A。 习惯上,咱们画图的时候用带箭头的示意有向图,不带箭头的示意无向图。 有权图 & 无权图〔Weighted Graph & Unweighted Graph〕如果边是有权重的是有权图(或者带权图),否则是无权图(或不带权图)。那么什么是有权重呢?比方汇率就是一种有权重的逻辑图。1 货币 A 兑换 5 货币 B,那么咱们 A 和 B 的边的权重就是 5。而像敌人这种关系,就可以看做一种不带权的图。 入度 & 出度〔Indegree & Outdegree〕有多少边指向节点 A,那么节点 A 的入度就是多少。同样地,有多少边从 A 收回,那么节点 A 的出度就是多少。 依然以下面的图为例,这幅图的所有节点的入度和出度都为 1。 ...

November 9, 2021 · 13 min · jiezi

关于图:带你看论文丨全局信息对于图网络文档解析的影响

摘要:文档了解着重于从非结构化文档中辨认并提取键值对信息,并将其输入为结构化数据。在过往的信息提取中,大多数工作仅仅只关注于提取文本的实体关系,因而并不适用于间接用于文档了解上。本文分享自华为云社区《论文解读系列十三:全局信息对于图网络文档解析的影响》,作者:一笑倾城 。 1 背景介绍文档了解着重于从非结构化文档中辨认并提取键值对信息,并将其输入为结构化数据。在过往的信息提取中,大多数工作仅仅只关注于提取文本的实体关系,并不适用于间接用于文档了解上。 在ICDAR2019的较量上,参赛者被要求从发票收据等文档中提取键值对信息。因而本文提出了一种蕴含了全局信息,并且联合了视觉信息的图网络结构,来实现从非结构化文档中提取要害信息的工作。 2 网络结构本文将文档了解工作转化为图节点分类工作。对于文本的全局和部分信息获取: 应用CLS抓取全局文本序列的分类信息,生成w0,并将其与每个独自文本(w1,w2…,wn)放在同一输出向量中。通过BERT模型,独立地对每个元素进行编码,这样模型领有了部分和全局信息,同时也能对全局和部分文本进行embedding 对于图片的全局和部分信息获取:应用的是类似的办法,不过是基于CNN网络来捕获全局和部分的图像特色 文本和图像特色拼接:将图像特色和文本特色进行特色交融(concat) 网络构建: 给定文档内的一组文本段,构建一个虚构的全局节点作为信息沟通枢纽,这样每两个非相邻节点之间也是two-hop neighbors, 缩小信息沟通损失的同时全局信息也能很间接输入到部分节点上。 聚合街坊使得每一个节点与two-hop neighbors两两之间通过激活函数(leaky-relu)进行模型参数更新,并且应用了K-attention来进步模型的能力(通过多个attention而后合并所有attention的机制) 信息提取: 3 试验后果在阿里巴巴天池比赛的数据及上成果。 相干融化试验:移除视觉特色后,在天池数据以及SROIE上,能显著看出视觉特色能够在提取结构化信息的问题上施展重要的作用。同理,删除全局节点也升高了模型精度,也验证了全局连贯在图构造中的重要性。 点击关注,第一工夫理解华为云陈腐技术~

August 9, 2021 · 1 min · jiezi