算法范文10篇

时间:2023-03-28 04:20:59

算法

算法范文篇1

关键词:人工智能;算法决策;司法领域

国家在《新一代人工智能发展规划》中对人工智能在法律领域的应用做了前瞻性的布局设想,其中“人工智能+法学”的教育培养新模式,①为人工智能在法律各行业的应用充分展开,储备了基础。在美国,人工智能在司法领域的应用已久;尤其是在刑事诉讼程序,算法决策在法官的审理、量刑、假释等一系列辅助过程中,起着重要作用,主要是在预测是否再次犯罪的评估上;同时,这一点也带来了广泛的讨论。②究其原因,算法作为一种技术,被当作是公平、中立的应用在司法领域;算法决策在因主观任性和客观局限而导致的问题上,往往比人类表现的更具客观和公正;但是,算法技术在决策时就一定是公正的吗?答案是否定的。一方面,算法在人工智能中是以代码的形式,安排着机器在运算、处理问题时的顺序和步骤,在决策中具有大脑般的作用,体现着算法设计者的目的和思想,所以它本质上也不可能是完全客观、中立。另一方面,算法在汇编结束到完成仍需要不断地进行数据训练,以保证算法的不断完善;但若是采集的数据不具备客观性的话,人工智能在应用中就不免会出现偏差,产生偏见。

一、算法决策对司法的风险

在人工智能算法深度学习中,算法在决策过程中会产生“算法黑箱”这一特点,即使是算法设计者本人也不知道这一决策时如何产生的,想要找出问题根源亦是很难,那么这一特点就会出现这样一种情况,出现问题后,应当如何归责,技术上的难题直接导致法律责任无法归咎的风险。算法决策的偏见会削弱司法人员的主体地位。现在,各类司法辅助办案系统被普遍采纳应用,这一系统辅助过程会涉及到:自动对证据材料进行审核,类案的推送,量刑的数据参考等,人工智能逐步渗透到司法过程的各阶段;在高智能辅助系统中,辅助系统会自动根据案件的犯罪事实、相关法条、量刑情节、量刑幅度生成可供司法人员参考的文本,因为未参与案件的整个过程,只是对案件事实等进行数据化的选择、归类;该系统不会对本案件进行深刻而全面的了解;司法不是简单地对三段论的论断,亦不是机器对法律各要件的匹配,而是需要对人和社会生活情况的深刻理解;算法在运行中会进行比较,采用相似性做决策,具有差异性的就会被排除,往往看似不重要的细枝末节,却具有着关键性的作用,如若在司法过程中偏倚算法决策得出的参考文本,也就干扰了司法人员的独立判断,影响司法人员的主体地位。

二、算法决策风险之防范进路

无论从目的还是功能上来看,司法智能辅助系统都是对司法人员独立判断的辅助;智能辅助系统虽然在解决案多人少、司法腐败等问题上成效明显,但是司法人员作为司法责任主体,应当注意防止过度依赖辅助办案,在结案陈词、文书说理部分应该详细表达决策过程,这样既可以保证过程的公开透明,又可以防止出现流水线作业式的裁判文书。“算法黑箱”的存在,增加了算法决策的不透明性,带来了治理上的难度。借鉴国外的经验是:具有黑箱性质的算法系统不能被用到公共福利、公共教育、公共医疗等一系列核心公共机构领域中来;对能够被应用的司法智能系统,对其算法的设计和监管,要有法学各攸关方参与进来;对除涉密外的算法,向公众公开,方便接受公众的监督。③在算法数据训练可能受到“污染”的风险时,通过先对采用数据进行筛查,以确保算法训练所需要数据的质量。由于,数据训练算法时,数据样本越全面,数量越多,算法的结果精确度就越高;在众多的样本数据中,通常会混入社会中既有的一些歧视;因此,在采用数据之前,应当对数据做符合法律和道德伦理的价值检测,对可能影响算法的歧视数据进行校正。

三、余论

算法范文篇2

关键字关联规则,支持度,置信度,Apriori

1引言

关联规则挖掘就是在海量的数据中发现数据项之间的关系,是数据挖掘领域中研究的热点问题。1993年Agrawal等人[1]首先提出了交易数据库中不同商品之间的关联规则挖掘,并逐渐引起了专家、学者的重视。关联规则挖掘问题可以分为:发现频繁项目集和生成关联规则两个子问题,其中发现所有的频繁项目集是生成关联规则的基础。近年来,发现频繁项目集成为了关联规则挖掘算法研究的重点,在经典的Apriori算法的基础上提出里大量的改进算法。Savasere等[2]设计了基于划分(partition)的算法,该算法可以高度并行计算,但是进程之间的通信是算法执行时间的主要瓶颈;Park等[3]通过实验发现寻找频集主要的计算是在生成频繁2-项集上,利用这个性质Park等引入杂凑(Hash)技术来改进产生频繁2-项集的方法,该算法显著的提高了频繁2-项集的发现效率;Mannila等[4]提出:基于前一遍扫描得到的信息,对此仔细地作组合分析,可以得到一个改进的算法了。针对Mannila的思想Toivonen[5]进一步提出:先使用从数据库中抽取出来的采样得到一些在整个数据库中可能成立的规则,然后对数据库的剩余部分验证这个结果。Toivonen的算法相当简单并显著地减少了I/O代价,但是一个很大的缺点就是产生的结果不精确,存在数据扭曲(dataskew)。

上述针对经典Apriori算法的改进算法在生成频繁项目集时都需要多次扫描数据库,没有显著的减少I/O的代价。本文在分析了经典的Apriori算法的基础上,给出了一种改进的方法,该方法采用转置矩阵的策略,只扫描一次数据库即完成频繁项目集的发现,在项目集长度较大时,性能明显提高。

2Apriori算法

2.1基本概念

设I={i1,i2,…,im}是二进制文字的集合,其中的元素称为项(item)。定义交易(transaction)T为项的集合,并且TÍI,定义D为交易T的集合。设X是I中若干项的集合,如果XÍT,那么称交易T包含X。项目集中包含项的个数成为项目集长度。

关联规则是形如XÞY的蕴涵式,这里XÌI,YÌI,并且XÇY=F。

规则XÞY在交易数据库D中的支持度(support)是交易集合中包含X和Y的交易数与所有交易数之比,记为support(XÞY),即support(XÞY)=|{T:XÈYÍT,TÎD}|/|D|。

规则XÞY在交易集中的置信度(confidence)是指包含X和Y的交易数与包含X的交易数之比,记为confidence(XÞY),即confidence(XÞY)=|{T:XÈYÍT,TÎD}|/|{T:XÍT,TÎD}|。给定一个交易集D,挖掘关联规则就是找出支持度和置信度分别大于用户给定的最小支持度(minsup)和最小置信度(minconf)的关联规则。

2.2基本思想

1994年Agrawal等人在项目集格空间理论的基础上提出了用于发现频繁项目集的Apriori算法。该算法采用“逐层搜索”的迭代方法,用k-项集生成(k+1)-项集。首先,扫描数据库计算出频繁1-项集的集合(记为:L1);然后,执行下面的迭代过程计算频繁k-项集,直到生成频繁k-项集的集合(记为:Lk)为空:

①连接:Lk-1进行自连接运算,生成候选k-项集的集合(记为:Ck)。所有的频繁k-项集都包含在Ck集合中。

②剪枝:①生成的Ck是Lk的超集,扫描数据库计算Ck中每个候选项目集的支持度,支持度大于用户给定最小支持度的候选k-项目集就是频繁k-项目集。

通过上述的迭代过程,可以发现项目集I在给定数据库D中满足最小支持度的所有频繁项目集。

2.3算法分析

Apriori算法在执行“连接-剪枝”的迭代过程中,需要多次扫描数据库,如果生成的频繁项目集中含有10-项集,则需要扫描10遍数据库,增大了I/O负载。并且在迭代过程中,候选项目集合Ck是以指数速度增长的,Lk-1自连接会产生大量的候选k-项目集,例如有104个1-项集,自连接后就可以产生大约107个候选2-项集。这些都严重影响了Apriori算法的效率。

3改进的Apriori算法

3.1改进思想

Apriori算法在迭代过程中多次扫描数据库和产生大量的候选项目集形成了算法的性能瓶颈。为了提高算法的效率本文进行如下改进:

数据库D中每个交易T都有一个唯一的编号TID。定义K-项集Rk=<Xk,TIDS(Xk)>,其中Xk=(ij1,ij2,…,ijk),ij1,ij2,…,ijkÎI,j1<j2<…<jk,TIDS(Xk)是数据库中所有包含Xk的交易T的编号TID的集合,即为:TIDS(Xk)={TID:XkÍT,<TID,T>ÎD}。根据上面的定义k-项目集Rk的支持度可以表示为:support(Rk)=|TIDS(Xk)|/|D|=|{TID:XkÍT,<TID,T>ÎD}|/|D|。Rk的支持数supNum(Rk)=support(Rk)*|D|=|TIDS(Xk)|。L’k表示k-项集的集合。

改进的Apriori算法依然采用“逐层搜索”的迭代方法,迭代过程的“连接-剪枝”运算定义如下:

①连接:设两个(k-1)-项集:L’k-1(i)=<Xk-1,TIDS(Xk-1)>ÎL’k-1,L’k-1(j)=<Yk-1,TIDS(Yk-1)>ÎL’k-1,i<j。如果Xk-1和Yk-1的前k-2项相等,即:Xk-1[k-2]≡Yk-1[k-2],则(k-1)-项集连接:L’k-1(i)∞L’k-1(j)=<Xk-1

∪Yk-1,TIDS(Xk-1)∩TIDS(Yk-1)>=<Xk,TIDS(Xk)>=RkÎL’k;否则,不进行连接运算,因为产生的结果不是重复,就是非频繁项目集,这样可减少计算量。

