哪些情况需要提高算法的效率
A. 大数据自上而下提升统计和算法的效率
大数据自上而下提升统计和算法的效率
我们在去开发这些计算体系时,不管是软件、计算,其实都是在谈大数据分析的概念性,什么时候出现问题,我们如何达到高准确度,这只是这个问题的开始。其实作为一个计算科学家,我们经常会遇到很多的问题,有些是统计学方面的问题,但是我们没有联合统计学家一起考虑和解决这些问题。
比如说这个结果的一致性,那么还有引导程序的理论,那么就像常规的引导程序一样,都会达到一些限值,从上至下的计算,统计学的利弊权衡,什么意思呢?我们对数据计算的理解,也就是说更多的数据需要更多的计算,更多的计算能力。我们如何来做?到底是并行处理?还是子样抽取等等。你给我更多的数据,我会更高兴,因为我能够获得更高的准确度,我的错误会更小,我会以更低的成本获得更正确的答案。对于统计学家来说这是好的,但是对于做计算的来说这个不大好,因为我们将这样思考这个问题。也就是说给我一些数据,那么我们有一个新的观念,叫做控制的算法弱化,比如说我的数据量不够,我可以快速的处理它。数据太多,我的处理速度会慢下来。从计算角度来说,控制的算法能够让我更快速的处理数据,也就是算法的弱化。统计学的角度来说,能够处理更多的数据,获得更好的统计学上的答案性能提高。尽管计算的预算成本不变,但是我们能够处理更多的数据,以更快的速度,我们付出的代价就是算法的弱化。
那么,这个坐标你们不经常看,横轴指我们取样的数量,纵轴代表的是运行时间。我们看一下到底有多少的错误。我们现在就要思考固定风险。比如说在我们错误率是0.01,这个座标的区域,对于统计学家来说,如果要固定风险的话,那么必须有一定数量的样品,才能够获得这样的结果。所以,这是一个叫做典型的预计理论,大家都非常了解。同样对于在计算机科学方面,我们有所谓的负载均衡的概念,不管你有多少个样本,但是你一定要有足够的运营时间,否则的话,你是无法解决这个问题的,这是非常明确的一点。
所以,我们看一下实际的算法。有一定的运行时间,有固定的风险,在右边使用的所有算法,把算法弱化,我们就可以处理更多的数据。下面我来谈一下,这就是我们所说的问题降噪,所谓降噪就是在数据方面有一些属于制造噪音的数据。我们如何做降噪?首先,我们假设可能的答案是X这样的一个分样,然后用高准确度覆盖它,所以这是一个推理预估的过程。比如说我要找到X的值,它和Y是非常相似的,这是一个自然的预估。现在X是一个非常复杂的值,我无法做,所以我要做一个凸形的值域,我要做定性,同时可以获得最优点,我需要把它放在一个可行的规模大小之内,那么也就是任何一个固定风险都是基于X的。左边是风险,我需要它的一半,这里存在复杂性,如果想知道更多的复杂性,你们可以看一些所谓理论处理方面的文献,你们可以读一下,来做这样均衡的曲线。
我们看一下相关的内容,如果你要达到一定的风险,你必须要有一定的取样点。这是一个C,也许这个C也是计算方面很难算出来的,所以我们需要做C子集的,把这个子集进行弱化,这样我们就可以更好的计算了。我们可以做分层的层级,我们称为池域,并且根据计算的复杂度进行排序的。同时,还有统计学的复杂性,然后进行一个权衡。你们可以从数学计算出这个曲线。在这里举个例子,比如说X,刚才已经有人介绍过子集是什么意思,然后你们可以定运行时间,还有取样的复杂性,然后可以算出答案。你们看一下简单的C,复杂的C,然后你们看一下运行的时间是在下降,复杂性是一个恒值,这样你的算法更简单,可以用于大数据,既不会不会增加风险,也可以在举证方面更加简化。如果是一个信号的图值,你的运行时间由PQ值决定,你们还有一个域值的话,我们会有一个恒定的取样,大家可以同时按照“列”计算,获得我们预期的准确度,而运行时间不变,大家可以自己看这些公式。
那么,这种分析我希望大家能够记住的是和这种理论计算科学,重点就是能够把准确度放到一个水平。因为我们要去关心有关质量方面、统计学方面的风险,计算科学方面的算法能够帮助我们解决比较大的问题,就是大数据带来的大问题。同时,我们还有很多的数据理论可以适用,我们不要从统计学简单的角度来考虑,而是从计算的角度考虑。
也许你们还要去学一些统计学方面的基本理论,当然如果你们是学统计学的话,你们也要参加计算机科学的课程。对于两门都学的人,你们应该把这两个学科放到一起思考,不是统计学家只考虑统计学,计算机科学家只考虑计算机方面,我们需要解决统计学方面的风险。因此,我们可以更好的处理十万个采样点,都不会遇到问题。
B. 骞惰岄仐浼犵畻娉曞备綍鎻愰珮鏁堢巼锛
鍦ㄨ$畻链轰紭鍖栭梾棰樼殑姹傝В棰嗗烟锛屾湁涓绉嶅己澶х殑鎼灭储鏂规硶鍙锅骞惰岄仐浼犵畻娉锛岄氩父绠绉颁负PGA锛屽嵆Parallel Genetic Algorithm銆傚畠鏄涓绉嶅熀浜庨仐浼犳満鍒剁殑骞惰屽寲绛栫暐锛屽叾镙稿绩铡熺悊鏄妯℃嫙镊铹堕夋嫨鍜岄仐浼犲彉寮傜殑杩囩▼锛岄氲繃缇や綋镄勫岗钖岃繘鍖栨潵瀵绘垒链浼樿В銆
阆椾紶绠楁硶锲犲叾鍐呭湪镄勫苟琛岀壒镐э纴涓哄苟琛岃捐℃彁渚涗简骞块様镄勭┖闂淬傚叾骞惰屾т綋鐜板湪澶氢釜鏂归溃锛氶栧厛锛屾疮涓涓浣撶殑杩涘寲杩囩▼鍙浠ョ嫭绔嬭繘琛岋纴杩欎娇寰楃畻娉曞彲浠ュ湪澶氢釜澶勭悊鍣ㄦ牳蹇冧笂钖屾椂镓ц岋纴鏋佸ぇ鍦版彁楂树简璁$畻鏁堢巼銆傚叾娆★纴绉岖兢涓镄勫氢唬杩浠d篃鍙浠ュ苟琛屽寲锛屾疮涓浠g殑绻佹畺鍜屽彉寮傛搷浣滃彲浠ュ悓镞跺湪涓嶅悓镄勫瓙缇や綋涓杩涜屻
鍦ㄥ綋鍓岖殑璁$畻链虹‖浠剁幆澧冧腑锛岀壒鍒鏄澶氭牳澶勭悊鍣ㄥ凡缁忔垚涓轰富娴侀厤缃锛岃繖绉嶅苟琛岄仐浼犵畻娉旷殑浼桦娍镟翠负鏄庢樉銆傚畠鑳藉熷厖鍒嗗埄鐢ㄨ繖浜涘勭悊鍣ㄧ殑镙稿绩锛岄氲繃骞跺彂璁$畻镄勬柟寮忥纴鏄捐宪鍑忓皯鎼灭储镞堕棿锛屾彁鍗囨眰瑙eぇ瑙勬ā闂棰樼殑鑳藉姏銆傛荤殑𨱒ヨ达纴 PGA 鏄涓绉嶉傚簲鐜颁唬纭浠剁幆澧冿纴鎻愰珮璁$畻鏁堢巼镄勬湁鏁埚伐鍏凤纴瀵逛簬瑙e喅澶嶆潅浼桦寲闂棰桦叿链夐吨瑕佹剰涔夈
C. 影响算法设计的因素有哪些
影响算法设计的有以下因素:
针对机器:空间复杂性和时间复杂性。
针对程序员:算法表达和实现的简单性。
针对问题:算法对问题及问题输入规模的普适性。
影响算法效率的因素
1、从大的方面来讲,所选择的语言对算法的效率影响很大。一般来说,使用越高级的语言所需要的时间和空间就越大。另外,不同编译器产生的代码质量不同,这对算法的效率也会有影响。
2、存储结构
数据的存储结构,分为顺序存储结构和链式存储结构。顺序存储结构的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;链式存储结构则是借助指示元素存储地址的指针表示数据元素之间的逻辑关系。不同的问题求解选用不同的存储结构。
3、指针操作
在使用指针时,指针的有秩序扫描非常重要。例如在模式匹配中,如果直接进行匹配,当有不完全匹配时,主串的指针需要回溯。
在KMP算法中,我们先可以求出每个元素的next函数值,从而在发生不完全匹配时,主串的指针不必要回溯,只需要模式串的元素回到当前元素的next函数值所指的元素再进行匹配即可。当主串和模式串有很多不完全匹配时,KMP算法可以大大提高效率。
4、查找的效率
有很多快速查找的算法都可以提高查找的效率,如建立索引,折半查找等,都是在记录和关键字之间进行比较,从而寻求关系。这一类查找建立在比较的基础之上。查找的效率依赖于查找过程中所进行的比较次数。
在哈希表中,使得记录的存储位置和关键字之间建立一个确定的存储关系,因而在查找时,只需要根据这个对应的关系f 找到给定值K 的像f(k)。用这个思想建立哈希表。如在基因组匹配时,用哈希表非常方便。
5、数据类型的选择
数据类型的选择也会影响算法效率,在对时间和空间要求非常严格时,尽可能的使用占用空间较小的数据类型。使用动态开辟空间会使得效率降低,所有在能确定或估计出需要的空间大小的情况下尽量使用静态数字。个人觉得用vector虽然方便,但是效率并不高。
6、存储方式
用堆操作还是用栈操作,对于不同的问题需要仔细选择。在串和队列的有关操作中用堆操作合适,在树的操作中用栈操作合适,如建立二叉树中序遍历的递归算法或非递归算法,用栈操作好。
D. 算法的高效性是指
算雀薯宏法的高效性指的是,在解决特定问题的过程中,算法能够在合理的时间复杂度和空间复杂度下完成其任务。具体而言,高效性可以从以下几个方面来衡量:时间复杂度:即算法解决问题所需要的时间成本,通常用大 O 记号来表示。一般情况下,时间复杂度越低,算法的效率就越高。空间复杂度:即手哗算法解决问题所需要占用的空间成本,也通常用大 O 记号来表示。与时间复杂度类似,一般情况下,空间复杂度越低,算法的效率也越高。算法的正确性:即算法在处理问题时,所得出的解是否正确,可以得到正确的结果。算法的高效性对于实际应用非常重要。例如,在大规模数据处理、计算机视觉、自然语言处理等领域,高效的算法可以显着提高计算效顷册率,缩短处理时间,提高工作效率。同时,在一些需要实时响应的场景,对算法的高效性要求更高,例如实时搜索、网络爬虫等。要实现高效的算法,需要结合具体的问题和实现方式来进行优化,包括但不限于算法设计、数据结构的选择、算法实现的优化等。同时,对于某些特殊的问题,可能需要结合领域专家的经验来进行优化,例如某些图像处理算法、自然语言处理算法等。
E. 阒愯堪锲炴函绠楁硶鍜屽垎鏋濋檺鐣岀畻娉旷殑鍏卞悓镣瑰拰涓嶅悓镣,鎻愰珮绠楁硶鏁堢巼镄勫叧阌鏄浠涔堬纻
锲炴函绠楁硶鍜屽垎鏀闄愮晫绠楁硶閮芥槸鍦ㄩ梾棰樼殑瑙g┖闂翠笂鎼灭储闂棰樿В镄勭畻娉曪纴瀹冧滑链変竴浜涚浉钖岀偣鍜屼笉钖岀偣锛
鐩稿悓镣癸细
閮芥槸涓绉嶆棦甯︽湁绯荤粺镐у张甯︽湁璺宠穬镐х殑鎼灭储绠楁硶銆
閮芥槸锘轰簬绌蜂妇鎼灭储镄勭畻娉曪纴閮介渶瑕佽惧畾涓涓鍒濆嬭В锛岀劧钖庨氲繃涓嶆柇鍦版灇涓炬悳绱㈡潵阃愭ユ帴杩戞渶浼樿В銆
閮藉彲浠ュ簲鐢ㄤ簬闱炵嚎镐ц勫垝闂棰樼殑姹傝В銆
姹傝В鐩镙囦笉钖岋细锲炴函娉旷殑姹傝В鐩镙囨槸镓惧嚭镓链夋弧瓒崇害𨱒熸浔浠剁殑瑙o纴钥屽垎鏀闄愮晫娉旷殑姹傝В鐩镙囧垯鏄镓惧嚭浣跨洰镙囧嚱鏁板艰揪鍒版瀬澶ф垨鏋佸皬镄勮В锛屾垨鏄鍦ㄦ弧瓒崇害𨱒熸浔浠剁殑瑙d腑镓惧嚭链浼樿В銆
鎼灭储鏂瑰纺涓嶅悓锛氩洖婧娉曢氩父閲囩敤灏濊瘯浼桦厛鎼灭储锛岃屽垎鏀闄愮晫娉曞垯阃氩父閲囩敤骞垮害浼桦厛鎼灭储銆
瀵硅妭镣瑰瓨鍌ㄧ殑瑕佹眰涓嶅悓锛氩垎鏀闄愮晫娉曢氩父闇瑕佸瓨鍌ㄤ竴浜涢濆栫殑淇℃伅浠ュ埄浜庤繘涓姝ュ湴灞曞紑鎼灭储锛岃屽洖婧娉曞垯涓嶉渶瑕併
瀛桦偍绌洪棿镄勮佹眰涓嶅悓锛氩垎鏀闄愮晫娉旷殑绠楁硶妗嗘灦涓锛屾疮涓涓娲荤粨镣瑰彧链変竴娆℃満浼氭垚涓烘墿灞旷粨镣癸纴钥屽洖婧娉曞垯娌℃湁杩欐牱镄勯檺鍒躲
涓嶅悓镣癸细
鎻愰珮绠楁硶鏁堢巼镄勫叧阌鏄鍒嗘敮闄愮晫绠楁硶銆备笌锲炴函绠楁硶鐩告瘆锛屽垎鏀闄愮晫绠楁硶閲囩敤浜嗕竴娆℃т骇鐢熸墍链夊効瀛愮粨镣圭殑鏂瑰纺锛岄伩鍏崭简锲炴函绠楁硶涓闇瑕佷笉鏂杩涜岀姸镐佽浆绉诲拰锲炴函镄勮繃绋嬶纴浠庤屾彁楂树简绠楁硶鏁堢巼銆傛ゅ栵纴鍒嗘敮闄愮晫绠楁硶杩桦彲浠ラ氲繃浣跨敤阒熷垪寮忔垨浼桦厛阒熷垪寮忕殑瀛桦偍鏂瑰纺锛屾潵阆垮厤锲炴函绠楁硶涓闇瑕佽繘琛岀殑棰濆栫姸镐佽浆绉绘搷浣滐纴杩涗竴姝ユ彁楂樼畻娉曟晥鐜囥