none
.net中稀疏矩阵 RRS feed

  • 常规讨论

  • 在列举矩阵时,大部分都是0填充,当遇上一个成千上万行和列的矩阵时,那样要计算几个矩阵的乘法或者加法或者疑时要去循环的次数相当的大,如何来使用稀疏矩阵收敛矩阵中的0元素,来将循环次数降低?请帮忙给助点儿实例,谢谢(注:C#  .NET中)

    2011年2月25日 6:43

全部回复

  • 你好,

    这个是个作业吗? :)

    个人觉得这问题太专业了,稀疏矩阵的实现其实和具体的编程语言倒并没什么太大的关系。同样的算法,用C#,Java,C++都能实现。

    这篇文章写得挺好的,http://blog.csdn.net/zhongjiekangping/archive/2010/05/13/5585933.aspx。  

    这里有个Java的实现,http://www.chinaunix.net/jh/26/132933.html

    希望能对你有所启发! 谢谢!


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月1日 3:39
  • //单元格定义
    class Cell<T> { int x; int y, T value}
    
    ////这是一个最简单逻辑结构的矩阵. 一般来说足够了
    class Matrex <T>
    {
      List<Cell<T>> Items= new List<Cell<T>>();
    
      ////返回指定单元
    	Cell<T> GetCell(int x; int y)
    	{
    		Ienumarable<Cell<T>> rst = from Cell<T> crrItem 
    									in this.Items
    									where crrItem.x=x && crrItem.y=y
    									select crrItem;
    
    		if (rst.Count()==0)
    		{
    			return null;
    		} // end if 
    		else
    			return rst.First();
    	}
    }//class Matrex
    
    //如果你水平够高,且效率要求极高的话,也可以用这个结构
    // Dictionary[x, Dictionary[y, cell] ] 能看懂的话相信你就会用了.
    // 这相当于为所有的行列都自动做了索引,所以检索起来效率可以达到最大.
    Dictionary<int, Dictionary<int, Cell<T>>> Items;
    
    

    信奎爷,无所畏惧!!
    2011年3月1日 4:44