这样的话还是不行. 访问压力依然存在. 这时我们可以把数据按照省市进行分区.处理. 用户输入数据后从任意的A点到任意的B点首先确认 是否A点到B点是否在同一个区 如果同一个区 直接在数据库中这个区域内调取数据进行计算. 至于距离最近路线算法中图论中有很好解释 .
这时问题又来: 西北和沿海地区发展速度不一. 道路信息数据沿海城市偏大 用户量偏多 出行需求量高. 西北地区道路偏少 人口稀缺 远距离出行量少等特点 再次优化算法。
对核心沿海需求量居多城市和省份 区域数据再次进行分区处理. 最顶层的是省份 下级市区 再到县级.
方便用户点对点精确搜索和距离计算. 如果底层访问量较小 类似树形结构 向上可以延展放大搜索范围.
上面大概满足基本需求. 如果用户提出不同交通方式 乘车/飞行/水路 而且道路也分为高速 国道 省道. 航线非为国际和区域航线. 这样的话我们计算距离的算法就需要更加细化了. 从上面实例可以看到用户需求总是不断变化的. 一个好的算法是解决复杂问题核心关键. 可见算法在将来解决数据处理依然是不可替代的.
有人又会问.为什么我日常工作中很少用到算法?
<3>算法适用范围?
很多人疑惑我的日常编程中很少用到算法. 我个人认为,好的算法是每个程序都应该尽力去实现的, 也许一个程序百分之90以上被项目UI和实现业务逻辑给占据了. 但是总是有那么一部分决定你的产品核心竞争力.
为什么你没有用到算法?
人们之所以说算法很重要,是因为任何的程序,任何的软件,都是由很多的算法和数据结构组成的。从这点上说算法确实很重要,但是这不意味着算法对于每个软件设计人员的实际工作都是很重要的。其实,软件行业是可以分为算法密集型,典型的比如一个搜索引擎 Cache底层,/三维场景中实时渲染算法.例如Google。每天Google的网站要处理十亿个以上的搜索,GMail要储存几千万用户的2G邮箱, Google Earth要让数十万用户同时在整个地球上遨游,并将合适的图片经过互联网提交给每个用户。如果没有好的算法,这些应用都无法成为现实
业务逻辑密集型,典型的比如一个CRM/ERP业务系统 项目中我们把更多的时间放到业务逻辑的实现和UI层数据呈现上 至于算法使用只有在性能受到限制或是出现性能访问瓶颈时加以算法优化。 这通常的情况,而对于基于运用实际问题 往往面临问题较多 使用算法地方也就相对偏多.
使用体验密集型,典型的比如娱乐行业Silverlight站点 注重的使用用户体验上快捷。所以并不是每个软件开发者都要求有很好的算法功底。关键是看遇到问题解决问题的能力,算法在一定程度积累思维模式上经验.。这也是很多程序员说自己到了 30岁 在技术上创新陷入瓶颈.
每个项目特点和需求特殊也导致算法运用场景上不同. 有人说过算法重要,但不是最重要 这句话在某些特定运用场合时可以讲得通的 得灵活使用
<4>最后
最后至于这个问题 算法还重要吗?无论IT行业内多么朝夕莫测、新技术 新语言层出不穷,计算机和软件发展背后的根基却岿然屹立、经年不变,算法便是基础之一. 而对于那些已经历经技术变幻开发者而言算法同时也是一种本质的回归.