2010-12-02 4 views
4

J'ai codé plusieurs algorithmes de recherche de graphes (A *, DFS, BFS, etc.) plusieurs fois. Chaque fois, la seule vraie différence est les états de recherche réels que je recherche, et comment les nouveaux états sont générés à partir des états existants.Cadre de recherche de graphe générique C#

Je suis maintenant confronté à un autre projet de recherche lourde, et je voudrais éviter d'avoir à coder et déboguer un algorithme de recherche générale à nouveau. Ce serait vraiment bien si je pouvais définir une classe d'état de recherche, y compris des informations pour générer des états successifs, des coûts heuristiques, etc, et juste le brancher à un type de cadre de recherche existant qui peut faire tout le travail lourd pour moi. Je sais que les algorithmes ne sont pas particulièrement difficiles à coder, mais il y a toujours assez d'astuces pour le rendre agaçant.

Est-ce que quelque chose comme ça existe? Je n'ai rien trouvé.

+0

Assurément, il wouldn ne sera pas trop difficile de générer une de vos solutions existantes? Tout ce dont vous avez besoin pour un algorithme de recherche de chemin est un état de départ, un état final et une fonction qui prend un état et renvoie (avec des poids) tous les états suivants possibles. –

+0

Je n'ai pas encore de solution en C#. La plupart des logiciels que j'ai maintenant sont java ou c du collège. La traduction est un peu plus difficile que génératrice. – captncraig

Répondre

6

Peut-être QuickGraph sera d'intérêt.

QuickGraph fournit des génériques dirigé/graphe non orienté datastructures et algorithmes pour .Net 2.0 et plus. QuickGraph est livré avec des algorithmes tels que la profondeur d'abord Seach, souffle première recherche, une recherche *, chemin le plus court , chemin k-plus courte, débit maximal, arbre couvrant minimal, moins ancêtres communs, etc

+0

J'aime ça, mais on dirait qu'il fonctionne sur un jeu de données existant. J'ai besoin de générer dynamiquement des états futurs à partir d'un ensemble infini de possibilités. – captncraig

+0

L'exemple de jeu de données est juste un. Vous pouvez créer des graphiques dynamiques. –

+0

wow. creuser, ça a l'air assez puissant. Il peut prendre un peu d'effort pour apprendre le cadre, mais il semble qu'il devrait faire tout ce dont j'ai besoin. – captncraig