配色: 字号:
漫话算法及其应用(4)
2024-05-01 | 阅:  转:  |  分享 
  
漫话算法及其应用(4)

胡经国



(续前)

3、N-S结构化流程图

⑴、一种新的流程图形式

1973年,美国学者提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线,全部算法写在一个矩形框内;在该框内还可以包含其它的从属于它的框,即可由一些基本的框组成一个大的框。这种适于“结构化程序设计”的流程图,称为N-S结构化流程图,简称结构流程图。

⑵、3种基本结构

结构化流程图有以下3种基本结构(基本框):

①、顺序结构

A和B两个框组成一个顺序结构。

②、选择结构

当p条件成立时执行A操作,而当p条件不成立时则执行B操作的选择结构。

③、循环结构

在“当型”循环结构下,图符表示先判断后执行;当p条件成立时反复执行A操作,“直到”p条件不成立为止。

用以上3种结构化流程图中的基本结构,可以组成复杂的结构化流程图,用以表示算法。

⑶、举例

例如:将“判别素数的算法”用结构化流程图表示。为此,需要进行非结构化流程图的变换。

上述非结构化流程图不是由以上3种基本结构组成的,图中间的循环部分有两个出口,不符合基本结构的特点。由于不能直接分解为3种基本结构,因而应当先作必要的变换,再用结构化流程图的3种基本结构的符号来表示。即将第一个菱形框的两个出口汇合在一点。其方法是:设一个标志值K,它的初始状态为0(表示N为素数),当K≠0时N为非素数。注意:“当型”和“直到型”的判断条件。

⑷、优点

用结构化流程图表示算法的优点是:比传统流程图紧凑易画;尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,其上下顺序就是执行时的顺序。写算法和看算法只需从上到下进行就可以了,十分方便。

⑸、结构化算法的特征

归纳起来,一个“结构化算法”是由一些基本结构顺序组成的;在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构范围之内(如循环中流程的跳转)。一个“非结构化算法”可以用一个等价的结构化算法代替,其功能不变。如果一个算法不能分解为若干个基本结构,那么它必然不是一个结构化算法。

4、从流程图到类C语言的实时转换过程

⑴、转换过程

从流程图到类C语言的实时转换过程如下:

流程图结构由封装为Icon(图标)形式的“功能模块”和表示不同分支属性的“连线”组成;每个“功能模块”表示一条语句;而“直线和折线”则表示逻辑关系。不同的语句用“功能模块名称”加以区别;而连线则用“颜色和方向”加以区别。

定义“主逻辑”采用垂直方向的连线表示;而“分支逻辑”(循环、条件判断等)则采用水平方向的连线表示。通过这种表示,流程图按垂直和水平方向展开成“树型结构”:功能模块是“树的节点”,逻辑关系是这一“树型结构的连线”。

对不同“执行模块”的函数封装,定义一套库函数;对不同“流程控制模块”封装类C语言代码。这些语句可以控制各个“执行模块”的执行流程。“执行模块”参照封装的库函数;而“流程控制模块”则参照封装的语句翻译为不同的类C语言代码。

⑵、转换方法

具体的转换方法如下:

在功能模块中,定义模块的类别、属性参数等。

由某个模块或多个模块组成的“流程图程序”是存储在一个“模块集合”或称为一个“模块树”中的。当用户添加、删除、移动或修改功能模块时,会实时根据各个模块之间的“父子关系”遍历“模块树”;并且参照功能模块封装的库函数或语句,转换为对应的类C语言代码,体现转换的实时性。生成的类C语言代码自动添加注释,从而方便用户对类C语言代码的理解。

5、流程图软件实例

资料显示,比较好用的流程图软件有:

①、亿图图示

亿图图示是一款专业流程图工具。全拖曳式操作,丰富的符号库和实例,附带丰富的流程图实例和模板库,使用起来无需教程直接上手。

据介绍,该软件为一款操作简单、功能强大的流程图软件,可零基础快速绘制流程图、思维导图、网络图、工业设计、图文混排,“一软搞定”。该软件为万兴科技旗下公司产品。

②、Visual Graph专业图形(可视化图形)系统

该系统为图形控件,在.NET开发平台下可以灵活应用,在Delphi中也可以使用。该系统简单易用,业内应用比较广泛。

据介绍,Delphi是Borland(目前已和Inprise合并)公司开发的可视化软件开发工具。“真正的程序员用C,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有容易、高效、功能强大的特点。与VC相比,Delphi更容易、更易于掌握,而在功能上却毫不逊色;而与VB相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB容易易学的特点。它一直是程序员至爱的编程工具。

VC (Visual C++)是Visual系列里面的一款编程语言。一般提到VC,首先就想到的就是编程语言。

VB(Visual Basic)是一种由微软公司开发的事件驱动编程语言。它于1991年发布,主要用于Windows应用程序开发。

