产品狗的技术路day02——算法特性与算法设计要求

写在开头:因为自己不考研也不是技术人员,在学习小甲鱼所讲相关知识点时,只记录下自己认为作为产品狗需要了解的知识点,勿喷。

1、算法的特性

(1) 输入

 算法具有零个或多个输入。

(2) 输出

 算法至少有一个或多个输出

(3) 有穷性

算法在执行有限的步骤之后,自动结束而不会出现无限循坏,并且每一个步骤在可接受的时间内完成。

(4) 确定性

算法的每一个步骤都具有确定的含义,不会出现二义性;

算法在一定条件下,只有一条执行路径,相同的输入只能有唯一的输出结果;

算法的每个步骤都应该被精确定义而无歧义。

(5) 可行性

算法的每一步都必须是可行的,也就是说,每一步都能通过执行有限次数完成。

2、算法设计的要求

(1) 正确性

算法的的正确性是指算法至少应该具有输入、输出和加工处理无歧义性,能正确反映问题的需求,能够得到问题的正确答案。

大体分为四个层次:

算法程序没有语法错误;

算法程序对于合法输入能够产生满足要求的输出;

算法对于非法输入能够产生满足规格的说明;

算法程序对于故意刁难的测试输入都有满足要求的输出结果。

(2)  可读性

算法设计另一目的是为了便于阅读、理解和交流。

(3)  健壮性

当输入数据不合法时,算法也能做出相关处理,而不是产生异常,崩溃或莫名其妙的结果。

(同PS中的第4点)

(4)时间效率高和存储量低(占的内存小)


PS:算法设计要求中正确性的四个层次让我联想到产品设计

(1)算法程序没有语法错误 —— 对于产品设计和需求处理需要满足业界一些约定俗成的规则。例如web端交互点击更多是单击而不是双击,我就因为不太了解这些基本规则在讲解需求时闹了笑话。

(2)算法程序对于合法输入能够产生满足要求的输出——对于用户正常的业务操作,需要输出满足用户期望值的业务处理结果。

(3)算法对于非法输入能够产生满足规格的说明——系统设计需要考虑到当用户进行不正常或不寻常的业务操作时,系统做出的反应:功能上规范用户操作行为或交互上的提醒。例如对于有效时间的设置,当用户设置的开始时间晚于结束时间(开始时间3月13日16:00,结束时间3月13日8:00)时,要么在有效时间控件上做控制(当开始时间选择3月13日16:00,结束时间只可以选择晚于3月13日16:00的时间)要么当用户操作后进行提醒:开始时间应当早于结束时间(当然第一种方式用户体验优于第二种)。

(4)算法程序对于故意刁难的测试输入都有满足要求的输出结果——产品在设计的时候需要考虑到一些边缘极端情况(测试人员也会测试边缘极端用例)。例如当对输入框不做字数控制时,或者是当字数控制在1000字以内,产品需要考虑到当输入1000字时相关展示问题,测试也需要测试输入框是否可以真正输入1000字,且输入1000字是否可以正常输出展示。

你可能感兴趣的:(产品狗的技术路day02——算法特性与算法设计要求)