ランダムグラフを生成できると思います。また、グラフの隣接行列表現に精通していることを前提としています。
その場合は、グラフの隣接行列表現を使用します。これを表すには、2D配列を使用します。
したがって、グラフは次のように定義されます。
#define MAXNODES 30
int graph[MAXNODES][MAXNODES];
グラフは重み付けされていませんか、それとも重み付けされていますか?重み付けされていない場合、マトリックスの各要素(graph[3][7]
たとえば)は0または1のいずれかになります。0の場合、ノード3と7(この例では)を接続するエッジはありません。 1、それから確かにエッジがあります。
重みが付けられている場合、0はエッジがないことを意味しますが、数値(1、9、234など)はそのエッジの重みを示します。
したがって、ループを使用して各配列要素の数値を入力できます-したがって、ノードの各ペアを調べて、重みをランダムに割り当てます(重みなしの場合は0、エッジがある場合はいくつかの数値、weighted-vs-重み付けされていません。)
したがって、あなたの質問に答えるために、「方向性」をチェックするのは簡単です。グラフが指示されている場合、graph[3][7]とgraph[7][3]は同じ値になります。したがって、すべてのペア(graph[i][j]とgraph[j][i])をチェックして、値が等しいかどうかを確認できます。行列が対称であるかどうかを確認しています。
対称でない場合(つまり、[3] [7]は0ですが、[7] [3]は1です)、一方向にエッジのみがあり、方向付けられています。また、各ペアに2つの値([3] [7] = 5、[7] [3] = 21)がある場合、移動する方向に応じて重みが変化するため、グラフが方向付けられます。