首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使稀疏矩阵和trie串联工作

如何使稀疏矩阵和trie串联工作
EN

Stack Overflow用户
提问于 2014-08-18 12:42:46
回答 1查看 427关注 0票数 0

我有一个稀疏矩阵,它已经导出为这种格式:

代码语言:javascript
运行
复制
(1, 3) = 4
(0, 5) = 88
(6, 0) = 100
...

字符串存储在Trie数据结构中。先前导出的稀疏矩阵中的数字对应于对Trie的查找结果。

让我们说“堆栈溢出”这个词映射到数字'0‘。我需要迭代导出的稀疏矩阵,其中第一个元素等于'0‘,并找到最高值。

例如:

代码语言:javascript
运行
复制
(0, 1) = 4
(0, 3) = 8
(0, 9) = 100 <-- highest value

(0,9)会赢。

存储导出的稀疏矩阵的最佳实现是什么?一般来说,处理此功能的最佳方法(数据结构、算法)是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 13:45:07

如果没有内存或动态约束,最好的方法可能是将稀疏矩阵从第一个数映射到按值排序的对,例如,

代码语言:javascript
运行
复制
matrix_map = {}  # empty map
for (first_number, second_number, value) in matrix_triples:
    if first_number not in matrix_map:
        matrix_map[first_number] = []  # empty list
    matrix_map[first_number].append((second_number, value))
for lst in matrix_map.values():
    lst.sort(key=itemgetter(1), reverse=True)  # sort by value descending

给定一个类似的矩阵

代码语言:javascript
运行
复制
(0, 1) = 4
(0, 3) = 8
(0, 5) = 88
(0, 9) = 100
(1, 3) = 4
(6, 0) = 100,

成品如下所示:

代码语言:javascript
运行
复制
{0: [(9, 100), (5, 88), (3, 8), (1, 4)],
 1: [(3, 4)],
 6: [(0, 100)]}.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25363603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档