巨大迷宫(HUGE)的最短路径

时间:2013-11-28 13:22:19

标签: c matrix shortest-path sparse-matrix maze

我需要解决最短路径算法问题(在C中)。

基本上我给了一个文件,其中包含(稀疏)矩阵的行和列的总数,非零条目的数量(称为门),最后是这些条目的位置和值(行,列,值) )。在这个迷宫中,我必须找出从条目(0,0)到任何其他点(位置也从文件中读取)的“最便宜”路径。每当我穿过一扇门,成本就会增加,而0的单元也不会花费任何成本。

有一些规则,例如你不能连续通过两个或更多门,某些门的值为-1不能越过。最后我必须打印我通过的门的位置(文件中给出的那些)。我穿越了多少空单元并不重要。

无论如何,这里的问题是矩阵可以是10⁵*10⁵或更多...我将非零条目存储在我猜的稀疏矩阵中,并且它可以工作:

typedef struct node {
    struct node* down; 
    struct node* right; 

    long int PL, PC, PV;
}node ;

typedef struct _Mat{
    long int NL, NC,P,x,y; //Number of lines,columns,non zero cells, and position of destination
    node** rowList; 
    node** colList;         
}Mat

问题是我无法确定下一步该做什么。只有这种结构我不认为我可以解决迷宫。

我应该创建一个矩阵图(包括零),那么之后我可以应用像DiJkstras这样的算法吗?我认为这必须通过图形来解决,但图形将是巨大的......其他意识形态是将一大群非零单元组合在一起,并将它们视为一个节点。这种方式图较小但我不知道如何做到这一点。

如果这是最佳解决方案,我该如何实施呢?还是我完全错了?我的数据结构没用吗?

1 个答案:

答案 0 :(得分:0)

也许A *可以帮到你:

http://www.policyalmanac.org/games/aStarTutorial.htm

此算法可以在图表中找到最佳路径,您可以将迷宫转换为。