(共27张PPT)
(义务教育版)五年级
全一册
第30课
生命游戏的算法
学习目标
激趣导入
学习活动
思考-讨论
实践探究
课堂小结
拓展-提升
单元主题
单元主题
单元名称 课名称 核心内容
第八单元 人工智能中的算法 第28 课 认识决策树算法 人工智能应用中的决策树算法,决策树算法的应用场景。
第 29 课 智能工具再体验 生成式人工智能及其应用。
第 30 课 生命游戏有规则 生命游戏中的进化规则及其算法思想。
学习目标
激趣导入
【趣味故事】
在遥远的数字王国里,有一片神秘的土地。在这片土地上,生活着一群特殊的 “居民”。它们没有实体的身体,却有着自己的生存法则。有一天,一个勇敢的小数字探险家来到了这片土地,他发现这些 “居民” 的生活方式非常奇特,它们的诞生、繁衍和消亡都遵循着一套神秘的规律。
同学们,你们想不想知道这个规律是什么?
激趣导入
【建构】
这个规律就是我们今天要学习的生命游戏算法。
让我们跟随小数字探险家的脚步,一起去揭开这个神秘算法的秘密 。
学习活动
学习活动
活动1:生命游戏中的算法规则
一
学习活动
一、生命游戏中的算法规则
最初的生命游戏模拟的是一种原始形态的“生命”如何按照特定的规则一代接一代地进行演化,并由此得名。
在生命游戏中,有很多小方块,每个小方块都有两种状态。我们可以把这些小方块看作是灯泡,两种状态分别对应着灯泡的“点亮”或“熄灭”。
学习活动
一、生命游戏中的算法规则
游戏开始时,在一个平面网格中,可以设置若干个点亮的灯泡,表示原始状态的“初始构型”,下图所示就是一个初始构型的例子。接着设定表示进化的“代”数,这两个部分构成算法的输入。
学习活动
一、生命游戏中的算法规则
生命游戏的算法规则(即进化规则)可以归纳为两条。
规则 1 :一个点亮的灯泡周围有 2 个或 3 个点亮的灯泡,就会继续点亮;它周围有少于 2 个或多于 3 个点亮的灯泡,就会熄灭。
例如,下图中心位置的灯泡,用规则 1 来检查它周围的状态,也就是作用规则 1,发现它仍然可以保持点亮状态。
学习活动
一、生命游戏中的算法规则
生命游戏的算法规则(即进化规则)可以归纳为两条。
规则 2:一个熄灭的灯泡周围刚好有 3 个点亮的灯泡,才会被点亮。否则,它周围有少于 3 个或多于 3 个点亮的灯泡,就会保持熄灭状态。
例如,下图中心位置的灯泡,作用规则 2 后保持熄灭状态。
学习活动
一、生命游戏中的算法规则
【注意】
作用规则到指定的代数后进化就会停止,停止之后的网格构型就可以认为是算法的输出。
学习活动
活动2:体验生命游戏进化规则
二
学习活动
二、体验生命游戏进化规则
以下图中的 4 个初始构型为例,进一步学习了解如何作用这些规则。
*(注:图中的绿色方格代表点亮状态,空白代表熄灭状态)
学习活动
二、体验生命游戏进化规则
第 1 步:把图中的 4 个构型作用于进化规则,完成第一代进化。
例如,左上角的构型有三个点亮的灯泡,作用规则 1 后,一个继续点亮、两个变成熄灭状态。同时作用规则 2 后中间一个被点亮。
图中的橙色和蓝色用来临时表示进化的过程,橙色方格表示该位置即将由点亮变为熄灭,蓝色表示该位置即将由熄灭变成点亮。
学习活动
二、体验生命游戏进化规则
下图是对 4 个初始构型分别作用一轮进化规则后的状态。
学习活动
二、体验生命游戏进化规则
第 2 步:把第一代进化的结果作为初始构型,继续作用进化规则,就会得到第二代、第三代,也会产生一些更有趣的现象。
例如,对第一代进化后右下角的构型继续作用规则,得到第二代、第三代的进化结果,如下图所示。
思考-讨论
二、体验生命游戏进化规则
【想一想】
同学们,到现在为止,你们有没有发现什么规律?
学习活动
二、体验生命游戏进化规则
【小试牛刀】
继续用其他几个构型尝试,观察发生的变化。
学习活动
活动3:试玩“生命游戏”程序
三
实践探究
三、试玩“生命游戏”程序
【玩一玩】
第 1 步:打开“生命游戏”的 Python 程序。
第 2 步:运行这个程序,试着玩一玩。
第 3 步:观察、体会游戏中的算法及其进化规则。
实践探究
【附——参考程序】
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def update(frame_num, img, board, N):
new_board = board.copy()
for i in range(N):
for j in range(N):
total = int((board[i, (j - 1) % N] + board[i, (j + 1) % N] +
board[(i - 1) % N, j] + board[(i + 1) % N, j] +
board[(i - 1) % N, (j - 1) % N] + board[(i - 1) % N, (j + 1) % N] +
board[(i + 1) % N, (j - 1) % N] + board[(i + 1) % N, (j + 1) % N]))
if board[i, j] == 1 and (total < 2 or total > 3):
new_board[i, j] = 0
elif board[i, j] == 0 and total == 3:
new_board[i, j] = 1
img.set_data(new_board)
board[:] = new_board[:]
return img,
def main():
N = 50
update_interval = 50
board = np.random.choice([0, 1], N * N, p=[0.2, 0.8]).reshape(N, N)
fig, ax = plt.subplots()
img = ax.imshow(board, interpolation='nearest')
ani = animation.FuncAnimation(fig, update, fargs=(img, board, N,),
frames=100,
interval=update_interval,
save_count=50)
plt.show()
if __name__ == '__main__':
main()
课堂小结
2
体验生命游戏进化规则
3
试玩“生命游戏”程序
1
生命游戏中的算法规则
第 1 步:把图中的 4 个构型作用于进化规则,完成第一代进化。
第 2 步:把第一代进化的结果作为初始构型,继续作用进化规则,就会得到第二代、第三代,也会产生一些更有趣的现象。
第 3 步:继续用其他几个构型尝试,观察发生的变化。
规则 1 :一个点亮的灯泡周围有2个或3个点亮的灯泡,就会继续点亮;它周围有少于2个或多于3个点亮的灯泡,就会熄灭。
规则 2:一个熄灭的灯泡周围刚好有3个点亮的灯泡,才会被点亮。否则,它周围有少于3个或多于3个点亮的灯泡,就会保持熄灭状态。
拓展-提升
使用生成式人工智能工具,输入下面的语句,阅读获得的内容,进一步了解生命游戏的规则。
为我解释生命游戏,要有简单的说明性实例,适合青少年阅读。
https://www.21cnjy.com/recruitment/home/fine