Umsetzung und Improvability der Depth-First-Suche

Habe ich codiert DFS wie die Art und Weise es ist in meinem Kopf und nicht gemäß irgendeinem lehrbuch oder Pseudo-code für Ideen. Ich glaube, ich habe einige Zeilen des codes, die unnötigen Berechnungen. Irgendwelche Ideen zur Verringerung der Komplexität von meinem Algorithmus ?

vector<int>visited;

bool isFound(vector<int>vec,int value)
{
    if(std::find(vec.begin(),vec.end(),value)==vec.end())
        return false;
    else
        return true;
}

void dfs(int **graph,int numOfNodes,int node)
{
    if(isFound(visited,node)==false)
        visited.push_back(node);
    vector<int>neighbours;
    for(int i=0;i<numOfNodes;i++)
        if(graph[node][i]==1)
            neighbours.push_back(i);

    for(int i=0;i<neighbours.size();i++)
        if(isFound(visited,neighbours[i])==false)
            dfs(graph,numOfNodes,neighbours[i]);
}

void depthFirstSearch(int **graph,int numOfNodes)
{
    for(int i=0;i<numOfNodes;i++)
        dfs(graph,numOfNodes,i);
}

PS: Könnte bitte jemand schickte mir einen link, Lehre mich, wie kann das einfügen von C++ - code mit guter Qualität. Ich habe versucht, syntax-Hervorhebung, aber es hat nicht funktioniert.

InformationsquelleAutor Ali | 2012-04-17
Schreibe einen Kommentar