有三个视频,分别为:5分钟、10分钟、15分钟,我们现在要将他们合并成一段视频,每次只能合并两个,哪种方法最快?
方法一:5和10合并占时15分钟,得出的15和15合并占时30分钟,总共占时为:15+30=45。
方法二:5和15合并占时20分钟,得出的20和10合并占时30分钟,总共占时为:20+30=50。
用图表示如下:
方法一(共用时15+30=45)
方法二:(共用时20+30=50)
其实即使视频的数目再多,其算法也可以循此原理,即:每次合并最短的视频数,得到的一定是用时最短的解决方案。
这种算法,在数学中被称为“贪心算法”。
贪心算法的应用是广泛的,其涉及最优字典序编码问题、动态规划问题、图像压缩等,1952年德国科学家huffman(哈夫曼)将其发表,因而被称为Huffman算法,而由于这类算法分析中,需要有层叠复杂的树状,故被称为哈夫曼树或多叉哈夫曼树。Huffman算法被业界广泛称为效率最高的算法.
当然,本文不重点讨论算法,而是讨论程序员的开发思想。
一个网站开发,往往需要涉及的工作很多,其中包括:
栏目设计
LOGO设计
界面设计
CSS与HTML设计
程序编码
内容添加
推广
而现实中,往往会有这样的情况:
某客户言论:我只要能推广好,网站一年做一个都可以,因为做网站太容易了,百度推广代理商说送我免费网站的。
某程序员思想:我是做程序的,网站内容添加这种简单的事不需要我做,普通员工添加就可以了,网站程序好就是一切。
换另一个领域,在CMS编程开发中(当前所有的网站都会基于CMS系统来进行开发,就如同开源硬件、OS系统开发,都拥有一个基础的开发底层),往往也涉及到:
栏目设计
风格设计
前台表单设计
广告位置规划与代码设计
频道区隔设计
图象优化设计
数据库优化
SEO关键字优化
栏目URL路径优化
社会化按钮优化
往往开发者设计一个网站的时候,只关注到模板界面,而忽略了栏目架构以及数据库优化,这就涉及到Zoomla!逐浪CMS首席架构师汪照发先生的一个观点,即到底是要建钢构还是只画石灰线。
“如同盖房子,往往先打基础。打基础前,大师傅会用右灰画一个基础线,画好了线,工人就好顺着线的痕迹开挖,由此开启万丈高楼平地起。然而现代化的工艺不再采用传统的开挖,直接钢构与预筑板建设。……而如同Zoomla!逐浪CMS的dotNET产品定位,是做网站的钢构框架和技术之核,用户不需要去捉摸纯底层知识,却又能依托庞大的架构和其后台的云技术管道,不断的接入新的服务、开发新的用户功能、进行深层的数据挖掘,显然拥有更加优秀的扩展性。”(原文http://www.admin5.com/article/20131107/529441.shtml)
因而在华夏互联的网站开如,我们有一系列的规范来要求同事做出的作品具备一定的含金量,比如:
1、 所有网站必须从第一行代码写起,哪怕两个项目的重合度是80%或更高,因为不同的写法或重复的写作会提高质量并优化代码。
2、 如果你是一个优秀的网站设计师,那么一定必须是一个优秀的网站编辑,否则根本不称为网站设计师。
3、 思想—没有思想的设计是毫无价值的,如果你没读懂客户的项目思想和运营思路,你一定做不好这个项目。
4、 建模到位—每一个栏目,不仅是设计好,同时要添加好相应的内容进行完整的模拟测试,从而保证不会有问题。
5、 ……
因为我们深知自己的目标是要做中国互联网最优秀的建筑师。
结束语:网站开发是一门“显学”,但“显学”的背后是博学与好学,而不是以“擅长百度竞价”作为SEO技术、也不是连一点审美观都不掌握就学会技术、更是需要良好的项目管理思想、工作方法、数学算法以及扎实的基础工作。
*注:本文部分理论源自数学爱好者顾森先生分享