这是一个学术问题而不是实际问题。在旅行推销员问题中,或任何其他涉及找到最小优化的问题中……如果有人使用 map/reduce 方法,似乎有一些方法可以将当前最小结果广播给所有人计算节点以某种方式允许它们放弃超过该值的计算。
换句话说,如果我们将问题映射出来,我们希望每个节点在完成之前知道何时放弃给定的部分结果,但何时已经超过了其他解决方案。
立即想到的一种方法是,reducer 是否有办法向映射器提供反馈。考虑一下我们是否有 100 个节点,并且映射器向它们提供数百万条路径。如果 reducer 将最好的结果提供给 mapper,则该值可以作为参数包含在每个新路径(问题子集)中。在这种方法中,粒度相当粗略……这 100 个节点将每个节点都在他们的问题分区上不断打磨以完成,并且只有在映射器的下一个请求时才获得新的最小值。(对于少量节点和大量问题分区/子集在此粒度上工作将是无关紧要的;而且它
想到的另一种方法是让节点主动订阅某种频道,或多播甚至广播,它们可以从它们的计算循环中收集新的最小值。在这种情况下,他们可以在收到更好的解决方案(由他们的同行之一)通知时立即放弃错误的计算。
所以,我的问题是:
- 与现有 map/reduce 讨论相关的任何艺术术语是否涵盖此概念
- 当前的 map/reduce 框架是否提供了支持这种动态反馈的功能?
- 这个想法有什么缺陷……为什么它很愚蠢?