②剪枝:计算k-项集的支持数,根据上面的定义supNum(Rk)=|TIDS(Xk)|,该计算过程不需要再扫描数据库,避免了I/O操作,提高了算法的效率。如果supNum(Rk)≥minSupNum,则<Xk,|TIDS(Xk)|>ÎL;否则,从集合L’k中删除Rk。

3.2改进的算法描述

输入:数据库D,最小支持数minSupNum

输出:D中的频繁项目集L

算法描述:

①L’1=findFrequentOneItemSets(D);//扫描数据库D生成1-项集的集合L’1。

②foreachOneItemSet<X1,TIDS(X1)>ÎL’1//生成频繁1-项集的集合

if(|TIDS(X1)|≥minSupNum)

L=L∪{<X1,|TIDS(X1)|>};

else

L’1=L’1-{<X1,TIDS(X1)>};

③for(k=2;L’k-1≠Ф;k++)

L’k=L’k-1∞L’k-1;

Foreachk_ItemSet<Xk,TIDS(Xk)>ÎL’k

if(|TIDS(Xk)|≥minSupNum)

L=L∪{<Xk,|TIDS(Xk)|>};

else

L’k=L’k-{<Xk,TIDS(Xk)>};

④returnL;

3.3例举

设数据库D表1所示,最小支持数minSupNum=4,运行改进的算法的过程如图所示:

4总结

改进的Apriori算法,只是在生成L’1时进行了一次数据库扫描,在之后的迭代过程中不需要扫描数据库。与文献2,3,4,5中提出的改进算法相比,使用本文提出的算法大大降低了I/O负载,使得频繁项目集的发现速度大大提高,尤其是在项目集长度较大的情况下。算法的迭代过程不需要复杂的计算,项目集连接仅仅使用集合的并、交运算即可完成,使得该算法易于实现,相信该算法具有一定的理论与实用价值。

但是该算法也有不足:为了减少I/O负载,要求在第一次扫描时把所有的信息装入内存,虽然本算法对数据库进行编码,以二元组的形式存储项集,但是数据挖掘都是基于海量数据的,因此,算法运行时需要大量内存,对此将在今后的研究中进行改进。

参考文献

[1]R.Agrawal,T.Imielinski,andA.Swami.Miningassociationrulesbetweensetsofitemsinlargedatabases.ProceedingsoftheACMSIGMODConferenceonManagementofdata,pp.207-216,1993

[2]A.Savasere,E.Omiecinski,andS.Navathe.Anefficientalgorithmforminingassociationrulesinlargedatabases.Proceedingsofthe21stInternationalConferenceonVerylargeDatabase,1995

[3]J.S.Park,M.S.Chen,andP.S.Yu.Aneffectivehash-basedalgorithmforminingassociationrules.ProceedingsofACMSIGMODInternationalConferenceonManagementofData,pages175-186,SanJose,CA,May1995

[4]H.Mannila,H.Toivonen,andA.Verkamo.Efficientalgorithmfordiscoveringassociationrules.AAAIWorkshoponKnowledgeDiscoveryinDatabases,1994,pp.181-192

[5]H.Toivonen.Samplinglargedatabasesforassociationrules.Proceedingsofthe22ndInternationalConferenceonVeryLargeDatabase,Bombay,India,September1996

算法范文篇3

遗传算法的思想由来已久。早在20世纪50年代,一些生物学家就着手于计算机模拟生物的遗传系统。1967年,美国芝加哥大学的Holland,J.H.教授在研究适应系统时,进一步涉及进化演算的思考,并于1968年提出模式理论。1975年,Holland教授的专著《自然界和人工系统的适应性》问世,全面地介绍了遗传算法,为遗传算法奠定了基础[228]。此后,遗传算法无论在理论研究方面,还是实际应用方面都有了长足发展。

伴随遗传算法的发展,其独特的优越性逐渐被体现出来,且各种理论、方法都得到了进一步发展和完善。但是,遗传算法的实际应用仍然存在着缺陷,具体表现在:

遗传算法在寻优过程中易出现“早熟”、设计变量增多时效率较低以及结构分析时间长,在线功能差。为此,在实际运用中尚需改进,寻找更优秀的算子和编码方法等。目前,改进的方法也各有优劣,有对遗传算法遗传算子进行改进的,也有将遗传算法与其他方法结合起来的。编码方法有二进制编码、多值编码、实值编码、区间值编码、Delta编码等多种编码方法。在执行策略方面有如下几种方法值得注意:遗传算法与模拟退火算法的结合、遗传算法与局部优化方法的结合、并行遗传算法、共存演化遗传算法、混乱遗传算法。

遗传算法的噪声适应性问题。遗传算法主要是针对无噪声的确定性环境设计的,在应用过程中,知识的不确定性、训练样本的错误、人为因素等都可导致问题求解环境包含一个或多个噪声。事实上,噪声是不可避免的,在实际工程测量中,测量得到的静态应变常常会伴有一定的噪声。遗传算法的进化过程是通过适应度大小来进行选择、变异、交*等遗传算子操作,从而对个体进行优胜劣汰。然而在噪声环境下,目标函数或适应度带有噪声,不能反映个体真正的适应度。显然,用有噪声的适应度去进化,其结果可能会被误导。在这种情况下,遗传算法的性能如何,怎样改进,还有待深入研究。

算法范文篇4

提倡算法的多样化,有着多方面的好处:

一、有利于学生独立思考,促进学生的个性发展。

学生在计算中要想找到不同于其他同学的计算方法,就必须要努力地独立思考,而不同的学生有着不同的想法,在计算中思考的深度也不一样。我们应该尊重学生的个体差异,鼓励算法的多样化,促进学生的个性化学习,让不同的学生在数学上有不同的发展。

二、有利于因材施教,让每个学生都有充分施展的空间。

鼓励学生计算方法多样化,就为学生创设了能差异化发展的空间。这样的教学方式,让智力水平较好的学生能够想出多种不同的计算方法,促进了思维的深度和广度,让他们有了充分展示的空间。同时,也能让智力水平相对较差的学生也能着手解决问题,品尝成功的喜悦。

三、有利于培养学生之间合作与交流的能力。

学生在小组内讨论时,一个学生需要向其他的同学阐述自己的想法。为了能让其他人听懂,他首先要理顺自己的思路,然后有条理的说出来,而听的学在则在认真倾听的同时也在思考,并提出自己的问题。展示不同的算法,让每个学生都发表自己的不同观点,倾听别人的想法,有利于学生感受解决问题策略的多样性与灵活性,从中受到启发。讨论中,学会与人交流,与人合作;学会理解他人,欣赏他人。

四、有利于培养学生的创新精神和进取精神。

算法的多样化给了学生探究的空间和动力,调动了学生的学习积极性。让学生大胆陈述自己的想法,被鼓励、被肯定;让学生学会认真倾听他人的意见,还让学生学会因受启发而有所领悟,急着想说些什么……思维的火花在教室上空相互撞击、闪烁,这一切,形成了一个巨大的心理磁场,推动每一个孩子努力思考、探索、创造,享受成功的喜悦,逐步形成积极进取的良好学习心态,促进心理的健康发展。

在算法的多样化上,我们要注意以下几点:

一、不强求算法的多样化。

算法的多样化只是方法和手段,它能培养学生的思维能力和良好的学习习惯,但并不是计算教学的主要目的,不能为了多样化而多样化。算法多样化要尊重学生的独立思考,鼓励学生探索不同的方法,但并不是让每一个学生一定要掌握各种方法。每一个学生都是不同的,有的方法想不出,有的方法根本接受不了都是十分正常的。数学课程标准中明确提出:“数学教学活动必须建立在学生的认知发展水平和已有的知识经验基础之上”。“让不同的人在数学上得到不同的发展。”“数学教学要遵循学生的学习心理规律。”

二、要给学生更多独立思考的机会。

算法的多样化不是教师教给学生的,而是学生在独立思考的基础上,在讨论、交流的过程中产生的。教师要能够放手,要相信学生,让每一个学生在面对数学问题时独立思考,尽可能自己找出解决问题的方法。

三、注意算法多样化和一题多解的区别。

一题多解关注的是学生个体的发展,常常表现为少数优等生的专利;算法多样化关注的是群体意义上的每一学生个体的发展,它不要求每个学生都用几种方法解决同一个问题,优等生可以用多个方法,也可以只用一个方法,后进生可以只用一种自己的方法。这样,由于学生人人参与,都可以用自己的方法解决问题,使得每个学生都能够体验成功,树立学习信心,并且由于学生群体呈现出方法的多样化,为学生的合作交流创造了条件,有利于培养学生的合作意识。

四、注重算法多样化,但不要忘了算法的优化。

例如,在教学两位数乘两位数时,学生在探究如何计算28×12的过程中,想出了多种不同的计算方法。如转化成28×2×6、4×7×6×2、28×10+28×2等等,那么用竖式方法来计算28×12的方法还要不要侧重学习,对于这种算法要不要把它优化出来,我认为要优化。教师的任务就是要有意识地引导学生进行比较,在比较过程中学生自然而然地会选择简便的算法,这样就实现了自我优化。

怎样促进学生算法的多样化

一、尊重学生的想法,发挥学生的主体意识是算法多样化产生的土壤。

教师的方法或成人的方法多数比较成熟,比较高效,比较简约,学生的方法或儿童的方法常常比较幼稚、比较不成熟。但学生是学习的主体,学生是记忆、感悟教师的方法好,还是运用自己的想法好?我曾作过这样的调查:在教学“10以内的加减法”后,对我所任教的学生进行了统计,喜欢用教材上“几可以分成几和几”的方法的很少,绝大部分都是凭自己已有的经验来做的。而且利用自己的算法来进行计算的,明显比用教科书的方法来计算的正确率要高、速度要快。这说明了:学生自己的计算方法更贴近自己的认知水平,更容易为自己所接受。所以必须尊重学生的想法,提倡学生用自己擅长的方法计算,这是算法多样化的前提条件。

二、平等和谐的师生关系,能促进算法多样化的产生。

