4.1.6 田忌赛马矩阵乘法的推广——资源的重组与分配
将变换矩阵抽象出来以后,矩阵乘法的应用会将更加广泛,它不再局限于简单的位置调整。如果把上述案例中的3匹马换成军队中的3个连,则我们可以通过矩阵实现士兵的部分调度及资源重整。例如,第2连的士兵在上一次战斗中损失惨重,需要第1连的支援30%的士兵,就可以用如下的矩阵表示:
结合单位矩阵,我们将会更好理解矩阵对士兵进行调度的过程。与单位矩阵相比较,该矩阵只有第一列的两个元素发生更改,也就是说,只有第1连的士兵发生调度,第一列第一行的元素为1-0.3,意味着第一连有30%的士兵要离开。而第二列第一行从单位矩阵的0增加到0.3,说明第二列有士兵增加,它恰好等于第一连士兵总数的30%,也就是说,通过这一变换,第1连有30%的士兵被调到了第2连。
从这一现象我们不难看出,矩阵的乘法一定不满足类似于实数乘法的交换律。假如一段时间之后,第2连的兵力得到了恢复,资源不再短缺,可以将40%的士兵调回第1连,则整个调度过程可以表示为:
按常人的逻辑来推理,如果把这两个调度过程对调,即先从第2连调度40%的士兵到第1连,然后再从第1连士兵中拿出30%调回第2连,就多半会得到不一样的结果。
实数的乘法交换律对矩阵不适用,可用矩阵乘法表示这一性质(读者可以自行代入证明):
这点在ActionScript的变换中也同样需要注意,矩阵的变换顺序不能随意更改,因为矩阵大部分的转换都基于乘法。
如果调度的是具体的士兵数量(比如30名),则可以用回之前的矩阵加减法:
可见,虽然矩阵加减法并没有帮助田忌赢得比赛,但这并不代表它一无是处。矩阵的使用相当灵活,只有掌握了逻辑学中的对策论,学会因势利导,统筹帷幄,才能把矩阵这一工具运用得恰到好处,方可把它变换的优势发挥得淋漓尽致。
时间: 2024-11-08 16:12:57