我们有一个存储稀疏矩阵的应用程序.该矩阵具有主要存在于矩阵的主对角线周围的条目.我想知道是否有任何有效的算法(或现有的库)可以有效地处理这种稀疏矩阵?优选地,这将是通用实现,其中每个矩阵条目可以是用户定义的类型.
编辑以回答问题/回复:
当我主要围绕主对角线说我的意思是大多数矩阵的特征是大多数条目聚集在主对角线之外但是可能存在靠近对角线的零并且可能存在远离的非零值对角线.我想要一些有效的"大多数"案例.
我将用它做什么?我需要能够有效地访问一行中的所有值或列中的所有值.存储的值将是布尔值.一个例子是:
这些都是先前使用链接列表完成的,但实现起来非常混乱.我希望用稀疏矩阵可以改进算法但是找到"正确"类型的稀疏矩阵算法已经证明是困难的.
ps感谢迄今为止的回复
我需要一个通用容器来保持其元素排序,并且可以询问它将插入新元素的位置(在哪个位置),而不实际插入它.
这样的容器是否存在于.NET库中?最好的例子是一个例子(容器按ASCII值对字符进行排序,假设unicode不存在):
sortedContainer.Add('d');
sortedContainer.Add('b');
sortedContainer.Add('g');
//container contains elements ordered like 'b' 'd' 'g'
//index --------------------------------> 0 1 2
sortedContainer.GetSortedIndex('a'); //returns 0
sortedContainer.GetSortedIndex('b'); //returns 0
sortedContainer.GetSortedIndex('c'); //returns 1
sortedContainer.GetSortedIndex('d'); //returns 1
sortedContainer.GetSortedIndex('e'); //returns 2
sortedContainer.GetSortedIndex('f'); //returns 2
sortedContainer.GetSortedIndex('g'); //returns 2
sortedContainer.GetSortedIndex('h'); //returns 3
[...]
Run Code Online (Sandbox Code Playgroud)
搜索位置应该利用元素排序的事实.