课堂是教学的主阵地,平等的师生关系尤为重要,只有教师和学生在平等关系的基上,在宽松和谐的学习气氛中,才能令勇于深入思考,充分发挥想象,萌发各种各样的奇思妙想。

三、合理评价,是算法多样化的关键。

算法范文篇5

(1)了解算法的含义,体会算法的思想。

(2)能够用自然语言叙述算法。

(3)掌握正确的算法应满足的要求。

(4)会写出解线性方程(组)的算法。

(5)会写出一个求有限整数序列中的最大值的算法。

教学重点算法的含义、解二元一次方程组和判断一个数为质数的算法设计。.

教学难点把自然语言转化为算法语言。.

学法与教学用具:

学法:

1、写出的算法,必须能解决一类问题(如:判断一个整数n(n>1)是否为质数;求任意一个方程的近似解;……),并且能够重复使用。

2、要使算法尽量简单、步骤尽量少。

3、要保证算法正确,且计算机能够执行,如:让计算机计算1×2×3×4×5是可以做到的,但让计算机去执行“倒一杯水”“替我理发”等则是做不到的。

教学用具:计算机,TI-voyage200图形计算器

教学过程

一、本章章头图说明

章头图体现了中国古代数学与现代计算机科学的联系,它们的基础都是“算法”。

算法作为一个名词,在中学教科书中并没有出现过,我们在基础教育阶段还没有接触算法概念。但是我们却从小学就开始接触算法,熟悉许多问题的算法。如,做四则运算要先乘除后加减,从里往外脱括弧,竖式笔算等都是算法,至于乘法口诀、珠算口诀更是算法的具体体现。广义地说,算法就是做某一件事的步骤或程序。菜谱是做菜肴的算法,洗衣机的使用说明书是操作洗衣机的算法,歌谱是一首歌曲的算法。在数学中,主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结果的解决问题的程序。

古代的计算工具:算筹与算盘.

20世纪最伟大的发明:计算机,计算机是强大的实现各种算法的工具。

例1:解二元一次方程组:

分析:解二元一次方程组的主要思想是消元的思想,有代入消元和加减消元两种消元的方法,下面用加减消元法写出它的求解过程.

解:第一步:②-①×2,得:5y=3;③

第二步:解③得;

第三步:将代入①,得.

学生探究:对于一般的二元一次方程组来说,上述步骤应该怎样进一步完善?

老师评析:本题的算法是由加减消元法求解的,这个算法也适合一般的二元一次方程组的解法。下面写出求方程组的解的算法:

例2:写出求方程组的解的算法.

解:第一步:②×a1-①×a2,得:③

第二步:解③得;

第三步:将代入①,得

利用TI-voyage200图形计算器演示:(吸引学生的注意力)

运行结果:

(其中输入a1=1,b1=-2,m1=-1,a2=2

b2=1,m2=1,当然可输入其它数值)

算法概念:

在数学上,现代意义上的“算法”通常是指可以用计算机来解决的某一类问题是程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.

说明:

1.“算法”没有一个精确化的定义,教科书只对它作了描述性的说明.

2.算法的特点:

(1)有限性:

一个算法的步骤序列是有限的,必须在有限操作之后停止,不能是无限的.

(2)确定性:

算法中的每一步应该是确定的并且能有效地执行且得到确定的结果,而不应当是模棱两可.

(3)顺序性与正确性:

算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误,才能完成问题.

(4)不唯一性:

求解某一个问题的解法不一定是唯一的,对于一个问题可以有不同的算法.

(5)普遍性:

很多具体的问题,都可以设计合理的算法去解决,如心算、计算器计算都要经过有限、事先设计好的步骤加以解决.

例题讲评:

例3、任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数做出判断.

分析:(1)质数是只能被1和自身整除的大于1的整数.

(2)要判断一个大于1的整数n是否为质数,只要根据质数的定义,用比这个整数小的数去除n,如果它只能被1和本身整除,而不能被其它整数整除,则这个数便是质数.

解:算法:

第一步:判断n是否等于2.若n=2,则n是质数;若n>2,则执行第二步.

第二步:依次从2~(n-1)检验是不是n的因数,即整除n的数.若有这样的数,则n不是质数;若没有这样的数,则n是质数.

说明:本算法是用自然语言的形式描述的.设计算法一定要做到以下要求:

(1)写出的算法必须能解决一类问题,并且能够重复使用.

(2)要使算法尽量简单、步骤尽量少.

(3)要保证算法正确,且计算机能够执行.

利用TI-voyage200图形计算器演示:(学生已经被吸引住了)

运行

例4、.用二分法设计一个求方程的近似根的算法.

分析:该算法实质是求的近似值的一个最基本的方法.

解:设所求近似根与精确解的差的绝对值不超过0.005,算法:

第一步:令.因为,所以设x1=1,x2=2.

第二步:令,判断f(m)是否为0.若是,则m为所求;若否,则继续判断大于0还是小于0.

第三步:若,则x1=m;否则,令x2=m.

第四步:判断是否成立?若是,则x1、x2之间的任意值均为满足条件的近似根;若否,则返回第二步.

说明:按以上步骤,我们将依次得到课本第4页的表1-1和图1.1-1.于是,开区间(1.4140625,1.41796875)中的实数都满足假设条件的原方程是近似根.运行结果:

练习1:

写出解方程x2-2x-3=0的一个算法。

解:算法1:

第一步:移项,得x2-2x-3=0;①

第二步:①式两边同加1并配方,得(x-1)2=4;②

第三步:②式两边开方,得x-1=±2;③

第四步:解③得x=3或x=-1。

算法2:

第一步:计算方程的判别式判断其符号△=22+4×3=16>0;

第二步:将a=1,b=-2,c=-3代入求根公式x=,

得x1=3,x2=-1

评析:比较两种算法,算法2更简单,步骤少,所以利用公式解决问题是最理想、合算的算法。因此在寻求算法的过程中,首先是利用公式。

下面设计一个求一般的一元二次方程ax2+bx+c=0的根的算法如下:

第一步:计算△=b2+4ac;

第二步:若△<0;

第三步:输出方程无实根;

第四步:若△≥0;

第五步:计算并输出方程根x1,2=。

练习2、求1×3×5×7×9×11的值,写出其算法。

第一步,先求1×3,得到结果3;

第二步,将第一步所得结果3再乘以5,得到结果15;

第三步,再将15乘以7,得到结果105;

第四步,再将105乘以9,得到945;

第五步,再将945乘以11,得到10395,即是最后结果。

评析:求解某个问题的算法不同于求解一个具体问题的方法,算法必须能够解决一类问题,并且能够重复使用;算法过程要能一步一步地执行,每一步操作必须确切,能在有限步后得出结果。

练习3、有蓝和黑两个墨水瓶,但现在却错把蓝墨水装在了黑墨水瓶中,黑墨水错装在了蓝墨水瓶中,要求将其互换,请你设计算法解决这一问题。

分析:由于两个墨水瓶中的墨水不能直接交换,故可以考虑通过引入第三个空墨水瓶的办法进行交换。

解:算法步骤如下:

第一步:取一只空的墨水瓶,设其为白色;

第二步:将黑墨水瓶中的蓝墨水装入白瓶中;

第三步:将蓝墨水瓶中的黑墨水装入黑瓶中;

第四步:将白瓶中的蓝墨水装入蓝瓶中;

第五步:交换结束。

评析:对于这种非数值性问题的算法设计问题,应当首先建立过程模型,根据过程设计步骤,完成算法。

小结

1、算法概念和算法的基本思想

(1)算法与一般意义上具体问题的解法的联系与区别;

(2)算法的五个特征。

2、利用算法的思想和方法解决实际问题,能写出一此简单问题的算法

3、两类算法问题

(1)数值性计算问题,如:解方程(或方程组),解不等式(或不等式组),套用公式判断性的问题,累加,累乘等一类问题的算法描述,可通过相应的数学模型借助一般数学计算方法,分解成清晰的步骤,使之条理化即可。

(2)非数值性计算问题,如:排序、查找、变量变换、文字处理等需先建立过程模型,通过模型进行算法设计与描述。

4、利用TI-voyage200图形计算器演示时,开始学生看,想,探究,然后模范、创新。图形计算器为学生创建一个自我发挥的平台。

作业:(课本第4页练习)

1、任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积.

解:算法步骤:

第一步:输入任意一个正实数r;

第二步:计算以r为半径的圆的面积:;

第三步:输出圆的面积S.

2、任意给定一个大于1的正整数n,设计一个算法求出n的所有因数.

解:算法步骤:

第一步:依次以2~(n-1)为除数去除n,检查余数是否为0.若是,则是n的因数;若不是,则不是n的因数;

第二步:在n的因数中加入1和n;

第三步:输出n的所有因数.

算法范文篇6

关键词:数据挖掘;聚类分析;数据库;聚类算法

随着计算机硬件和软件技术的飞速发展,尤其是数据库技术的普及,人们面临着日益扩张的数据海洋,原来的数据分析工具已无法有效地为决策者提供决策支持所需要的相关知识,从而形成一种独特的现象“丰富的数据,贫乏的知识”。数据挖掘[1]又称为数据库中知识发现(KnowledgeDiscoveryfromDatabase,KDD),它是一个从大量数据中抽取挖掘出未知的、有价值的模式或规律等知识的复杂过程。目的是在大量的数据中发现人们感兴趣的知识。

常用的数据挖掘技术包括关联分析、异类分析、分类与预测、聚类分析以及演化分析等。由于数据库中收集了大量的数据,聚类分析已经成为数据挖掘领域的重要技术之一。

1问题的提出

随着社会的发展和人们生活水平的提高,优育观念[2,3]逐渐渗透到每个家庭,小儿的生长发育越来越引起家长们的重视。中国每隔几年都要进行全国儿童营养调查,然而用手工计算的方法在大量的数据中分析出其中的特点和规律,显然是不现实的,也是不可行的。为了有效地解决这个问题,数据挖掘技术——聚类分析发挥了巨大的作用。

