2016-12-02 3 views
0

Je crée un Tinkergraph dans gremlin.Création d'un graphique de plusieurs nœuds dans gremlin

En fait, je veux créer un graphique de 50 nœuds et ils sont connectés via des bords de manière aléatoire.

J'ai créé 50 noeuds par:

(0..<50).each{graph.addVertex().property("NodeId",it)} 

qui crée 50 nœuds.

Je ne parviens pas à créer un graphique correctement, en connectant les nœuds via les bords. Aucun noeud ne devrait être laissé.

J'ai essayé aussi:

v = g.V().has("NodeId",0).next(); (0..<50).each{v.addEdge("childs",g.V().has("NodeId",it).next())} 

Il crée graphique où tous les noeuds sont connectés au seul nœud.

Des idées pour y remédier?

Créer Tinkergraph de 50 nœuds et connecté via des arêtes.

Répondre

0

Votre question n'est pas très claire pour moi. Demandez-vous comment connecter chaque sommet les uns aux autres? Si oui, ici vous allez:

gremlin> g = TinkerGraph.open().traversal() 
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard] 
gremlin> g.addV().emit().repeat(property("NodeId", loops()).addV()).times(49).as("x"). 
......1> sideEffect(hasNot("NodeId").property("NodeId", 49)).barrier(). 
......2> V().where(neq("x")).addE("childs").from("x").iterate() 

À ce stade, vous aurez un graphique avec 50 sommets, chacun relié à un bord child à l'autre sommet du graphe.

gremlin> g 
==>graphtraversalsource[tinkergraph[vertices:50 edges:2450], standard] 

Choisissons un sommet aléatoire pour vérifier qu'il est en fait connecté à tous les sommets du graphe, sauf pour lui-même.

gremlin> g.V().has("NodeId", 30).out("childs").values("NodeId").fold().order(local) 
==>[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49] 
+0

je veux connecter les noeuds de modèle d'arbre binaire –

+0

'g.addV(). Répétition (__. Comme ("a"). Union (ADDV(). Adde ("gauche"). De ("a"), addV(). addE ("right"). de ("a")). inV()). times (5) .iterate() '- ceci crée un arbre binaire avec une profondeur de 5 Cependant, cela ne semble pas avoir grand chose à voir avec votre question initiale, donc je ne suis toujours pas sûr, si cela répond à votre question, –