一级寻路Ex

Ex一般为扩展的意思,但今天写的这个Ex却只是对之前的一级寻路的BUG的修正。
这个BUG曾经使我差点崩溃,郁闷了好几天。

首先是错误描述:是在对某种障碍排列的寻路算法时,寻路出现了死循环,子指向父,父指向爷爷,爷爷又指向子。这是我在调试中一步一步看出的变化。但在此时并没有发现是二叉堆出现了错误,但确定是这个一级寻路出现了错误,我曾一度以为又要返回看以前的代码而感到无奈恐惧,但也不得不这样的。我又调试进之前的一级寻路代码中一步一步的看,等于又把A*算法过了一遍。之后才找到二叉堆的问题。

BUG出现在二叉堆的算法。二叉堆在此a*算法中充当了开启列表的角色,也就是说此BUG是关于开启列表的。这个二叉堆版本使用指向指针的指针进行数组存放的,很是容易出错,代码写的也很乱。我就重写了,用vector<T*>保存,清爽许多,其中的一的函数的实现也是非常清爽,比之前的算法也简单的多,容易理解得多,之后编译运行,是可以的。目前这个新的版本已经加入到库中,希望不会再有错误发生。

发表评论

邮箱地址不会被公开。 必填项已用*标注

* Copy This Password *

* Type Or Paste Password Here *