在数据挖掘领域,聚类算法经常遇到一些问题如聚类初始点的选择[4]、模糊因子的确定[5]等,大部分均已得到解决。现在的研究工作主要集中在为大型的数据库有效聚类分析寻找适当的方法、聚类算法对复杂分布数据和类别性数据聚类的有效性以及高维数据聚类技术等方面。本文通过对聚类分析算法的分析并重点从聚类分析的软件工具和改进的K-means算法两个方面来论证聚类分析在儿童生长发育时期中的应用。

2聚类算法分析

聚类[6]分析是直接比较各事物之间的性质,将性质相近的归为一类,将性质差别较大的归入不同的类。在医学实践中也经常需要做分类工作,如根据病人的一系列症状、体征和生化检查的结果,判断病人所患疾病的类型;或对一系列检查方法及其结果,将之划分成某几种方法适合用于甲类病的检查,另几种方法适合用于乙类病的检查,等等。聚类分析被广泛研究了许多年。基于聚类分析的工具已经被加入到许多统计分析软件包或系统中,如S-Plus、SPSS,以及SAS。

大体上,聚类算法[7]可以划分为如下几类:

(2)层次方法。该方法就是通过分解所给定的数据对象集来创建一个层次。它存在的缺陷就是在进行(组)分解或合并之后无法回溯。将循环再定位与层次方法结合起来使用常常是有效的,如BIRCH和CURE,就是基于这种组合方法设计的。

(3)基于密度的方法。只要临近区域的密度(对象或数据点的数目)超过某个阈值,就继续聚类。DBSCAN是一个有代表性的基于密度的方法。它根据一个密度阈值来控制簇的增长。

(4)基于网格的方法。基于网格方法将对象空间划分为有限数目的单元以形成网格结构。其主要优点是它的处理速度很快,其处理时间独立于数据对象的数目,只与量化空间中每一维的单元数目有关。STING就是一个典型的基于网格的方法。

(5)基于模型的方法。该方法就是为每个聚类假设一个模型,然后再去发现符合相应模型的数据对象。它根据标准统计方法并考虑到噪声或异常数据,可以自动确定聚类个数;因而它可以产生很鲁棒的聚类方法。

数据挖掘在不同领域对聚类算法提出了各自特殊的要求,表1可以给聚类算法的研究和应用提供参考[7]。

3儿童生长发育的分析

聚类分析在数据挖掘中的应用主要有以下三个方面:

(1)聚类分析能作为一个独立的工具来获得数据的分布情况,观察每个簇的特点,集中对特定的某些簇作进一步的分析。如:①聚类分析软件v1.2。此软件主要用于血型、蛋白质多态、品种聚类等方面的统计分析,可自动进行杂合度、多态信息含量、遗传距离以及聚类的计算,并可自动画出聚类图。②SPSS统计软件。SPSS软件是一种专业的统计分析软件,用于数据的各种分析,从而最终为企、事业的科学决策服务。其中采用聚类分析是理想的多变量统计技术,主要有分层聚类法和迭代聚类法。

本文通过一组儿童生长发育的数据运用SPSS工具进行分析,如表2所示。

运用SPSS工具调用K-meansCluster过程可完成由用户指定类别数的大样本资料的逐步聚类分析。逐步聚类分析就是先把被聚对象进行初始分类,然后逐步调整,得到最终分类。

为研究儿童生长发育的分期,笔者对1253名1月~7岁儿童进行了抽样调查,分别对儿童的身高(cm)、体重(kg)、胸围(cm)和坐高(cm)进行了测量。资料作如下整理:先把1月~7岁划成19个月份段,分月份算出各指标的平均值,将第1月的各指标平均值与出生时的各指标平均值比较,求出月平均增长率(%),然后第2月起的各月份指标平均值均与前一月比较,求出月平均增长率(%)(表2)。将儿童生长发育时期分为四期,所以聚类的类别数为4,从而确定四个儿童生长发育期的起止区间。

①激活数据管理窗口,定义变量名。虽然月份分组不做分析变量,但为了更直观地了解聚类结果,也将之输入数据库。

②进行统计分析,在聚类方法上选择Iterateandclassify指定初始类别中心点,按K-means算法作迭代分类。对聚类结果进行方差分析。

结果解释:首先系统根据用户的指定,按四类聚合确定初始聚类的各变量中心点,未经K-means算法迭代,其类别间距离并非最优;经迭代运算后类别间各变量中心值得到修正。

③对聚类结果的类别间距离进行方差分析。方差分析表明,类别间距离差异的概率值均小于0.001,即聚类效果好。这样,原有19类(即原有的19个月份分组)聚合成四类,第一类含原有1类,第二类含原有1类,第三类含原有2类,第四类含原有15类。具体结果系统以变量名qcl_1存于原始数据库中。

在原始数据库(图1)中,可清楚地看到聚类结果;参照专业知识,将儿童生长发育分期定为:

第一期,出生后至满月,增长率最高;

第二期,第2个月起至第3个月,增长率次之;

第三期,第3个月起至第8个月,增长率减缓;

第四期,第8个月后,增长率显著减缓。

图1逐步聚类分析的分类结果

(2)运用聚类分析软件可以很方便地对数据进行分析,利用分析的结果,在孩子生长发育时期合理安排好饮食,促进儿童健康快乐成长。同时,聚类分析可以作为其他算法(如特征和分类等)的预处理步骤,这些算法再在生成的簇上进行处理。本文以改进的K-means算法[9]为例来说明儿童生长发育时期的特征。算法描述如下:

算法:K-means。划分的K-means算法基于簇中对象的平均值。

输入:簇的数目k=4和输入n=19的表2的数据。

输出:四个簇,使平方误差准则最小。

方法:

①任意选择四个对象作为初始簇的中心;

②repeat;

③根据簇中对象的平均值,将每个对象(重新)赋给最类似的簇;

本文原文

④更新簇的平均值,即计算每个簇中对象的平均值;

⑤until不再发生变化。

在本算法中要用到以下几个定义:

(3)聚类分析也可以进行孤立点的分析。经常存在一些数据对象,它们不符合数据的一般模型,这些数据对象被称为孤立点。孤立点的分析有着广泛的应用[12,13],如欺诈检测即探询不寻常的信用卡使用或电信服务;此外,它在市场分析中可用于确定极低或极高收入的客户的消费行为、或者在医疗分析中用于发现对多种治疗方式的不寻常的反应。

4结束语

本文通过改进的K-means算法和聚类分析工具SPSS来对儿童生长发育期进行分析。

在科技发展的今天,随着信息化产业的不断发展,大量的数据迫切需要强有力的数据分析工具的出现,从而导致了数据挖掘的蓬勃发展,而聚类分析已经成为数据挖掘领域一个非常活跃的研究课题。用户当然希望聚类的结果是可解释的、可理解的和可应用的。如何选择聚类方法和正确地使用聚类算法也是很重要的,而目前所使用的聚类算法均存在某方面的缺陷,也没有统一的标准,因此如何使聚类算法成为像SQL语言那样统一、标准的语言,还有待于计算机工作者的努力。

参考文献:

[1]朱明.数据挖掘[M].合肥:中国科学技术大学出版社,2002:5-6.

[2]卫生部关于八省(自治区)婴幼儿营养健康状况调查报告[R].北京:新华出版社,2005:1-3.

[3]杭燕.体育幼儿园现代体育课程模式的探索(上)[J].学前教育文荟,2000(6):10-12.

[4]GONZALEZT.Clusteringtominimizeandmaximuminterclusterdistance[J].TheoreticalComputerScience,1985,38(2-3):293-306.

[5]PALNR,BEZDEKJC.Onclustervalidityforthefuzzyc-meansmodel[J].IEEETransactionsonFuzzySystems,1995,3(3):370-379.

[6]邵峰晶,于忠清.数据挖掘的原理与算法[M].北京:中国水利水电出版社,2003.

[7]HANJiawei,KAMBERM.Dataminingconceptsandtechniques[M].范明,孟小峰,等译.北京:机械工业出版社.

[8]马庆国.管理统计[M].北京:科学出版社,2002:3-120.

[9]WISHARTD.K-meansclusteringwithoutlierdetection:the25thAnnualConferenceoftheGermanClassificationSociety[C].Munich:UniversityofMunich,2001:14-16.

[10]左子叶,朱扬勇.基于数据挖掘聚类技术的信用评分评级[J].计算机应用与软件,2004,21(4):1-3,101.

[11]何彬彬,方涛,郭达志.基于不确定性的空间聚类[J].计算机科学,2004,31(11):196-198.

算法范文篇7

关键词:拓扑发现算法;MIB-II;Bridge-MIB;

随着网络规模的不断扩大和网络拓扑结构的日益复杂,网络管理的地位变得越来越重要,有效、可靠的网络管理已经成为网络系统正常运行的关键。OSI参考模型网络管理标准中定义了网络管理的5大功能,分别是故障管理、配置管理、性能管理、安全管理和计费管理[1],其中配置管理是进行网络管理的前提,其主要功能是网络拓扑发现和各类设备的配置信息管理。网络拓扑结构是网络中各节点之间互联关系的一种表示,拓扑结构通常被构建成一个图形,对网络拓扑进行发现是对网络管理系统最基本的功能要求,所谓拓扑发现是指通过某种算法探测和识别特定网络中的网络元素和各网络元素之间连接关系,并以字符、图形等方式将拓扑进行显示。作为配置管理的核心和资源管理的基础,完整、精确并且具备可视化友好界面的网络拓扑结构是检测网络故障、分析网络性能的基础[2]。

