算法设计

2023-05-26 0 988

Q1甚么是演算法结构设计?

A:

1、演算法结构设计( Algorithm design ),是计算机系统学基本概念,简而言之,指的是:

结构设计能补救的尽量优演算法。

比如,后置思索中提及,中考高职投档计划预设富于考验,演算法设计是着力点,“相连接高职”演算法强于过去“次序高职”演算法。

2、一生需要结构设计。

人类文明作为贝阿尔恩县,区别于一般鸟类一个重要

特点是,能利用结构设计观念,促进表达方式向平庸状况进化。

以幼儿园投档为例,后置思索中提及,现代“次序高职”投档演算法,幼儿园按小学生高职次序决定是投档、婉拒还是已确定,如果小学生都没有被投档,最后就会被再次分配到招反感人幼儿园里。

“次序高职”投档演算法不如强化,存在非常多难题。比如,每月旧金山会有3亿个小学生进不讨厌幼儿园。

再次进行演算法结构设计,2003年美国许多公立幼儿园开始选用延后拒绝接受演算法来投档,效用较好。数据显示,没进入自己高职成员名单小学生数目上升

90%。

在许多关键性结点,比如中考等,与否利用结构设计观念,演算法结构设计与否优良,差别明显,甚至会影响整座一生。

后置思中提及,我省现代中考选用“次序高职”演算法,可能让部分平均分高的人掉到相较差幼儿园,在更进一步上发生改变那些人的一生抛物线。

修正成“相连接高职”演算法后,那些一生惋惜会增加,不仅对子代有益于,也对社会有益于。

那时的字典, 概要演算法结构设计,供书友会们参照,进一步增强结构设计观念,提高结构设计潜能。

Q2:什么样认知演算法结构设计?

A :

1、区分难题。

演算法结构设计是计算机系统学两门课程,内容多样。那时的字典, 概要算法结构设计流程,希望书友会们有概貌式了解。

和任何领域结构设计解决计划一样,演算法结构设计第一步也是区分难题。

演算法结构设计优劣,最根本判断准则是,与否高质高效补救。如果没有准确区分难题,也就无从评判演算法结构设计好坏。

更重要的是,难题区分有多种可能性。区分难题不同,合适演算法也就不同,甚至大相径庭。

在区分难题中, 提及,从层次来看,不同主体有不同难题观,至少可以分为以下6个层次:

①自身(自己开展业务的范围)

②自己所属部门

自己从事的事领域自己所属企业或者组织

5与本公司或者组织相关客户

与本公司或者组织相关行业、国家和地区

不同层次的不同主体看同一个难题,会有不同看法。你觉得有难题,他觉得没难题;你觉得是这个难题,他觉得是那个难题;你觉得很严重,他却觉得还好。

举一个例子。有一个卡车轮胎内胎加工厂,需要给内胎气管拧上气嘴盖。由于每天生产几千个内胎,作业者要手工拧上几千个气嘴盖,容易导致手指疼痛,作业者都不太愿意做。

对该工位主管而言,这可能是一个操作程序改善难题,看看怎么拧,手指不容易疼痛。

对生产部主管而言,这可能是一个气嘴盖自动拧紧装置的采购难题,看能否争取到预算。

对工会和人力资源部而言,这可能是一个职工福利和健康难题,看能否有些缓解计划。

对厂长而言,这可能是一个外部协作难题。厂

长可能发现,内胎是以箱装形式转到轮胎店销售。因为轮胎店员工要取下气嘴盖,充气后再装上,那么,工厂就可以不用拧气嘴盖,出货时将气嘴盖用塑料小袋封装好,和内胎一起,提供给轮胎店即好。

不同主体,不同层次,有不同信息源、思索重点和立场,因此,看难题也会有不同层次和角度。因此,在工位主管、生产部主管等的难题,在厂长眼里就不存在,变成另外一个问

题。

也就不难认知,演算法结构设计第一步就是准确区分难题,让利益相关者形成共识。

接下来,我们来考察一个演算法结构设计情境。假设你是网约车行业一名产品经理,你会如何区分难题?

如果你的描述是“结构设计一套演算法,可以匹配乘客和车辆”,很显然,这只是一个开发方向,不如具体明确。

如果你量化思索,加上一个要求“乘客等待时间最好3分钟以下”,虽然具体明确,但只考虑到降低乘客等待时间,并不是难题全部。

如果考虑到司机,希望激励司机多接单,以提高网约车收入,可能又会增加一个要求“在早晚高峰等特殊时刻动态修正价格,提高司机接单吸引カ”。

如果考虑到竞争对手等其它相关角色,可能就会区分出更多难题。

一般来说,演算法结构设计在做难题区分时,为明确难题,至少要考虑3要素:演算法目的、限制条件和评价标准。

