有很多named graph types。我想知道这种分类背后的标准是什么。不同的类型适用于不同的背景吗?此外,业务应用程序(从设计和编程的角度来看)可以从这些分类中获益吗?这类似于设计模式吗?
答案 0 :(得分:2)
由于以下几个原因,我们给普通的图表族命名:
某些图表系列具有良好,简单的属性。例如,trees有许多有用的属性(在任何一对节点之间只有一条路径,它们是最大的非循环,它们是最小连接的,等等),它们不包含任意图形。 Directed acyclic graphs可以是topologically sorted,而普通图则不能。如果您可以根据这些类型的图形之一对问题进行建模,则可以对它们使用专门的算法来提取不一定从任意图形中获取的属性。
某些算法在某些类型的图表上运行得更快。图上的许多NP难问题,如现在没有任何多项式时间算法,可以在某些类型的图上很容易地解决。例如,maximum independent set problem(选择最大的节点集合,其中没有两个节点通过边连接)是NP难的,但可以在树的多项式时间和bipartite graphs中求解。 4色着色问题(确定图形的节点是否可以用四种不同颜色中的一种着色而不向相邻节点分配相同的颜色)通常是NP难的,但对于planar graphs来说是立即成立的(这是着名的四色定理)。
某些类型的图表上的某些算法更容易。图中的matching是图中边缘的集合,其中没有两条边共享端点。最大匹配可用于表示将人员组合成组的方式。在二分图中,最大匹配可用于表示将人员分配给任务的方式,使得没有人被分配两个任务并且没有任务被分配给两个人。有许多快速算法可以在二分图中找到最大匹配,这些算法工作快速且易于理解。一般图表的相应算法要复杂得多,效率也稍差。
某些图表具有历史意义。许多命名图是以使用该图来反驳关于任意图的属性的猜想的人命名的。例如,Petersen graph是许多定理的反例,这些定理在图表上似乎是正确的但实际上并非如此。
某些图表在理论计算机科学中非常有用。 expander graph是一个图表,直观地说,任何节点集合都必须连接到图中比例较大的节点集合。并非所有图形都是扩展图形。扩展器图用于理论计算机科学的许多结果,例如PCP定理的一个证明和SL = L的证明。
这并不是我们关心不同图族的原因的详尽清单,但希望它有助于激发他们的使用和学习。
希望这有帮助!