1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problema em coloração de grafos

Discussão em 'Programação' iniciada por bastardos, 19 de Dezembro de 2007. (Respostas: 0; Visualizações: 1894)

  1. Boas.

    Estou a fazer um programa em c++ para coloração de grafos com lista de adjacências.

    O problema e que acho a coloração não está a ser bem feita porque o grafo não está a ser percorrido correctamente, não sei porque. Gostaria que me ajudassem. Está aqui a função que faz a coloração.

    Código:
    template<class TV, class TR>
    void ListAdjGrafo<TV,TR>::ColorirProfundamente(Vertice<TV,TR> *actual)
    {
            int cor=0,i=0;
            int cores[4]={1,2,3,4};
            Vertice<TV,TR> *aux;
            Ramo<TV,TR> *auxr;
            if(!actual->visited)
            {
                while(actual->getCor()==cores[i])
                    i++;
    
                cor=cores[i];
                actual->setCor(cores[i]);
                //actual->visited=true;
    
                auxr=actual->apramo;
                while(auxr!=NULL)
                {
                    aux=auxr->apv;
                    /* O if aqui em baixo n serve para nada 
                    é só para fazer uns testes aqui é onde  se vai
                    comparar a cor com a cor dos que lhe estão directamente ligados*/
                    
                    if(aux->getCor()!= cores[i])
                        cout<<"cor diferente\n";
                    else
                    {
                        i=0;
                        while(aux->getCor()==cores[i])
                            i++;
                        actual->setCor(cores[i]);
                        cout<<"cor igual\n";
                    }
                    auxr=auxr->apr;
                }
    
                aux=actual->apvertice;
    
                while(aux!=NULL)
                {
                    aux->setCor(cores[i]);
                    ColorirProfundamente(aux);
                    cout<<"mais um vertice\n";
                    aux=aux->apvertice;
                }    
            }
    }
    Obrigado desde ja.

    Cumprimentos
     
    Última edição pelo moderador: 20 de Dezembro de 2007

Partilhar esta Página