返回顶部
首页 > 资讯 > 前端开发 > JavaScript >有哪些图形算法
  • 159
分享到

有哪些图形算法

2024-04-02 19:04:59 159人浏览 薄情痞子
摘要

本篇内容介绍了“有哪些图形算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是图?一个图由一组有限的顶

本篇内容介绍了“有哪些图形算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

什么是图?

一个图由一组有限的顶点或节点以及一组连接这些顶点的边组成。 如果两个顶点通过同一边彼此连接,则它们称为相邻顶点。

下面给出一些与图有关的基本定义。 您可以参考图1的示例。

  • 顺序:图形中的顶点数

  • 大小:图形中的边数

  • 顶点度:入射到顶点的边数

  • 孤立的顶点:未连接到图中任何其他顶点的顶点

  • 自环:从顶点到自身的边

  • 有向图:所有边都有一个方向的图,该方向指示什么是起始顶点,什么是终止顶点

  • 无向图:具有没有方向的边的图

  • 加权图:图的边缘具有权重

  • 未加权图形:图形的边缘没有权重

有哪些图形算法

> Fig 1. Visualization of Terminology of Graphs (Image by Author)

1.广度优先搜索

有哪些图形算法

> Fig 2. Animation of BFS traversal of a graph (Image by Author)

遍历或搜索是可以在图形上执行的基本操作之一。 在广度优先搜索(BFS)中,我们从一个特定的顶点开始,并在当前深度探索其所有邻居,然后再进入下一级的顶点。  与树不同,图可以包含循环(第一个顶点和最后一个顶点相同的路径)。 因此,我们必须跟踪访问的顶点。 在实现BFS时,我们使用队列数据结构

图2表示示例图的BFS遍历的动画。 注意如何发现顶点(黄色)并访问顶点(红色)。

应用领域

  • 用于确定最短路径和最小生成树。

  • 索引擎搜寻器用来构建网页索引。

  • 用于在社交网络上搜索。

  • 用于查找对等网络(例如BitTorrent)中的可用邻居节点。

2.深度优先搜索

有哪些图形算法

> Fig 3. Animation of DFS traversal of a graph (Image by Author)

在深度优先搜索(DFS)中,我们从特定的顶点开始,并在回溯(回溯)之前沿每个分支进行尽可能的探索。 在DFS中,我们还必须跟踪访问的顶点。  在实现DFS时,我们使用堆栈数据结构来支持回溯。

图3表示与图2相同的示例图的DFS遍历的动画。请注意,它如何遍历深度和回溯。

应用领域

  • 用于查找两个顶点之间的路径。

  • 用于检测图中的周期。

  • 用于拓扑排序

  • 用于解决只有一种解决方案(例如迷宫)的难题

3.最短路径

有哪些图形算法

> Fig 4. Animation showing the shortest path from vertex 1 to vertex 6  (Image by Author)

从一个顶点到另一个顶点的最短路径是图形中的一条路径,因此应移动的边的权重之和最小。

图4显示了一个动画,其中确定了图形中从顶点1到顶点6的最短路径。

演算法

  • Dijkstra最短路径算法

  • Bellman–Ford算法

应用领域

  • 用于在Google地图或Apple地图等地图软件中查找从一个位置到另一个位置的路线。

  • 用于网络中以解决最小延迟路径问题。

  • 用于抽象机器中,以通过在不同状态之间进行转换来确定达到某个目标状态的选择(例如,可用于确定赢得一场比赛的最小可能次数)。

有哪些图形算法

> Image by Daniel Dino-Slofer from Pixabay

4.循环检测

有哪些图形算法

> Fig 5. A cycle (Image by Author)

循环是图形中的第一个顶点和最后一个顶点相同的路径。 如果我们从一个顶点开始,沿着一条路径行进,然后在起始顶点处结束,那么这条路径就是一个循环。  循环检测是检测这些循环的过程。 图5显示了遍历一个循环的动画。

演算法

  • 弗洛伊德循环检测算法

  • 布伦特算法

应用领域

  • 用于基于分布式消息的算法。

  • 用于在群集上使用分布式处理系统处理大规模图形。

  • 用于检测并发系统中的死

  • 在加密应用程序中用于确定消息的密钥,该密钥可以将该消息映射到相同的加密值。

5.最小生成树

