我正在嘗試設置一棵樹(最終用於「神經網絡」並試圖儘可能提高安裝效率。不幸的是,即使設置樹也需要大約3分鐘的時間,我不知道它是如何使它效率低下,我試圖儘可能使用指針來儘量減少負載,但它仍然是永遠存在。我做錯了什麼?C++中的效率
PS。這是最終的Tic Tac Toe AI(是的,我知道只需看看那個愚蠢的遊戲就可以解決問題,但是我想把它當成一個簡單的AI來教自己怎麼做)
樹的每個分支都有9個節點,每個節點分支出另一個節點這給最後一組分支約4億個節點。有沒有辦法更有效地執行此代碼?
#include <iostream>
#include <vector>
using namespace std;
class Node;
class Set;
class Node {
public:
Node(double, Set*);
Node();
double value;
Set * nextSet;
};
class Set {
public:
Set(vector<Node *>);
Set();
vector<Node *> nodes;
};
class NeuralNet {
public:
Set * firstSet;
};
Node::Node(double val, Set * newSet){
value = val;
nextSet = newSet;
}
Set::Set(vector<Node *> input){
nodes = input;
}
Node::Node(){
Set temp;
nextSet = &temp;
}
Set::Set(){
vector<Node *> temp;
nodes = temp;
}
void setUpNeuralNetRecursive(Set * curSet, int curDepth){
if(curDepth<9){
for(int i=0;i<9;i++){
Set newSet;
Node newNode(1,&newSet);
(*curSet).nodes.push_back(&newNode);
setUpNeuralNetRecursive(&newSet, curDepth+1);
}
}
}
void setUpNeuralNet(NeuralNet net){
Set newSet;
net.firstSet=&newSet;
setUpNeuralNetRecursive(&newSet, 0);
}
int main()
{
cout << "Setting up neural network. This may take up to 3 minutes." << endl;
NeuralNet net;
setUpNeuralNet(net);
cout << "Setup ended." << endl;
return 0;
}
你有沒有試過通過探查器運行這個?或者看看其他人是如何實現一個玩AI的井字遊戲? – GWW
改變它使用指針是一個壞主意。現在它慢而且錯,而不是緩慢。 –
緩慢可能是創建的512多個向量,將數據推入其中,然後立即銷燬。 –