用于从图形中删除周期的Map Reduce算法

如何解决用于从图形中删除周期的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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?