какой запрос шифра может найти то, что мне нужно - PullRequest
0 голосов
/ 24 декабря 2018

У нас есть несколько человек (например, 70 человек) и несколько столов (например, 4 таблицы).люди видят друг друга на каждом столе.(например, вместимость таблиц составляет 20,20,20,10).

После первого сеанса они встают и снова садятся в случайном порядке.у нас есть определенное количество сеансов, например, 3 сеанса.Я смоделировал этот процесс с помощью графика.узлы - это люди и таблицы, а отношение - [SITS_ON].например:

 (p:Person)-[SITS_ON{session:2}]->(t:Table)

означает, что человек p сидит за столом t в сеансе 2.

Теперь мне нужно найти количество коллизий во время процесса.Я хочу знать, сколько раз люди уже посетили, снова навещать друг друга.человек A сидел за столом t1 в сеансе 1. человек B сидел за столом t1 во время сеанса 1. человек A сидел за столом t3 во время сеанса 2. человек B сидел за столом t3 во время сеанса 2. поэтому произошла коллизия.Я хочу знать количество таких столкновений на данном графике

1 Ответ

0 голосов
/ 03 января 2019

Обратите внимание, что этот пример должен быть уточнен, если вы хотите, чтобы это масштабировалось, но все, что вам нужно сделать, это СОГЛАСИТЬ пары людей на основе ваших критериев столкновения, а затем посчитать, сколько раз это произошло.Поскольку вы не считаете первое столкновение как столкновение, все, что вам нужно сделать, чтобы компенсировать это, - вычесть 1 из окончательного числа.

MATCH (p1:Person)-[r1:SITS_ON]->(t:Table)<-[r2:SITS_ON]<-(p2:Person)
WHERE ID(p1) < ID(p2) // Remove Cartesian Product/redundancy
  AND r1.session == r2.session // Collision if table and session match
RETURN p1.name, p2.name, count(*)-1 as collisions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...