流网络中处理时间的算法和数据结构



我正在开发一个系统,我有一个资源流网络,它应该考虑到时间。

例如:

考虑一个标准的流网络,其中每个节点都是一个仓库,用于分发具有有效期的物品。另外,将一个项目从一个节点传输到另一个节点也需要时间,所以当一个项目从源发送时,到达接收器之前的时间应该最小化。

网络包含源(供应商)和汇(客户),另外节点(仓库)可能已经有库存。

该项目的需求在不同的时间点分布在整个网络中,需要计算一个合适的流量。

然而,您可能会在现有流量网络的时间轴中间得到需求变化,迫使您更改网络中的流量。当这样做时,我希望避免从头开始重新计算所有内容,而只是对网络进行细微的更改,以便它可以考虑到新的需求。

我看过标准流算法,很难找到任何以同样方式考虑时间的东西。我在找一些可能能把我推向正确方向的东西。

有人知道解决这种问题的算法吗,或者类似的东西?或者对于处理时间方面的良好数据结构有什么建议吗?

对于这类问题有很多算法:

Dijkstra -在你的情况下:边缘成本=从一个节点到另一个节点发送信息的时间(如果你不知道这种信息,你可以使用Dijkstra计算最短路径,并考虑最短路径是最快的)。复杂度:O(|V|lg|V| + |E|) -其中V=顶点,E=边

A* -如果你确定你有许多不可预测的变化,你可以找到一个很好的启发式函数来解决你的问题。我发现A*很难实现,但它有一个很好的复杂性。

Bellman-Ford, Johnson -这可能也有帮助

也许你能在这里找到一些有用的东西:https://www.sics.se/赛义夫/DistributedAlgorithms routing.pdf

http://page.math.tu-berlin.de/skutella/WAOA09-lncs.pdf

最新更新