2010-08-22 4 views
2

Dites que j'ai un ensemble (ou un graphique) qui est partitionné en groupes. Je suis intéressé à trouver le nombre de transitions entre deux partitions, où une transition implique de prendre un élément hors d'une partition et en le déplaçant dans une autre (ou partition singleton par lui-même)Algorithme pour le nombre de transitions entre deux partitions (graphiques)

Par exemple il y a une transition entre les partitions

1 2 | 3 et 1 | 2 | 3

mais entre 1 2 3 4 et 1 2 | 3 | 4

Le nombre minimum de transitions est 2 je crois.

Donc, ma question est de savoir s'il existe des algorithmes qui, étant donné une paire de partitions et un ensemble, peuvent renvoyer le nombre d'états de transitions entre eux? Il y a une complication supplémentaire que cet ensemble représente réellement un graphe et je voudrais que chaque partition (et partition de transition) soit connectée (ie 1 2 | 3 serait invalide s'il n'y a pas de connexion in/direct entre 1 et 2). 2 débloqué par la partition unique de 3) mais à moins que vous ne soyez vraiment éclairé sur ce sujet, vous pouvez très probablement ignorer cela.

Merci

Comme une note j'ai une méthode que je pensais à moi-même qui est essentiellement de trouver tous les voisins d'une partition A (c.-à-toutes les partitions qui se trouvent dans une transition) et faire la même chose pour la partition B et s'il y a un chevauchement entre ces deux ensembles de voisins, alors ils sont à une transition. Cependant cette méthode devient très chère très rapidement.

+0

A quoi bon ce nombre de partitions? Avez-vous besoin d'un numéro ou d'une liste de transitions? – Dialecticus

Répondre

1

Je voudrais développer un peu votre méthode, et essentiellement construire un graphique et faire une recherche graphique. Les sommets du graphe seraient un partitionnement valide de l'ensemble et les bords seraient des transitions. Vous pouvez réellement construire et rechercher en même temps et ne construire que la partie du graphique nécessaire à la recherche. Pour ce faire, j'utiliserais un A * (ou une autre meilleure première recherche) et générerais à chaque étape tous les voisins de la partition actuelle. La partie délicate est de déterminer la meilleure heuristique pour la recherche A *. Vous pouvez probablement estimer le nombre de transitions en supposant que toutes les transitions entraîneraient des partitions connectées (en fait, ignorez votre contrainte).

Ceci est évidemment coûteux, mais vous économisez du temps et de l'espace en utilisant une recherche best-first et en générant le graphique que vous allez.

+0

Yea construire un graphique est une idée plutôt intéressante, bien qu'il y ait tellement de graphes imbriqués dans ce que je fais, ça devient plutôt comique. Je pensais aussi à la recherche de «comme vous allez» et à la recherche sélective. Par exemple, si la plupart des regroupements de deux partitions étaient identiques mais qu'un ou deux étaient différents, il serait probablement judicieux de commencer par trouver des voisins en fonction des différents groupes. – zenna

+0

Mais je suis sûr que cela a dû être attaqué quelque part dans la littérature avant (ou peut-être pas?). Le problème est de trouver la bonne terminologie pour la rechercher. – zenna

Questions connexes