Функция поиска кратчайшего пути в Neo4j применительно к реальным задачам - PullRequest
0 голосов
/ 02 мая 2019

Image showing the graph model with the nodes and relationships

Вопросы

1.) Для какого пути «Общие вычисления» какой модуль имеет наибольшее влияние (т. Е. Является ли обязательным предварительным условием для большинства модулей)?

2.) Если студент отказывается от определенного модуля в первый год, укажите пути, по которым для завершения курса потребуется не менее 4 лет (Примечание: для прохождения курса необходимо выполнить все модули на пути).

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Я думаю, что ответ на первый вопрос должен быть таким:

match (module) <- [r: PRE_REQUISITE {тип: «Обязательный»}] - (m: Модуль) - [: ON] -> (p: Путь {title: «Общие вычисления»}) вернуть module.title в качестве ModuleName, считать (*) как самое высокое_импакт

заказ по наивысшему действию предел 1

0 голосов
/ 02 мая 2019
  1. Это может сработать, если я понимаю вашу модель данных:

    MATCH (m:Module)<-[r:PRE_REQUISITE]-(:Module)-[:ON]->(pw:Pathway)
    WHERE pw.title = 'General Computing' AND r.type = 'Compulsory'
    RETURN m, COUNT(*) AS impact
    ORDER by impact DESC
    LIMIT 1
    
  2. Вы не предоставили достаточно информации. Мы не знаем, сколько времени занимает завершение каждого модуля и как часто он предлагается, нужно ли учитывать свойство level и как, какие существуют другие значения type, что они на самом деле означают и т. Д. И это кажется, что на самом деле хочется максимум из 4 лет, а не минимум .

...