📅  最后修改于: 2023-12-03 14:54:08.113000             🧑  作者: Mango
平面图和非平面图是图论中常见的概念,它们在计算机科学中也有着广泛的应用,尤其在图形学和计算机视觉中。本文将简单介绍这两个概念及其相关算法。
平面图是指可以画在平面上,且其中任意两条边不相交的图。一个简单的例子如下:
图中的三角形、正方形和五边形都可以画在平面上,相互之间没有交叉。一个更复杂的例子如下:
这个由十二个顶点和二十个边组成的图也可以画在平面上,边之间没有相交。需要注意的是,在平面图中,相邻两个面如果有公共的边,则这条边应该被计算两次。
对于一个给定的图,如果它不是平面图,那么我们称其为非平面图。
K5图是一个著名的非平面图,也是五个节点的完全图。这个图中任意两个节点之间都有一条边,如下图所示:
通过观察可以发现,无论如何将这五个节点连起来,都无法使边不重叠,因此K5图不是平面图。类似的还有K3,3图,其节点由两个集合A和B组成,A中的任意一个节点都与B中的任意一个节点相连,如下图所示:
同样可以看出K3,3图不是平面图。
如何判定一个给定的图是否为平面图呢?有一个经典的算法——Euler公式。Euler公式可以用来判断一个平面连通图是否为平面图。公式如下:
$$ V-E+F=2 $$
其中,V表示图中的顶点数,E表示边的数量,F表示图中的面的数量。这个公式表明了平面图中顶点、边和面的关系。
例如上面的简单平面图,它的顶点数V=7,边数E=9,面的数量F=5,带入Euler公式有:
$$ 7-9+5=2 $$
等式左右两边相等,所以这个图是平面图。
同样的,我们可以用这个公式来测试K5图和K3,3图。对于K5图,它的顶点数V=5,边数E=10,面的数量F=不知道。带入Euler公式得到:
$$ 5-10+F=2 $$
整理后可得:
$$ F=7 $$
这说明K5图中有7个面,与我们直觉中不同。事实上,K5图中外面包围的那块也算一块面,所以面的数量不是5而是6。而对于K3,3图,它的顶点数和边数分别都为6,而F也是不知道的。带入Euler公式得到:
$$ 6-9+F=2 $$
整理后可得:
$$ F=5 $$
这说明K3,3图中有5个面,与我们直觉中一致。我们可以通过不断的化简来求得给定图中面的数量。
以上就是平面图和非平面图的简介。在计算机图形学和计算机视觉中,平面图和非平面图的应用非常广泛,例如进行金字塔建模时需要判断状况是否合法、检测拍摄的图片中是否存在大量相交的棱角、设计路线时需要考虑地面的平展性等等。如果你对这方面的知识感兴趣,可以深入学习一下图的相关知识。