Un moyen facile de prouver que cet algorithme se termine finalement

10

Introduction et notations:

Voici une version nouvelle et simple de mon algorithme qui semble se terminer (selon mes expériences), et maintenant je voudrais le prouver.

Soit la notation faire référence à un point de données dimensionnelles (un vecteur). J'ai trois ensembles A, B et C, tels que , , : xiRpp|A|=n|B|=m|C|=l

A={xi|i=1,..,n}
B={xj|j=n+1,..,n+m}
C={xu|u=n+m+1,..,n+m+l}

Étant donné , soit la distance euclidienne moyenne de à ses points les plus proches dans ; et représentent la distance euclidienne moyenne de à son points les plus proches en .kNdxiAxikAdxiCxikC

Algorithme:

J'ai l'algorithme suivant qui modifie de manière itérative les ensembles A et B en déplaçant certains éléments sélectionnés de A vers B et vice versa, et C reste toujours le même (ne change pas). Pour faire simple: le but de l'algorithme est de mieux séparer les ensembles et telle sorte que "les points de sont plus similaires à ceux d'un ensemble fixe connu " et "les points de sont finalement auto-similaires et plus éloigné de ceux de et du set final ":ABBCACB

  • A={xiAdxiA>dxiC} ... (1)
  • A=AA ; ... (2)B=BA
  • B={xiBdxiA<dxiC } ... (3)
  • B=BB ; ... (4)A=AB
  • Répétez (1), (2), (3) et (4) jusqu'à ce que: (aucun élément ne passe de à ou de à , c'est-à-dire A 'et B' deviennent vides) ou ( ou )ABBA|A|k|B|k

L'algorithme se termine dans deux cas:

  • quandoudevient inférieur ou égal à| B | k|A||B|k
  • ou le cas le plus standard, quand , ce qui signifie qu'aucun élément ne se déplace entre A et B.A=B=

Question:

Comment prouver que cet algorithme se termine finalement? Je n'ai pas trouvé de fonction potentielle pratique qui puisse être strictement minimisée ou maximisée par l'algorithme. J'ai essayé en vain certaines fonctions: la fonction mais elle n'augmente pas à chaque itération. La fonction mais elle ne diminue pas à chaque itération. La fonction ne semble pas diminuer à chaque itération. La fonctionx A d A x + x B d C xx A d A x + x B d B xx A d B x + x B d A xxAdxC+xBdxAxAdxA+xBdxCxAdxA+xBdxBxAdxB+xBdxAne semble pas augmenter à chaque itération. Alors, quelle est la fonction potentielle pratique qui peut augmenter ou diminuer à chaque itération? Ou faut-il montrer que la fonction diminue mais pas à chaque itération (après quelques itérations plutôt)? Comment ?

Remarques:

  • Les points les plus proches de dans un ensemble , signifie: les points (autres que ) dans , ayant la plus petite distance euclidienne à . Vous pouvez simplement prendre pour simplifier l'analyse.kxSkxSxk=1
  • Je ne sais pas si cela peut aider ou non, mais j'ai la propriété suivante pour mes ensembles initiaux : initialement , si est le point le plus proche à et est le point le plus proche de puis toujours . Ce moyen intuitivement que les points en sont plus proches de que dans les points .A,B,CxiB,xjAxbCxixaCxjdistance(xi,xb)<distance(xj,xa)BCA
  • Si cela facilite l'analyse: il est tout à fait possible d'envisager une version légèrement différente de l'algorithme où dès qu'un point de doit être déplacé vers , il est déplacé de vers (sans passer par ), et vis versa pour .ABABAB
shn
la source
3
Pourquoi êtes-vous intéressé par cet algorithme particulier?
1
shna: Qu'est-ce que tu veux faire avec une collection de points arbitrairement divisée en trois ensembles?
4
@shna Connaître le but et l'objectif de l'algorithme peut conduire à une meilleure intuition et donc aider le problème.
@RichardRast Pour rendre l'explication simple: le but est de mieux séparer les ensembles et telle sorte que "les points de sont plus similaires à ceux d'un ensemble fixe connu " et "les points de sont finalement auto-similaires et plus éloigné de ceux de et du set final ". ABBCACB
shn
La migration vers la théorie a été refusée.

Réponses:

2

Voici la solution pour le cas :k=1

Supposons que l'algorithme ne se termine pas. Puisqu'il existe un nombre fini d'états de l'algorithme (affectation de points à et ), l'état de l'algorithme doit se répéter dans un cycle. Puisque le cycle passe par différents états, il doit y avoir un point qui bascule entre et infiniment souvent.ABAB

Soit un point qui change infiniment souvent dans ce cycle. Choisir la première itération de l'algorithme dans le cycle au cours de laquelle passe de à . Pour que passe à , il doit y avoir au moins un point dans , avec . Choisir arbitrairement le point le plus petit étiqueté; définir une fonction pour que . Notez que doit également basculer entre et infiniment souvent (car si resté dansxxBAxAxAdxC>dist(x,x)ff(x)=xxABxAde façon permanente, ), donc nous pouvons prendre etc.xf(f(x)),f(f(f(x))),

Puisque nous avons un nombre fini de points, les itérations de f doivent finalement se répéter: pour certains . Regardez maintenant les séquences correspondantes de distances de C: . Puisqu'elle se répète, cette séquence ne peut pas être uniformément décroissante. Il doit y avoir une itération telle quefn(x)=fm(x)m>ndf(x)C,df2(x)C,...dfn(x)C,...odfo1(x)Cdfo(x)C

Maintenant, et sont assez proches l'un de l'autre pour se faire mutuellement dans , si l'un d'eux l'est. C'est-à-dire qu'ils sont plus proches les uns des autres que l'un ou l'autre ne l'est de : (d'après la définition de )f o ( x ) Afo1(x)fo(x)Ad C f o ( x )d C f o - 1 ( x ) > d i s t ( f o - 1 ( x ) , f o ( x ) ) fCdfo(x)Cdfo1(x)C>dist(fo1(x),fo(x))f

Donc, dès que et sont tous deux en , ils se tiendront mutuellement dans éternité (voir les lignes 1-2 de l'algorithme). Cela contredit le fait que tous les itérations de doivent changer de série infiniment souvent. Ainsi, pour le cas où , l'algorithme se termine.f o ( x ) A A f k = 1fo1(x)fo(x)AAfk=1

causal
la source
Ceci est en quelque sorte compliqué et ne peut être montré que pour . Il est plutôt préférable de dériver une fonction potentielle dont on peut montrer qu'elle augmente ou diminue à chaque itération. Ou un qui peut augmenter ou diminuer après "quelques" itérations plutôt que 1.k=1
shn
1
@shn Je ne sais pas pourquoi vous critiquez le choix de la technique de preuve de quelqu'un qui a mieux réussi que vous à résoudre votre problème. Surtout lorsque votre propre question répertorie quatre tentatives infructueuses d'utilisation de votre technique préférée.
David Richerby
1
@DavidRicherby, je ne critique pas;) J'ai en fait discuté de cette solution avec "causative" (qui a donné cette réponse) sur IRC et nous avons constaté qu'il ne sera pas possible de le prouver de cette façon pour ; nous avons donc déduit qu'il est beaucoup mieux de pouvoir dériver une fonction potentielle dont on peut montrer qu'elle diminue à chaque itération. Mon commentaire était juste informatif. k>1
shn