倒数有什么作用?

诸彬诸彬最佳答案最佳答案

这个问题我十年前想到过,倒数的实质其实就是对时间进行加权 比如1分钟倒计时,其实是在说以60秒为一个周期,当前已经过去(t-1)个周期,还剩下(t)个周期。 用数学表达就是 其中 d_i=\frac{t_i}{T} 是第 i 个周期的占比,而 \delta t 为一个周期的时间长度。因为每个周期的时间都是T,所以 \sum_{i=1}^k d_i 就等于整个时间的占比 \sum_{i=1}^k t_i 等于总时间长度 T 所以如果知道每段倒计时的时间长度,就可以通过加权求和计算出还有多少时间——这实际上是最基本的算法,很多语言中的time.sleep()函数就是这么实现的。

但是这样计算出来的结果是不正确的。因为不同的事件被加上了不同的权重。 为了消除这种差别,必须给所有的事件分配同样的时间权重,也就是让d_i=\frac{t_i}{\sum_{j=1}^kt_j} 对于给定的t,这个公式只能产生两个值:一个是1/k,意味着把所有时间分配到每一个事件上;另一个是0,意味着把所有的任务都放在最后一刻完成。这两种情况实际上代表的是两种极端的情况,一种是每一个事件都同等重要,因此不应该给任何一个事件分配低于1/k的时间,另一种是某一个事件比其他事情都更重要,应该让该事件提前结束,其它事项延后。事实上,我们日常生活中遇到的大多不是这两种极端情况,时间是相对重要的,但也不是那么重要,不可能有绝对重要的事情需要占用大量的时间,也不可能有多余的时间浪费在根本不重要的事情上。大多数情况下,不同的事件需要分配不同的时间,但这些时间总和不会超过总时间上限。对于这种情况,上面给出的公式并不能提供正确解,我们需要更精确地分析来得到更加接近准确的答案。

在现实生活中,人们一般会先做重要的事,再做次重要的事,直到最后才做那些无关紧要的事。这意味着在计算时间的时候也应该给予重要程度不同的事件以不同的时间权重。

假设存在m件事情,它们被分为N类,每一类事件有K_1,\cdots, K_N个时间选项。那么所有事件发生所需的最少时间应该是 T_{min}=\sum^{N}_{n=1}\sum^{K_n}_{k=1}t_{kn} 这个值就是按照从重要到次要排好顺序的所有事件的所有可能完成时间的最小值。

当然实际生活中不一定所有的选择都是排序的,也有可能一些事件需要同时处理。在这种情况下,T_{min}是一个无穷级数,通常无法找到它的和。不过我们可以把问题简化,假设存在三个时间轴,分别表示在三个不同时段完成各事件的不同选择。我们把需要在第一个时间段完成的任务标记为1,第二个时间段完成的为2,第三个时间段完成的为3。那么无论顺序如何,所有任务都必须在这三段时间内完成,也就是说三种时间段的划分代表了所有可能情况的最大值。此时 T_{max}=\sum^m_{i=1}(t_i^\gamma)^\beta , (\gamma,\beta)=(\lfloor{\log}_2 m\rfloor+1,1)$ 其中t_i^\gamma代表在第一时间段完成第i件任务的多种选择中最长的一种。同理,t_i^\beta代表在第二时间段完成第i件任务的各种选择的最长一种。

T_{max}是大于T_{min}的,这说明在我们真实的生活中,一般情况下不可能在比目前更早的时间里完成所有的工作。即使最紧急的工作,也总会被拖到最后时刻才去做。

我来回答
请发表正能量的言论,文明评论!