Я взял эту структуру данных из этого A * учебника :
public interface IHasNeighbours<N>
{
IEnumerable<N> Neighbours { get; }
}
public class Path<TNode> : IEnumerable<TNode>
{
public TNode LastStep { get; private set; }
public Path<TNode> PreviousSteps { get; private set; }
public double TotalCost { get; private set; }
private Path(TNode lastStep, Path<TNode> previousSteps, double totalCost)
{
LastStep = lastStep;
PreviousSteps = previousSteps;
TotalCost = totalCost;
}
public Path(TNode start) : this(start, null, 0) { }
public Path<TNode> AddStep(TNode step, double stepCost)
{
return new Path<TNode>(step, this, TotalCost + stepCost);
}
public IEnumerator<TNode> GetEnumerator()
{
for (Path<TNode> p = this; p != null; p = p.PreviousSteps)
yield return p.LastStep;
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
Я не знаю, как создать простой график с помощью.
Как мнедобавьте что-то вроде следующего неориентированного графа, используя C #:
В основном я хотел бы знать, как соединить узлы.У меня есть свои собственные структуры данных, которые я уже могу определить, соседи и расстояние.Теперь я хотел бы преобразовать это в эту опубликованную структуру данных, чтобы я мог запустить ее с помощью алгоритма AStar.
Я искал что-то более похожее на:
Path<EdgeNode> startGraphNode = new Path<EdgeNode>(tempStartNode);
startGraphNode.AddNeighbor(someOtherNode, distance);