③、Visio

Visio可广泛应用于电子、机械、通信、建筑、软件设计和企业管理等众多领域。

据介绍,Microsoft Visio是Windows操作系统下运行的流程图软件,它现在是Microsoft Office软件的一个组成部分。

Visio可以制作的图表范围十分广泛。有些人利用Visio的强大绘图功能绘制地图、企业标志等;同时Visio支持将文件保存为svg、dwg等矢量图形通用格式,因此受到广泛欢迎。它的最新版本为2019。

Visio是微软公司推出的非常传统的流程图软件,应用范围广泛。采用“泳道图”的方式能够把流程和流程的部门以及岗位关联起来,实现流程和所有者的对应。随着企业对流程管理应用需求的提升,片段、静态的方式逐渐很难适应企业实际流程管理的需要。

④、Power Designer

Power Designer是一款比较不错的画制流程图软件。

据介绍,Power Designer系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员(DataBase Administrator,DBA)和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。

⑤、SAM业务流程梳理工具软件

SAM业务流程梳理工具软件,为流程从业者梳理流程业务提供便捷、标准化的建模工具,为开展流程梳理、固化、发布工作提供工具支持。

据介绍,SAM是一款小巧、专业的业务流程梳理工具软件。它是由“炎黄盈动”公司及咨询伙伴共同规划,由“炎黄盈动”公司自主研发的一款可独立使用的工具软件。SAM为流程从业者梳理流程业务提供了便捷、标准化的建模工具,不再为因Visio复杂多变的符号模式造成沟通障碍,为开展流程梳理、固化、发布工作提供较佳工具支持。SAM作为一款绿色自由软件自2007年发布社区版以来,在中国已有10000+个安装下载。该工具社区版许可您(或组织)长久免费使用,当前较新的SAM版本号为v5.1。



链接:SAM

缩写词SAM意思还有:

Security Account Manager(安全账户管理器),是Windows系统中的服务之一,用于管理用户账户和密码。

Software Asset Management(软件资产管理),是一种在企业或组织中管理软件使用和许可证的方法。

Samsung Account Manager(三星账户管理器),是三星手机中服务之一,用于管理用户的三星账户。

Smart Access Memory(智能访问内存),是美国AMD(Advanced Micro Devices,先进微器件)公司推出的一项技术,可以提升显卡性能。



⑥、Control

Control是英国Nimbus公司的流程软件。它采用全息的方式能够展示流程的基本要素,包括活动、输入输出、角色以及相关的文档等各种信息;具有简洁易用的特点,不支持多维度扩展应用。

⑦、Aris

Aris是IDS公司的流程软件。它具有IDS特有的多维建模和房式结构,集成了流程管理平台,可以通过流程平台进行流程分析和流程管理。

⑧、Provision

Provision是Metastorm公司的流程软件。它以多维度系统建模见长,能够集成企业的多种管理功能,是流程管理专家级客户应用的工具。

⑨、框图宝

框图宝(My Flow Chart,我的流程图)是Youfabao的在线流程图软件。它可以在线绘制流程图,简单易用,基于云计算。

⑩、Process On

Process On是一个面向商业流程用户的专业社交网络。它成立于2011年6月,并且于2012年启动。Process On将专家顾问、咨询机构、BPM(Business Process Management,业务流程管理)厂商、IT解决方案厂商和广泛的企业用户连接在一起,提供基于云服务的流程梳理、创作协作工具,与同事和客户协同设计,实时创建和编辑流程,改善人们对流程图的创作过程。

十一、算法工程师简介

1、职位

算法(Algorithm)是一系列解决问题的清晰指令;也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师(Algorithm Engineer)就是利用算法处理事物的人。

2、职位要求

算法工程师是一个比较高端的职位。该职位专业要求是:计算机、电子、通信、数学等相关专业;学历要求是:本科及其以上的学历,大多数是硕士及其以上学历。

3、研究方向

音频算法工程师、通信基带算法工程师、信号算法工程师等。

4、研究领域

算法工程师根据研究领域来分主要有:音频/视频算法处理;图像技术方面的二维信息算法处理;通信物理层、雷达信号处理;生物医学信号处理等领域的一维信息算法处理。

在计算机音频/视频和图形图像技术等二维信息算法处理方面,目前比较先进的视频处理算法有:机器视觉成为此类算法研究的核心;另外还有:2D转3D算法,去隔行算法,运动估计运动补偿算法,去噪算法,缩放算法,锐化处理算法,超分辨率算法,手势识别,人脸识别。

5、需要学什么?

算法工程师需要学什么?

算法工程师要求具有很高的数学水平和逻辑思维能力。需要学习高数,线性代数,离散数学,数据结构和计算机等课程。必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。

MATLAB是美国Math Works(数学作品)公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。





































































(未完待续)







6







献花(0)
+1
(本文系现代科普图...原创)