降纬编码技巧

如文中有不对的地方,请多多指教。        降维攻击,顾名思义,首先要降维。如三维空间的物体在二维空间中,物体自身微观粒子相互之间的作用力公式将发生变化,物体分子将不能保持现有的稳定状态,极可能发生解体,导致物体本身毁灭。降维打击就是将攻击目标本身所处的空间维度降低,致使目标无法在低维度的空间中生存从而毁灭目标。摘自 https://baike.baidu.com/item/%E9%99%8D%E7%BB%B4%E6%94%BB%E5%87%BB/7959455         那么条件矩阵可以降维吗?在特定的需求映射下,如何利用降维和散点映射实现最简单的解决方法?
     举个适用场景例子,代码已经成型,运行很久,突然增加一个维度的数值。有先决条件如下,第一,假设条件判断太多,很难重构。第二,时间问题。 第三,可能以后只会增加这一个维度。这时候,你如何最简单的增加一个参数,而不变动代码?
    先介绍一下克罗内克积。
    克罗内克积 参考:https://zh.wikipedia.org/wiki/%E5%85%8B%E7%BD%97%E5%86%85%E5%85%8B%E7%A7%AF
数学上,克罗内克积是两个任意大小的矩阵间的运算,表示为。克罗内克积是张量积的特殊形式,以德国数学家利奥波德·克罗内克命名。
     下面使用一个例子,简单明了的阐述这个技巧。

     其中,A表示条件纬度A, B表示条件纬度B,以此类推。

     A,B中分别包含2个条件取值, C中包含一个条件值,那么ABC的克罗内克积 如下

降纬编码技巧_第1张图片

    这个即是条件矩阵组合,包含四组条件,其中,a1b1c1表示三种条件值组合。

    此时如果C增加一个取值,那么条件矩阵将会如下:
降纬编码技巧_第2张图片   


   依次类推,每增加A,B,C中任何一个值,矩阵以2倍扩展。 编码的复杂度递增,不能收敛。
   如何使得代码由繁化简,最好达到降维的效果?
可以找到一个条件,满足:为一种条件。
这样上述的条件矩阵就等于:降纬编码技巧_第3张图片
八种条件矩阵降为4种条件矩阵,如此,便可以做到化繁为简的编程效果。这个问题的精髓在于如何找到降维的条件,然后作出最小改动,达到最佳效果。或者构建代码的时候,就可以降低条件维度,以达到化繁为简的目的。太过于复杂的代码,日后维护也十分困难,如果能够把复杂的代码简单化,不仅编程容易,而且容易维护。
后续有时间,我会写一篇在工作中用到的实例。

你可能感兴趣的:(架构,go,设计模式)