看算法导论有感(1)——谈谈算法的五性对用户体验的影响

做程序的人,都知道了算法的5性——可行性,健壮性,有穷性,高效性,可读性。

这15个字谁都会说了,但是,你是否真正的思考过这个对当今程序界最最重要的用户体验的思考。

过去,我也没多做思考,但是,看了mit的算法导论公开课,我却是觉得一个好的算法, 确实严格遵从算法算法五性。

①可行性——算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。算法肯定要可行的,不可行的话,是一坨shit,一般可行性是与硬件息息相关。比如,10年前,你要先像现在的搜索引擎一样能够做视搜索,做各种各样的算法搜索。那时候,不是算法可行的,而是硬件而达不到要求。再比如所说,我们经常写出许多算法都是就会出现这个问题——数据溢出的问题。这也是一般硬件的问题,如果计算机是位数足够的大,程序一般不会出现这样的问题。 那你写一个连可行性都不可行的算法的话,那这样就无用户体验而言了。

②健壮性——就是算法要有足够健壮的,这个性质与一个安全性息息相关了。一个好的程序的好的健壮性,就是你的程序怎么搞就搞不死了。这难道不是与程序的安全的骨肉相随吗?尤其,到了21世纪以后,一个个程序安全尤其重要了。我们看以下案例。(1)2011年,花旗银行披露其北美地区银行网站在5月初受到黑客恶意攻击,21万北美地区银行卡用户的姓名、账户、电子邮箱等信息可能被泄露。(2)2003年的冲击波病毒,2005年的qq尾巴病毒,2007年的熊猫烧香病毒。近这些年,病毒的肆掠。 (3)在公司中,上班打卡一般难不倒我们这些程序员们,主要,我们可以进数据库中篡改我们的上班时间。这些活生生血粼粼的例子,就是因为算法的健壮性做的很不好了。如果,你的健壮性足够强,那真的不会出现这样的事情了。 至于碰到健壮性不够的程序的话,你会不会敢用一个连安全性都不能保证的,你敢使用吗?一个全部使电脑病毒的操作系统,你愿意使用吗?这样也能够看到健壮性与用户体验息息相关。

③有穷性——有穷性(有限性)。任何一种提出的解题方法都是在有限的操作步骤内可以完成的,“哪怕是失败的解题方法。”我们这些初学者写算法与有穷性最背道而驰——就是死循环。死循环存在的意义就是让程序永不停息的计算,然而有得不到我们最终所要的结果。这真是“瞎子点灯白费蜡”。如果一个程序是无穷的,用户只有没办法的白等,最终也只有干瞪眼。这样就会把用户逼疯,这样的程序绝对没有回头客。

④高效性——就是程序运算足够的快了,这与硬件,软件都有蛮密切的关系。与硬件的关系,我们就没有必要再说了,但是,与算法的关系。有必要说一说,同样问题,不同的算法当然实现的效率大相径庭了。比如说,我当年做实习生的时候,完成一个几千万人都是登录的问题时候,效率极其地下了。但是我们的老大(技术总监)——使用了一种常用数据结构链表,将其连起来,比较其中的位数大小的方法,这样,程序就如飞一般的感觉,非常的稳定。即使一个简单的排序,有的人可以做出时间的复杂度是O(n㏒n),有的只人能做出时间复杂度是O(n2),小数据没有多少差别,但是面对海量数据的时候,却又天壤之别。一个高效程序与一个低效程序,用户体验不用自明吧。

⑤可读性——就是源代码可读,意思明了,朗朗上口。这主要是针对于我们这些苦逼的开发人员而言了。做了软件的人都应该明白软件开发的人员都应该明白软件的主旋律就是——变。客户需求,就如小孩子脸说变就变。而软件的升级不断进行,这一定要在原先的源代码上的基础上不断的进行了。但是,你要知道,一个好的算法,必要有一个好的可读性,这样才能不断而且快速满足客户的需求,不断而快速的升级。可读性对一个好的用户体验也必不可少。否则,算法犹如天书,这样会严重影响开发效率,这样的程序鬼才要。

总之,良好用户体验的算法——必须有一个十足的可行性,足够的健壮性,并且是有穷的,性能其高的,并且对开发人员意思明了。

时间: 2024-11-03 14:20:07

看算法导论有感(1)——谈谈算法的五性对用户体验的影响的相关文章

【算法导论】最大流算法

