- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
求解马鞍点的两种算法及性能分析
摘要:求解矩阵中的马鞍点是计算机程序设计中的常见问题。结合矩阵中马鞍点的特点,给出了求解矩阵中的马鞍点的依次搜索法和多马鞍点相等法,详细叙述了它们的算法思想,特别对多马鞍点相等法的理论基础做了证明,分别给出了对应的算法。最后针对这两种算法进行了时间性能和空间性能的分析和比较,总结了两种算法各自的优缺点。
关键词:马鞍点;程序设计;算法;时间复杂度;空间复杂度
中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2009)15-4063-03
Two Algorithms about Solving the Saddle Point and Analyzing Performance
SUN Jia-xia, CHEN Jun
(The School of Information Technology, Henan Institute of Science and Technology, Xinxiang 453003, China)
Abstract: To solve the saddle point is the common problem in computer programming. Combine with the characteristic of saddle point in matrix, the paper propose two algorithms to solve the saddle point , such as the method of search in turnand the equal of multi saddle point. And describe the thinking and corresponding code of the algorithm in detail, especially, the method of equal of multi saddle point is proved. Last the time and space performance of the arithmetic are analyzed and compared, and summarize the respective advantage and disadvantage of the two algorithms.
Key words: saddle point; programming; algorithm; time complexity; space complexity
1 马鞍点的定义
若矩阵Am×n的某个元素ai,j是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。
2 依次搜索法
2.1 算法思想
对于矩阵的每一行,扫描第一遍求出该行的最小元素值;扫描第二遍,对于和最小元素值相等的每个元素(可能是马鞍点),扫描其所在列,若是该列的最大元素值,则为马鞍点,输出该元素的信息。
2.2 算法
void Get_Saddle(int A[m][n]) /*求矩阵A中的马鞍点*/
{
for(i=0;im;i++)
{
for(min=A[i][0],j=0;jn;j++)
if(A[i][j]min) min=A[i][j]; /*求一行中的最小值*/
for(j=0;jn;j++)
if(A[i][j]==min) /*判断这个(些)最小值是否马鞍点*/
{
for(flag=1,k=0;km;k++)
if(min if(flag)
printf(Found a saddle element!\nA[%d][%d]=%d,i,j,A[i][j]);
}
}//for
}//Get_Saddle
2.3 性能分析
该算法的基本操为元素的比较,求每行的最小元素值比较次数为n,判断每行中的最小值是否为马鞍点,最好情况下每行的最小值只有一个,比较次数为n-1+m,总共m行,所以最好情况下的比较次数为m*(n+n-1+m);最坏情况下,每行的元素值都相等,比较次数为m*n*m。因此,最好情况下,该算法的时间复杂度,为O(m*(n+m)),最坏情况下的时间复杂度为O(m2*n)。
该算法的空间复杂度为O(0)。
3 多马鞍点相等法
3.1 马鞍点的性质
若在一个矩阵中存在多个马鞍点,则这些马鞍点的值必相同;反之,和马鞍点值相等的元素,不
文档评论(0)