如何解决用于从图形中删除周期的Map Reduce算法
| 这个问题对于检测有向图中的循环有很好的答案。不幸的是,制作它的Map Reduce版本似乎并不容易。 具体来说,我对从有向图删除循环的Map Reduce算法感兴趣。 我已经使用广度优先搜索(BFS)算法进行了评估,但是我看到的一个问题是,可能同时删除两个不同的边以切断一个周期。这种情况的影响是太多的边缘可能被删除。重要的是要去除循环,同时最大程度地减少去除的边数。 具有可用证明的解决方案是首选! 谢谢。解决方法
您需要一个迭代映射简化来实现此算法。请参阅http://www.iterativemapreduce.org/,以围绕迭代地图精简为中心的地图精简框架。或通过http://www.johnandcailin.com/blog/cailin/breadth-first-graph-search-using-iterative-map-reduce-algorithm获取有关如何使用Hadoop通过图进行广度优先搜索的有效示例使用迭代映射减少。
,好吧,如果您想删除所有循环,那么您将得到一棵树。因此,无论使用哪种算法,都将删除| E |。 -(n -1)个边缘。 (当然是正确的)
但是,问题是边缘的删除是否会导致图形断开。为此,您将需要对边缘进行排序(例如按字典顺序)。然后,您应始终删除循环中的最大边缘。 [我猜对正确性的证明是非常直接的:只需使用Kruskal算法并发现它们将是相同的! ]
任何生成树算法都可以为您解决问题。根据要优化的内容(时间或消息复杂度或任何其他性能指标),您会找到不同的算法。 BFS是最好的时间。对于c> 0,没有算法可以解决少于c(logn + m)条消息的问题。
我喜欢将DAG使用的一种算法称为YO-YO。该算法的描述可以在以下网站找到:http://www.site.uottawa.ca/~flocchin/CSI4509/8-yoyo11_fr.pdf
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。