2017-06-22 301 views
0

我有一个电子表格设置了一堆到不同餐馆的距离。为了简单起见,可以说所有列A都有餐厅名称/代码(假设代码是一个数字,2到XXX)。然后,在BXXX - 1之间,有一个数字显示A中的餐厅与其代码是列号的餐厅之间的距离。在VBA中实现dijkstra算法

我将如何去执行dijkstra的算法来找到2个用户输入的最短路径?

请参阅以下的例子电子表格的截图: Screenshot of the Spreadsheet

+0

将它写入纯VBA中。输入可以是开始节点,目标节点和二维VBA阵列的距离,返回值可以是距离,也可以是最短路径本身。当您执行Dijkstra时,电子表格的布局在某种程度上与您无关。只有当你需要调用你的VBA函数时才重要。 –

回答

3

你会做什么是编写一个遍历所有具有距离信息,并将其存储在适当的图形数据结构的数据VBA代码。我不确定你的数据是否代表无向图,或者只是巧合,你有一个较低的三角形矩阵表示。

无论如何,在将数据转换为适当的VBA数据结构之后,您可以采用现有解决方案并使其适用于您的数据结构。或者,首先,确保数据结构适合现有的解决方案。你可以找到一个VBA Dijkstra执行here

如果您想自己实现它,可以在网上找到许多说明性示例,例如here,以帮助您理解算法本身。