”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 图表和应用

图表和应用

发布于2024-08-24
浏览:136

许多现实世界的问题可以使用图算法来解决。图对于建模和解决现实问题很有用。例如,找到两个城市之间的最少航班数量的问题可以使用图来建模,其中顶点代表城市,边代表两个相邻城市之间的航班,如下图所示。求最小联程航班数的问题
两个城市之间的问题简化为寻找图中两个顶点之间的最短路径。

Graphs and Applications

图问题的研究被称为图论。图论由 Leonhard Euler 于 1736 年创立,当时他引入图术语来解决著名的柯尼斯堡七桥问题。普鲁士柯尼斯堡市(现俄罗斯加里宁格勒)被普雷格尔河分开。河上有两个岛屿。城市和岛屿由七座桥梁连接,如下图(a)所示。问题是,一个人可以步行,每座桥只过一次,然后回到起点吗?欧拉证明这是不可能的。

Graphs and Applications

为了建立证明,欧拉首先通过消除所有街道来抽象柯尼斯堡城市地图,生成如上图 (a) 所示的草图。接下来,他将每个陆地块替换为一个点,称为顶点节点,并将每座桥替换为一条线,称为,如图所示上图(b)。这种具有顶点和边的结构称为 .

看图,我们问是否存在一条从任意顶点出发,恰好遍历所有边一次,并返回到起始顶点的路径。欧拉证明,要存在这样的路径,每个顶点必须具有偶数条边。因此,柯尼斯堡七桥问题无解。

图问题通常使用算法来解决。图算法在计算机科学、数学、生物学、工程学、经济学、遗传学和社会科学等各个领域都有许多应用。

基本图形术语

图由顶点和连接顶点的边组成。本章不假设您具备任何图论或离散数学的先验知识。我们使用简单明了的术语来定义图表。

Graphs and Applications

什么是图表?图是一种数学结构,表示现实世界中实体之间的关系。例如,上图代表城市之间的航班,下图(b)代表陆地之间的桥梁。

Graphs and Applications

图由一组非空顶点(也称为节点或点)和一组连接顶点的边组成。为了方便起见,我们将图定义为 G = (V, E),其中 V 表示一组顶点,E 表示一组边。例如下图中的V和E如下:

Graphs and Applications

V = {"西雅图", "旧金山", "洛杉矶",
“丹佛”、“堪萨斯城”、“芝加哥”、“波士顿”、“纽约”、
“亚特兰大”、“迈阿密”、“达拉斯”、“休斯顿”};

E = {{"西雅图", "旧金山"},{"西雅图", "芝加哥"},
{“西雅图”,“丹佛”},{“旧金山”,“丹佛”},
...
};

图可以是有向的,也可以是无向的。在有向图中,每条边都有一个方向,这表明您可以通过边从一个顶点移动到另一个顶点。您可以使用有向图来建模父/子关系,其中从顶点 A 到 B 的边表示 A 是 B 的父项。下图 (a) 显示了有向图。

Graphs and Applications

无向图中,您可以在顶点之间双向移动。下图是无向图。

Graphs and Applications

边可以加权也可以不加权。例如,您可以为上图中图表中的每条边分配一个权重,以指示两个城市之间的飞行时间。

图中的两个顶点被称为相邻如果它们由同一条边连接。类似地,如果两条边连接到同一顶点,则称它们是相邻。图中连接两个顶点的边被称为与两个顶点关联。顶点的是与其相关的边的数量。

两个顶点如果相邻,则称为邻居。类似地,如果两条边相邻,则称为 邻居

A 循环是将顶点链接到自身的边。如果两个顶点由两条或多条边连接,这些边称为平行边简单图是没有任何环或平行边的图。在完全图中,每两对顶点都是相连的,如下图(b)所示。

Graphs and Applications

如果图中任意两个顶点之间存在路径,则该图是连通的。图G的子图是一个图,其顶点集是G的子集,边集是G的子集。例如,上图(c)中的图是上图(b)中的子图。

假设该图是连通且无向的。 循环是一条从某个顶点开始并在同一顶点结束的闭合路径。如果连通图没有环,则它是。图G的生成树是G的连通子图,并且该子图是包含G中所有顶点的树。

版本声明 本文转载于:https://dev.to/paulike/graphs-and-applications-54lo?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • PHP SimpleXML解析带命名空间冒号的XML方法
    PHP SimpleXML解析带命名空间冒号的XML方法
    在php 很少,请使用该限制很大,很少有很高。例如:这种技术可确保可以通过遍历XML树和使用儿童()方法()方法的XML树和切换名称空间来访问名称空间内的元素。
    编程 发布于2025-07-05
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-07-05
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-07-05
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的python功能eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-07-05
  • Go语言垃圾回收如何处理切片内存?
    Go语言垃圾回收如何处理切片内存?
    Garbage Collection in Go Slices: A Detailed AnalysisIn Go, a slice is a dynamic array that references an underlying array.使用切片时,了解垃圾收集行为至关重要,以避免潜在的内存泄...
    编程 发布于2025-07-05
  • Go web应用何时关闭数据库连接?
    Go web应用何时关闭数据库连接?
    在GO Web Applications中管理数据库连接很少,考虑以下简化的web应用程序代码:出现的问题:何时应在DB连接上调用Close()方法?,该特定方案将自动关闭程序时,该程序将在EXITS EXITS EXITS出现时自动关闭。但是,其他考虑因素可能保证手动处理。选项1:隐式关闭终止数...
    编程 发布于2025-07-05
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-07-05
  • 反射动态实现Go接口用于RPC方法探索
    反射动态实现Go接口用于RPC方法探索
    在GO 使用反射来实现定义RPC式方法的界面。例如,考虑一个接口,例如:键入myService接口{ 登录(用户名,密码字符串)(sessionId int,错误错误) helloworld(sessionid int)(hi String,错误错误) } 替代方案而不是依靠反射...
    编程 发布于2025-07-05
  • C++中如何将独占指针作为函数或构造函数参数传递?
    C++中如何将独占指针作为函数或构造函数参数传递?
    在构造函数和函数中将唯一的指数管理为参数 unique pointers( unique_ptr [2启示。通过值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法将唯一指针的所有权转移到函数/对象。指针的内容被移至功能中,在操作...
    编程 发布于2025-07-05
  • Python中嵌套函数与闭包的区别是什么
    Python中嵌套函数与闭包的区别是什么
    嵌套函数与python 在python中的嵌套函数不被考虑闭合,因为它们不符合以下要求:不访问局部范围scliables to incling scliables在封装范围外执行范围的局部范围。 make_printer(msg): DEF打印机(): 打印(味精) ...
    编程 发布于2025-07-05
  • 如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    postgresql:为每个唯一标识符在postgresql中提取最后一行,您可能需要遇到与数据集合中每个不同标识的信息相关的信息。考虑以下数据:[ 1 2014-02-01 kjkj 在数据集中的每个唯一ID中检索最后一行的信息,您可以在操作员上使用Postgres的有效效率: id dat...
    编程 发布于2025-07-05
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-07-05
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-07-05
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-07-05
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-07-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3