Neo4j : Exploitation de graphe

The Shortest Path

Passons aux choses sérieuses...

Ce qui fait l'intérêt d'un SGB graphe c'est l'intégration d'API et d'outils algorithmiques relatifs aux graphes ! Voyons donc voir ça de plus près...

Question

Je voudrai visualiser le chemin le plus court entre s61 et s160, peu importe les moyens de transport utilisés.

Indice

Pour cela il va d'abord falloir matcher le point de départ et le point d'arrivée puis définir une variable qui identifiera le chemin.

1
match (s61 {nom:'s61'}),(s160 {nom:'s160'}), p= .......
Indice

Le nom de la fonction ressemble étrangement au nom de l'exercice...

Solution

Bon, le premier est pas évident, mais ça ira mieux pour les prochains ;)

1
match (s61 {nom:'s61}),(s160 {nom:'s160'}), p=shortestPath((s61)-[*]->(s160)) return p

Question

Quels sont les plus courts chemins entre s67 et s160, sans prendre de métro ?

Indice

Retournez faire un tour vers la Documentation Cypher :), vous trouverez une fonction avec un nom qui ressemble bien à ce qu'on cherche .. !

Indice

Commencez par ne pas tenir compte de la contrainte sur l'utilisation du métro.

1
match (s67 {nom:'s67'}),(s160{nom:'s160'}),p=allShortestPaths((s67)-[*]->(s160)) return p

Puis rajoutez la contrainte dans la relation.

Indice

Ne pas utiliser le métro revient à utiliser le bus ou le taxi. Le "ou" s'exprime "|"

Solution
1
match (s67 {nom:'s67'}),(s160{nom:'s160'}),p=allShortestPaths((s67)-[:BUS|:TAXI*]->(s160)) return p

Question

Comptez maintenant le nombre de plus courts chemins que vous venez d'obtenir !

Indice

Le count() existe comme en SQL ... !

Solution
1
match (s67 {nom:'s67'}),(s160{nom:'s160'}),p=allShortestPaths((s67)-[:BUS|:TAXI*]->(s160)) count(p)

Question

Quelle est la distance séparant les stations s61 et s160 ?

Indice

(Distance) ->(longueur),

(longueur) -[anglais]-> (length),

(length) -> (length)

Solution
1
match (s61 {nom:'s61'}),(s160{nom:'s160'}),p=shortestPath((s61)-[*]->(s160)) return length(p)
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Clément Henry, 2015 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)