程序代码里的优选实验
2018-01-16陈凯
中国信息技术教育 2018年1期
陈凯

算法对世界的巨大改变无可否认,然而对于知识技术水平有限的初学者来说,某些算法具体实现的复杂性确实令人望而生畏,即便大致了解了某个著名的算法的基本原理,或者在工作、生活中使用到了该算法的成果,也很难从代码实现的角度去体验、实证算法的作用,更遑论要结合实际问题做需求分析并编写出有实用价值的程序了。以遗传算法为例,它涉及到情境创设、基因编码、适应度函数评分、选择函数设置、基因重组、基因变异等诸多步骤,且每个步骤都对应着相当多的程序代码量,教学者的任务一方面是尽量尝试设计简单有趣的任务情境,另一方面是将复杂的算法自顶向下分解成小任务,通过每个小任务的编码实证,让学习者体会这一段代码所体现出来的思想方法。上一期文章《程序代码里的遗传》所介绍的内容重点在于如何将情境创设和基因编码过程变得有趣形象,本期文章所介绍的活动内容,是在人工干预的条件下,让随机图形变得越来越像某种图形,重点在于如何将基因重组变异的过程直观显现出来。
为了简单起见,笔者在本文的例子中,用8×8的点阵组成简单的图形,希望借助人工选择,使得初始的随机生成图形一代代产生变化,并越来越像某个数字。例如,一开始的时候,图形可能是如图1所示的样子。
然后,下一代图形会在上一代图形的基础上发生变化,在逐代人工优选操作下,图形变得越来越像数字“2”(如图2)。……
登录APP查看全文
