Java 旅行推销员/车辆路线用例的最佳可能实现
我最近在采访中遇到一个案例,要求解决的用例属于旅行商问题/车辆路径问题。我能够告诉他们实际的问题是什么,以及这个问题涉及到什么数学。我确实解释了如何使用Hadoop的MapReduce范例部分解决下面提到的用例。(解释了多个map reduce作业将如何解决该问题)使用Jimmy Lin和Chris Dyer在本书《MapReduce数据密集型文本处理》中提到的图形算法 出于好奇,我在google上做了一些研究,我可以看到很多关于这个问题的实现和研究都是以不同的方式进行的。 我问的问题有城市坐标(x,y)格式,我在谷歌上看到的许多解决方案考虑了一些其他因素,如单位距离,负/正测量单位等等,所以总之,我做了研究和阅读,我变得更加困惑。 我在这里的问题是针对下面的用例,什么是可能的解决方案,什么将是其中最好的解决方案。如果一些有经验的人能够对此加以说明,这将有助于消除我的困惑,更好地理解解决方案。或者如果有人能够指导我正确的方向(这样我就不会在探索整个解决方案海洋时更加困惑) 访谈中询问的用例:Java 旅行推销员/车辆路线用例的最佳可能实现,java,algorithm,hadoop,statistics,analytics,Java,Algorithm,Hadoop,Statistics,Analytics,我最近在采访中遇到一个案例,要求解决的用例属于旅行商问题/车辆路径问题。我能够告诉他们实际的问题是什么,以及这个问题涉及到什么数学。我确实解释了如何使用Hadoop的MapReduce范例部分解决下面提到的用例。(解释了多个map reduce作业将如何解决该问题)使用Jimmy Lin和Chris Dyer在本书《MapReduce数据密集型文本处理》中提到的图形算法 出于好奇,我在google上做了一些研究,我可以看到很多关于这个问题的实现和研究都是以不同的方式进行的。 我问的问题有城市坐标
一家公司正试图找到最好的解决方案,为其拥有12名员工的300名客户群提供服务。 他们需要一个技术解决方案,该解决方案告诉他们,随着业务的增长和其他变化(如客户位置的变化、新位置的增加等),他们将如何满足客户需求 这个问题基本上是旅行商问题(TSP)或车辆路径问题(VSP)的一种形式 起始坐标为(0,0),城市坐标示例如下所述。 以下是预期在文本文件中作为输入提供工作解决方案的坐标:
X coordinate Y Coordinate
420 278
421 40
29 178
350 47
298 201
417 186
378 134
447 239
42 114
45 199
362 195
381 243
429 1
338 209
176 9
364 26
326 182
500 129
190 51
489 103
368 142
132 260
305 200
446 137
375 154
440 190
9 118
437 32
383 266
提前感谢我不是专家,但你不能计算原点和所有其他点之间的距离并找到最近的点,然后对该点重复该过程,直到你覆盖了所有点吗?解决NP问题没有正确的方法。因为复杂性是指数的,所以需要很长的时间除了琐碎的例子以外,任何东西都可以用e表示 但是,有一些近似值可以非常接近真实答案,并且对于您的应用程序来说可能已经足够好了(例如,它不是最短路径,但在它的某个相对范围内)
检查我们的。他们甚至有一些例子。如果我在面试中问这个问题,我会提出类似于本文中所述的内容,看起来最适合您的任务公式。在本文中,您将找到优化的近似方法来解决多个销售人员的问题,所有销售人员从一个点开始。它可以是如果我们通过解决每个旅行推销员子问题(聚类将主要问题划分为经典问题),从特定推销员的家庭/家庭办公室开始,就可以知道员工离开哪里
如果我们有位置图作为输入,而不仅仅是坐标-我们可以用图聚类算法代替k-means,就像Dmitry提到的,这是一个多旅行商问题的例子。 作为NP难问题,面试官自然希望你提出一个启发式优化算法 我认为这种情况的关键是他们正在寻找一种能够实时更新以适应目的地数量和位置变化的算法。蚁群优化(粒子群优化的一种形式)实际上最初是针对旅行推销员问题制定的,见论文和维基百科: “M.Dorigo,V.Maniezzo,et A.Colorni,蚂蚁系统:合作代理群体的优化,IEEE系统、人和控制论交易——第B部分,第26卷,numéro 1,第29-41页,1996年。” 从多旅行推销员问题开始,这一点就得到了推广。例如,请参阅本文(开源),了解一些很好的工作: 在面试的情况下,我会详细说明它的优点:1.是一个有效的启发式解决方案;2.能够实时更新图表中的两个变化;3.对于额外的分数,我提到,一旦在计算机上获得了一个合理有效的解决方案,司机自己就可以以稍微概率的方式分配路线,suB可以执行由真实数据驱动的后续优化 缺点是,与Dmitry建议的先减少搜索空间的问题相比,可能需要相当大的处理能力。其次,如果他们想让你实际制定一个算法,那么在面试中这可能是相当具有挑战性的
有趣的问题:)我不是你要找的专家,因此我不敢将这个过于简单的评论作为答案。基本上,你可以描述坐标之间的路径,然后找到哈密顿循环。许多常用的库可以计算这些循环,例如(我不知道hadoop的情况).指java中的解决方案。希望能有所帮助。员工人数可能暗示他们希望讨论多个营业场所。
尽可能最好
以及最佳
需要一个目标