【发布时间】:2014-01-25 17:17:56
【问题描述】:
我的记录中有 6 个城市。孟买、布洛尔、哈巴德、德里、钦奈、浦那。并记录每个城市的具体情况。
当用户访问我的页面时,我想根据位置相关性显示记录。我想为此使用最短距离算法。
从用户的IP,我可以得到他的位置(城市或语言)。我想计算用户与上述每个城市的距离。那个,我应该选择最近的那个来显示记录。
有更好的方法吗?我正在使用 php。
请在实施层面讨论...
【问题讨论】:
我的记录中有 6 个城市。孟买、布洛尔、哈巴德、德里、钦奈、浦那。并记录每个城市的具体情况。
当用户访问我的页面时,我想根据位置相关性显示记录。我想为此使用最短距离算法。
从用户的IP,我可以得到他的位置(城市或语言)。我想计算用户与上述每个城市的距离。那个,我应该选择最近的那个来显示记录。
有更好的方法吗?我正在使用 php。
请在实施层面讨论...
【问题讨论】:
您可以将您的城市表示为图中的节点,并将它们之间的距离表示为边上的权重,然后应用 Dijkstra 算法 (http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm) 如果您想获得前 5 个最短距离,可以使用 Yen 算法或 A* 之一(http://en.wikipedia.org/wiki/A*_search_algorithm)
乐: 您必须创建一个加权图(定向与否,取决于您)。图中的节点可以是城市的名称(或者如果您有关于城市的更多详细信息,可以使用 City 类型的对象)。城市之间的距离将由它们之间的加权边缘表示。
运行 Dijkstra,您将必须指定一个起始节点和一个结束节点(在您的案例中,您的用户当时所在的城市和他想去的城市)。该算法将返回最短距离,并且通过小实现可以打印从源到目的地的整个路径。
【讨论】: