作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 1 维的爬山中,我尝试了两个邻居 - 我当前点左侧的一个小三角洲和一个右侧的小三角洲,然后保留给出更高目标函数值的那个。如何将其扩展到 n 维空间?如何定义 n 维空间的邻居?我是否必须尝试 2^n 个邻居(应用于每个维度的增量)?
最佳答案
您不需要比较每对邻居,您需要计算一组邻居,例如在一个半径为 delta 的圆(更高维度的球体/超球体)上,然后将具有最高值的那个“爬上去”。在任何情况下,您都将离散化当前解决方案的邻域并计算每个邻域的得分函数。当您可以区分您的功能时,基于梯度上升/下降的算法可能会解决您的问题:1)计算梯度(最陡上升方向)2)向梯度的方向走一小步3) 如果解决方案没有改变则停止
这些算法的一个常见问题是,您通常只能找到局部最大值/最小值。您可以在此处找到有关梯度下降/上升算法的精彩概述:http://sebastianruder.com/optimizing-gradient-descent/
关于algorithm - n维空间爬山: finding the neighbor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784921/
好的,我有一个 BFS 的 Lisp 实现,我正试图将其转换为进行爬山搜索。 这是我的 BFS 代码的样子: ; The list of lists is the queue that we pass
我是一名优秀的程序员,十分优秀!