给定具有n个顶点和m个边的加权和非定向图,其中 1 <= n <= 1000 且 1 <= m <= 10000 。在具有不同权重的图的两个节点之间可以有多个边。
给定源和目的地,如何找到源和目的地之间的最小距离?此处,距离定义为路径中涉及的边的权重的按位OR 。
答案 0 :(得分:1)
尝试依次计算最小距离的位。
如果有一个x位清晰的路径,你能解决吗?
如果重量位x设置,请尝试从图表中删除边缘。
尝试查看是否存在位31设置为0的路径。
如果不是,请查看是否存在将位30设置为0的路径。
如果有,请尝试查看是否存在位31和位30设置为0的路径等。
答案 1 :(得分:0)
虽然它可能不是最有效的算法,但我会在图表上实现最佳优先搜索。创建一个优先级队列,该队列将包含接下来要探索的顶点,仅包含最初的源,优先级为0。
然后开始一个从列表中获取最低优先级元素的循环,探索它的所有邻居,并将它们添加到队列中,当它找到目标顶点或队列为空时停止。