如何使用Redis实现带权图?
我们主要会在图上搜索最短路径(可能使用Dijkstra算法)
目前,我们考虑将边添加到Redis中。
对于每个节点,我们将节点ID作为键,参考节点的键的有序集合作为值,该节点在有序集合中的分数是边的权重。
您认为呢?请纠正我,但唯一的问题是,每次查询排序集合中的下一个节点都需要支付O(logn)而不是O(1)...
如何使用Redis实现带权图?
我们主要会在图上搜索最短路径(可能使用Dijkstra算法)
目前,我们考虑将边添加到Redis中。
对于每个节点,我们将节点ID作为键,参考节点的键的有序集合作为值,该节点在有序集合中的分数是边的权重。
您认为呢?请纠正我,但唯一的问题是,每次查询排序集合中的下一个节点都需要支付O(logn)而不是O(1)...
抱歉我来晚了:), 但我最近遇到同样的问题,我使用哈希模拟它。我同意Tom Clarkson的观点,即(几乎)所有东西应该被加载到本地内存中,并补充说,在空间效率方面的有效方法是使用哈希,将图形信息存储如下:
Graph = { node1 : { nodeX : edge_weight, nodeY : edge_weight, other_info: bla..},
node2 : { nodeZ : edge_weight, nodeE : edge_weight, other_info: bla..},
bla bla...
}