C#で重み付きグラフを作成する方法


  1. クラスを使用した実装: まず、ノードとエッジを表すクラスを作成します。ノードクラスには識別子と重みのプロパティが含まれ、エッジクラスには始点ノード、終点ノード、および重みのプロパティが含まれます。次に、グラフクラスを作成し、ノードとエッジのリストを保持します。以下にコード例を示します。
class Node
{
    public int Id { get; set; }
    public int Weight { get; set; }
}
class Edge
{
    public Node StartNode { get; set; }
    public Node EndNode { get; set; }
    public int Weight { get; set; }
}
class Graph
{
    public List<Node> Nodes { get; set; }
    public List<Edge> Edges { get; set; }
}
  1. 辞書を使用した実装: C#の辞書(Dictionary)を使用することもできます。ノードをキーとし、エッジのリストを値とする辞書を作成します。エッジはタプルやカスタムクラスとして表現できます。以下にコード例を示します。
Dictionary<Node, List<(Node, int)>> graph = new Dictionary<Node, List<(Node, int)>>();
// グラフの追加
Node node1 = new Node { Id = 1, Weight = 0 };
Node node2 = new Node { Id = 2, Weight = 5 };
Node node3 = new Node { Id = 3, Weight = 10 };
graph.Add(node1, new List<(Node, int)> { (node2, 3), (node3, 7) });
graph.Add(node2, new List<(Node, int)> { (node3, 2) });
graph.Add(node3, new List<(Node, int)>());

これらは重み付きグラフを作成するための基本的な方法です。さまざまなアルゴリズムや操作(最短経路、最小全域木など)を適用することもできます。詳細なコーディング例や特定の問題に対するアルゴリズムの実装については、具体的な要件に応じて検討することをお勧めします。