直击信息本质 - 排序总结篇

                                 用排序来直击信息的本质

      我们处于一个信息化的时代,而计算机的实质作用其实就是处理数据,获取信息,消除随机,得到确定的答案,消除随机获取信息,从几种排序算法中可以看到有几种途径来消除随机,计算消除,假设消除,已知消除。计算消除由计算机承担,而假设消除和已知消除需要我们人类的努力,也是我们作为一个人在计算机系统中所扮演的角色。

 

其中:(如果没有看过以下四个排序算法的分析,建议先看一下,然后在来看下面的结论,超链接: 冒泡排序、快速排序、计数排序、桶排序

    所有排序算法都包含: 计算获取(在运行一个算法的时候,通过计算得到了很多确定的信息)

     冒泡排序:

     快速排序:假设获取   (假设了数据是完全随机分布的数据)

     计数排序:已知获取    (已知数据的类型只可能为整数,或者说数值种类有限)

     桶排序:    假设获取    (假设了数据是完全随机分布的数据,或者说映射函数可以均匀分配每一个桶中的元素数量)

实际上:

      1.在设计一个算法的时候一定要注意已知条件和假设条件的区别,(假设条件可以不成立,不成立只会导致算法退化,已知条件是必须要成立,如果不成立,算法将无效),要挖掘问题中的已知条件来节省运算,同时要预测算法使用的情况,来创建假设条件来节省运算。

            (1)(.在实际项目中,因为考虑不充分或者业务的扩充,导致已知条件的不适用,而采取破坏已知条件的方式,来满足业务,这往往是灾难的开始,在已知条件被破坏,一定会造成逻辑、算法上的错误或漏洞,从而导致各种未知地方出错,同时,因为已知条件不成立,会导致更多的信息需要处理,甚至重复处理,从而引发性能的下降,工程量的增多。对于这种问题应该设计逻辑之前,就需要充分考虑,如果没考虑到,也应该是扩充或缩小已知范围,也就是重构,而不是粗暴的破坏,内部加逻辑跳转。严格的要求逻辑、算法的输入和输出信息的标准与确定性,是高效逻辑、算法的关键,也是高效工程的关键,逻辑、算法内部的数据合法检查带来的只会是无尽的性能消耗和无尽的逻辑跳转与无尽的工程成本消耗)   

        (2)在计数排序和桶排序中,映射函数是有可能无效或不可行的,解决这个问题,可以根据数据特征,建立散列函数,实际上,大数据分析或者说AI的解决方案,就是为了解决这种问题。我们不想,也不可能,对每一种情况建立处理流程也就是处理函数,所以启发式算法或AI,实质只是为了建立统一的输入和输出,无需对每一种特定的情况处理,让问题简单化。但是这种解决方案,建立的是相似特征,而不是完全确定的,也就是说启发式算法或AI的到的答案可能是错误的,这里延伸出来的就是NP问题了,NP究竟有没有解,也是一个未知数。 现在的智能算法,本质只是一种“经验”主义,不明白为什么会这样,但是根据经验,来得到结果。现在使用经验主义来解决这些问题,实质上是对这些问题不够了解,无法从问题中获取关键信息或者说现在无法理解这些信息,我们并不想使用经验主义,是没有其他好的办法情况,才被迫选择这么干,至于能不能有其他好的办法来解决NP问题,现在是未知的。 AI算法并没有那么万能,而且绝大部分情况它还是一种被迫选择的方案。经验主义得到的答案有多不可靠,这在历史中有着大量事例与教训。所以在无法总结规律的情况下或情况太多的情况,且对结果准确要求相对不高的情况下,才适用AI解决方案。)

      2.在很多算法的设计理念中,面对完全随机的数据,毫无特征的数据中,反而能获取最佳性能,然而实际处理信息的过程中,往往数据并不是随机的,而计算机中并不存在真随机,乃至于,现实生活中存不存在真随机也是一个很有争议的话题。所以很遗憾我们往往面对的情况都是特殊情况,算法的性能并不能达到我们的设想,或者说算法并不通用

     3.合理利用信息,带来的并不只有性能上的优化,还有来自工程上的优化,在计数排序中需要实现的代码,远远少于桶排序中需要实现的代码。处理的每一份信息,都会有计算上的消耗与现实中的消耗。人类发明的种种工具,都是为了记录某种信息处理的方式,或者直接得到结果,都是为了减少处理的信息量。在程序上的设计也是围绕此展开的,高级语言的诞生,面向对象的概念,实质就是为了统一信息处理的方式,利用已知的(信息)解决方案,减少重复处理类似问题的成本。

     4.在桶排序中我们看到了一个“系统”的雏形,桶排序并不负责真正的排序,它实际上是由“分块”和“排序”两个部分组成,在这两个部分都是一个独立的问题,但最后它们组合为了解决的问题实质上还是排序问题。在现实中,一个广义上的“系统”也是由这样很多基础的部分组成,然后从细节上来看,它是一个复杂的存在,但从整体上来看,它只是为了解决一个很基本的问题。某种意义上来讲,系统其实就是面对很多很多情况所给出来的一个整体解决方案,它包含了这一类问题所有情况的解决。抓住这一类问题的特征,是搭建这个系统的关键,也是建立已知信息的关键

      5. 从桶排序就可以窥探到,高级算法、高级数据结构,基本上都是由这些基础的算法、数据结构构成,在上升到系统,解决方案的层面,也基本是这些内容,但简单的问题处理并不简单

      6.在计算机领域有很多的信息范围种类限制,用于优化。例如JPG这种图像格式,因为预测数据是给人肉眼观察,所以在编码的过程中舍弃了很多人眼无法察觉的数据,所以让图像的文件大小相对非常小,(同时也产生了让非人眼观察的使用场景,数据精度不够的问题),诸如此类的东西很多,特别是与人打交道的数据类型,因为人类的获取信息的能力有限,甚至可以说非常低下。

 

 

你可能感兴趣的:(信息学,信息)