IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Algorithme de coloration des sommets d'un graphe


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Algorithme de coloration des sommets d'un graphe
    bonjour ,svp jai un projet qui s'intitule d'un thème qui a pour objectif l'implantation de l'algorithme de coloriage des sommets d'un graphe sur matlab. svp jai besoin d'aide si quelqu'un a une idée.
    merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    ou bloques-tu précisément?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    l'utilisation de la dérivée est un bon début (fonction diff), dérivée première et seconde sont utiles.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci bien
    voila le code que jai utilisé (disponible ici) mais l'erreur que j'obtiens est la suivante:
    Error in ==> dsatur at 14
    for i=1:n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    function [coloring] = dsatur(V,E)
     
    %n = size(V,1);
    %coloring = zeros(n,1);
    %available_colors = 1;
     
    % Start with the node that has the maximum degree.
    % Color the current node with the lowest available color.
    % Select the next node by selecting the node with the maximum degree of saturation.
    % This means that you have to select the node that has the most number of unique neighboring colors.
    % In case of a tie, use the node with the largest degree.
    % Goto step 2. until all nodes are colored.
     
    % Degrees
    for i=1:n
        v = i;
        Degrees(i,1) = size([E(find(E(:,1)==v),2); E(find(E(:,2)==v),1)],1);
    end
     
    % Degrees of saturation
    Degrees_of_saturation = zeros(n,1);
     
    % Coloring
    for i=1:n
        if i == 1
            [value index] = max(Degrees);
            v = index(1);
            coloring(v) = 1;
            assigned_color_v = 1;
        else
            Uncolored = find(coloring==0);
            index_temp = find(Degrees_of_saturation(Uncolored)==max(Degrees_of_saturation(Uncolored)));
            index = Uncolored(index_temp);
            if(size(index,1)>1)
                [value1 index1] = max(Degrees(index));
                v = index(index1);
            else
                v = index;
            end
     
            % Assign first available color to v
            neighbors = [E(find(E(:,1)==v),2); E(find(E(:,2)==v),1)];
            for j=1:available_colors
                if size(find(coloring(neighbors)==j),1)==0
                    coloring(v) = j;
                    assigned_color_v = j;
                    break;
                end
            end
            if coloring(v) == 0
                available_colors = available_colors + 1;
                coloring(v) = available_colors;
                assigned_color_v = available_colors;
            end
        end
     
        % Update Degrees of saturation
        neighbors_v = [E(find(E(:,1)==v),2); E(find(E(:,2)==v),1)];
        for j=1:size(neighbors_v,1)
           u = neighbors_v(j);
           neighbors_u = [E(find(E(:,1)==u),2); E(find(E(:,2)==u),1)];
           if size(find(coloring(neighbors_u)==assigned_color_v),1) == 1
               Degrees_of_saturation(u,1) = Degrees_of_saturation(u,1) + 1;
           end
        end
     
    end

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Enlève les commentaires sur les lignes 3 à 5, elles sont utiles pour le reste du code.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut reponse à magelan
    oui j'ai essayé cela mé il donne un autre message d'erreur présenté comme suit:
    Error in ==> dsatur at 2
    n = size(V,1);

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le message d'erreur n'est pas complet. Est-ce qu'il mentionne que la variable V n'est pas définie?
    Si tel est le cas, de quelle façon utilises-tu cette fonction?

Discussions similaires

  1. Coloration des sommets d'une matrice d'adjacence
    Par lawlou dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/12/2014, 14h44
  2. coloration des sommets
    Par kimou27 dans le forum Graphisme
    Réponses: 0
    Dernier message: 19/03/2011, 17h40
  3. Réponses: 1
    Dernier message: 18/06/2008, 08h59
  4. coloration des sommets d'un graphes en c++
    Par michalove dans le forum C++
    Réponses: 5
    Dernier message: 06/03/2008, 02h12
  5. Coloration des graphes, méthodes hybrides (tabou, exacte)
    Par lovely_ned dans le forum Langage
    Réponses: 4
    Dernier message: 28/09/2007, 00h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo