我正计划实施Fruchterman和Reingold算法,以从此处绘制图形:http://cs.brown.edu/people/rtamassi/gdhandbook/chapters/force-directed.pdf,第5页。有温度变量“ t”,但没有解释它是什么,也有通过迭代应用此“ cool(t)”函数。有人对此有任何解释吗?谢谢。
答案 0 :(得分:0)
首先,文章中对“温度”变量的含义进行了简短描述:
Fruchterman和Reingold的算法添加了“温度”的概念,该概念可以按如下方式使用:“温度可以从初始值(例如框架宽度的十分之一)开始,然后以线性倒数递减为0”温度控制顶点的位移,以便随着布局的改善,调整会变小。在这里,温度的使用是一种称为模拟退火的通用技术的特例,该技术在力导向算法中的使用将在本章后面讨论。
因此,该算法是Simulated annealing技术的一种变体,用于搜索函数的全局最优值。这是该算法的直观描述:
您从处于高温温度的随机状态开始。您开始随机修改状态,优先选择可改善功能值的新状态。首先,由于温度高,您会允许当前状态发生非常大的变化-包括这样的变化,即不会提高功能值,甚至不会使其变差(这有助于避免陷入局部最优状态)。通过迭代,您可以根据一些冷却时间表(在cool(t)
函数起作用的地方)降低温度,从而越来越多地偏爱那些只会提高函数值的变量。
在如何选择初始温度,冷却时间表,新状态的接受概率等方面有许多微妙之处。通常,这是一个非常有问题的任务,很难提供一种通用的方法。