je un graphique de 100000 noeuds connectés les uns aux autres par une relation. D'un point A à un point B, il n'y a qu'un seul chemin possible, aucune boucle n'est possible dans mon modèle.intersection de deux ensembles de noeuds (Neo4j Cypher de chemin de traversée)
Je suis à la recherche d'une solution qui indiquera si le chemin d'une liste de noeuds croise le chemin d'une seconde liste de noeuds
Je ne ai pas besoin de connaître les points d'intersection s'il y a une intersection.
Serait-il possible d'avoir une solution sans passer par le graphe entier (arrêt une fois que le premier noeud est trouvé)?
exemple: picture of graph
liste des nœuds 1: nœuds rouges
listede noeuds 2: des noeuds bleu
Comme il y a au moins une intersection (noeud noir), la demande doit retourner true .
demande Cypher:
EDIT: Demande Cypher
match path=shortestPath((n1)-[r*]-(n2))
where id(n1) = node1 and id(n2) in nodesList1
with nodes(path) as nodespath1
match path=shortestPath((n1)-[r*]-(n2))
where id(n1) = node2 and id(n2) in nodesList2
with nodespath1, nodes(path) as nodespath2
with ANY (n IN nodespath1 WHERE n IN nodespath2) AS conflit
with ANY (n IN collect(conflit) WHERE n = true) AS conflit
RETURN conflit;
Que signifie "le chemin d'une liste de nœuds"?Voulez-vous dire "tous les chemins entre toutes les paires possibles de nœuds pris dans une liste", ou "tout chemin entre toutes les paires possibles de nœuds tirés d'une liste", ou "tous les chemins incluant chaque nœud d'une liste", ou quelque chose autre? – cybersam
le chemin d'une liste de nœuds signifie le plus court terme entre toutes les paires de nœuds de la liste (il n'y a qu'un seul chemin possible) – gsaad