算法导论之排序网络

排序网络算法是基于比较网络模型,可以同时执行多个比较操作,和串行计算(随机存取计算机RAM)机制不一样。首先要介绍下比较网络。比较网络由线路和比较器构成。一条线路把一个值从一处传输到另一处,把比较器的输入端和输出端相连。
假定比较网络含n条输入线a1,a2,…,an,以及n条输出线b1,b2,…,bn,需要排序的值通过输入线进入网络,由网络计算出的结果通过输出线输出。算法导论中给出的案例很清晰地表达了比较网络的概念和特点,由线路互联的一组比较器组成。关注两个特点:
第一:只有当同时有两个输入时,比较器才能产生输出值。简单理解,比较器之比较在于有两个值的比较,一个值输入不构成比较意义;
第二:一个比较网络的深度是它的输出线路的最大深度,就是比较器的深度;比较器的深度由最深的线路来决定,如果一个比较器有两条深度分别为dx和dy的输入线路,则其输出线路深度为max(dx,dy)+1;第一个特点也决定了比较器的深度,因为只有输入两个值才算一个深度的开始。
综上,定义排序网络为:对每个输入序列,其输出序列均为单调递增(即b1≤b2≤…≤bn)的一种比较网络。输入n个值(n条线路)经过比较器(深度不同)的比较最后输出n个值正排序。比较器其实就是简单的min和max两个值选择。
1)0-1原理
0-1原理推定认为:如果对于属于集合{0,1}的每个输入值,排序网络都能正确运行,则对任意输入值,它也能争取而运行(输入值可以是整数、实数或者任意线性排序的值的集合)。这样在构造排序网络时,可以专注在0和1组成的输入序列上设计比较器。这个原理目的是简化输入值,而通过0和1来设计比较网络的线路和比较器,只要0和1可运行,那么其他任意值的序列也都可以运行。
0-1原理的证明依赖单调递增函数。如果比较网络把输入序列a=<a1,a2,…,an>转化为输出序列b=<b1,b2,…,bn>,则对任意单调递增函数f,该网络把输入序列f(a)=<f(a1),f(a2),…,f(an)>转化为输出序列f(b)=<f(b1),f(b2),…,f(bn)>。
这个可以这样理解,就是对输入序列a施以f(a)单调递增函数,比较网络(线路和比较器)能够使序列a输出序列b,那么该比较网络同样可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值