我想找到一个3D空间中两个坐标(比如,(0,0,0)和(p,q,r))之间的最短路径,从(x,y,z)到(x +) 1,y,z),(z,y + 1,z)或(x,y,z + 1)花费一些成本A,从(x,y,z)到(x + 1,y + 1, z),(x + 1,y,z + 1)或(x,y + 1,z + 1)花费一些成本B并从(x,y,z)到(x + 1,y + 1, z + 1)花费一些成本C.
我想解决这个问题的一种方法是运行广度优先搜索。这将需要 O(XYZ)时间。 我想知道问题是否可以在 O(1)时间内解决。
我通过将每个动作描绘成一个形式(1,0,0),(1,1,0),(1,1,1)的堆叠而取得了一些进展。由于这些堆叠件的可交换性,我们可以移动它们并根据A,B和C的值将这些碎片合并或拆分。任何帮助都将受到高度赞赏。
编辑:A,B和C在整个网格中是不变的,但没有关于它们不等式的假设。