反直觉的追及问题 问题背景快到年末了朋友公司有个很奇葩的要求需要每年完成跑步任务完不成的的会影响到KPI。为了完成这N公里的跑步很多人选择了步数神器——摇手机。摇了手机之后发现有一条要求比较麻烦至少完成一次户外跑步5公里平均每公里用时不得大于室内跑步最短时间1分钟这就苦了孩子了。初步方案我给他出了一个方案你找3个同事加上你一共四个人。每人带一部手机和一个带GPS的手环或者手表找个体育场或者学校的400米跑道平均站在四个点上每个点相距100米跑道路径。再找个小的密封袋把四个手环或者手表开启跑步计时之后放进去密封起来第一个人拿着跑跑到第二个人的位置把密封袋交给第二个人……这样接力赛一样一圈一圈传递下去每圈里面每个人只需要跑100米然后等别人300米的时间来恢复体力再跑100米体力能够及时恢复这样就能保证持续性的高速度。在距离上原本一个人要跑5000米现在只需要跑 5000 / 4 1250 米只需要完成要求的四分之一路程非常省力。方案问题但是回家之后再想想这个方案总感觉哪里不对劲于是开始画图进行模拟果然发现了问题我们先在400米跑道上面均匀放下四个对象代表四个人画出一幅俯视图按照顺时针方向来跑男、女、猫、狗圆圈代表密封袋。第1棒男跑100米到女的位置把密封袋交给女。第2棒女跑100米到猫的位置把密封袋交给猫第3棒猫跑100米到狗的位置把密封袋交给狗第4棒狗跑100米到……好嘛男跑掉了狗需要再跑100米才能追的上男可是谁又愿意当这条跑200米的狗呢问题解析为什么会出现这样的原因呢很多人脑海当中第一时间浮现出来的图像是这样的四个人同时从四个点开跑跑到下一个位置画出轨迹整个图形闭环了方案也就变得可行了。导致问题的关键是里面有个限制就是密封袋只有一个它无法同时跟随四个人同时运动同一时间只能跟随其中一个人。当追赶的人在跑步的时候他追的并不是下一个人的当前位置追的是下一个人在上一圈的原本位置。这意味着如果下一个人在这一圈产生了运动也就是跑开了追赶的人就追不上了。最简单的解决方案有两个轮流跑200米或者加1个人。解决方案轮流跑200米轮流跑200米的方案比较好理解就是在刚才发生问题的状态下用体力硬补上让狗多跑100米。这样相当于狗先跑了第1圈的100米由于他是第2圈的第1棒所以他在第2圈开始要先跑100米。这样狗负责了第1圈的第4棒和第2圈的第1棒其实是没有吃亏的每个人都在每1圈里面都只是负责100米。但这样就有点像我们的调休工作的时间长度是没变化的但是在连续工作的时候却是非常辛苦的很长时间都缓不过来。加1个人加1个人是最省力的需要把他的手环或者手表也放进密封袋里面我们把加的这个人称为鱼吧初始状态变成了男和鱼站在同一个位置。第1棒男跑100米到女的位置把密封袋交给女第2棒女跑100米到猫的位置把密封袋交给猫第3棒猫跑100米到狗的位置把密封袋交给狗第4棒狗跑100米到鱼的位置把密封袋交给鱼。第5棒鱼跑100米到男的新位置把密封袋交给男这样就闭环了每个人只需要连续跑100米的长度不需要调休大家实现了做1休4的幸福生活。在距离上原本一个人要跑5000米现在只需要跑 5000 / 5 1550 米只需要完成要求的五分之一路程更加省力。