Sorting 如何在haskell中并行排序未排序的二叉叶树?
可能重复:Sorting 如何在haskell中并行排序未排序的二叉叶树?,sorting,haskell,tree,parallel-processing,Sorting,Haskell,Tree,Parallel Processing,可能重复: 下面只是一个小的二叉叶树的例子,只在叶中包含项目,而不进行排序。如果不展平树,然后在再次构建已排序树之前对其进行排序,有没有一种方法可以对其进行并行排序(使用par和seq原语)。e、 g.将左右分支并行排序,然后对这两个分支进行最后排序 /\ / \ / \ /\ /\ / \ / \ 3 1 5 2 说“不展平”是毫无意义的,因为树无论如何都必须解构和重建:即使在您的简单示例中,每个节点都必须更
下面只是一个小的二叉叶树的例子,只在叶中包含项目,而不进行排序。如果不展平树,然后在再次构建已排序树之前对其进行排序,有没有一种方法可以对其进行并行排序(使用
par
和seq
原语)。e、 g.将左右分支并行排序,然后对这两个分支进行最后排序
/\
/ \
/ \
/\ /\
/ \ / \
3 1 5 2
说“不展平”是毫无意义的,因为树无论如何都必须解构和重建:即使在您的简单示例中,每个节点都必须更改,因此无法从现有结构中保存任何内容。阅读树,执行合适的排序算法(合并排序在这里似乎是一个不错的选择,特别是它与并行计算配合得很好),然后重建树。没有更好的方法了。你能澄清一下:你是想进行合并排序,还是更复杂的事情?是的,我想看看如何在这样的结构上进行合并排序,然后我可以添加任何并行性。类型def为:
data Tree=Leaf Int | Node(Tree)(Tree)
Nom以便重新打开。这与该用户提出的另一个问题不同,尽管有一些重叠。在这里打开了一个令人兴奋的问题:谢谢。在我的例子中,我要做的是对左分支和右分支进行并行排序,然后在两个结果之间进行合并。因此,合并排序在这里确实是最好的。对于一棵更大的树,我可以在树中进一步向下,并行地对多个子树进行排序。但是我仍然需要做一些类似的事情:sortList(subtreetlist(subTree))