考虑我们有一个包含n个顶点的完整图形。每个顶点都有一个值。两个顶点i和j之间的边的权重等于值[i] xor或值[j] 问题是找到从顶点1到顶点n的路径,其中路径中边缘的最大权重最小。我已经修改了Dijkstra的算法并找到了一个O(n ^ 2 lg(n))的算法。有人可以帮我找到更有效的算法吗?
答案 0 :(得分:1)
最小瓶颈值不能小于此值的最高位(M
)确定的数字:value[1] XOR value[n]
。如果您找到两个节点A
和B
,那么M
和更高位的节点1
和A
相等且相等{{1}节点M
和n
的更高位,B
和A
之间的边缘权重最小,最小瓶颈路径为1-ABn(或者可能是如果A = 1和/或B = n,则更短。
要选择具有最小边权重的B
对,请为具有与节点A/B
重合的高阶位(M
和更高)的所有节点值构建二进制trie。然后,对于具有与节点1
重合的高阶位的所有节点值,尝试在此特里结构中搜索这些值。如果未找到完全匹配,请选择最深部分匹配。
时间复杂度为O(n * M)。