グラフの1サイクルでノード数を調べようとしています。私はグラフのすべてのサイクルでノードの数を計算するために再帰とDFSを使用しています。ここではC++の計算関数です。グラフのサイクル中のノード数
int iscyclic(int node,bool visited[],bool rec[],vector<int>g[])
{
if(!visited[node])
{
visited[node] = true;
rec[node] = true;
vector<int>::iterator it;
for(it=g[node].begin();it!=g[node].end();it++)
{
if(!visited[*it] && iscyclic(*it,visited,rec,g))
{
kount++;
}
else if(rec[*it])
kount++;
}
}
rec[node] = false;
return kount;
}
Visited
とrec
配列は、デフォルトではfalseに設定されているとkount
は、グローバル0
として設定されています。 kount
は、有向グラフのサイクル内のノード数を計算することになっています。答えが間違っているケースがあります。助けてください。私は最近グラフ理論を学び始めました。
"答えが間違っている場合があります。" - 例?エッジ= 4 のノードの –
数= 4 番号と次のように接続がある: - 1 -2、 2 -3、 3 -4、 4 -3、 –
サイクル数は指数関数的ですグラフのサイズで、それらをすべて計算していると確信していますか? –