我正在尝试解决Python中与图形相关的问题。由于这是一个竞技编程问题,我不使用任何其他第三方软件包。
该问题以5 X 5
的网格形式呈现图形。假设机器人处于网格上用户指定的位置。网格在左上角为(0,0)
,右下角为(4,4)
。网格中的每个单元格由以下3个字符之一表示。 ' b
'(ascii值98)表示机器人的当前位置,'d
'(ascii值100) 表示脏单元格,'-' (ascii值45)表示网格中的干净单元格。例如,下面是一个样本网格,在此机器人位于0 0
:
b---d
-d--d
--dd-
--d--
----d
目标是以最少的步骤清理网格中的所有单元格。
一步被定义为一个任务,其中要么:
i)机器人改变其位置
ii)机器人改变单元格的状态(从 d 更改为 -)假设最初标记为b的位置不需要清洁。机器人可以向上、向下、向左和向右移动。
我的方法是: 我阅读了几篇关于图形的教程,决定将图形建模为25 X 25的邻接矩阵,其中0表示没有路径,1表示在矩阵中的路径(因为我们只能向4个方向移动)。 接下来,我决定应用Floyd Warshell的所有对最短路径算法,并总结路径的值。但我有一种感觉它不起作用。 我陷入了以下问题之一的困境:
i)最小生成树(由于我无法将网格建模并存储为图形,因此无法实现)。
ii)A*搜索(同样的猜测,但在这里也是同样的问题,我无法正确地将网格建模为图形)。
如果您能够提出解决此类问题的好方法,我将不胜感激。关于各种基于图形的问题的提示和伪代码(或链接)也会有所帮助。谢谢