私はこのA* tutorialからこのデータ構造を取っ:このデータ構造からグラフを作成するにはどうすればよいですか?
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);
私は自分のノードと隣接ノードを*私のノード*データ構造で見つける方法を知っていますが、A *のために構築されたものをどのように使うのか分かりません。 –
私は次のようなことができると思いました: 'node.AddNeighbour(otherNode、distance)' –