从产品角度出发,如何设计算法?_算法与设计模式有什么关系吗?


- #问答
  • 1、 从产品角度出发,如何设计算法?

    这是个很有水准的问题

    很多算法工程师都是陶醉在算法的世界里不能自拔却很少关注算法能解决什么问题为产品为客户带来什么价值

    做产品需要的是深入到用户端分析用户的需求使用的体验然后从客户的角度回溯到产品去定义功能而这些功能在实现上如何能保证公司的技术能达到客户的体验能最好根据这些标准来设计合适的算法

    举个例子用户在查询餐馆那如何能保证用户在最短的时间内能找到他最想查询到的结果就是设计这个算法的终极目标一切的设计都是围绕这个目标进行然后把问题拆分成几个子问题:用户所在的场景,用户的搜索历史,可忍受的最大延时等等然后一一建模

  • 2、 算法与设计模式有什么关系吗?

    这个问题很容易区别,我尽量讲得简单通俗。算法是具体问题的实现方法,比如你要计算员工工资的公式。设计模式是代码层面的设计方法,目的是提高代码的重用率,灵活性。比如设计模式中的策略模式,假设你有一个电商平台,因为促销的需要,不同时期有不同的优惠活动,你不可能每次都去修改底层代码来使用具体的算法,这时策略模式就派上用场了,你只需将不同的算法进行包装,然后通过策略模式进行选择就可了,关于更多的设计模式可以看《大话设计模式》一书,通俗易懂。

  • 3、 算法的基本设计要求?

    算法的基本设计要求包括:

    1、数据对象的操作和操作:计算机可以执行的基本操作以指令的形式描述。

    2、算法的控制结构:算法的功能结构不仅取决于所选的操作,还取决于操作之间的执行顺序。

    算法的特征如下:

    1、有穷性:算法的有穷性意味着算法在执行有限的步骤之后必须能够终止。

    2、确切性:算法的每一步都必须确切定义。

    3、输入项:一个算法有0个或多个输入来描述操作对象的初始条件。所谓的零输入是指由算法本身决定的初始条件。

    4、输出项:一个算法有一个或多个输出来反映处理输入数据的结果。没有输出的算法毫无意义。

    5、可行性:算法中执行的任何计算步骤都可以分解为基本的可执行操作步骤,即每个计算步骤都可以在有限的时间内完成。

Related Content: