谁能给我一个关于如何从 Codility 处理以下任务的提示:https ://codility.com/programmers/task/hilbert_maze/
我可以通过生成迷宫并使用 BFS 搜索最短路径来找到最短路径,但由于最坏情况的时间复杂度预计为 O(N),我认为这不是正确的方法去。BFS 的时间复杂度为 O(|V| + |E]),其中 V 是顶点数,E 是边数。例如,如果 N = 3,我们有一个大小为 17x17 的网格,很明显我们无法在 3 步中找到路径。
因此,指示的时间复杂度是错误的,应该是 M^2 之类的东西,或者有一个快速技巧可以在不使用图形算法的情况下简单地计算两点之间的距离。我找到了一些用于计算 2 个给定点的希尔伯特距离的算法(如果这里需要的话),它们使用位操作等,但根本无法理解它们。此外,我认为任务的目标是自己找出如何计算距离,而不是使用现有的公式。
有没有人解决了这个任务并且可以进一步帮助我?谢谢!