《可视化计算》第2章-算法设计与可视化(B)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RAPTOR图形输出
RAPTOR图形功能是一组预先定义好的过程 ,用于在计算机屏幕上绘制图形对象
所有RAPTOR图形命令必须在一个特殊的图 形窗口下使用,可以在图形窗口用不同的 颜色绘制矩形,圆,弧和椭圆图形和线条 ,也可以在图形窗口中显示文本
图形输出是实现算法结果可视化的重要环 境
图形窗口与坐标
和说明
Field子图
Field子图的主要功能
设定场地的大小(图形窗口的像素值); 设定compass[]数组的值,用于改善算法的
可读性,注意方向与坐标值增减的关系; 创建图形视窗(使用设定的参数值); 设置图形视窗的标题栏; 取得场地中心的坐标; 绘制醉汉所在的初始位置(场地的中心)
第2章 算法设计与可视化 PART B
《可视化计算》
为算法的设计做准备
常用子程序
随机数的产生和存储(可以用于后续章节将要 介绍的排序和查找算法设计)
从文件输入用于算法的基础数据(主要考虑后 续算法中要用到图和树等抽象数据类型的描述 )
将计算结果输出到文件(用于计算结果的输出 与保存,在某个算法需要保存中间结果是可以 使用)
子图划分的若干原则
子图的调用和子图的设计部分(一般在两 个不同的子图中),必须分别加以说明, 尤其是由于篇幅限制导致的子图划分,会 由于功能不够明确,导致仅靠子图名称不 能对子图功能有足够的解释
建议将某个样例程序的所有文档(包括设 计说明、程序、数据文件、图像等),包 含到一个文件夹中,便以取用和存档方便
小结与回顾
尽管本章尚未涉及具体的算法,但所有关 于算法问题的基本概念和理论都将在后续 章节中用到,所以,反复研读这些基本的 概念,对于将要到来的算法设计、分析与 评价,相信对读者是非常重要的
强调算法设计的可视化、算法运行过程的 可视化和计算结果的可视化,不是一个简 单的美学应用问题,而是涉及深刻的心理 、认知、学习等方面的一个重要理论问题
文件输出与结果
从文件中读入基础数据
从文件中读入算法测试需要的数据, 可以减少人机交互,节省调式时间
在图算法设计中,由于一个有4个顶 点的图,往往需要有16个数据组成的 邻接矩阵来表达,如果通过键盘输入 该矩阵,工作效率极低且容易出错
从文件输入的数据可以任意调整以测 试算法
文件输入
从.csv文件读入数据 并保存到数组中的 流程图
2. 设存在500(length)*500(Width) 的广场, 程序开始时醉汉所在的位置在在广场的中 央,D1=(length/2,width/2)
3. 假设醉汉每一步的长度为l0,则可以用一 随机变量来表示第i步是向东( =l)、南(=2 )、西(=3)、或向北(=4 )
用RAPTOR进行算法的实现步骤
随机漫步的main子图
main子图的说明
main子图是RAPTOR程序开始执行的地方, 一般算法设计中,可以包含:
小型算法的基本数据的初始化; 程序或算法的输入输出; 复杂算法中,最高抽象子算法(包括子图和子
程序)的调用序列,或调用的循环结构; 在算法的开始和结束符号中,增加算法的注解
经过N步之后的终点位置为:
D2=(x2,y2)
行走的距离为
SQRT((x2-x1)**2+(y2-y1)**2)
设计抽象与子图
main(主要参数的初始化和主控流程); field(广场的描述与醉汉位置初始化); drunk(漫步轨迹描述); location(求下一步的行走坐标) distance(距离计算)
一个二维随机漫步问题
假想有一个醉汉在某个广场上漫步,其向 东、南、西、北四个方向中的任何一个方 向行走的概率相同,请描述出随机漫步的 轨迹,并求解走N步之后,这个醉汉距离出 发点的距离是多少?
问题求解的初步分析
1、广场有多大?如何描述? 2、醉汉的步伐有多大?如何描述? 3、时间有多长,或走多少步? 4、最后,该醉汉的位置与原点所在位置的
计算机随机数一般在[0,1)上均匀分布
随机数的主要用途
产生算法(如排序、查找)所必需的数据;
一些随机模拟算法需要的基础数据,例如随机 漫步(Random Walk)
减少不必要的人机交互,如要求用户输入 10个数据,进行最大、最小值的查找等;
提高算法调试的效率; 提高算法数据工程化的程度。
随机数
将计算结果存储到文件
将计算结果保存到文件,可以与其他应用 软件交换计算结果
例如,将某个计算结果保存成为电子表格可以 读入的文件格式(.csv),
这些计算结果就可以为电子表格和数据库管理 系统读入后进行图形化或检索处理
计算结果输出到文件
输出语句可以用来将数据输出到一个文本 文件。
其前提条件是预先设置了“输出重定向” 如果输出被重定向,这意味着已经指定一个输
图形程序设计
随机数的产生与存储
用数学方法产生的随机数列是根据确定的 算法推算出来的,严格说来并不是随机的 ,因此一般称用数学方法产生的随机数列 为伪随机数列
只要用数学公式产生出ห้องสมุดไป่ตู้的伪随机数列通过统 计检验符合一些统计要求,如均匀性、抽样的 随机性等,就可以把伪随机数列当作真正的随 机数列使用
Drunk子图
Drunk子图说明
该子图在这个算法中处于核心位置,在算 法运行中,不断计算每一步的方向,进行 行进位置的变换,并在屏幕上绘制当前漫 步的踪迹
Location子图
Location和distance子图说明
distance子图根据光标当前的位置与随机得 到的方向,计算下一步漫步者的坐标值
框,用户可以指定输出文件名
文件输出
输出到文件中的内容与主控制台上输出的 格式、内容相同
在输出语句中,程序员可以控制输出的内 容和换行的时机
输出重定向结束
在文件输出的完成后,需要要重新设置 RAPTOR环境
使后续的输出内容继续写道其输出主控制 台,需要重新调用Redirect_Output函数来关 闭文件 Redirect_Output(False)
一个简单的图形窗口应用的例子
随机漫步的模拟模型
随机漫步(Random Walk,RW),是一种 数学统计模型
1905年,由卡尔·皮尔逊首次提出
它由一连串的轨迹所组成,其中每一次都 是随机的
用来表示不规则的运动形式,如同一个人 酒后乱步,所形成的随机过程记录
该模型在金融、物理等学科广泛应用
出文件 如果输出没有被重定向,则输出数据显示在主
控制台
输出重定向
在第一种类型重定向语句(打开文件):
Redirect_Output("file.csv") Redirect_Output("C:\datafile");
第二种类型重定向语句(打开文件):
Redirect_Output(TRUE) 这将文件名的输入延迟到运行时间 当该语句执行时,RAPTOR会打开文件选择对话
随机漫步算法的子图间调用关系
子图划分的若干原则
功能性:功能独特的子算法可以独立出来 ,同时功能性对其进行命名;
篇幅限制:建议初学者将每个子算法的篇 幅限制在一张A4幅面可以打印的大小,以 方便调试和交流
Init子图的设计:由于在RAPTOR子图中共享 变量,所以可使用一个子图进行所有变量 的初始化和描述
随机数使用的注意事项
由于随机数只有[0,1)之间的小数,所以需 要加工以后,才能获得算法所需要的整数
将rnd()乘以10的倍数、再用floor()或ceiling()来 获取相应范围内的随机整数
需要获取ASCII码表中的数值,可以使用模除运 算,如(rnd()*1000 mod 128)可能得到全部的 标准ASCII码值(0~127)
距离如何计算?
初步的算法设计思想
广场的表达需要支持笛卡尔坐标(可以计 算任意线段的长度);
需要随机数支持(随机漫步,每一步的前 进方向可以任意选择);
如果需要实时展示漫步结果,则需要图形 系统的支持;
用RAPTOR进行算法的实现步骤
1. 随机漫步的轨迹描述,可以使用RAPTOR的 图形功能
distance子图用于计算漫步结束时,醉汉所 处的位置与出发点(广场中心)之间的距 离。
在坐标系中,两点间的距离是用勾股定理的方 法求得的。设坐标系中的两点A(x0,y0).B(x1, y1),则两点间的距离为:AB= sqrt((x1-x0)^2+(y1y0)^2))
distance子图
随机漫步计算样例