我对Hill Climbing算法有点困惑.我想"运行"算法,直到我找到该树中的第一个解决方案("a"是初始,h和k是最终状态),并且它表示状态附近的数字是启发式值.这是树:

我的问题:我正在尝试在树上爬山,所以我们可以开始 - > f-> g然后完成(没有结果),但我读到登山不能回去做一个新选择(例如j或e)?这是正确的吗 ?如果我可以回去怎么样?我的意思是我们改变我们的初始选择示例,我们选择e而不是g或j而不是f
对不起,如果我的问题太简单了.
我正在尝试用Java实现Stoachastic Hill Climbing.据我所知,这个algorthim提出了一个新的解决方案,随机挑选,然后根据它的好坏来接受解决方案.例如,如果它非常糟糕,那么它将有一个很小的机会,如果它很糟糕,那么它将有更多的机会被选中,但我不知道如何在java中实现这个概率.
虽然在谷歌上浏览,我偶然发现了这个等式,
我不太确定如何解释这个等式.
有人可以帮助我如何在Java中实现这一点吗?
我试图理解这两种算法之间的区别以及它们在解决问题方面的区别.我看过算法和它们的内部.从其他已经有过经验的人那里听到会很好.特别是,我想知道他们在同一个问题上的行为方式如何.
谢谢.
在人工智能领域,这些算法非常流行。我尝试寻找解决 8puzzle 问题的方法,似乎它们都有类似的方法。谁能解释一下有什么区别吗?
具体来说,最陡峭的登山攀登,随机爬坡和模拟退火.广义的时间复杂度也可以.谢谢.
theory algorithm simulated-annealing time-complexity hill-climbing
在我的功能中,我有:
"""
Iterates 300 times as attempts, each having an inner-loop
to calculate the z of a neighboring point and returns the optimal
"""
pointList = []
max_p = None
for attempts in range(300):
neighborList = ( (x - d, y), (x + d, y), (x, y - d), (x, y + d) )
for neighbor in neighborList:
z = evaluate( neighbor[0], neighbor[1] )
point = None
point = Point3D( neighbor[0], neighbor[1], z)
pointList += point
max_p = maxPoint( pointList …Run Code Online (Sandbox Code Playgroud) algorithm ×4
optimization ×2
stochastic ×2
a-star ×1
class ×1
iterable ×1
java ×1
python ×1
theory ×1