1

Bonjour,
Je fais un algo génétique pour de la coloration de graphe.
J'ai défini un opérateur de croisement qui prend un sous ensemble des noeuds du graphe et qui échange les couleurs de ces noeuds entre les 2 solutions considérées.
Voici mon pb :
J'ai deux séquences de n couleurs variant chacune de (0 à k-1), par exemple :
0 0 0 1 4 2 0 4 2 1 0 2 3 3 1 4 2 4
1 3 2 1 3 0 0 3 3 1 0 2 2 1 1 4 0 3

J'aimerais établir une table d'équivalence entre les couleurs de la première et de la deuxième séquence.
Ici ça pourrait donner :
0 1 2 3 4 -> 0 à k-1
? 1 0 ? 3 -> permutation de [|0,k-1|]

L'objectif serait de minimiser le nombre de couples des deux séquences qui ne tapent pas dans cette table...
Pour le moment la seule solution que je vois c'est de compter les paires et de choisir les paires finales en commençant par les paires similaires les plus nombreuses, mais l'algo est assez lent..
Vous voyez un algo efficace pour résoudre ce pb ?

2

Je ne suis pas sur d'avoir bien tout compris, mais si c'est bien le cas, alors il me semble que "compter les paires" est la solution la plus adaptée.
Si je ne me trompe pas, une bonne implémentation du comptage devrait avoir une complexité algorithmique en O(n), donc ça devrait être plutôt rapide… (Sauf si tes séquences comptent des millions d'éléments grin)

Dans l'idée, il te faut un tableau de meilleurs couples (taille k = nombre de couleurs) et un tableau de comptage (taille k * k = carré du nombre de couleurs).
En gros tu parcours une seule fois tes deux séquences (simultanément), et tu compte chaque paire dans un tableau. Sauf qu'en même temps pour chaque couleur, tu maintiens le meilleur "copain" trouvé jusqu'à l'endroit où tu en es dans la séquence. (C'est l'affaire d'une petite comparaison à chaque étape)
À la fin, tu devrais directement avoir une liste des couples à utiliser.

Je sais pas si c'est très clair, enfin bon… Peut-être que ça pourra aider cheeky
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

GoldenCrystal (./2) :
Sauf qu'en même temps pour chaque couleur, tu maintiens le meilleur "copain" trouvé jusqu'à l'endroit où tu en es dans la séquence. (C'est l'affaire d'une petite comparaison à chaque étape)
Ça ne vaut pas le coup si k² est inférieur au nombre de couples.
avatar

4

si Kevin Kofler est inferieur au nombre de couples? #trihum#
avatar
HURRRR !