Best-First Search评估功能

时间:2014-12-10 15:33:41

标签: c# algorithm search evaluation

我在C#中实现最佳优先搜索算法。这是控制台应用程序。

我使用的数据结构是树。我在这个算法中看到的评估函数是两个节点(例如城市)之间的直线距离。距离是图形应用程序中网格上的矢量(长度)。我的应用程序在控制台中,因此我无法计算节点之间的向量。

如何以我的实施方式计算评估函数?

编辑(基于@ Andrew的想法)

我在一张纸上画了一棵树,然后把坐标分配给了节点。 起点是A(根)。终点是L(用户选择程序中的目标)。 距离由欧几里德公式计算,用于两个维度:

d(p,q) = sqrt(pow((p1 - q1), 2) + pow((p2 - q2), 2)) 

看图片:Best-First Search for Tree

这是个好主意吗?

1 个答案:

答案 0 :(得分:1)

对于评估函数,您需要有一个经过两点的线的等式:

通过两个不同点P_0 =(x_0,y_0)和P_1 =(x_1,y_1)的线的等式可写为

(y - y_0)(x_1 - x_0) = (y_1 - y_0)(x - x_0). 

在它旁边,您的节点应属于此行。

即坐标(x *,y *)的节点应满足等式:

(y* - y_0)(x_1 - x_0) = (y_1 - y_0)(x* - x_0)

如果等式的两个部分评估为不同的值,则您的节点(点(x *,y *))不在所需点(城市)之间的直线上