比如,演算法目的可能是“增加乘客等待时间”,限制条件可能是“每个乘客等待时间不超过3分钟”,评价标准可能是“乘客等待时间分布、样本均值和标准差在可拒绝接受量化范围”。

如果有多个演算法目的,还需要考虑每个演算法目的优先级和权重,以便能够将所有演算法目的统筹在一起来比较和评判。

2、建立模型。

区分好难题后,还不能直接到演算法选择环节。原因在于,各种演算法策略,比如贪心演算法、回溯演算法、最适交易循环演算法等,都是针对数学难题,而不是现实难题。

也就是说,在现实难题和演算法策略之间,还需要一个桥梁,也就是数学模型,将现实难题翻译成为可以利用演算法策略的数学难题。因此,演算法结构设计第二步是,建立模型。

接下来考察演算法科学家吴晶辰举的一个难题情境。在 NBA 篮球比赛中,一方面进攻速度快,投篮次数多,得分概率大,赢面也就大;但另一方面,投篮多,对方篮板机会增加,也会增加对手投篮机会,如果对方投篮命中率高,快速进攻也可能输掉比赛。

也就是说,进攻速度快,利弊兼具。那么,难题来了,什么样修正进攻速度,更有利于在篮球比赛中获胜?

这是一个现实难题,吴晶辰会考虑利用“随机游走”数学模型,来描述篮球比赛。

随机游走是描述表达方式随机性变动的一种模型,比如觅食鸟类走来走去路径,股票价格上下波动,分子在气体中移动抛物线等,都可以用随机游走模型来描述。

类似的,如果用随机游走模型来描述篮球比分,可能是选用以下思路:假设每次进球得分都简化成2分,两个球队比分之差,就是一个不断变化的随机数×。如果 A 队得分,随机数就加

2分,如果 B 队得分,随机数就减2分。

如此一来,只要知道两个球队每次进攻进球概率,就可以计算出 N 个回合之后,随机数×是甚么,也就是两个球队分差概率分布。

求得概率分布,就容易确定战术。比如,进球率低于对方时,节奏越快,比赛回合数 N 越大,比分落后可能性也就越大。相反,如果进球率高于对方,节奏越快,赢的机会越大。

抛开上述模型细节,不难发现,这个模型是对现实简化,不可避免会丢失信息;也可能不如准确,因为现实比分未必就是随机游走,存在偏差;模型求解难度也可能较大。

但如果实际利用检验后发现,丟失和偏差可以拒绝接受,求解难度不大,有助于提高比赛胜率,就可以建立利用随机游走模型,直到发现有更合适数学模型。

一般来说,提出一个难题,直接结构设计演算法、编写程序需要大量成本,如果没有数学模型,对结果没有办法进行预估,有了数学模型,才能实现推理、预估或者预测。

因此,演算法结构设计在区分难题后,先要建立模型,再选择合适演算法。

3、选择演算法。

建立数学模型后,演算法结构设计就进入第三步“演算法选择”。同一个数学模型,可能有多个可选演算法,需要综合各种因素而定。

比如,同样是排序模型,演算法选项就有很多,包括:冒泡排序、插入排序、选择排、堆排序、归并排序、快速排席等。

在演算法选择中, 提及,演算法选择时要注意评估质量、比较效率和综合权衡。

所谓质量指的是,演算法补救有效性;效率指的是演算法效率,用演算法复杂度来衡量,包括时间复杂度和空间复杂度。

综合权衡是指,在质量和效率外,还要考虑演算法数据需求量、演算法稳定性、演算法限定条件等其它现实问题所需要考量因素。书友会们如果印象不深,可以重温

经过区分难题、建立模型和选择演算法3个步骤,演算法就完成结构设计阶段工作,接下来就要在现实中检验,评估演算法优劣,再持续改良。

以后置思索中的幼儿园投档为例,各国长期都选用相似的“次序高职”演算法。解决计划出台过程,也就是演算法结构设计过程。

遵循成果导向,基于量化反馈观念,统计“次序高职”解决计划所产生难题,发现相当比例小学生被调剂到自己不讨厌或者未在自己高职清单中的幼儿园或者专业。比如,旧金山曾经每月有3亿个小学生进不讨厌幼儿园。

这就是难题,需要开启一轮新的演算法结构设计过程。在数学家、教育学家、计算机系统学家等专业人士协作下,“相连接高职”等不同版本延后拒绝接受演算法开始实施,难题明显缓解。

比如,2003年美国许多公立幼儿园开始选用延后拒绝接受演算法来投档,效用较好。数据显示,没进入自己高职成员名单小学生数目上升90%。

这是一个 PDCA 循环持续迭代过程,随着时间推移,可能还会出现许多新难题现象和新演算法策略,又需要开启一轮新演算法结构设计。

在字典的最后, 要提醒的是,注重利用结构设计观念。

人有主观能动性,不但表现在能选择、有所取舍上,更鲜明地体现在主动结构设计、量化反馈

上。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务