2016-06-09 20 views
2

Ich bin neu in der Grafik und versuche zu verstehen, wie kontextuelle Beziehungen in sie abgebildet werden können.Graphen, Kanten und Kontextinformationen

Ich habe auf Beispielen sieht, welche systematisch einfache Demos (1) einführen, zum Beispiel:

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

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

Aber was, wenn ich sagen will, dass Bob John wirklich mag, aber nicht gerne um ihn herum ist, wenn er wird von seiner Freundin Mary begleitet (du weißt, sie küssen sich die ganze Zeit und du kannst nicht mehr mit ihnen reden). Ich habe über zwei Lösungen gedacht:

# 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 | 
---------- 

Bitte beachte, dass ich kein Beispiel so gefunden habe und auch ich frage mich, ob diese Art von Problem Handhabung direkt in der grafischen Darstellung die richtige Lösung ist. Jeder Gedanke? Vielen Dank.

(1) zB über Neo4j, http://www.slideshare.net/thobe/django-and-neo4j-domain-modeling-that-kicks-ass/25-The_Neo4j_Graph_data_model

Antwort

0

Wenn Sie beschränken sich nicht auf die Menge der Menschen, ihre Beziehungen, sondern auf die Power Set aller Menschen, können Sie auch die Beziehungen zwischen Modell unterschiedlich nummerierten Gruppen - z.B. wieder unter Verwendung eines Graphen. Die Lösung ist sauber in dem Sinne, dass alle Knoten Teil einer definierten Menge sind. Sie müssen alle Knoten überprüfen, in denen sich eine Person befindet, wie Sie bereits erwähnt haben.

1

Zwei Ansätze kam mir in den Sinn:

  1. Menschen Paare kombinieren und so weiter in bestimmte Einheiten; so haben Sie eigentlich Beziehungen Bob < - John und Bob < - John + Mary. Aber mit einer großen Menge an Daten, ich denke, es kann hässlich aussehen.
  2. Erstellen Sie Zustandsmaschine: Sie können verschiedene Zustände für verschiedene Situationen verfolgen. So wird zum Beispiel der Zustand "Johannes kam allein" einen Übergang zu "Sitzt in der Nähe von Johannes" haben, während "Johannes mit Maria kam" nicht.
+0

Danke Bodan! Das Zustandsmuster sieht vielversprechend aus. Wenn ich es gut verstehe, wäre der Zielknoten der Satt von John. Das Zustandsmuster scheint einen Teil des Problems zu lösen. ZB: Wenn ich suche, wer John ausschließt, wenn er von Mary begleitet wird, bekomme ich sofort Bob. Wenn ich jedoch nach Bob Ausschau halte, könnte ich für viele Objekte viele verschiedene Zustände durchlaufen müssen. – Raphael

+1

Entschuldigung, ich habe mehr darüber nachgedacht. Es scheint vollkommen logisch zu sein: Sie verknüpfen einfach John und Bob und prüfen dann, ob die Bedingungen für den Ausschluss erfüllt sind. Vielen Dank! – Raphael

Verwandte Themen