))簡単な使用例を示します。地点までの道順を求める、といった「経路の探索」と呼ばれる問題を取り上げます。「探索」にはいろいろな種類があります。クイーン」のようなパズルの解法も、あらゆる可能性の中から正解に行き着く手順を探すことですから、探索の一つと考えることができます。探索でよく用いられる最も基本的な方法が「バックトラック」なのです。経路の探索もバックトラックで解くことができます。このほかに、もう一つ基本的な方法として「幅優先探索」があります。バックトラックの場合、失敗したら後戻りして別の道を選び直しますが、幅優先探索の場合は、全ての経路について並行に探索を進めていきます。幅優先探索は最短手順を求めるのに適したアルゴリズムですが、問題によっては必要となるメモリの量がとても多くなり、幅優先探索を使用することができない場合があります。いう方法を使うと、多少時間はかかりますが、少ないメモリで最短手順を求めることができます。つの方法で経路を求めてみましょう。(graph)」というデータ構造を取り上げます。円グラフや折れ線グラフといった図表を思い出す人が多いと思います。数学の「グラフ理論」では、いくつかの点とそれを結ぶ線でできた図形を「グラフ」といいます。次の図を見てください。上図に示すように、グラフは点とそれを接続する線から構成されています。(arc)」と呼びます。種類あって、辺に向きの無いグラフを「無向グラフ」といい、辺に向きがあるグラフを「有向グラフ」といいます。有向グラフは一方通行の道と考えればいいでしょう。次の図を見てください。地点に戻ることはできません。これが有効グラフです。地点に戻ることもできます。データ間のさまざまな関係を表す場合、グラフはとても役に立ちます。下図のように経路をグラフで表すことができます。上図ではアルファベットで頂点を表しています。この例では経路をグラフで表していますが、このほかにもいろいろな問題をグラフで表現することができます。●隣接行列と隣接リストグラフをプログラムする場合、よく使われる方法に「隣接行列」と「隣接リスト」があります。次元配列で頂点の連結を表す方法です。列の行列で表すことができます。上の経路図を隣接行列で表すと次のようになります。