Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 击败贪婪的算法_Algorithm_Assembly - Fatal编程技术网

Algorithm 击败贪婪的算法

Algorithm 击败贪婪的算法,algorithm,assembly,Algorithm,Assembly,在课堂上,我们有一个网格和网格上的一堆正方形,我们需要探测并移动到它们。我们从(0,0)开始。我们一次扫描网格的微小区域(出于数据结构方面的原因,这是强制性的),当我们检测到需要移动的方块时,我们就移动。网格上有32个位置,但我们只需要移动其中的16个,并且尽可能快(我们正在与其他人赛跑) Dijkstra的算法可以找到从当前位置到下一个位置的最短路径。然而,这是次优的,因为我们的下一个位置可能真的离之后的位置很远。如果我们能在扫描的过程中以某种方式计算出位置的密度,然后选择去一个非常密集的地方

在课堂上,我们有一个网格和网格上的一堆正方形,我们需要探测并移动到它们。我们从(0,0)开始。我们一次扫描网格的微小区域(出于数据结构方面的原因,这是强制性的),当我们检测到需要移动的方块时,我们就移动。网格上有32个位置,但我们只需要移动其中的16个,并且尽可能快(我们正在与其他人赛跑)

Dijkstra的算法可以找到从当前位置到下一个位置的最短路径。然而,这是次优的,因为我们的下一个位置可能真的离之后的位置很远。如果我们能在扫描的过程中以某种方式计算出位置的密度,然后选择去一个非常密集的地方,并在该区域内的所有位置旅行,这将是更有益的

有没有最适合这种情况的算法?我知道贪婪的启发式不是最优的。A*和Dijkstra是我们最初考虑的,但我们希望有一个完全不同的解决方案


PS不幸的是,这是在组装中完成的

查找密集的点束(例如,您必须访问的位置)称为。请参阅链接以了解几类算法


用汇编语言进行高级算法的实验是一种非常痛苦的方式。你的教授是虐待狂吗???

你有没有确切的反例来解释为什么Dijkstra方法不是最佳的?我好像找不到任何东西。你需要去的所有地方都互相连接了吗?从一个位置到另一个位置的距离是否等于欧几里德距离sqrt(dx^2+dy^2)?或者位置之间是否有指定的道路(边缘)和距离(权重)?位置之间没有连接,但每个位置之间的距离是欧几里德的,是的。Dijkstra不是最佳选择,因为如果你去离你最近的地方,下一个地方可能离你很远。最好是去一些密集的星系群。。。