QuickGraph
Для всех, кто хочет перейти на .Net, взгляните на библиотеку QuickGraph с открытым исходным кодом для всей обработки ваших графиков / деревьев.Он аккуратно разделяет все понятия, связанные с представлением графа, алгоритмами, мутациями и представлением.У него много точек расширения, поэтому он должен поддерживать большинство задач, связанных с графированием.
[РЕДАКТИРОВАТЬ] Набор алгоритмов, поставляемых с QuickGraph, не включает в себя обрезку альфа-бета или поиск луча в данный момент, хотя его раздел «Поиск» алгоритмов включает в себя 11 других методов, которые обеспечивают достаточное руководство для реализации вашего любимого обходаалгоритм, и со временем я бы предположил, что он будет поддерживать альфа-бета и луч.
объявление.1 Он действительно удовлетворяет вашему первому критерию, поскольку в него можно вставить функцию делегата, которая возвращает несколько более конкретных решений (т. Е. Соседних узлов) на основе неполного решения (т. Е. Текущего узла).Это обрабатывается DelegateImplicitGraph
(и вариациями) и, как предполагается, эффективно использует память, поскольку предотвращает одновременное хранение всего пространства поиска в памяти. объявление.2 Кроме того, алгоритмы могут принимать пользовательские делегаты, такие как макс / мин / ожидаемая стоимость (см. AStarShortestPathAlgorithm
).Это удовлетворяет вашему второму критерию.
Таким образом, QuickGraph помогает структурировать вашу проблему, предоставляет алгоритмы вставки для различных типов проблем и позволяет улучшить ее, предлагая новые алгоритмы.