| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 978 人关注过本帖
标题:这段算法是什么意思,请通俗一点
只看楼主 加入收藏
wangyc2188
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-10-1
结帖率:0
收藏
 问题点数:0 回复次数:6 
这段算法是什么意思,请通俗一点
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
  {
      c[i][j]=0;
      for(k=1;k<=n;k++)
        c[i][j]=c[i][j]+a[i][j]*b[k][j];
   }
这是什么意思啊,请通俗一点。
搜索更多相关主题的帖子: 算法 
2010-10-16 10:53
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
不知道出于什么目的,而且下标还是从1开始而不是0。
总之这段代码将矩阵a的第i,j个元素分别乘以矩阵b的第j列的每一个元素,并将和赋值给c的第i,j个元素。
这段代码的效率不高,修改一下:
for(i=1; i<=n; i++)
  for(j=1; j<=n j++)
  {
      TYPE tmp=0;
      for(k=1; k<=n; tmp+=b[k++][j]);
      c[i][j] = a[i][j]*tmp;
  }
将TYPE替换为实际的变量类型。

重剑无锋,大巧不工
2010-10-16 12:34
Tveiker
Rank: 2
来 自:湖南省张家界桑植
等 级:论坛游民
帖 子:17
专家分:41
注 册:2010-9-28
收藏
得分:0 
下标从1开始应该是更好的与数学表达式相联系吧。
该段代码的意思就是求一个矩阵c[i][j],且C[i][j]是a[i][j]与矩阵第j列所有元素和的乘积。
上楼的代码某种程度降低了原代码的时间复杂度,但没降数量级;仍为n的3次方
修改下,降一个数量级
int sum[n+1]    //由于原程序下标从1开始(其实下标可以从0开始,这样可以降低空间复杂度,这里只是附和原程序)
for(int i=1;i<n+1;i++)
    sum[i]=1;         //初始化
/*
计算b每列的和
*/
for(i=1;i<n+1;i++)
   for(int j=1;j<n+1;j++)
       sum[i]=+b[j][i];
/*
实现核心算法
*/
for(int i=1;i<n+1;i++)
   for(int j=1;j<n+1;j++)
      c[i][j]=a[i][j]*sum[j];
上面的算法时间复杂度为2*n*n+n
2010-10-16 15:29
聋眼睛瞎耳朵
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:29
专家分:123
注 册:2010-9-24
收藏
得分:0 
改成这样
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
  {
      c[i][j]=0;
      for(k=1;k<=n;k++)
        c[i][j]=c[i][j]+a[i][k]*b[k][j];//这句变了一下
   }
就是求两个矩阵的乘积的算法

[ 本帖最后由 聋眼睛瞎耳朵 于 2010-10-16 15:47 编辑 ]
2010-10-16 15:29
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
3楼是位精益求精的朋友感谢你的指正。
关于复杂度的计算要有一个基准。基于乘法运算的速度远低于加法运算所以我优化的原则是尽量减少乘法运算的次数,并以一次乘法运算作为时间复杂度单位的话,那么我的代码的复杂度也是N的2次方。
当然,我相信还是你的代码会更快一点。这是牺牲空间复杂度换取时间复杂度,以目前电脑内存的水平这种做法是可取的。
一点小的问题,sum应该初始化为0而不是1,另外求和中的=+应该是一处笔误,并且编译器不会报错,如果实际中没有发现的话会导致计算结果错误。但这并不影响我对你代码的理解,感谢你的参与交流

重剑无锋,大巧不工
2010-10-16 18:21
dong3580
Rank: 2
等 级:论坛游民
威 望:1
帖 子:22
专家分:21
注 册:2010-3-5
收藏
得分:0 
虽然学到这儿,可还是觉得蒙了。代码看懂了,可那个时间复杂度倒是很晕
2010-10-17 20:48
爱上对方法国
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2010-10-28
收藏
得分:0 
求两个矩阵么
2010-10-28 11:38
快速回复:这段算法是什么意思,请通俗一点
数据加载中...
 
   



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

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