1

Je souhaite tester l'hypothèse du «petit monde» ou «Six degrés de séparation», la théorie selon laquelle tout être humain peut atteindre un autre par l'intermédiaire de seulement 6 amis communs. (Par exemple un ami d'un ami d'un ami d'un ami d'un ami d'un ami)Comment trouver un chemin entre deux noeuds abstraits

Exemple de données de noeud (JSON):

{ 
    "name": "John Smith", 
    "friends": [ 
     "Foo Bar", 
     "John Doe" 
    ] 
} 

Il y aurait des centaines d'objets, tout comme ceux-ci, chaque liaison à une autre. Je veux trouver le chemin le plus court entre eux. Un algorithme de pathfinding tel que ceux trouvés dans les jeux pourrait-il convenir à des concepts abstraits comme celui-ci (ie: concepts qui ne sont pas représentables dans un monde 2D ou 3D) ou existe-t-il une solution plus élégante? Je sais que je pourrais simplement parcourir la liste d'amis plusieurs fois avec des profondeurs de recherche croissantes, mais ce serait une solution inélégante, prenant beaucoup de temps avec de grandes quantités de données.

Je suis déjà bien au courant des algorithmes de pathfinding tels que A *, mais je simplement pas sûr que c'est une utilisation appropriée pour les

À tout le moins le programme doit générer une chaîne telle que « Il faut x étapes à suivre pour passer de personne1 à personne2 «Ce serait bien de connaître les intermédiaires et peut-être même d'obtenir un joli web/graphique.

+0

ce serait bien de connaître la sortie que vous attendez à créer à partir de ce – Jesse

+0

@Jesse fixe: D – Deep

Répondre

1

Ce lien Finding Paths in Graphs (page 33,34) vous donne un algorithme puissant pour les graphiques, où vous supposez que ce sont des graphes de petit monde! Avant d'implémenter l'algorithme, vous devez transformer vos données json en un graphique avec une structure de données rapide et raisonnable (représentation graphe dense ou clairsemée).