2010-04-27 3 views
0

QuickGraph pourrait-il m'aider avec mes exigences ci-dessous? (A) vouloir modéliser un graphe de nœuds et de relations directionnelles entre noeuds - par exemple pour modéliser des pages web/fichiers liés sous une URL, ou modéliser l'infrastructure informatique et les dépendances entre matériels/logiciels. La bibliothèque comprendrait des méthodes telles queQuickGraph peut-il prendre en charge ces exigences? (inclut le support de persistance de base de données)

* Node.GetDirectParents() //i.e. there could be more than one direct parent for a node 
* Node.GetRootParents() //i.e. traverse the tree to the top root parent(s) for the given node 
* Node.GetDirectChildren() 
* Node.GetAllChildren() 

(b) doivent persister les données à une base de données - il devrait donc soutenir SQL Server et idéalement SQLite ainsi.

S'il prend en charge ces exigences alors j'aimerais entendre:

  1. tous les pointeurs à toutes les parties de QuickGraph à creuser?

  2. ce qui est le meilleur concept nouveau, il est l'utilisation en termes d'utilisation de la persistance de la base de données - est une conception plus simple à prendre toutes les recherches/méthode fonctionne directement sur la base de données , ou pris en charge par QuickGraph SMARTS pour être en mesure de travailler dans la mémoire et « sauver » la base de données toutes les changements à un moment approprié dans temps (par exemple, comme le fait avec ADO.net DataTable etc.)

Merci à l'avance

Répondre

1

Greg,

a. Oui, Quickgraph peut assez facilement rechercher les nœuds de cette manière. J'ai déjà fourni un exemple dans votre other question.

b. Pour autant que je sache, la sérialisation SQL n'est pas "intégrée" à QuickGraph; vous devrez créer votre propre implémentation personnalisée. Comme la plupart des graphes représentent plus qu'une simple liste de sommets et de nœuds, il serait assez difficile de l'accomplir automatiquement (et nativement) dans QuickGraph, mais assez simple à implémenter.

  1. Vous pouvez consulter la section de sérialisation GraphML dans la source QuickGraph. Cela peut vous donner quelques conseils pour commencer.
  2. QuickGraph fonctionne en mémoire, il ne fonctionne pas "contre" un magasin persistant et n'est pas conçu pour (puisque les magasins persistants sont généralement assez lents). Donc, vous devez enregistrer les informations manuellement. Cependant, vous pouvez surveiller différents événements QuickGraph tels que VertexAdded, VertexRemoved, EdgeAdded et EdgeRemoved pour déterminer quand le graphique a changé, puis effectuer la sérialisation à ces moments.

-Doug

+0

Merci de répondre Doug - Je suis encore en train de faire passer le code - c'est un peu compliqué le code est pas, il y a des événements faisant remarquer partout et l'utilisation des médicaments génériques, etc – Greg

+0

Oui, QuickGraph n'est pas une chose facile à relever et à comprendre, surtout si vous n'êtes pas déjà familier avec la théorie des graphes et avez une connaissance pratique de la façon dont vous travaillez habituellement avec les graphes. tri topologique, ce que vous pouvez et ne pouvez pas faire avec un graphique cyclique, etc.). Si vous avez besoin de quelque chose de très simple, vous pouvez même ne pas utiliser QuickGraph.La bonne chose est, une fois que vous avez les bases, il ya une tonne de choses que QuickGraph fait pour vous qui est difficile à mettre en œuvre par vous-même. – Doug

Questions connexes