一般的に、無向グラフ adt の作成には時間がかかりますか?
40 個のノードのグラフがあり、各ノードが他のノードの 20% に接続されている場合、ノードをリンクしようとするとプログラムが停止します。
私が実際に達成できる最大値は、20 ノードの密度 20% です。頂点をリンクする私のコードは次のようになります。
while(CalculateDensity()){
LinkRandom();
numLinks++;
}
void LinkRandom(){
int index = rand()%edgeList.size();
int index2 = rand()%edgeList.size();
edgeList.at(index).links.push_back(edgeList.at(index2));
edgeList.at(index2).links.push_back(edgeList.at(index));
}
これをより速く行う方法はありますか?
編集:データ構造の宣言は次のとおりです。
for(int i=0; i<TOTAL_NODES; i++){
Node *ptr = new Node();
edgeList.push_back(*ptr); //populate edgelist with nodes
}
cout<<"edgelist populated"<<endl;
cout<<"linking nodes..."<<endl;
while(CalculateDensity()){
LinkRandom();
numLinks++;
}