2016-06-09 3 views
2

그래프를 처음 접했을 때 문맥 관계를 어떻게 매핑 할 수 있는지 이해하려고합니다.그래프, 가장자리 및 문맥 정보

나는 체계적으로 예를 들어 간단한 데모 (1), 소개하는 예를 살펴 보았다 : 나는 밥이 실제로 존을 좋아하는 말을하려는 경우

# I want to organize the seating arrangement for my party 
# Bob does not like John, so I can say 

-----------      ------------ 
| Bob | <--- excludes --- | John | 
-----------      ------------ 

하지만, 그러나 그 때 주위에있는 좋아하지 않는다 그는 그의 여자 친구 인 Mary (당신도 알다시피 그들은 항상 키스를하고 더 이상 그들과 이야기 할 수 없다)를 동반합니다. 나는이 개 솔루션에 대해 생각했습니다 그래프에서 직접 이런 종류의 문제를 처리하기에 적합한 솔루션의 경우이 같은 어떤 예를 찾을하지 않고

# solution 1: create an intermediary node. 
# now, the problem is that, if I want to know who John excludes, 
# I have to look at the node John + every other node he might be the child of. 


                | John | 
-----------      -------------  ----------- 
| Bob | <--- excludes --- | Couple | < 
-----------      -------------  ------------ 
                | Mary | 
                ------------ 

# solution 2: target the edges, and make them cumulative 
# here if I want to know who John excludes, 
# I just have to target the node John and then check for 
# additional logic (in this case, check if Mary is present too). 

-----------      ------------ 
| Bob | <--- excludes --- | John | 
-----------   ^  ------------ 
    ^    | 
     |     | 
excludes <---- requires (some logic here) 
     | 
---------- 
| Mary | 
---------- 

참고도 궁금. 어떤 생각? 감사.

(1) 예를 들어 neo4j에 대한, http://www.slideshare.net/thobe/django-and-neo4j-domain-modeling-that-kicks-ass/25-The_Neo4j_Graph_data_model

답변

0

모든 사람들의 Power Set에 있지만, 사람들의 관계의 설정에 자신을 제한하지 않으면 할 수 있습니다 다른 번호가 그룹 사이도 모델 관계 - 예를 들어, 다시 그래프를 사용하여. 솔루션은 정의 된 세트의 일부인 모든 노드의 의미에서 깨끗합니다. 이미 언급 한 것처럼 사람이 속해있는 모든 노드를 검사해야합니다.

1

두 가지 접근 방식은 내 마음에 온 :

  1. 특정 단체에 그래서 사람들 쌍을 결합하고; 그래서 실제로는 Bob Bob- John and Bob < - John + Mary의 관계가 있습니다. 그러나 많은 양의 데이터가 있으면 추울 수도 있습니다.
  2. 상태 시스템 만들기 : 상황에 따라 다른 상태를 추적 할 수 있습니다. 예를 들어, "존이 혼자 온"상태는 "존 근처에 앉다"로, "존이 마리아와 함께왔다"는 전환은 없을 것입니다.
+0

감사합니다. Bodan! 상태 패턴은 유망 해 보입니다. 제가 잘 이해한다면, 목표로 삼은 노드는 존의 흙탕물이 될 것입니다. 상태 패턴은 문제의 한 부분을 해결하는 것으로 보입니다. 예 : Mary가 Mary와 합류했을 때 John이 제외하는 사람을 찾고 있다면 Bob에게 즉시 문의하십시오. 그러나 Bob을 제외시킨 사람을 찾을 때 많은 객체에 대해 여러 상태를 반복해야 할 수 있습니다. – Raphael

+1

죄송합니다. 더 생각했습니다. 그것은 완벽하게 이해되는 것처럼 보입니다 : John과 Bob을 연결 한 다음 제외 조건이 충족되는지 확인하십시오. 감사! – Raphael

관련 문제