有哪些图形算法

> Fig 6. Animation showing a minimum spanning tree (Image by Author)

最小生成树是图的边缘的子集,该图以最小的边权重之和连接所有顶点,并且不包含循环。

图6是一个动画,显示了获取最小生成树的过程。

演算法

  • Prim的算法

  • Kruskal的算法

应用领域

  • 用于构造树以在计算机网络中广播。

  • 用于基于图的聚类分析。

  • 用于图像分割。

  • 用于将社会区域划分为连续区域的社会地理区域的区域化。

6.牢固连接的组件

有哪些图形算法

> Fig 7. Strongly connected components (Image by Author)

如果图中的每个顶点均可从其他每个顶点到达,则称该图是牢固连接的。

图7显示了一个示例图,其中包含三个具有红色,绿色和黄色的顶点的牢固连接的组件。

演算法

  • Kosaraju的算法

  • Tarjan的强连接组件算法

应用领域

  • 用于计算Dulmage–Mendelsohn分解,这是二部图边缘的分类。

  • 用于社交网络中,以找到一群紧密联系并根据共同兴趣提出建议的人。

有哪些图形算法

> Image by Gerd Altmann from Pixabay

7.拓扑排序

有哪些图形算法

> Fig 8. A topological ordering of vertices in a graph (Image by  Author)

图的拓扑排序是其顶点的线性排序,因此对于排序中的每个有向边(u,v),顶点u都位于v之前。

图8显示了顶点(1、2、3、5、4、6、7、8)的拓扑顺序的示例。 您可以看到顶点5应该位于顶点2和3之后。类似地,顶点6应该位于顶点4和5之后。

演算法

  • 卡恩算法

  • 基于深度优先搜索的算法

应用领域

  • 用于指令调度。

  • 用于数据序列化。

  • 用于确定在makefile中执行的编译任务的顺序。

  • 用于解析链接器中的符号依赖性。

8.图形着色

有哪些图形算法

> Fig 9. Vertex colouring (Image by Author)

图形着色可在确保某些条件的同时为图形元素分配颜色。 顶点着色是最常用的图形着色技术。  在顶点着色中,我们尝试使用k种颜色为图形的顶点着色,并且任何两个相邻的顶点都不应具有相同的颜色。 其他着色技术包括边缘着色和面部着色。

图的色数是为图着色所需的最少颜色数。

图9显示了使用4种颜色的示例图的顶点着色。

演算法

  • 使用广度优先搜索或深度优先搜索的算法

  • 贪婪的着色

应用领域

  • 用于安排时间表。

  • 用于分配移动无线电频率。

  • 用于建模和求解数独游戏。

  • 用于检查图是否为二部图。

  • 用于为相邻国家或地区具有不同颜色的国家或州的地理地图着色。

有哪些图形算法

> Image by TheAndrasBarta from Pixabay

9.最大流量

有哪些图形算法

> Fig 10. Determining the maximum flow (Image by Author)

我们可以将图建模为以边权重为流量的流量网络。 在最大流量问题中,我们必须找到一条可以获得最大可能流量的流路。

图10显示了确定网络的最大流量并确定最终流量值的动画示例。

演算法

  • 福特-福克森算法

  • Edmonds–Karp算法

  • Dinic的算法

应用领域

  • 用于航空公司调度以调度飞行人员。

  • 用于图像分割以查找图像中的背景和前景。

  • 用于淘汰无法赢得足够比赛来赶上其所在部门的领先者的棒球队。

10.匹配

有哪些图形算法

> Fig 11. Matching of a bipartite graph (Image by Author)

图中的匹配项是一组没有共同顶点的边(即,没有两个边共享共同的顶点)。 如果匹配包含尽可能多的与尽可能多的顶点匹配的边,则该匹配称为最大匹配。

图11显示了获得二部图与橙色和蓝色表示的两组顶点的完全匹配的动画。

演算法

  • Hopcroft-Karp算法

  • 匈牙利算法

  •  开花算法

应用领域

  • 用于对接会以匹配新娘和新郎(稳定的婚姻问题)。

  • 用于确定顶点覆盖率。

  • 在运输理论中用于解决资源分配和出行优化中的问题。

“有哪些图形算法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 有哪些图形算法

