美文网首页
用算法时间复杂度方法决策产品设计

用算法时间复杂度方法决策产品设计

作者: Glenji | 来源:发表于2016-11-30 20:40 被阅读66次

最近不断看一些竞品,发现有非常多种产品的界面布局方式,很难去评估产品设计的优劣。今天突然发现可以用大学学过的数据结构与算法中的时间复杂度去评价一个界面设计的效率。

时间复杂度

那些年边骂学了没用,边努力学习的东西,现在一件一件的给了我回报。

1. 什么是时间复杂度?

时间复杂度是指程序运行从开始到结束所需要的时间。为了便于比较同一个问题的不同算法,通常做法是,从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数做为算法的时间量度。基本操作应是其重复执行次数和算法时间成正比的原操作,多数情况下它是最深层循环内的语句中的操作。

在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。时间复杂度一般记作:T(n)= O(f(n))。

2. 时间复杂度计算方法

时间复杂的推导方法一般如下:

第一步:用常数1取代运行时间中的所有加法常数。

第二步:在修改后的运行次数函数中,只保留最高阶项。

第三步:如果最高阶项存在且不是 1,则去除与这个项相乘的常数。

常用的时间复杂度所耗费的时间从小到大依次是:O(1) < O(logn) < (n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

3. 产品设计的抽象化

产品可能有的功能多种多样,可能的布局千差万别,可能的交互方式更是多如牛毛。如何找到个好的方法把产品功能在一个界面良好的组织起来,是一件困难的事情。

我们需要首先把产品抽象成几个维度:

所有的产品都可以抽象为用户维度+内容维度+状态维度。三个维度互相穿插影响时,会产生不同的复杂度。这时,可以用时间复杂度的方式来评判产品设计的合理性。

4. 实例分析:对比手Q和微信消息界面

大家可以对比查看手Q和微信的消息界面。用户的维度,微信只有一种,而手Q有普通用户、会员用户、超级会员用户、体验会员用户等。内容维度,微信有用户消息、群聊消息、公众号消息,而手Q有用户消息、群聊消息、服务号、系统消息、新闻消息等,甚至还加入了QQ电话(这个让复杂度大大提高了)。状态维度,微信由正常态、未点击态、红点态,手Q还多了群消息的几种状态(这里微信做得很特别,把单聊和群聊做成了一致)。

这样子,微信用户去遍历内容时的复杂度是O(n),因为用户维度已经最简化;而手Q用户去遍历内容时的时间复杂度至少是O(n^2),甚至是O(n^3)。这时,你可能会深刻体会到微信为什么不做会员体系,为什么群组设计跟单聊模式基本一致。

用时间复杂度去评判手Q和微信时,我都会感慨,这两个产品做的都太牛叉了。微信承担如此强大的功能属性,却能将整个产品设计得时间复杂度最低,基本都是线性的。手Q则是添加了如此多的功能的前提下,也能采取一个良好的布局将功能摆放尽量合理。

大家可以再去对比看看微信、手Q的更多细节,比如通讯录、发现、空间等。你能发现微信真的很可怕,几乎把各个地方的时间复杂度都控制在线性阶;手Q也很可怕,功能做得比微信多三倍,但也基本能找到合适的布局。相比来说我更喜欢基本将时间复杂度优化到极致的微信,甚至能够在某些非常复杂的跳转逻辑中做好优化将时间复杂度降低,膜拜之。

相关文章

  • 用算法时间复杂度方法决策产品设计

    最近不断看一些竞品,发现有非常多种产品的界面布局方式,很难去评估产品设计的优劣。今天突然发现可以用大学学过的数据结...

  • day09-冒泡排序+优化

    排序算法(SortAlgorithm) 算法时间复杂度总结: 排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂...

  • sort

    sort()内部使用了什么算法?时间复杂度是多少? indexOf()时间复杂度是多少? sort()方法用原地算...

  • 排序算法汇总

    简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间 时间复杂度计算时间复杂度的方法: 用常...

  • 笔记之算法

    本章内容:算法的定义,特性,算法设计的要求,算法效率的度量方法,算法时间复杂度,算法空间复杂度 一.算法基础 1....

  • Python-100天(二)-Python语言进阶

    数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O...

  • 复杂度分析

    什么是复杂度? 算法的复杂度是粗略衡量一个算法执行效率的方法,分为时间复杂度和空间复杂度。 时间复杂度:估算程序指...

  • 简单的时间复杂度计算法则

    简单算法时间复杂度计算 大O表示法 像前面用O( )来体现算法时间复杂度的记法,我们称之为大O表示法。 算法复杂度...

  • 算法复杂度

    算法复杂度 = 时间复杂度 + 空间复杂度 时间复杂度计算方法 1.一般情况下,算法中基本操作重复执行的次数是问题...

  • 算法(一)

    算法的时间复杂度 算法时间复杂度用来度量算法执行时间的多少,用T(n)=O(f(n)),其中n为问题规模,也就是问...

网友评论

      本文标题:用算法时间复杂度方法决策产品设计

      本文链接:https://www.haomeiwen.com/subject/dtwtmttx.html