1.简介
之所以写这边文章是因为开发了一个地铁到站提醒App,其中就需要计算最短地铁换乘路线,这个方案在网上找了很久能找到一点最短路径的思路,但这些思路计算最短路径要花费的时间太久给人体验很不好。我的这个算法思想和人思考找到一条最短换乘线路一样,先找到所要换乘路线,再从路线中找到从那个站换乘(有些路线共同站台可能不止一个),为了更快提供用户查询路线,我还做了一个自动学习记忆的一个算法,该算法很简单就是在用户查询路线的时候先查询一个数据库,这个数据库保存了之前所有用户的查询路线如果本次用户要查询的路线已经有人查过则可以直接返回这样可以更快获取结果,如果没有人搜索过用户要查询的路线,则会通过最短换乘路径推荐算法查询结果并将结果保存起来完善路线数据库,为了让提供更好体验我提前写好了脚本把一个城市所有路线每两个站换乘路线都计算好了并全部保持到了数据库中,这样数据库基本就能满足用户所要查询的路线,这个方案是不是很好,哈哈哈有点作弊的嫌疑,但没关系只要可以达到目的对任何人没有影响就ok。
因为我这个是个人开发为了节约成本再一些方面做的有些不足。1.所有查询的路线数据库是保存到了APP本地数据库提前内置了一个各个城市路线数据库,这样很不灵活也导致App包体积变大了不少,2.因为没有通过服务器查询路线导致某个线路改变时数据库无法实时更改,3.最短路径算法内置到了APP中导致优化算法后需要发包很麻烦这种算法最好放在服务端。
总而言之没有服务器节约了成本但上面很多问题也是很麻烦,如果要想做一个长远APP必须要把站台数据,路线数据,推荐算法都放在后台。
2.流程图
算法流程:
1.通过数据库查询路线,
2.如果路线不存在通过算法查询,
3.将新查询