我有以下django型号:
class Mappings(models.Model):
placeFrom = models.CharField(max_length=50)
placeTo = models.CharField(max_length=50)
totalTime = models.TimeField()
下面是表格的填充方式:
placeFrom placeTo totalTime
new york london 03:55
london paris 22:33
london new york 03: 23
amsterdam london 82:39
其思想是为一个没有直接映射的映射查找所有数据库行连接。用于例如,在这种情况下,纽约-巴黎没有直接的联系。所以呢,返回的表行应为
new york london 03:55
london paris 22:33
你知道怎么做吗?
我首先使用Mappings.objects.filter(placeTo="london")
来获取表示“某地”和“伦敦”之间映射的所有行。因此,我知道返回的行对我来说可能很好,如果返回的是“纽约”和“某地”之间的映射,但不知道如何检查。。你知道吗
您需要做一些事情,比如在哪里可以建立路由,并轻松地找出哪些位置(或节点)没有连接。完成后,您需要遵循@DanielRoseman的建议,并使用一个图形搜索算法来填补空白
n.b.为了更清楚,我没有展示从模型中导入数据的方法,但是您可以理解
您将得到以下输出
这是一个图形问题,不是吗?您基本上需要构建一个图,其中节点是您的位置,边是您的映射(其中边长度=映射.总时间),然后应用相关图搜索算法(如Dijkstra's algorithm)寻找相关节点之间的最短路径。你知道吗
不过,如果不先从数据库获取所有映射并构建图形,我认为没有任何方法可以做到这一点。你知道吗
谢谢你的建议,我选择从简单的解决方案开始,虽然不太理想,但它能帮我找到更好的解决方案好的。这个我现在得到的是:
相关问题 更多 >
编程相关推荐