c – 需要制作一个非常大的数组[2 ^ 16 1] [2 ^ 16 1] – 数组的
问候
我需要计算一个由16位字组成的信号的一阶熵(Markov源,就像在维基上这里http://en.wikipedia.org/wiki/Entropy_(information_theory). 我的算法看起来像这样 >读取当前符号 然后,Array [a] [b]将表示符号b在流中出现符号a之后的次数. 现在,我明白C中的数组是一个递增得到精确值的指针,比如从数组[10] [10]获取元素[3] [4]我必须将指针递增到数组[0] [0] by(3 * 10 4)(存储在数组中的变量的大小).我理解问题必须是2 ^ 32个unsigned long类型的元素必须占用太多. 但是,还有办法解决它吗? 或者也许有另一种方法来实现这一目标? 解决方法
具有32’000乘32’000元素的二维整数数组(4字节)占用大约16GB的RAM.你的机器有那么多内存吗?
无论如何,在超过10亿个数组元素中,只有极少数数组元素的数量不同于0.因此,使用某种稀疏存储可能会更好. 一种解决方案是使用字典,其中元组(a,b)是关键字,并且出现次数是值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |