许多现实世界的问题可以使用图算法来解决。图对于建模和解决现实问题很有用。例如,找到两个城市之间的航班最少数量的问题可以使用图来建模,其中顶点代表城市,边代表两个相邻城市之间的航班,如下图所示。求最少中转航班数量的问题
两个城市之间的问题简化为寻找图中两个顶点之间的最短路径。
图问题的研究被称为图论。图论由 Leonhard Euler 于 1736 年创立,当时他引入图术语来解决著名的柯尼斯堡七桥问题。普鲁士柯尼斯堡市(现俄罗斯加里宁格勒)被普雷格尔河分开。河上有两个岛屿。城市和岛屿由七座桥梁连接,如下图(a)所示。问题是,一个人可以步行,每座桥只过一次,然后回到起点吗?欧拉证明这是不可能的。
为了建立证明,欧拉首先通过消除所有街道来抽象柯尼斯堡城市地图,生成如上图(a)所示的草图。接下来,他用一个点(称为顶点或节点)替换每个陆地块,并用一条线(称为边)替换每个桥,如上图(b)所示。这种具有顶点和边的结构称为图。
看图,我们问是否存在一条从任意顶点出发,恰好遍历所有边一次,并返回到起始顶点的路径。欧拉证明,要存在这样的路径,每个顶点必须具有偶数条边。因此,柯尼斯堡七桥问题无解。
图问题通常使用算法来解决。图算法在各个领域都有许多应用,例如计算机科学、数学、生物学、工程、经济学、遗传学和社会科学。
基本图术语
图由顶点和连接顶点的边组成。本章不假设您具备任何图论或离散数学的先验知识。我们使用简单明了的术语来定义图表。
什么是图表?图是一种数学结构,表示现实世界中实体之间的关系。例如,上图代表城市之间的航班,下图(b)代表陆地之间的桥梁。
图由一组非空顶点(也称为节点或点)和一组连接顶点的边组成。为了方便起见,我们将图定义为 G = (V, E),其中 V 表示一组顶点,E 表示一组边。例如下图中的V和E如下:
V = {“西雅图”,“旧金山”,“洛杉矶”,
“丹佛”、“堪萨斯城”、“芝加哥”、“波士顿”、“纽约”,
“亚特兰大”、“迈阿密”、“达拉斯”、“休斯顿”};
E = {{"西雅图", "旧金山"},{"西雅图", "芝加哥"},
{“西雅图”,“丹佛”},{“旧金山”,“丹佛”},
...
};
图可以是有向的,也可以是无向的。在有向图中,每条边都有一个方向,这表明您可以通过该边从一个顶点移动到另一个顶点。您可以使用有向图来建模父/子关系,其中从顶点 A 到 B 的边表示 A 是 B 的父项。下图 (a) 显示了一个有向图。
在无向图中,您可以在顶点之间双向移动。下图是无向图。
边可以是加权的,也可以是未加权的。例如,您可以为上图中图表中的每条边分配一个权重,以表示两个城市之间的飞行时间。
如果图中的两个顶点由同一条边连接,则称它们是相邻。类似地,如果两条边连接到同一顶点,则称它们是相邻。图中连接两个顶点的边被称为与两个顶点重合。顶点的度是与其关联的边的数量。
如果两个顶点相邻,则称为邻居。同样,如果两条边相邻,则称为邻居。
循环是将顶点链接到自身的边。如果两个顶点通过两条或更多条边连接,这些边称为平行边。 简单图是没有任何环或平行边的图。在完全图中,每两对顶点都是相连的,如下图(b)所示。
如果图中任意两个顶点之间存在路径,则该图是连通的。图 G 的子图 是一个图,其顶点集是 G 的子集,边集是 G 的子集。例如,上图 (c) 中的图就是该图的子图上图(b).
假设图是连通且无向的。 循环 是一条从某个顶点开始并在同一顶点结束的闭合路径。如果连通图没有环,那么它就是一棵树。图 G 的生成树 是 G 的连通子图,并且该子图是包含 G 中所有顶点的树。
以上就是图表和应用的详细内容,更多请关注php中文网其它相关文章!
91资源网站长-冰晨2024-08-27 17:15
发表在:【账号直充】爱奇艺黄金VIP会员『1个月』官方直充丨立即到账丨24小时全天秒单!不错不错,价格比官方便宜
91资源网站长-冰晨2024-08-27 16:15
发表在:2022零基础Java入门视频课程不错,学习一下