最大流问题就是在容量容许的条件下,从源点到汇点所能通过的最大流量. 1 流网络        网络流G=(v, E)是一个有向图,其中每条边(u, v)均有一个非负的容量值,记为c(u, v) ≧ 0.如果(u, v) ∉ E则可以规定c(u, v) = 0.网络流中有两个特殊的顶点,即源点s和汇点t.  与网络流相关的一个概念是流.设G是一个流网络,其容量为c.设s为网络的源点,t为汇点,那么G的流是一个函数f:V×V →R,满足一下性质:    容量限制:对所有顶点对u,v∈V,满足f(u,

百度算法再更新 应把精力放在内容和用户体验细节上

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 算法的每一次升级都将"殃及"到一批网站,seo将会越来越苛刻,对于广大站长而已也是一种不小的挑战;在算法风平浪静一段时间后,今天百度再次进行算法调整,这一次直接跟外链有关,百度将惩罚一些利用外链方式带动关键词排名的网站,主要有以下五种形式: 1.购买链接:这是很多网站用到的一种快速提升关键词排名的方法,包括很多大型的商城站

守护谈谈医疗网站虚幻的用户体验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 说起用户体验这个词大家并不陌生,然而什么是用户体验大家却有各自的想法,我们也不能说谁对谁错,毕竟每个人的出发点不同,评判标准不同.医疗网站一直是网站优化人员关注的话题,大多数网站运营都做过医疗网站的优化,业内也说医疗网站的优化是最难的,事实真的如此吗? 为什么大多数医疗网站优化效果并不好,相信每个朋友都能说出一大堆理论,可以把医疗网站优化批评

【算法导论】地图染色算法

        地图染色问题可以根据四色定理来解决.所谓四色定理,就是指可以用不多于四种的颜色对地图着色,使相邻的行政区域不重色,因此我们可以用四色定理的结论,用回溯算法对一幅给定的地图染色.         算法的基本思想是:从第(1)号行政区域开始染色,每个区域逐次用颜色1#.2#.3#.4#进行试探,若当前所取的颜色与周围已染色的行政区域不重色,则用栈记下该区域的颜色序号,否则依次用下一颜色进行试探:若出现用1#到4#颜色均与相邻区域的颜色重色,则需退栈回溯,修改当前栈顶的颜色序号,再进行

谈谈网站广告联盟与用户体验

当我们把所 有的注意力都放在了网站的体验设计,流程设计,交互设计,颜色的交互,语言的交互,等这些针对性比较强和细节性比较突出的网站功能以及网站操作的时候,很 多时候,我们去 忽略了网站最为影响体验的一个部分-网站 整体的广告体验. 在<网站优化–通过提高Web可用性构建用户满意的网站>这本书中,作者详细的列举了yahoo2004年做出的光站广告体验问卷的详细比例, 里面针对用户最讨厌的http://www.aliyun.com/zixun/aggregation/17580.html"

【算法导论】排序 (二):堆排序

四.(1)堆排序 第一次听堆排序是在107lab听忠哥讲的,但是没讲怎么实现.那时刚看了数据结 构的二叉树,还以为要通过指针建立二叉树的方式来实现,觉得挺难的. 其实堆排序实现没有想象中 的那么难. "堆"这个词最初是在堆排序中提出来的,但后来就逐渐指"废料收集储存区",就像程 序设计语言Lisp和Java中所提供的设施那样.我们这里的堆数据结构不是废料收集存储区. 堆排序的 运行时间与归并排序一样为O(n lg n),  但是一种原地(in place)排序. (

【算法导论】排序(一)

虽然久闻大名,但第一次接触算法导论,是看了网易公开课MIT的<算法导论>课,记得 第一集就讲到了 插入排序和归并排序. 几个星期前也买了算法导论这本书,准备慢慢啃~ 这星期主要在看前两 部分,除了对于讲渐进时间.递归式分析这些东西感到云里雾里的,其它的都就 感觉越看越有觉得入 迷,果然不愧是一本经典之作 好吧,开始.本文主要是用C++把书中的算法实现,以及一些笔记. 一.插入排序. 插入算法的设计使用的是增量(incremental)方法:在排好子数组A[1..j- 1]后,将 元素A[ j]

google新算法:注重用户体验

摘要: 大多专注google搜索引擎研究的站长都知道,google最近更新了新算法.至于这个新算法究竟是怎么回事,恐怕没有任何一个站长技术人员能够搞清楚.但是,很多专家通过研究,也了解到 大多专注google搜索引擎研究的站长都知道,google最近更新了新算法.至于这个新算法究竟是怎么回事,恐怕没有任何一个站长技术人员能够搞清楚.但是,很多专家通过研究,也了解到一些关于新算法的新消息.业界关于google新算法的说法是:google非常看重网页被用户的推荐数和相关评价,以此去决定网页关键词在搜

谈谈提升用户体验须做好的四个细节优化

摘要: 外贸网站优化最终的目的就是为了让用户体验更加的良好,使外贸网站的存在更具价值.而这一切都需要通过用户的投票来判断的.况且决定外贸网站前途的是用户,当用户在外贸网站 外贸网站优化最终的目的就是为了让用户体验更加的良好,使外贸网站的存在更具价值.而这一切都需要通过用户的投票来判断的.况且决定外贸网站前途的是用户,当用户在外贸网站中得到理想的体验访问度时,自然就对外贸网站产生一种喜欢的心理.而且这也是让用户进行再次回访的有力保障.所以说,外贸网站SEO优化其实就是为了用户体验而活的,那么对于外