グラフの推移閉包
最終的な行列はブール型です。頂点uから頂点vに値1がある場合、それはuからvへのパスが少なくとも1つあることを意味します。
入力と出力
Input: 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 Output: The matrix of transitive closure 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1
アルゴリズム
transColsure(graph)
入力: 与えられたグラフ。
出力: 推移閉包マトリックス。
Begin copy the adjacency matrix into another matrix named transMat for any vertex k in the graph, do for each vertex i in the graph, do for each vertex j in the graph, do transMat[i, j] := transMat[i, j] OR (transMat[i, k]) AND transMat[k, j]) done done done Display the transMat End
<2>例
#include<iostream> #include<vector> #define NODE 4 using namespace std; /* int graph[NODE][NODE] = { {0, 1, 1, 0}, {0, 0, 1, 0}, {1, 0, 0, 1}, {0, 0, 0, 0} }; */ int graph[NODE][NODE] = { {1, 1, 0, 1}, {0, 1, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 1} }; int result[NODE][NODE]; void transClosure() { for(int i = 0; i<NODE; i++) for(int j = 0; j<NODE; j++) result[i][j] = graph[i][j]; //initially copy the graph to the result matrix for(int k = 0; k<NODE; k++) for(int i = 0; i<NODE; i++) for(int j = 0; j<NODE; j++) result[i][j] = result[i][j] || (result[i][k] && result[k][j]); for(int i = 0; i<NODE; i++) { //print the result matrix for(int j = 0; j<NODE; j++) cout << result[i][j] << " "; cout << endl; } } int main() { transClosure(); }
出力
1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1
-
スターグラフを確認する
グラフが表示されます。与えられたグラフがスターグラフであるかどうかを確認する必要があります。 グラフをトラバースすることにより、次数が1の頂点の数と次数がn-1の頂点の数を見つける必要があります。 (ここで、nは与えられたグラフの頂点の数です)。次数1の頂点の数がn-1で、次数(n-1)の頂点の数が1の場合、それはスターグラフです。 入力と出力 Input: The adjacency matrix: 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 Output: It is a star graph. アルゴリズム checkStarGraph(graph) 入力
-
Pythonでのグラフプロット
Pythonには、matplotlibライブラリを使用してグラフを作成する機能があります。さまざまなグラフやプロットを生成する多数のパッケージと関数があります。使い方もとても簡単です。 numpyや他のpython組み込み関数と一緒にそれは目標を達成します。この記事では、生成できるさまざまな種類のグラフをいくつか紹介します。 単純なグラフ ここでは、数学関数を使用してグラフのx座標とY座標を生成します。次に、matplotlibを使用して、その関数のグラフをプロットします。ここでは、以下に示すように、ラベルを適用してグラフのタイトルを表示できます。三角関数-tanのグラフをプロットしています