根据拓扑发现算法涉及的TCP/IP网络层次,一般可以将网络拓扑发现分为网络层和数据链路层拓扑发现两个层次,网络层拓扑发现主要实现网络层路由设备的探测、子网以及连接关系的发现,数据链路层拓扑发现的主要工作是二层设备与主机的探测及其连接关系的确定,好的拓扑发现算法能够快速、准确的发现网络中的三层和二层网络设备,进而确定网络拓扑[3],利用SNMP网络设备的MIB-II和Bridge-MIB管理信息库,是进行网络物理拓扑发现的常见方法,下边对基于MIB-II和Bridge-MIB的拓扑发现算法进行讨论。

1网络层设备拓扑发现

探测三层(网络层)设备最基本的方法是获取网络中路由设备的路由表(RoutingTable),路由表中记录了目标IP地址(ipRouteDest)的下一条地址(ipRouteNextHop)以及数据的传送方向等信息。支持SNMP的设备会将自己的路由表放在管理信息库(ManagemnetInformationBase,MIB)中,因此,可以通过SNMP获取远端三层设备的路由表。

根据三层网络设备SNMP的特点,设计如下拓扑发现算法:

Foreachrouterinrouter_set

{

ifrouterexsits(interfacetable){next;}

getipRouteTable;

getipAddrTableaddtointerface_table;

ForeachentryinipRouteTable

{

if(ipRouteType=indirect)

{

swapipRoutDestwithitsinterfaceifexsits(nterface_table);

if(ipRouteDestnot_in(router_set)

{

AddRoutertorouterset;

}

Addrouter->ipRouteDesttoedge_set;

}

}}

算法通过遍历和分析三层设备的MIB,确定设备类型和设备间的连接关系,最后确定三层设备网络拓扑结构,使用该算法对某网络中运行拓扑发现,结果如图1所示。

2数据链路层设备拓扑发现

二层(数据链路层)设备的探测是在三层设备探测的基础上增加路由器到交换机、交换机到交换机、交换机到主机之间的连接关系。网络中的交换机同时负责维护自己的生成树状态表(SpanningTreeProtocol,STP)和MAC地址转发表(ForwardData-Base,FDB),并保存在标准SNMPv2-SMI(StructureofManagementInformation,管理信息结构)中。

二层网络拓扑发现的复杂性在于以太网交换机等设备的透明性。邻居设备交换信息主要通过生成树协议(SpanningTreeProtocol,STP)实现。交换机保留MAC地址和接口状态(网内主机的MAC地址与交换机端口的对应关系)的主要载体是MAC转发表(FDB),FDB可以通过SNMP的Bridge-MIB来访问。可以简单的通过Bridge-MIB计算得出设备之间的物理连接的关系,但由于Bridge-MIB存在时间老化、某些二层设备未配置管理IP导致网管无法访问以及设备学习不全等情况,导致很难通过计算得到一张精确的拓扑结构,这些问题需要采用特有的算法、特定技术来解决[4]。根据数据链路层网络设备MIB-II及Bridge-MIB的特点,基本算法描述如下:

Foreachswitchinswitch_set

{

getdot1dTpFdbTable;

ifipAddisaswitch&isonlyiponthatport

{

drawedgebetweenthem;

}

}

由于二层网络中还存在着哑设备、集线器等不可网管的设备,因此该算法对设备的发现还不够完整,还需使用直接连接定理和间接连接定理进行优化,算法如下:

ForeachSinST

{

Foreach''''x''''inPT(S)

{

ForeachEiinPAT(S,PT)

{

ForeachEkinPAT(S,PT)otherthanEi

{

If(EkdisconnectsSandEi)

{//(S)x-a(Ei)b-y(Ek)

deleteEkfromSandSfromEk;

deletePAT(Ek,y'''')fromPAT(S,x);

deletePAT(s.x'''')fromPAT(Ek,y);

applysameproceduretoallentriesinPAT(Ek,y'''')andPAT(S,x'''');

}

}

}

}}

拓扑发现结果如图2所示。

算法范文篇8

第一条根据《中华人民共和国预算法》(以下简称预算法),制定本条例。

第二条县级以上地方政府的派出机关,根据本级政府授权进行预算管理活动,但是不作为一级预算。

第三条预算法第四条第一款所称“中央各部门”,是指与财政部直接发生预算缴款、拨款关系的国家机关、军队、政党组织和社会团体;所称“直属单位”,是指与财政部直接发生预算缴款、拨款关系的企业和事业单位。

第四条预算法第五条第三款所称“本级各部门”,是指与本级政府财政部门直接发生预算缴款、拨款关系的地方国家机关、政党组织和社会团体;所称“直属单位”,是指与本级政府财政部门直接发生预算缴款、拨款关系的企业和事业单位。

第五条各部门预算由本部门所属各单位预算组成。本部门机关经费预算,应当纳入本部门预算。

第六条预算法第八条所称“中央和地方分税制”,是指在划分中央与地方事权的基础上,确定中央与地方财政支出范围,并按税种划分中央与地方预算收入的财政管理体制。

分税制财政管理体制的具体内容和实施办法,按照国务院的有关规定执行。

第七条县级以上地方各级政府应当根据中央和地方分税制的原则和上级政府的有关规定,确定本级政府对下级政府的财政管理体制。

第八条预算收入和预算支出以人民币元为计算单位。预算收支以外国货币收纳和支付的,按照中国人民银行公布的当日人民币基准汇价折算。

第二章预算收支范围

第九条预算法第十九条第二款所称“依照规定应当上缴的国有资产收益”,是指各部门和各单位占有、使用和依法处分境内外国有资产产生的收益,按照国家有关规定应当上缴预算的部分。

预算法第十九条第二款所称“专项收入”,是指根据特定需要由国务院批准或者经国务院授权由财政部批准,设置、征集和纳入预算管理、有专项用途的收入。

第十条预算法第十九条第三款所称“经济建设支出”,包括用于经济建设的基本建设投资支出,支持企业的挖潜改造支出,拨付的企业流动资金支出,拨付的生产性贷款贴息支出,专项建设基金支出,支持农业生产支出以及其他经济建设支出。

预算法第十九条第三款所称“事业发展支出”,是指用于教育、科学、文化、卫生、体育、工业、交通、商业、农业、林业、环境保护、水利、气象等方面事业的支出,具体包括公益性基本建设支出、设备购置支出、人员费用支出、业务费用支出以及其他事业发展支出。

第十一条预算法第二十条第一款所称“中央预算收入”,是指按照分税制财政管理体制,纳入中央预算、地方不参与分享的收入,包括中央本级收入和地方按照规定向中央上解的收入。

预算法第二十条第一款所称“地方预算收入”,是指按照分税制财政管理体制,纳入地方预算、中央不参与分享的收入,包括地方本级收入和中央按照规定返还或者补助地方的收入。

预算法第二十条第一款所称“中央和地方预算共享收入”,是指按照分税制财政管理体制,中央预算和地方预算对同一税种的收入,按照一定划分标准或者比例分享的收入。

第十二条预算法第二十条第二款所称“中央预算支出”,是指按照分税制财政管理体制,由中央财政承担并列入中央预算的支出,包括中央本级支出和中央返还或者补助地方的支出。

预算法第二十条第二款所称“地方预算支出”,是指按照分税制财政管理体制,由地方财政承担并列入地方预算的支出,包括地方本级支出和地方按照规定上解中央的支出。

第十三条地方各级预算上下级之间有关收入和支出项目的划分以及上解、返还或者补助的具体办法,由上级地方政府确定,并报本级人民代表大会常务委员会备案。

第十四条经国务院批准设立的专用基金应当实行预算管理;尚未纳入预算管理的,应当逐步纳入预算管理。

第三章预算编制

第十五条预算法第二十四条所称“预算草案”,是指各级政府、各部门、各单位编制的未经法定程序审查和批准的预算收支计划。

第十六条各级政府编制年度预算草案的依据:

(一)法律、法规;

(二)国民经济和社会发展计划、财政中长期计划以及有关的财政经济政策;

(三)本级政府的预算管理职权和财政管理体制确定的预算收支范围;

(四)上一年度预算执行情况和本年度预算收支变化因素;

(五)上级政府对编制本年度预算草案的指示和要求。

第十七条各部门、各单位编制年度预算草案的依据:

(一)法律、法规;

(二)本级政府的指示和要求以及本级政府财政部门的部署;

(三)本部门、本单位的职责、任务和事业发展计划;

(四)本部门、本单位的定员定额标准;

(五)本部门、本单位上一年度预算执行情况和本年度预算收支变化因素。

第十八条中央预算的编制内容:

(一)本级预算收入和支出;

(二)上一年度结余用于本年度安排的支出;

(三)返还或者补助地方的支出;

(四)地方上解的收入。

中央财政本年度举借的国内外债务和还本付息数额应当在本级预算中单独列示。

第十九条地方各级政府预算的编制内容:

(一)本级预算收入和支出;

(二)上一年度结余用于本年度安排的支出;

(三)上级返还或者补助的收入;

(四)返还或者补助下级的支出;

(五)上解上级的支出;

(六)下级上解的收入。

第二十条各级政府预算按照复式预算编制,分为政府公共预算、国有资产经营预算、社会保障预算和其他预算。

复式预算的编制办法和实施步骤,由国务院另行规定。

第二十一条各级政府预算中,预备费设置的比例由本级政府在预算法第三十二条规定的幅度内确定。

第二十二条预算法第三十三条所称“预算周转金”,是指各级政府为调剂预算年度内季节性收支差额,保证及时用款而设置的周转资金。各级政府预算周转金从本级政府预算的结余中设置和补充,其额度应当逐步达到本级政府预算支出总额的4%。

第二十三条各级政府预算的上年度专项结余,应当用于上年度结转项目的支出;上年度净结余,应当用于补充预算周转金和下年度需要安排的预算支出。

第二十四条国务院于每年11月10日前向省、自治区、直辖市政府和中央各部门下达编制下一年度预算草案的指示,提出编制预算草案的原则和要求。

财政部根据国务院编制下一年度预算草案的指示,部署编制预算草案的具体事项,规定预算收支科目、报表格式、编报方法,并安排财政收支计划。

第二十五条中央各部门应当根据国务院的指示和财政部的部署,结合本部门的具体情况,提出编制本部门预算草案的要求,具体布置所属各单位编制预算草案。

中央各部门负责本部门所属各单位预算草案的审核,并汇总编制本部门的预算草案,于每年12月10日前报财政部审核。

第二十六条省、自治区、直辖市政府根据国务院的指示和财政部的部署,结合本地区的具体情况,提出本行政区域编制预算草案的要求。

第二十七条县级以上地方各级政府财政部门审核本级各部门的预算草案,编制本级政府预算草案,汇编本级总预算草案,经本级政府审定后,按照规定期限报上一级政府。

省、自治区、直辖市政府财政部门汇总的本级总预算草案,应当于下一年1月10日前报财政部。

第二十八条财政部审核中央各部门的预算草案,编制中央预算草案;汇总地方预算草案,汇编中央和地方预算草案。

第二十九条县级以上各级政府财政部门审核本级各部门的预算草案时,发现不符合编制预算要求的,应当予以纠正;汇编本级总预算时,发现下级政府预算草案不符合国务院和本级政府编制预算要求的,应当及时向本级政府报告,由本级政府予以纠正。

第三十条中央预算草案经全国人民代表大会批准后,为当年中央预算。财政部应当自全国人民代表大会批准中央预算之日起30日内,批复中央各部门预算。中央各部门应当自财政部批复本部门预算之日起15日内,批复所属各单位预算。

第三十一条地方各级政府预算草案经本级人民代表大会批准后,为当年本级政府预算。县级以上地方各级政府财政部门应当自本级人民代表大会批准本级政府预算之日起30日内,批复本级各部门预算。地方各部门应当自本级财政部门批复本部门预算之日起15日内,批复所属各单位预算。

第三十二条依照本条例第三十条、第三十一条规定批复的预算,为当年部门预算、单位预算。

第四章预算执行

第三十三条政府财政部门负责预算执行的具体工作,主要任务是:

(一)研究落实财政税收政策的措施,支持经济和社会的健康发展;

(二)制定组织预算收入和管理预算支出的制度和办法;

(三)督促各预算收入征收部门、各预算缴款单位完成预算收入任务;

(四)根据年度支出预算和季度用款计划,合理调度、拨付预算资金,监督检查各部门、各单位管好用好预算资金,节减开支,提高效率;

(五)指导和监督各部门、各单位建立健全财务制度和会计核算体系,按照规定使用预算资金;

(六)编报、汇总分期的预算收支执行数字,分析预算收支执行情况,定期向本级政府和上一级政府财政部门报告预算执行情况,并提出增收节支的建议;

(七)协调预算收入征收部门、国库和其他有关部门的业务工作。

第三十四条预算法第四十四条所称“上一年同期的预算支出数额”,是指上一年度同期预算安排用于各部门、各单位正常运转的人员经费、业务经费等必需的支出数额。

第三十五条各级财政、税务、海关等预算收入征收部门,必须依照有关法律、行政法规和财政部的有关规定,积极组织预算收入,按照财政管理体制的规定及时将预算收入缴入中央国库和地方国库;未经财政部批准,不得将预算收入存入在国库外设立的过渡性帐户。

各项预算收入的减征、免征或者缓征,必须按照有关法律、行政法规和财政部的有关规定办理。任何单位和个人不得擅自决定减征、免征、缓征应征的预算收入。

第三十六条一切有预算收入上缴任务的部门和单位,必须依照有关法律、行政法规和财政部的有关规定,将应当上缴的预算收入,按照规定的预算级次、预算科目、缴库方式和期限缴入国库,不得截留、占用、挪用或者拖欠。

第三十七条政府财政部门应当加强对预算拨款的管理,并遵循下列原则:

(一)按照预算拨款,即按照批准的年度预算和用款计划拨款,不得办理无预算、无用款计划、超预算、超计划的拨款,不得擅自改变支出用途;

(二)按照规定的预算级次和程序拨款,即根据用款单位的申请,按照用款单位的预算级次和审定的用款计划,按期核拨,不得越级办理预算拨款;

(三)按照进度拨款,即根据各用款单位的实际用款进度和国库库款情况拨付资金。

第三十八条各级政府、各部门、各单位应当加强对预算支出的管理,严格执行预算和财政制度,不得擅自扩大支出范围、提高开支标准;严格按照预算规定的支出用途使用资金;建立健全财务制度和会计核算体系,按照标准考核、监督,提高资金使用效益。

第三十九条财政部负责制定与预算执行有关的财务会计制度。各部门、各单位应当按照政府财政部门的要求,加强对预算收入和预算支出的管理核算。

第四十条国库是办理预算收入的收纳、划分、留解和库款支拨的专门机构。国库分为中央国库和地方国库。

中央国库业务由中国人民银行经理。未设中国人民银行分支机构的地区,由中国人民银行商财政部后,委托有关银行办理。

地方国库业务由中国人民银行分支机构经理。未设中国人民银行分支机构的地区,由上级中国人民银行分支机构商有关的地方政府财政部门后,委托有关银行办理。

具备条件的乡、民族乡、镇,应当设立国库。具体条件和标准由省、自治区、直辖市政府财政部门确定。

第四十一条中央国库业务应当接受财政部的指导和监督,对中央财政负责。

地方国库业务应当接受本级政府财政部门的指导和监督,对地方财政负责。

省、自治区、直辖市制定的地方国库业务规程应当报财政部和中国人民银行备案。

第四十二条各级国库应当依照有关法律、行政法规和财政部、中国人民银行的有关规定,加强对国库业务的管理,及时准确地办理预算收入的收纳、划分、留解和预算支出的拨付。

各级国库和有关银行必须遵守国家有关预算收入缴库的规定,不得延解、占压应当缴入国库的预算收入和国库库款。

第四十三条各级国库必须凭本级政府财政部门签发的拨款凭证于当日办理库款拨付,并将款项及时转入用款单位的存款帐户。

各级国库和有关银行不得占压财政部门拨付的预算资金。

第四十四条预算法第四十八条第四款所称“以其他方式支配已入国库的库款”,是指部门、单位和个人未经本级政府财政部门同意,调拨、周转、冻结、扣拨、退付已入国库的库款。

第四十五条中央预算收入、中央和地方预算共享收入退库的办法,由财政部制定。地方预算收入退库的办法,由省、自治区、直辖市政府财政部门制定。

各级预算收入退库的审批权属于本级政府财政部门。中央预算收入、中央和地方预算共享收入的退库,由财政部或者财政部授权的机构批准。地方预算收入的退库,由地方政府财政部门或者其授权的机构批准。具体退库程序按照财政部的有关规定办理。

办理预算收入退库,应当直接退给申请单位或者申请个人,按照国家规定用途使用。任何部门、单位和个人不得截留、挪用退库款项。

第四十六条各级政府应当加强对本级国库的管理和监督,各级政府财政部门负责协调本级预算收入征收部门与国库的业务工作。

第四十七条各级政府依据法定权限作出的决定和规定的行政措施,凡涉及财政减收增支的,应当在预算批准前提出并在预算中作出相应安排。在预算执行中一般不制定新的减收增支政策和措施;确需制定的,应当采取相应的增收节支措施。

第四十八条国务院各部门制定的规章,凡涉及减免应缴预算收入,设立和改变收费项目,罚没财物处理,企业成本、费用开支标准和范围,国有资产处置、收益分配,会计核算以及行政事业经费开支标准的,必须符合国家统一的规定。

第四十九条地方政府依据法定权限制定的规章和规定的行政措施,不得涉及减免中央预算收入、中央和地方预算共享收入,不得影响中央预算收入、中央和地方预算共享收入的征收;违反规定的,有关预算收入征收部门有权拒绝执行,并应当向上级预算收入征收部门和财政部报告。

第五十条各级政府应当加强对预算工作的领导,定期听取财政部门有关预算执行情况的汇报,研究解决预算执行中出现的问题。

第五十一条政府财政部门有权对本级各部门及其所属各单位的预算执行进行监督检查,对各部门预算收支的情况和效果进行考核。

政府财政部门有权对本级各预算收入征收部门征收预算收入的情况进行监督检查,对擅自减征、免征、缓征及退还预算收入的,责令改正。

第五十二条政府财政部门应当每月向本级政府报告预算执行情况,具体报告内容和方式由本级政府规定。

第五十三条省、自治区、直辖市政府财政部门应当按照下列期限和方式向财政部报告本行政区域预算执行情况:

(一)预算收支旬报,按照财政部规定的内容编制,于每旬终了后3日内报送财政部;

(二)预算收支月报,按照财政部规定的内容编制,于每月终了后5日内报送财政部;

(三)每月预算收支执行情况文字说明材料,于每月终了后10日内报送财政部;每季预算收支执行情况的全面分析材料于季度终了后15日内报送财政部;

(四)年报即年度决算的编报事项,依照预算法和本条例的有关规定执行。

设区的市、自治州政府和县级政府的财政部门和乡、民族乡、镇政府向上一级政府财政部门编报预算收支执行情况的内容和报送期限,由上一级政府财政部门规定。

第五十四条各级财政、税务、海关等预算收入征收部门应当每月按照财政部门规定的期限和要求,向财政部门和上级主管部门报送有关预算收入计划执行情况,并附说明材料。

第五十五条中央国库与地方国库应当按照有关规定向财政部门编报预算收入入库、解库及库款拨付情况的日报、旬报、月报和年报。

第五十六条政府财政部门、预算收入征收部门和国库应当建立健全相互之间的预算收入对帐制度,在预算执行中按月、按年核对预算收入的收纳及库款拨付情况,保证预算收入的征收入库和库存金额准确无误。

第五十七条各部门依照有关法律、行政法规和国家有关规定,对所属各单位的预算执行情况,进行监督检查。

第五十八条各部门应当按照本级政府财政部门规定的期限,向本级政府财政部门报送本部门有关预算收支、企业缴款完成情况等报表和文字说明材料。

第五十九条政府财政部门对要求追加预算支出、减少预算收入的事项应当严格审核;对需要动用预备费的,必须经本级政府批准。

第五章预算调整

第六十条预算调整方案由政府财政部门负责具体编制。预算调整方案应当列明调整的原因、项目、数额、措施及有关说明,经本级政府审定后,提请本级人民代表大会常务委员会审查和批准。

第六十一条接受上级返还或者补助的地方政府,应当按照上级政府规定的用途使用款项,不得擅自改变用途。

政府有关部门以本级预算安排的资金拨付给下级政府有关部门的专款,必须经本级政府财政部门同意并办理预算划转手续。

第六十二条各部门、各单位的预算支出,必须按照本级政府财政部门批复的预算科目和数额执行,不得挪用;确需作出调整的,必须经本级政府财政部门同意。

第六十三条年度预算确定后,企业、事业单位改变隶属关系,引起预算级次和关系变化的,应当在改变财务关系的同时,相应办理预算划转。

第六章决算

第六十四条预算法第五十九条所称“决算草案”,是指各级政府、各部门、各单位编制的未经法定程序审查和批准的预算收支的年度执行结果。

第六十五条财政部应当在每年第四季度部署编制决算草案的原则、要求、方法和报送期限,制发中央各部门决算、地方决算及其他有关决算的报表格式。

县级以上地方政府财政部门根据财政部的部署,部署编制本级政府各部门和下级政府决算草案的原则、要求、方法和报送期限,制发本级政府各部门决算、下级政府决算及其他有关决算的报表格式。

第六十六条地方政府财政部门根据上级政府财政部门的部署,制定本行政区域决算草案和本级各部门决算草案的具体编制办法。

各部门根据本级政府财政部门的部署,制定所属各单位决算草案的具体编制办法。

第六十七条政府财政部门、各部门、各单位在每一预算年度终了时,应当清理核实全年预算收入、支出数字和往来款项,做好决算数字的对帐工作。不得把本年度的收入和支出转为下年度的收入和支出,不得把下年度的收入和支出列为本年度的收入和支出;不得把预算内收入和支出转为预算之外,不得随意把预算外收入和支出转为预算之内。

决算各项数字应当以经核实的基层单位汇总的会计数字为准,不得以估计数字替代,不得弄虚作假。

第六十八条各单位应当按照主管部门的布置,认真编制本单位决算草案,在规定期限内上报。

各部门在审核汇总所属各单位决算草案基础上,连同本部门自身的决算收入和支出数字,汇编成本部门决算草案并附决算草案详细说明,经部门行政领导签章后,在规定期限内报本级政府财政部门审核。

第六十九条各级预算收入征收部门应当按照财政部门的要求,及时编报收入年报及有关资料。

第七十条财政部应当根据中央各部门决算草案汇总编制中央决算草案,报国务院审定后,由国务院提请全国人民代表大会常务委员会审查和批准。

县级以上地方各级政府财政部门根据本级各部门决算草案汇总编制本级决算草案,报本级政府审定后,由本级政府提请本级人民代表大会常务委员会审查和批准。

乡、民族乡、镇政府根据财政部门提供的年度预算收入和支出的执行结果,编制本级决算草案,提请本级人民代表大会审查和批准。

第七十一条对于年度预算执行中上下级财政之间按照规定需要清算的事项,应当在决算时办理结算。

第七十二条县级以上各级政府决算草案经本级人民代表大会常务委员会批准后,本级政府财政部门应当自批准之日起20日内向本级各部门批复决算。各部门应当自本级政府财政部门批复本部门决算之日起15日内向所属各单位批复决算。

第七十三条县级以上地方各级政府应当自本级人民代表大会常务委员会批准本级政府决算之日起30日内,将本级政府决算及下一级政府上报备案的决算汇总,报上一级政府备案。

第七章监督

第七十四条县级以上各级政府应当接受本级人民代表大会及其常务委员会对预算执行情况和决算的监督,乡级人民政府应当接受本级人民代表大会对预算执行情况和决算的监督;按照本级人民代表大会或其常务委员会的要求,报告预算执行情况;认真研究处理本级人民代表大会代表或者常务委员会组成人员有关改进预算管理的建议、批评和意见,并及时答复。

第七十五条各级政府应当加强对下级政府预算执行的监督,对下级政府在预算执行中违反法律、行政法规和国家方针政策的行为,依法予以制止和纠正;对本级预算执行中出现的问题,及时采取处理措施。

下级政府应当接受上级政府对预算执行的监督;根据上级政府的要求,及时提供资料,如实反映情况,不得隐瞒、虚报;严格执行上级政府作出的有关决定,并将执行结果及时上报。

第七十六条各部门及其所属各单位应当接受本级财政部门有关预算的监督检查;按照本级财政部门的要求,如实提供有关预算资料;执行本级财政部门提出的检查意见。

第七十七条各级审计机关应当依照《中华人民共和国审计法》以及有关法律、行政法规的规定,对本级预算执行情况,对本级各部门和下级政府预算的执行情况和决算,进行审计监督。

第八章附则

第七十八条预算法第七十四条所称“擅自动用国库库款或者擅自以其他方式支配已入国库的库款”,是指:

(一)预算收入征收部门不经政府财政部门或者政府财政部门授权的机构同意退库的;

(二)预算收入征收部门将所收税款和其他预算收入存入在国库之外设立的过渡性帐户、经费帐户和其他帐户的;

(三)经理国库业务的银行未经有关政府财政部门同意,动用国库库款或者办理退库的;

(四)经理国库业务的银行违反规定将国库库款挪作他用的;

(五)不及时收纳、留解预算收入,或者延解、占压国库库款的;

算法范文篇9

(1)了解算法的含义,体会算法的思想。

(2)能够用自然语言叙述算法。

(3)掌握正确的算法应满足的要求。

(4)会写出解线性方程(组)的算法。

(5)会写出一个求有限整数序列中的最大值的算法。

【教学重点】算法的含义、解二元一次方程组和判断一个数为质数的算法设计。.

【教学难点】把自然语言转化为算法语言。.

【学法与教学用具】:

学法:

1、写出的算法,必须能解决一类问题(如:判断一个整数n(n>1)是否为质数;求任意一个方程的近似解;……),并且能够重复使用。

2、要使算法尽量简单、步骤尽量少。

3、要保证算法正确,且计算机能够执行,如:让计算机计算1×2×3×4×5是可以做到的,但让计算机去执行“倒一杯水”“替我理发”等则是做不到的。

教学用具:计算机,TI-voyage200图形计算器

【教学过程】

一、本章章头图说明

章头图体现了中国古代数学与现代计算机科学的联系,它们的基础都是“算法”。

算法作为一个名词,在中学教科书中并没有出现过,我们在基础教育阶段还没有接触算法概念。但是我们却从小学就开始接触算法,熟悉许多问题的算法。如,做四则运算要先乘除后加减,从里往外脱括弧,竖式笔算等都是算法,至于乘法口诀、珠算口诀更是算法的具体体现。广义地说,算法就是做某一件事的步骤或程序。菜谱是做菜肴的算法,洗衣机的使用说明书是操作洗衣机的算法,歌谱是一首歌曲的算法。在数学中,主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结果的解决问题的程序。

古代的计算工具:算筹与算盘.

20世纪最伟大的发明:计算机,计算机是强大的实现各种算法的工具。

例1:解二元一次方程组:

分析:解二元一次方程组的主要思想是消元的思想,有代入消元和加减消元两种消元的方法,下面用加减消元法写出它的求解过程.

解:第一步:②-①×2,得:5y=3;③

第二步:解③得;

第三步:将代入①,得.

学生探究:对于一般的二元一次方程组来说,上述步骤应该怎样进一步完善?

老师评析:本题的算法是由加减消元法求解的,这个算法也适合一般的二元一次方程组的解法。下面写出求方程组的解的算法:

例2:写出求方程组的解的算法.

解:第一步:②×a1-①×a2,得:③

第二步:解③得;

第三步:将代入①,得

利用TI-voyage200图形计算器演示:(吸引学生的注意力)

运行结果:

(其中输入a1=1,b1=-2,m1=-1,a2=2

b2=1,m2=1,当然可输入其它数值)

算法概念:

在数学上,现代意义上的“算法”通常是指可以用计算机来解决的某一类问题是程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.

说明:

1.“算法”没有一个精确化的定义,教科书只对它作了描述性的说明.

2.算法的特点:

(1)有限性:

一个算法的步骤序列是有限的,必须在有限操作之后停止,不能是无限的.

(2)确定性:

算法中的每一步应该是确定的并且能有效地执行且得到确定的结果,而不应当是模棱两可.

(3)顺序性与正确性:

算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误,才能完成问题.

(4)不唯一性:

求解某一个问题的解法不一定是唯一的,对于一个问题可以有不同的算法.

(5)普遍性:

很多具体的问题,都可以设计合理的算法去解决,如心算、计算器计算都要经过有限、事先设计好的步骤加以解决.

例题讲评:

例3、任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数做出判断.

分析:(1)质数是只能被1和自身整除的大于1的整数.

(2)要判断一个大于1的整数n是否为质数,只要根据质数的定义,用比这个整数小的数去除n,如果它只能被1和本身整除,而不能被其它整数整除,则这个数便是质数.

解:算法:

第一步:判断n是否等于2.若n=2,则n是质数;若n>2,则执行第二步.

第二步:依次从2~(n-1)检验是不是n的因数,即整除n的数.若有这样的数,则n不是质数;若没有这样的数,则n是质数.

说明:本算法是用自然语言的形式描述的.设计算法一定要做到以下要求:

(1)写出的算法必须能解决一类问题,并且能够重复使用.

(2)要使算法尽量简单、步骤尽量少.

(3)要保证算法正确,且计算机能够执行.

利用TI-voyage200图形计算器演示:(学生已经被吸引住了)

运行

例4、.用二分法设计一个求方程的近似根的算法.

分析:该算法实质是求的近似值的一个最基本的方法.

解:设所求近似根与精确解的差的绝对值不超过0.005,算法:

第一步:令.因为,所以设x1=1,x2=2.

第二步:令,判断f(m)是否为0.若是,则m为所求;若否,则继续判断大于0还是小于0.

第三步:若,则x1=m;否则,令x2=m.

第四步:判断是否成立?若是,则x1、x2之间的任意值均为满足条件的近似根;若否,则返回第二步.

说明:按以上步骤,我们将依次得到课本第4页的表1-1和图1.1-1.于是,开区间(1.4140625,1.41796875)中的实数都满足假设条件的原方程是近似根.运行结果:

练习1:

写出解方程x2-2x-3=0的一个算法。

解:算法1:

第一步:移项,得x2-2x-3=0;①

第二步:①式两边同加1并配方,得(x-1)2=4;②

第三步:②式两边开方,得x-1=±2;③

第四步:解③得x=3或x=-1。

算法2:

第一步:计算方程的判别式判断其符号△=22+4×3=16>0;

第二步:将a=1,b=-2,c=-3代入求根公式x=,

得x1=3,x2=-1

评析:比较两种算法,算法2更简单,步骤少,所以利用公式解决问题是最理想、合算的算法。因此在寻求算法的过程中,首先是利用公式。

下面设计一个求一般的一元二次方程ax2+bx+c=0的根的算法如下:

第一步:计算△=b2+4ac;

第二步:若△<0;

第三步:输出方程无实根;

第四步:若△≥0;

第五步:计算并输出方程根x1,2=。

练习2、求1×3×5×7×9×11的值,写出其算法。

第一步,先求1×3,得到结果3;

第二步,将第一步所得结果3再乘以5,得到结果15;

第三步,再将15乘以7,得到结果105;

第四步,再将105乘以9,得到945;

第五步,再将945乘以11,得到10395,即是最后结果。

评析:求解某个问题的算法不同于求解一个具体问题的方法,算法必须能够解决一类问题,并且能够重复使用;算法过程要能一步一步地执行,每一步操作必须确切,能在有限步后得出结果。

练习3、有蓝和黑两个墨水瓶,但现在却错把蓝墨水装在了黑墨水瓶中,黑墨水错装在了蓝墨水瓶中,要求将其互换,请你设计算法解决这一问题。

分析:由于两个墨水瓶中的墨水不能直接交换,故可以考虑通过引入第三个空墨水瓶的办法进行交换。

解:算法步骤如下:

第一步:取一只空的墨水瓶,设其为白色;

第二步:将黑墨水瓶中的蓝墨水装入白瓶中;

第三步:将蓝墨水瓶中的黑墨水装入黑瓶中;

第四步:将白瓶中的蓝墨水装入蓝瓶中;

第五步:交换结束。

评析:对于这种非数值性问题的算法设计问题,应当首先建立过程模型,根据过程设计步骤,完成算法。

小结

1、算法概念和算法的基本思想

(1)算法与一般意义上具体问题的解法的联系与区别;

(2)算法的五个特征。

2、利用算法的思想和方法解决实际问题,能写出一此简单问题的算法

3、两类算法问题

(1)数值性计算问题,如:解方程(或方程组),解不等式(或不等式组),套用公式判断性的问题,累加,累乘等一类问题的算法描述,可通过相应的数学模型借助一般数学计算方法,分解成清晰的步骤,使之条理化即可。

(2)非数值性计算问题,如:排序、查找、变量变换、文字处理等需先建立过程模型,通过模型进行算法设计与描述。

4、利用TI-voyage200图形计算器演示时,开始学生看,想,探究,然后模范、创新。图形计算器为学生创建一个自我发挥的平台。

作业:(课本第4页练习)

1、任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积.

解:算法步骤:

第一步:输入任意一个正实数r;

第二步:计算以r为半径的圆的面积:;

第三步:输出圆的面积S.

2、任意给定一个大于1的正整数n,设计一个算法求出n的所有因数.

解:算法步骤:

第一步:依次以2~(n-1)为除数去除n,检查余数是否为0.若是,则是n的因数;若不是,则不是n的因数;

第二步:在n的因数中加入1和n;

第三步:输出n的所有因数.

算法范文篇10

通常的排序算法在空间和时间复杂度一定的情况下的时间开销主要是关键字之间的比较和记录的移动。基于计数排序的查找算法(Count-Search)的实现在整个过程无需进行数据的比较,算法的时间复杂度为O(2*N)。该算法的基本原理是:

根据无符号整数的大小可以和数组元素的下标对应的原则,在程序中可以用整数数组来储存元素的大小关系。对于一个大小为N的整型数组a[],对于每一个元素x,用数组中的元素a[x]记录下小于等于它的元素个数,当要找的是集合中第K个大的元素时,则只需找到该数组中第N-K+1小的元素。即只需要找到该数组中第一个大于或等于N-K+1的元素,该元素的下标即为第K大的数。

该算法具体可以描述为:假设n个输入元素的每一个都是介于0到M之间的整数,此处M为某个无符号整数。

(1)对于每一个输入的元素X,首先确定出等于X的元素个数。

(2)对于每一个元素X,确定小于等于X的元素个数。

(3)从数组首地址出发顺序查找到第一个小于等于K的元素,则该元素X即为所要查找的第K小的数,顺序查找到第一个小于等于N-K+1的元素,则该元素X即为所要查找的第K大的数。

2计数查找算法的C语言实现(Count—Search)

2.1数据结构的设计与程序

2.2算法步骤分析

第一步:第一行的初始化操作之后,在2-3行检查每一个输入元素。如果一个输入元素的值为i,即C[i]的值加1。于是在第3行之后,C[i]中存放了等于i的元素个数(整数i=0,1,…M)。

第二步:在第4-8之后,C[i]存放了小于等于i的元素的个数。最后从数组C的首地址出发顺序查找第一个使得C[i]>=N-K+1的元素,则第K大的元素即为i。

下图给出了Count-Search的运算过程:图1表示初始数组A,C。图2表示运行完程序2-3行,数组C中的元素C[i]存放的是数组A中等于i的元素个数。图3表示运行4-8行的结果,C中元素C[i]存放的是数组A中小于等于i的元素个数。例如查找该数组第3大的数,则由于C[2]=4>=3,故元素2即为所要查找的第3大的数。

2.3时间复杂度分析

程序2-3行时间复杂度为O(N),第4-8行时间复杂度为O(M),该算法的时间复杂度为T(n)=O(N+M)。如果数组A[]的最大值M与N成线形关系,即M=O(n),则其时间复杂度为T(n)=O(2N)。

3Count-Search算法与Divide-Select算法的比较

Divide-Select的基本思想是:通过在线性的时间内找到一个划分基准,使得按这个基准所划分出的两个子数组的长度都至少为原数组的ξ倍(0<ξ<1是某个正常数),然后对子数组递归的调用Divide-Select算法,这样就可以在线性的时间内完成查找任务。[6]

该算法得时间复杂度为O(6.09*N)[5],与Count-Search算法相比较可知:Count-Search算法具有更好的时间复杂度。

4算法测试与比较

为了证实上述结论,在ACERTravelMate2420(PM730,512M内存,80G硬盘),WindowsXP平台上编写了三种查找算法的子程序,进行了相应的实验测定,其结果如表1所示。(实验数据全部采用均分布的无符号整型随机数)

注:以上时间单位为毫秒MS。

根据以上数据我们可以绘制出数据规模和时间的函数图像。

观察分析以上实验结果,可以看出:基于快速排序的查找算法和其他算法相比较具有较差的效率;而采用了分治策略的Divide-Select查找算法的效率可以是基于快速排序的查找算法的几十倍,其时间复杂度在图中也反映为线性。而基于计数排序的查找算法(Count-Search)的时间复杂度同样达到了线性,但是效率却比Divide-Select更高,通过上述实验可以得知:在进行无符号整数查找时,基于计数排序的查找算法(Count-Search)在时间上是最优的。

5Count-Search的应用范围

在查找无符号整数集合时,应用Count-Search算法,能够降低查找时间复杂度。但是应用Count-Search算法时要注意:该算法只适用于整数的查找,且查找集合S的最大值M与S中元素个数N不成指数关系,即M不能远大于N。因为当M过大时,首先内存开销就会很大,其次时间复杂度也会相应的提高。

该算法充分的运用了整数的特性,整个运算过程中无需数据的比较和交换,大大降低了算法的时间复杂度,因此该算法可以在工程统计中得到大规模运用。例如:随着网络的发展和应用,网络中的信息量成倍的扩大,而在其中我们关注的最多的则是统计排名比较靠前的信息,如果将全部过亿的统计量排序,则由于数据量过大,则会浪费大量的时间和资源。而采用Count-Search的查找算法,就可在线性的时间完成。

6结束语

本文中提出的一种基于计数排序算法的整数查找算法,该算法在运算过程中无需进行数据的比较和交换,该算法可以应用到大规模的整数查找,算法的时间复杂度很低,而且避免的大量的数据比较和交换,同时在时间上是最优的。

参考文献

[1]崔泽鹏,李伟生.EREWPRAM模型上指数级分割待处理数据集的并行多选算法[J].北方交通大学学报,2003,(2):46-49

[2]班志杰,高光来.一种Byte查找第K个元素的算法研究[J].内蒙古大学学报,2004,(3):322-324

[3]ThomasH.CormenCharlesE.Leiserson.《算法导论》[M].北京:机械工业出版社。2006.9:98-99

[4]MuhammadH.Alsuwaiyel.Anoptimalparallelalgorithmforthemultiselectionproblem[J].ParallelComputing,2001,(27):861—865

[5]江华.求第K个元素的快速排序算法[J].韶关学院报,2003,(6):32-34

[6]王晓东.《算法设计与分析》[M].北京:清华大学出版社,2003.1:39-43