[REDIS] 레디 스 : 감독 그래프 가중 구현
REDIS레디 스 : 감독 그래프 가중 구현
레디 스 사용하여 가중 그래프를 구현하는 가장 좋은 방법은 무엇입니까?
우리는 대부분 (아마도 다 익스트라 알고리즘을 사용하여) 그래프를 통해 최단 경로를 검색합니다
현재 우리는 레디 스에 가장자리를 추가 고려
각 노드에 대해, 우리는 키와 노드 아이디와 참조 노드의 키 SortedSet에있을 것이다 SortedSet의 각 노드 아이디의 점수는 가장자리의 무게입니다.
어떻게 생각해? 내가 잘못 그러나 여기 유일한 안됐다 경우 정정 해줘 우리가 O (1)의 O (logn) 대신 지불 SortedSet의 다음 노드에 대한 각 쿼리에 대한 ...
http://redis.io/commands/zrange
해결법
-
==============================
1.당신은 한 번에 하나의 그들을 점점이 경우 레디 스에 대한 연결의 대기 시간이 작업의 복잡성보다 더 큰 문제가 될 것입니다 경우 소트 세트의 다음 항목을 얻는 것은 오직 O (로그 (N))입니다 .
당신은 한 번에 하나의 그들을 점점이 경우 레디 스에 대한 연결의 대기 시간이 작업의 복잡성보다 더 큰 문제가 될 것입니다 경우 소트 세트의 다음 항목을 얻는 것은 오직 O (로그 (N))입니다 .
이 전체 세트를로드하는 의미 (또는 적절한 점수 적어도 그) 로컬 메모리에 노드를 처리 할 때 만드는 있도록 그래프에서 대부분의 작업의 경우, 노드의 모든 가장자리에서 볼 필요가있다. 세트가 매우 작기 때문에 물론 평균 로딩이 뜻은 이미 적당한 경로를 발견했기 때문에 다음,하지만하지 않습니다 일부 가장자리는이 비용은 훨씬 덜 당신이하는 모든 에지 레디 스에 새 통화를보다 것이다 필요한 것.
-
==============================
2.죄송합니다 늦게 것에 대해 :)하지만, 나는 최근에 같은 문제를 건너 왔어요, 내가 해시를 사용하여 모델. 나는 (거의) 모든 것이 공간의 측면에서 효율적인 방법은 해시를 사용하고,이 같은 그래프 정보를 저장하는 것을 말함으로써 로컬 메모리 및 I의 기능 보강에로드되어야한다는 톰 클락슨에 동의 :
죄송합니다 늦게 것에 대해 :)하지만, 나는 최근에 같은 문제를 건너 왔어요, 내가 해시를 사용하여 모델. 나는 (거의) 모든 것이 공간의 측면에서 효율적인 방법은 해시를 사용하고,이 같은 그래프 정보를 저장하는 것을 말함으로써 로컬 메모리 및 I의 기능 보강에로드되어야한다는 톰 클락슨에 동의 :
Graph = { node1 : { nodeX : edge_weight, nodeY : edge_weight, other_info: bla..}, node2 : { nodeZ : edge_weight, nodeE : edge_weight, other_info: bla..}, bla bla... }
당신이 더 많은 공간과 효율성을해야 할 경우, 클라이언트 코드 및 압축 해제 / 가져 오기 / 역 직렬화 (JSON 문자열 수 있습니다 ...) 모든 값을 압축합니다.
from https://stackoverflow.com/questions/6398614/redis-implement-weighted-directed-graph by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스에서 루아에서 현재 날짜와 시간을 가져 (0) | 2020.01.23 |
---|---|
[REDIS] SignalR은 SSL에 푸른 레디 스에 연결할 수 없습니다 (0) | 2020.01.23 |
[REDIS] 어떻게 가게에 레디 스에서 개체의 소트 세트? (0) | 2020.01.22 |
[REDIS] 레디 스 및 Node.js를하고 Socket.io 질문 (0) | 2020.01.22 |
[REDIS] ASP.net MVC에서 푸른 레디 스 StackExchange.Redis ConnectionMultiplexer (0) | 2020.01.22 |