我在C#中实现最佳优先搜索算法。这是控制台应用程序。
我使用的数据结构是树。我在这个算法中看到的评估函数是两个节点(例如城市)之间的直线距离。距离是图形应用程序中网格上的矢量(长度)。我的应用程序在控制台中,因此我无法计算节点之间的向量。
如何以我的实施方式计算评估函数?
编辑(基于@ Andrew的想法)
我在一张纸上画了一棵树,然后把坐标分配给了节点。 起点是A(根)。终点是L(用户选择程序中的目标)。 距离由欧几里德公式计算,用于两个维度:d(p,q) = sqrt(pow((p1 - q1), 2) + pow((p2 - q2), 2))
看图片:Best-First Search for Tree
这是个好主意吗?
答案 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 *))不在所需点(城市)之间的直线上