排序网络
Last updated
Last updated
在活动之前,先用粉笔在场地上标记此网络的图形。
这些活动将会展示电脑如何使用“排序网络”来排序随机产生的数字。
每六个学生一组,每次只有一队可以使用网络。
每个团队成员都拿一张有编号的卡片。
每个成员各站在场地的左侧(入口)的一个正方形内,成员手上的编号必须排列成混乱的顺序。
成员沿着地上所画的线移动,到达圆圈后,你必须等待另一个人到达。
当队伍中的另一位成员到达你的圆圈后,两个人就比较手上的卡片。数字比较小的队员,走左边离开到下一个节点;数字比较大的队员则走右边离开。
你到场地的另一侧时的顺序是正确的吗?如果队伍中有人犯了错,则整个团队必须从新开始。确定你是否已经了解网络节点的运作机制,也就是小的值往左,大的值往右,以下图为例:
当学生熟悉活动运行方式之后,用计时表来测量每一队花多少时间来通过整个网络。
使用数字大一点的卡片(例如:素材中提供的三位数卡片)。
新增更大的数字,让学生要多花一点时间来比较。也可以改用单字,用字母顺序来进行比较。
这个活动也可以用来作为其他学科的练习,比如音乐,你可以比较印在卡片上的音符,并依照它们的音高来排序。
1.如果改成数字较小的去右边,数字较大的去左边,结果会变成怎样?(数字会按照相反的顺序排序。)
如果整个网络反过来跑(从右侧到左侧),能正确排序吗?(不一定,学生应该能够找到一个例子,最后的顺序是错误的。)
4.尝试做一个大点的排序网络。
6.日常生活中哪些事情可以或不可以用平行处理的观念来加速进行?例如,做饭时只用一个炉子就会慢很多,因为所有的菜必须一个接一个来烹饪。怎样的工作可以让更多的人同时进行?怎么样的工作不能呢?
2.试着设计出小一点或大一点的网络,像这样的网络只对三个数字做排序,让学生自己去畅想。
3.下面是针对四个数字做排序的两个不同的网络。哪一个比较快?(第二个比较快。因为第一个网络是一个个做比较,而第二个有一些比较可以同时被执行。第一个网络是“窜行处理”(Serial processing)的一个例子,第二个网络则使用“并行处理”(Parallel processing),因为跑得更快。)
5.网络也可以用来找到输入的最小值或最大值。例如,这里是一个接受八个输入值的网络,最后的输出只有一个,就是所有输入的最小值(其他的值都会停留在网络中的死角)。