考虑具有n个顶点和m个边的无向图。假设边缘有两种类型:m1个红色边缘和m2个绿色边缘。因此m = m1 + m2。红色边缘的权重为1,绿色边缘的权重为2.设计并分析一个有效的算法来计算这种图形的最小生成树
答案 0 :(得分:0)
任意选择无向图中的一个节点。
为图中的每个节点创建一个带有键的哈希表。对于hastable中每个节点的值,将其值初始化为-1(除了您从其开始的节点,其中将其初始化为-100)。这些值将代表到达该节点的成本。 “特殊编号”为-1,表示当前未知到达该节点的成本,为-100,表示该节点已经在MST中。
现在,对于从其开始的节点的每个相邻节点,将哈希表中的那些节点更新为1或2(取决于它们之间的边缘是红色还是绿色)。
现在浏览散列表,并确定哪个节点的最小值不是-1或-100。如果有多个成本相同的最低价格,则只需随机选择其中之一即可。将该节点添加到MST并将该节点的值设置为-100。
使用树中包含的新包含的节点更新哈希表。一个节点最初的成本可能为2远,但现在增加的节点的成本为1远。在这种情况下,请将这些节点的成本从2更新为1。
继续重复上述步骤,直到覆盖所有节点。您现在有了最小生成树!