离散,顾名思义,就是离开,散开,不集中,“离散数学”这个词中的的离散用法的对的,因为离散数学讲的是集合、图的东西,集合、图里面的元素、点、边就是不连续、不集中,非常分散的。
离散化,指的是把很多分散的东西,集中起来,使得容易处理,举个例子,有一个整数数组,元素个数不是很多,但每个元素的值相差很大:
int a[] = {{4, -1, 4, 10000, 8, 4, 50000, 200000, 2, 7}}
离散化,就是重新构建一个数组,不存放原数组元素的值,而是存放原数组元素的大小顺序,比如上面的数组离散化以后,就变成了下面:
int b[] = {2, 0, 2, 5, 4, 2, 6, 7, 1, 3}
解释一下,数组b的第0个元素2,对应原来a数组中第0个元素4,2表示a中在此位置的4,在所有数中第2大(最小的数第0大,即按从小到大排序,位于第0个),第二个元素0,表示原来a数组中这个地方的数-1,在所有数中第0大;最后一个元素3,代表a中这个地方的数7第3大。
因此,刚才做的操作根本不是所谓“离散”化,而是“离散”化的反向操作,应该叫“反离散化”、“集中化”、“中心化”更准确,更容易理解,即把离散的东西集中,而不是把集中的东西离散。