• 排序网络


    排序网络

    • 这篇文章和ACM无关,虽然参考自IOI候选队论文((
    • 可以构造时间复杂度 (O(log^2 n)) 的排序网络
    • 比较器有两个输入与两个输出,(x'=min(x,y),y'=max(x,y)) 可以比较两个值并交换,复杂度 (O(1)),多个比较器可以并行运算
    • 比较网络由比较器和传数值的线路组成,有 (n) 个输入线路和 (n) 个输出线路
    // 输入 [4, 3, 2, 1],第一步后变 [2, 3, 4, 1],第二步后变 [2, 3, 1, 4]
    4 --X-- 2 ----- 2
    3 --|-- 3 ----- 3
    2 --X-- 4 --X-- 1
    1 ----- 1 --X-- 4
    
    • 排序网络是无论输入是什么,输出总是单调递增(不减)的比较网络
    • (0-1) 原则为,如果一个比较网络对任意 (01) 的输入都能排序,那么它也能对任意一般的输入进行排序
    • 下面都只讨论数值为 (01) 的情况
    • 双调序列:先增后减((000111000))或先减后增((111000111))的序列
    • 半清洁器:输入长度为 (n)(n) 是偶数) 的双调序列 (a),输出两个长度为 ( frac n 2) 的双调序列 (a'_0,a'_1),满足 (forall i, a'_0[i]=0)(forall i, a'_1[i]=1)(其中一个是清洁的)。只要拿 (n) 个比较器连接 (a[i])(a[i+ frac n 2]) 即可,(O(1))
    0 --X----------- 0
    0 --|--X-------- 0
    1 --|--|--X----- 0
    1 --|--|--|--X-- 0
    1 --X--|--|--|-- 1
    0 -----X--|--|-- 0
    0 --------X--|-- 1
    0 -----------X-- 1
    
    • 双调排序网络:将长度为 (n) 的双调序列排序。先连一个清洁器,再对两个输出序列都连清洁器,不断重复,(O(log n))
    0 --X-------- 0 --X---- 0 --X---- 0
    0 --|-X------ 0 --|-X-- 0 --X---- 0
    1 --|-|-X---- 0 --X-|-- 0 ----X-- 0
    1 --|-|-|-X-- 0 ----X-- 0 ----X-- 0
    1 --X-|-|-|-- 1 --X---- 1 --X---- 0
    0 ----X-|-|-- 0 --|-X-- 0 --X---- 1
    0 ------X-|-- 1 --X-|-- 1 ----X-- 1
    0 --------X-- 1 ----X-- 1 ----X-- 1
    
    • 合并网络:将两个有序序列排序。修改双调排序网络的第一个清洁器即可,(O(log n))
    0 --X--------X----X---- 0
    0 --|-X------|-X--X---- 0
    1 --|-|-X----X-|----X-- 0
    1 --|-|-|-X----X----X-- 0
    0 --|-|-|-X--X----X---- 0
    0 --|-|-X----|-X--X---- 1
    0 --|-X------X-|----X-- 1
    1 --X----------X----X-- 1
    
    • 最后用归并排序的方法连接合并网络,(O(log^2 n))
    1 --X---- 0 --X----X---- 0 --X--------X----X---- 0
    0 --X---- 1 --|-X--X---- 0 --|-X------|-X--X---- 0
    1 ----X-- 0 --|-X----X-- 1 --|-|-X----X-|----X-- 0
    0 ----X-- 1 --X------X-- 1 --|-|-|-X----X----X-- 0
    0 --X---- 0 --X----X---- 0 --|-|-|-X--X----X---- 0
    1 --X---- 1 --|-X--X---- 0 --|-|-X----|-X--X---- 1
    0 ----X-- 0 --|-X----X-- 0 --|-X------X-|----X-- 1
    0 ----X-- 0 --X------X-- 1 --X----------X----X-- 1
    

    参考:IOI中国国家候选队论文 - 2002 符文杰

  • 相关阅读:
    innodb buffer pool简介
    按 host 分组统计视图
    show engine innodb status事务模块简介
    等待事件统计视图
    MySQL MGR新增成员xtrabackup
    按 user 分组统计视图
    按 file 分组统计视图
    jdk9下载
    idea怎样自动补全分号
    idea创建的项目中,没有out文件
  • 原文地址:https://www.cnblogs.com/axiomofchoice/p/14213642.html
Copyright © 2020-2023  润新知