迷宫解决约束

时间:2012-11-04 10:59:19

标签: c multithreading algorithm maze

我知道解决迷宫是Stack Overflow上经常讨论的话题。这是一个你可能感兴趣的问题。

将给出n * n矩阵形式的迷宫作为输入。每个元素都介于0-9之间。还将给出一系列数字,每个数字在0-9之间。矩阵和序列阵列的维数也是已知的。问题是找到满足给定序列的从(0,0)到(n-1,n-1)的矩阵中的所有可能路径。路径可以向下,向右或向下+向右移动。必须使用线程完成。

输入和输出格式在下面给出的示例中说明 -

实施例:     Example1 http://gowthams.in/etc/1.PNG     Example2 http://gowthams.in/etc/2.PNG     Example3 http://gowthams.in/etc/3.PNG

每个线程可以打印其位置(i,j)或更新某种数据结构以便稍后处理。

解决此问题的最佳方法是什么?

这是一个家庭作业问题,我可以寻求帮助。我不是在寻找任何类型的代码。我只是想在正确的方向上指点一些。

谢谢!

1 个答案:

答案 0 :(得分:3)

感谢您的确切陈述。

1)这句话似乎很令人不安:

  

您需要为矩阵中的每个条目创建线程   确保平行扫描。

因为这意味着对于矩阵NxN,你肯定需要创建N 2 线程,这对我来说太过分了。

然而,您的解决方案更加危险:您想要开始检查路由,并为每个检查创建一个新线程。这将创建指数数量的新线程,以便解决任务。您肯定需要某种优化:这称为动态优化:您在共享内存中存储是否可以使用单元(i,j)来完成从idx索引到目标单元格的序列。这样你就不必再多次解决相同的子任务了。我建议你为每个这样的任务[i,j,idx]创建条件锁,并使用它来告诉子线程完成时依赖于它的线程。

2)多个路径对您来说不是问题:如果我正确读取了分配,您只关心这样的路径是否存在,而不是找到所有解决方案。

我没有按要求提供准确的解决方案,只是方向。这也是我倾向于帮助家庭工作者的方式。