0

我正在研究我的硕士项目,希望你能给我一些关于如何在 java 中解决以下问题的想法:

交易者想要购买物品清单。他可以从多个卖家/市场购买商品。市场与买方的距离不同。买家必须想办法在尽可能短的距离内购买最便宜的商品。

本质上,买家希望在寻找最便宜的商品的同时尽量减少他的旅行成本。

我希望描述是有道理的,如果我不清楚,请告诉我,我会尝试以不同的方式解释它。

到目前为止,我有一个买家类、卖家类、项目类和主类。我打算把买家的位置和卖家的位置使用Java Point类型。

我正在考虑使用类似 Dijkstra 的最短路径算法,但问题是如果买家走得更远,他可能会以更便宜的价格买到一件物品。

提前感谢您的帮助和时间。

4

4 回答 4

3

首先,这是一个算法问题,而不是 Java 问题。一旦确定了要使用的算法,您应该能够轻松地用您选择的语言实现它(尽管 Python 比 Java 容易得多)。

至于算法,这是一个 NP-Hard 问题,因此没有已知的多项式时间算法。(如果您找到一个,您将获得一百万美元的奖金)。您希望处理什么样的输入?即使最坏情况的复杂性很差,在实践中也可能有一些效果很好。

于 2012-08-09T22:03:02.187 回答
2

假设差旅成本计入总成本,并且您想最小化总差旅+购买成本,这听起来就像旅行购买者问题,旅行推销员问题是一个特例。wiki 文章中的参考资料对该问题有几种不同的解决方案。请注意,这个问题是 NP-Hard,因此没有一个已知的解决方案可以保证既快速又给出最佳解决方案。

于 2012-08-09T22:25:05.843 回答
1

我认为 Dijkstra 的方向是正确的。我们有一个类似的问题,我们需要将客户优先级与旅行距离考虑在内,我们只是决定了一种将优先级与距离相关联的方式。在您的情况下,这会更容易,因为可以轻松比较旅行成本和物品成本。只需将两者的总和作为您的边缘权重。

于 2012-08-09T22:01:43.723 回答
1

“买家必须想办法在尽可能短的距离内买到最便宜的商品。”

那只是找到最便宜物品的位置,然后找到它们之间的最短路线。如果相同的物品在不同的位置以相同的价格提供,那么你为每条路线做最短路径。

或者找到涵盖所有项目的最短路线,然后将价格相加。

只有当您添加旅行距离的成本因素(例如,在不同地点之间行驶的汽油)时,您旅行的距离才会与您的购物旅行成本相关。

你可能想谷歌“遗传算法旅行商问题”

于 2012-08-09T22:09:27.787 回答