スターグラフを確認する
グラフをトラバースすることにより、次数が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)
入力: 与えられたグラフ。
出力: グラフがスターグラフの場合はTrue。
Begin degOneVert := 0 and degNminOneGraph := 0 if graph has only one vertex, then return true, if there is no self-loop else if graph has two vertices, then return true if there is only one vertex between two vertices else for all vertices i in the graph, do degree := 0 for all vertices j, adjacent with i, do degree := degree + 1 done if degree = 1, then degOneVert := degOneVert + 1 else if degree = n-1, then degNminOneGraph := degNminOneGraph + 1 done if degOneVert = n-1, and degNminOneGraph = 1, then return true otherwise return false End
例
#include<iostream> #define NODE 4 using namespace std; int graph[NODE][NODE] = { {0, 1, 1, 1}, {1, 0, 0, 0}, {1, 0, 0, 0}, {1, 0, 0, 0} }; bool checkStarGraph() { int degOneVert = 0, degVert = 0; //initially vertex with degree 1 and with degree n - 1 are 0 if (NODE == 1) //when there is only one node return (graph[0][0] == 0); if (NODE == 2) return (graph[0][0] == 0 && graph[0][1] == 1 && graph[1][0] == 1 && graph[1][1] == 0 ); for (int i = 0; i < NODE; i++) { //for graph more than 2 int degree = 0; for (int j = 0; j < NODE; j++) //count degree for vertex i if (graph[i][j]) degree++; if (degree == 1) degOneVert++; else if (degree == NODE-1) degVert++; } //when only vertex of degree n-1, and all other vertex of degree 1, it is a star graph return (degOneVert == (NODE-1) && degVert == 1); } int main() { if(checkStarGraph()) cout << "It is a star graph."; else cout << "It is not a star graph."; }
出力
It is a star graph.
-
C++での切断されたグラフのBFS
切断されたグラフ は、1つ以上のノードがグラフの端点ではない、つまり接続されていないグラフです。 切断されたグラフ… 現在、Simple BFSは、グラフが接続されている場合、つまりグラフのすべての頂点にグラフの1つのノードからアクセスできる場合にのみ適用できます。上記の切断されたグラフの手法では、いくつかの法則にアクセスできないため不可能です。したがって、切断されたグラフで幅優先探索を実行するには、次の変更されたプログラムの方が適しています。 例 #include<bits/stdc++.h> using namespace std; void insertnode(v
-
テキストの盗用を確認する方法
盗作は、教師、作家、編集者など、言葉やアイデアを定期的に扱う人々にとって常に問題でしたが、インターネットの登場とコピー&ペースト機能のおかげでさらに悪化しました。盗用チェックソフトウェアは役に立ちますが、すべてのプログラムに大規模なデータベースや正確なアルゴリズムがあるわけではありません。大ざっぱなチェッカーの中には、提出されたコンテンツを自分の目的に使用する場合もあります。最高のチェッカーでさえ、100%の成功率はありません。しかし、盗用のテキストをチェックするツールがどのように機能するかを知ることは、どれがあなたの時間の価値があるかを決定するのに役立ちます。 盗用チェッカーはどのように機能