Answers:
允许谁?没有中央图管理来决定您可以做什么和不能做什么。只要您清楚定义的含义,就可以以任何方便的方式定义对象。如果零加权边缘对您有用,请使用它们;否则,请使用它们。只要确保您的读者知道那就是您在做什么。
您通常看不到零权重边缘的原因是,在大多数情况下,权重为零的边缘与没有边缘的情况完全相同。例如,如果您的图表表示国家和国家之间的贸易额,那么权重为零的边缘将意味着无贸易,这与根本没有边缘相同。如果您的图形表示距离,则零权重的边将对应于彼此距离为零的两个位置,这意味着它们实际上是同一位置,因此都应由相同的顶点表示。但是,在其他情况下,零权重边缘可能很有意义。例如,如果您的图形表示道路网络,而边权重表示交通量,则没有人使用的道路(零权重边)和根本没有道路(无边)之间会有很大的差异。
这取决于上下文。通常,可以允许零甚至负权重的边。在某些特定情况下,可能要求边缘权重为非负值或严格为正(例如,Dijkstra算法要求权重为非负值)。
正如其他答案所指出的那样,您完全可以自由考虑(或从考虑中排除)具有零权重边缘的加权图。
就是说,以我的经验来看,大多数加权图应用中的惯常惯例是在零权重边缘与不存在边缘之间不做任何区分。原因之一是,加权图通常显示为多图的概括,而后者又是简单图的概括。
具体来说,多图是一个图(不同于简单图),它允许同一对节点之间有多个边。而在简单图中,任何一对节点始终通过0或1条边连接,而在多图中,一对节点可以通过0、1、2、3或更多(但始终为非负整数)连接。 )边缘。
对多图进行泛化以允许一对节点之间的边缘数量不多,然后自然会导致人们考虑加权图,并且也可以使处理任意多图的许多算法都可以在这种加权图上工作。但是对于这种算法,边缘的“权重”实际上表示其多样性。因此,在给出这种解释的情况下,一对节点之间的“无边缘”和“ 0边缘”之间就没有有意义的区别:两者的含义完全相同。
当然,根据定义,“加权图”实际上只是一个与每个边相关联的数字的图,并且完全有可能将权重解释为多重性以外的其他情况,在这种情况下,无边和零权重之间的区别优势确实是有意义的。但是,尝试将标准的多图算法应用于此类“奇异加权图”,不太可能产生对于边缘权重的替代(非多重性)解释有意义的结果。
想象一下英国剑桥的道路系统图,这些注释在骑自行车的人和汽车驾驶员之间共享,大多数情况也是如此。这样做大大降低了维护数据的成本。
现在,如果我们将边缘权重定义为以秒为单位的行驶时间,那么干净的每个边缘将具有两个权重,一个用于汽车,另一个用于自行车。一些重量将是无限的,因为不允许单车通行。
现在考虑两个彼此非常靠近的路口,它们如此靠近,仅被一些阻止汽车驾驶员的路口锯齿。(例如,在十字路口,汽车只能向左转,但骑自行车的人可以向任何方向行驶。)然后,我们得到了汽车驾驶员无限重的一些边缘,而骑自行车者的重量为0。
(很明显,在制定最佳路线之前,可以对图表进行预处理,以创建一个更简单的图表来规划骑自行车的人。)
听起来您好像正在使用权重来尝试并代表图表的两个截然不同的方面。第一个是图形是否实际上具有可表示(绘制)的边缘,第二个是图形的实际权重。
如您所知,如果您使用“非零”作为边缘存在的指示符(需要绘制或列出),而现在却发现了一种情况,则会陷入混乱的局面零权重归类为有效。
本质上,您将需要另一种表示边缘存在的方法(假设您确实需要该边缘,并且不能简单地创建N ^ 2的权重数组,但是随后您陷入了需要决定对循环进行处理的陷阱后边缘...)