最近看到滴滴副总裁在一次分享中说,围棋不如滴滴的算法复杂,链接如下:
http://sports.sina.com.cn/go/2018-04-12/doc-ifyzeyqc0097534.shtml
身为pm的我,虽然对算法不太了解,但是我也是看不下去的,毕竟我觉得吹牛逼吹的有点太大了。且看我怎么分析。
首先我们先来回想一个场景:
当天气恶劣的寒冬或者大雨天,通过滴滴打车的时候,大家会发现滴滴会提示有一个等候期,比如告诉你当前有几个人在你的前面,大概需要等待多少长时间。然后我们就傻傻的在寒冷的街边等待,等着那个数字变成0,然后在等着司机接单过来找我们……
为啥要说这个呢?
这说明滴滴的算法中,在我们打车的时候是根据我们的gps或者打车地点划了一个范围(在这个范围也应该是动态调整的,不同的地点,范围也是不一样的。比如我在6环外的范围通常要比在二环内的范围要大,根据车辆的供给来决定的,也是用户能接受的,因为我在郊区,等时间长一点也是可以的。),在这个范围内的车辆和乘客是需要动态去调整的:
如果车多人少,价格正常,很快就能接单,那么怎么分发呢?司机评价低的多等会,今日业务量(收入)少的司机优先分(保证大家都能赚点钱,饿死了就没人玩了,所以开滴滴只能保证饿不死,但是想赚大钱,那绝对是不太可能的,同理类比可以想想美团外卖送餐的),如果还是很多,那就再缩小范围,保证用户能够快速上车。
如果车和乘客一样多,评价高的司机和乘客,以及接单量少的司机,一定是优先匹配的。
如果车少乘客多,这时候一定会将范围向外扩,专业点说叫做扩大召回范围,但是一定也是有一个上限的,到达上限后就只能等待了。但是总等待也是不办法, 于是通过价格来调节需求,将价格敏感的用户赶走,保证真正的刚需客户,能够很快叫到车。这是一个很好的办法,所以在天气恶劣的时候,价格总是很高的,很多人就换其他的交通工具了,把真正的刚需乘客拉了出来。
为啥扯这么长一段内容呢?其实是想告诉大家,滴滴的匹配算法,一点也不复杂。
因为针对每个乘客,实际上他的匹配车辆,在一定时间内(比如叫车的几分钟内),应该是不变的。
为啥这么说,前面讲的那个恶劣天气下的等待,就暴露了他们的策略(当然,这个策略也很有可能是他们的产品用来安抚用户的一种手段,半真半假吧,肯定是有一部分真实的在里面,如果制定过策略的pm或者技术同学,一定明白),即只需要一个个把乘客匹配到车上就好啦!
这也是符合滴滴打车的策略的,为啥?因为乘客为大,没有乘客的需求和钱,这么大的家业是支撑不了的。
讲了这么长时间的废话,证明了滴滴的分配算法,实际上就是将一个个乘客的需求匹配到合适的车上。那么同时大并发的请求,也不涉及到抢车的问题(因为划分了范围),只是按照乘客下单的时间,一个个排队处理就好了,并发可能都算不上。并发只是服务于效率,总不能让在北京打车和上海打车的人都要同时进入队列吧。
所以从这个层面来说,滴滴的算法,并不是想象中那么复杂,如果复杂,可能在高并发方面以及实时的线路规划方面,确实比较麻烦。
以上就是我的一点浅薄的看法,请大家拍砖。
网友评论