本文链接: https://lsjlt.com/news/84493.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 有哪些图形算法
    本篇内容介绍了“有哪些图形算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是图一个图由一组有限的顶点...
    99+
    2024-04-02
  • jmeter图形图表有哪些
    这篇文章主要讲解了“jmeter图形图表有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jmeter图形图表有哪些”吧!1 前言图表图形类分析元件2 Jmeter结果分析之各种...
    99+
    2023-06-05
  • CSS图形绘制方法有哪些
    本篇内容介绍了“CSS图形绘制方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 正方形实时渲染...
    99+
    2024-04-02
  • Matplotlib绘制条形图的方法有哪些
    这篇文章主要介绍了Matplotlib绘制条形图的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matplotlib绘制条形图的方法有哪些文章都会有所收获,下面我们一起来看看吧。import ...
    99+
    2023-06-29
  • mysql图形化工具有哪些
    本篇内容介绍了“mysql图形化工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • MySQL中有哪些图形化工具
    这篇文章将为大家详细讲解有关MySQL中有哪些图形化工具,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。0x01:NavicatNavicat是一款...
    99+
    2024-04-02
  • SQLServer图形化界面的操作方法有哪些
    SQL Server图形化界面的操作方法主要有以下几种:1. SQL Server Management Studio (SSMS)...
    99+
    2023-08-09
    SQLServer
  • java算法有哪些
    java中常见的算法有:1.递归算法,可以直接或者间接调用自身函数或者方法的算法;2.迭代算法,不断用变量的旧值递推新值的过程;3.排序算法,将一串记录按照其中某个关键字的大小进行排列;java中常见的算法有以下几种递归算法java中递归算...
    99+
    2024-04-02
  • pytho中有哪些可视化图形库
    这篇文章将为大家详细讲解有关pytho中有哪些可视化图形库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、可视化图形库seaborn 是基于matplotlib的高级版,主要针对的数据挖掘...
    99+
    2023-06-14
  • Linux下Git图形客户端有哪些
    这篇文章主要介绍了Linux下Git图形客户端有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SmartGitSmartGit 是一个商业工具,不过如果你在非商业环境下使...
    99+
    2023-06-16
  • 云计算主机服务形式有哪些
    本篇内容主要讲解“云计算主机服务形式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“云计算主机服务形式有哪些”吧!基础设施云又称为IaaS,故名思议,这类提供商主要提供的是系统底层的设备服务...
    99+
    2023-06-10
  • MySQL中有哪些图形化管理工具
    MySQL中有哪些图形化管理工具,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PhpMyAdmin很好用,web版,不需要在电脑上安装客户...
    99+
    2024-04-02
  • MySQL中图形化管理工具有哪些
    这篇文章将为大家详细讲解有关MySQL中图形化管理工具有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、phpMyAdmin,是最常用的MySQL维护工具,是一个用...
    99+
    2024-04-02
  • git有哪些好用的图形化工具
    git有哪些好用的图形化工具,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。git图形化工具有:1、GitHub for Desktop;2、Source Tre...
    99+
    2023-06-21
  • Linux中SSH图形界面工具有哪些
    这篇文章主要为大家展示了“Linux中SSH图形界面工具有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中SSH图形界面工具有哪些”这篇文章吧。1、PuTTY只要是久经沙场的人都知...
    99+
    2023-06-15
  • OpenCV基本图形绘制函数有哪些
    本篇内容主要讲解“OpenCV基本图形绘制函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“OpenCV基本图形绘制函数有哪些”吧!用于绘制直线的line函数;用于绘制椭圆的ellipse...
    99+
    2023-06-25
  • js算法题有哪些
    这篇文章给大家分享的是有关js算法题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素...
    99+
    2024-04-02
  • 有哪些排序算法
    有哪些排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入...
    99+
    2023-06-15
  • C++图形编程算法精解
    c++++ 图形编程算法包括:bresenham 直线算法:高效绘制直线。圆形扫描算法:填充任意形状轮廓。扫描填充算法:高效填充轮廓之间的区域。 C++ 图形编程算法精解 引言 图形编...
    99+
    2024-05-15
    c++ 图形编程
  • startx启动图形界面失败的解决方法有哪些
    本篇内容主要讲解“startx启动图形界面失败的解决方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“startx启动图形界面失败的解决方法有哪些”吧!很多linux用户有如此一个惨痛经历...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作