我对爬山算法有点困惑。 我希望能够“运行”该算法,直到在树中找到第一个解(“a”是初始状态,“h”和“k”是最终状态),并且标示在状态旁边的数字是启发式值。下面是这棵树:
我的问题是: 我试图在树上运行爬山算法,所以我们从a开始->f->g,然后呢?结束(没有结果),但我读过爬山算法不能回溯并做出新的选择(例如j或e)?这是正确的吗? 如果我可以回溯,那么怎么办?我的意思是,在哪里更改我们的初始选择,例如我们选择e而不是g或j而不是f
如果我的问题太简单,请见谅。
我对爬山算法有点困惑。 我希望能够“运行”该算法,直到在树中找到第一个解(“a”是初始状态,“h”和“k”是最终状态),并且标示在状态旁边的数字是启发式值。下面是这棵树:
我的问题是: 我试图在树上运行爬山算法,所以我们从a开始->f->g,然后呢?结束(没有结果),但我读过爬山算法不能回溯并做出新的选择(例如j或e)?这是正确的吗? 如果我可以回溯,那么怎么办?我的意思是,在哪里更改我们的初始选择,例如我们选择e而不是g或j而不是f
如果我的问题太简单,请见谅。
T
来控制你向次优邻域状态移动的可能性。如果T
较高,你更有可能进行次优移动并从局部最小值中逃脱,而如果使用普通的爬山算法,则无法实现这一点。根据纯爬山算法,路径将是a-> J -> k, 如果您从左到右展开子节点, 如果您从右到左展开它们,则会得到此局部最小值A -> F -> G, 但通常我们从左到右展开。