离散化是一种很常见的数据处理方式。

 

最近也是学了一下(才学的我还有救么QAQ),一学就懂,但发现在题目中好像也并没有怎么想到这东西,,所以在这里简单总结一下我对离散化的一些思考与总结吧。。。。

 

摘抄の网上概念:离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。

 

一.离散化的实现及性质

 

首先概念中提到,离散化就是把无限空间中有限的个体映射到有限的空间中去。

抽象成代码问题,通常可以这么表示:有一个无序的数组a,把a中的所有元素离散化。

 

实现方法:

建立一个数组b,拷贝下来a数组,排序+去重就好了。。。

 

显然:b数组各元素与a数组各元素的值之间的相对大小是一致的。

 

这样一来,我们就可以在a数组与b数组之间的元素值和下标之间进行常用的映射操作:

1.a数组下标或元素值-->b数组下标:二分查找。

2.b数组下标-->a数组的值:显然。

有些时候,我们还需要b数组下标-->a数组下标的映射。那么我们就需要把b数组定义为结构体类型,包含两个(或多个,因为b数组中不一定仅仅存有a数组的元素)成员:sum(表示元素值),index(表示原数组下标),在排序时重定义比较函数就行了。

 

二.离散化的用途

 

概念里提到了,合理地应用离散化可以提高算法的时空效率。

1.空间效率的提升:显然。。比如给了你一小波超大的数,要让你对每个数都进行一番操作,还要你把操作的结果保存起来,很明显要用离散化嘛。。。。

2.时间效率的提升:一个待解的问题,如果它的答案只与一个集合上的某些稀疏的元素有关,也可以考虑离散化,也许可以大大提升算法的时间复杂度。。。(纯tm我自己yy的。。正确不能。。。)

 

 

就这样吧。。。真的是水平太低写不了什么深层次的东西。。。

写的是真的没什么逻辑,,跟坨屎一样。。。。