fbpx
维基百科

并行排序

并行排序算法是计算机并行计算能力大大发展之后,为了提高排序效率而提出的算法。

划分的设计方法 编辑

串行算法直接并行化 编辑

  • 模拟快速排序
    • 二叉树上模拟快速排序
      • 串行算法简介:快速排序是一种较为高效的排序算法,它通过不断的划分待排序列为两段,使得前一段总小于或等于某个数,而后一段总大于某个数,这样每次划分就能确定一个数的最终位置。一般情况下,如果每次划分的两个子列大致等长,那么它的时间复杂度是 
      • 在PRAM-CRCW计算模型上利用二叉树网络模拟快速排序
        • 由快速排序的过程,我们可以看到,快速排序实际上就是在构造一棵二叉树,让划分主元位于根节点,使得左子节点小于或等于根而右子节点大于根,最后对整棵二叉树进行一次中序遍历,便可以得到最后排好序的数列。
        • 我们可以选n个处理器分别保存待排序数组A的n个元素,处理器 对应一个变量 用于存放主元元素的处理器号,以及两个变量L,R分别存放其左右儿子。开始时,每一个处理器都试图往变量root中写入它的处理器号,若果我们使用PRAM-CRCW计算模型,那么就只有一个能够写入root,接着root被复制给每一个处理器的 。然后对于每个处理器(除去被原为主元的那个外)判断其值与 的大小,从而确定放入 还是 ,同样的,由于并发操作的互斥性,只有一个只能被最终写入,他们就作为下次划分的主元。算法继续进行直到n个主元被选完为止。
      • 时间复杂度分析:由于一层节点的构造时间是 ,所以算法的时间复杂度是 
    • 超立方体上模拟快速排序
      • 超立方体网络是基于超立方体连接构建的网络。网络中以格雷码对各顶点编号。在下面的描述中,设顶点数 ,待排序元素共有n个。
      • 超立方体上的快速排序是这样进行的:首先我们将n个元素分配到p个处理器上,为了使问题讨论简单化,假设n是p的整数倍,那么每个顶点将会分到 个元素。然后随机选一个主元,各个处理器将每个顶点中的元素按与主元的比较结果分为两部份。这个算法的关键点在这里,对每一个处理器(顶点)在进行第i次划分时,将大于主元的部分都送到超立方体的一个d-i维自立方体中,而将小于主元的部分送到另一个d-i位的子立方体中,这样就模拟了快速排序中的划分算法。子立方体可以这样选择:在第i次划分中判断第i位是0还是1。划分算法到处理完所有1维子立方体后结束。接下来对每个顶点中的元素调用串行算法进行局部排序,最后对整个立方体进行一次遍历便可得到排好序的元素。

比较器络上的并行排序网 编辑

比较器网络英语sorting network一般是指由Batcher比较器构成的网络。这些比较器均可以执行两个数之间的比较与条件交换(CCI)操作。Batcher归并网络可以由较小的Batcher归并网络递归地组成。Batcher排序网络可以分为奇偶排序网络(Odd-Even Sorting Network)双调排序网络英语Bitonic Sorting Net两大类。

参阅 编辑

并行排序, 此條目没有列出任何参考或来源, 2020年4月29日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 算法是计算机并行计算能力大大发展之后, 为了提高排序效率而提出的算法, 目录, 划分的设计方法, 串行算法直接并行化, 比较器络上的网, 参阅划分的设计方法, 编辑psrs算法, viliant归并算法, 对数划分串行算法直接并行化, 编辑模拟快速排序, 二叉树上模拟快速排序, 串行算法简介, 快速排序是一种较为高效的排序算法, 它通. 此條目没有列出任何参考或来源 2020年4月29日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 并行排序算法是计算机并行计算能力大大发展之后 为了提高排序效率而提出的算法 目录 1 划分的设计方法 2 串行算法直接并行化 3 比较器络上的并行排序网 4 参阅划分的设计方法 编辑PSRS算法 Viliant归并算法 对数划分串行算法直接并行化 编辑模拟快速排序 二叉树上模拟快速排序 串行算法简介 快速排序是一种较为高效的排序算法 它通过不断的划分待排序列为两段 使得前一段总小于或等于某个数 而后一段总大于某个数 这样每次划分就能确定一个数的最终位置 一般情况下 如果每次划分的两个子列大致等长 那么它的时间复杂度是O n log n displaystyle O left n log n right nbsp 在PRAM CRCW计算模型上利用二叉树网络模拟快速排序 由快速排序的过程 我们可以看到 快速排序实际上就是在构造一棵二叉树 让划分主元位于根节点 使得左子节点小于或等于根而右子节点大于根 最后对整棵二叉树进行一次中序遍历 便可以得到最后排好序的数列 我们可以选n个处理器分别保存待排序数组A的n个元素 处理器P i displaystyle P i nbsp 对应一个变量X i displaystyle X i nbsp 用于存放主元元素的处理器号 以及两个变量L R分别存放其左右儿子 开始时 每一个处理器都试图往变量root中写入它的处理器号 若果我们使用PRAM CRCW计算模型 那么就只有一个能够写入root 接着root被复制给每一个处理器的X i displaystyle X i nbsp 然后对于每个处理器 除去被原为主元的那个外 判断其值与A X i displaystyle A X i nbsp 的大小 从而确定放入L X i displaystyle L X i nbsp 还是R X i displaystyle R X i nbsp 同样的 由于并发操作的互斥性 只有一个只能被最终写入 他们就作为下次划分的主元 算法继续进行直到n个主元被选完为止 时间复杂度分析 由于一层节点的构造时间是8 1 displaystyle Theta 1 nbsp 所以算法的时间复杂度是8 l o g n displaystyle Theta logn nbsp 超立方体上模拟快速排序 超立方体网络是基于超立方体连接构建的网络 网络中以格雷码对各顶点编号 在下面的描述中 设顶点数p 2 d displaystyle p 2 d nbsp 待排序元素共有n个 超立方体上的快速排序是这样进行的 首先我们将n个元素分配到p个处理器上 为了使问题讨论简单化 假设n是p的整数倍 那么每个顶点将会分到n p displaystyle frac n p nbsp 个元素 然后随机选一个主元 各个处理器将每个顶点中的元素按与主元的比较结果分为两部份 这个算法的关键点在这里 对每一个处理器 顶点 在进行第i次划分时 将大于主元的部分都送到超立方体的一个d i维自立方体中 而将小于主元的部分送到另一个d i位的子立方体中 这样就模拟了快速排序中的划分算法 子立方体可以这样选择 在第i次划分中判断第i位是0还是1 划分算法到处理完所有1维子立方体后结束 接下来对每个顶点中的元素调用串行算法进行局部排序 最后对整个立方体进行一次遍历便可得到排好序的元素 比较器络上的并行排序网 编辑比较器网络 英语 sorting network 一般是指由Batcher比较器构成的网络 这些比较器均可以执行两个数之间的比较与条件交换 CCI 操作 Batcher归并网络可以由较小的Batcher归并网络递归地组成 Batcher排序网络可以分为奇偶排序网络 Odd Even Sorting Network 和双调排序网络 英语 Bitonic Sorting Net 两大类 参阅 编辑并行计算 高德纳的0 1原理 取自 https zh wikipedia org w index php title 并行排序 amp oldid 59411619, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。