标题:今天遇到一个有意思的问题,有关大数据的算法
取消只看楼主
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
结帖率:96.08%
已结贴  问题点数:20 回复次数:4 
今天遇到一个有意思的问题,有关大数据的算法
问题背景:有一个非常大的二维数组N,尽可能地找出其中最大的n个数,n为变量但远远小于N的数据规模。
注意:这个数组非常之大,以至于无法在合理的时间范围内对其进行遍历。暂且不讨论存储问题,假设数组已经完全存储在内存中了。
根据问题背景,允许运行结果不是最优解,但要在程序的运行时间合理的范围内尽可能接近最优解。
例如:要求找出前10个最大的数,最后可以只找到相对比较大的10个数(当然越接近正确答案越好)。
也允许这样的算法:即便给的时间无限长,最终也不能找到最优解,但可以快速地给出次优解。
问题是我根据实际情况抽象出来,自己描述的,可能有所偏差,如果对题目本身的叙述有问题,请继续提问。

补充1:这个二维数组描述的是一个地区的地形,每个点的数值都是表示海拔高度,所以变化相对平缓。

--------------------
有没有人有点想法?

[ 本帖最后由 蚕头燕尾 于 2015-6-19 20:05 编辑 ]
搜索更多相关主题的帖子: 正确答案 最大的 规模 
2015-06-19 20:00
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:0 
回复 2楼 wp231957
已经补充了问题背景,请看一楼的:
补充1

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2015-06-19 20:06
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:0 
回复 4楼 vvvcuu
这个二维数据是已知的唯一数据,要想从这个数据转换成登高线存储,
要先遍历这个数据?

要是只遍历一遍还好说,但是这个数据是动态变化的(变化频率相当可观),
所以动态绘制登高线是不是就有点不太划算了?

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2015-06-20 13:00
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:0 
回复 5楼 实际应用
做一个环行的12`个元素的指针数组,放10个大数据排序-----环行是什么意思?
做 2个指向数组的指针,1个指大,1个指小
遍历数组一遍----------------请仔细看一楼,数据规模很大,单是遍历就已经相当耗时了。
比小指针小的,跳过
比大指针大的,无条件存入上面数组,两数组指针均加1
介于两指针之间的,插入上面数组,小指针加1

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2015-06-20 13:02
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:0 
回复 6楼 pycansi
这个有点靠谱

实际上我用的是模拟退火算法,但是在实际编程过程中碰到了一些问题

虽然现在的效果已经相当可观了,但是我总觉得程序处理过程中有些不太严谨的地方

暂且看看大家的想法,稍后我们再讨论这个。

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2015-06-20 13:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-446803-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.181569 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved