Angenommen ich habe eine Menge von benamsten Objekten, und möchte mehrere in einem Schritt umbenennen. Die Benennung muss aber immer eindeutig sein. Dann kann es natürlich zu Überschneidungen kommen (wie bei A->B, B->A), oder ich muss auf die Reihenfolge achten (wie bei A->B, B->C).
Einfachste Lösung ist natürlich, die Umbenennung in zwei Phasen durchzuführen, wobei in der ersten Phase alle betroffenen Objekte eindeutige temporäre Namen bekommen, und in der zweiten Phase diese in die eigentlich gewünschten Namen geändert werden, also z.B. für A->B, B->A Phase 1 A->Temp1, B->Temp2 und Phase 2 Temp1->B, Temp2->A. Damit vermeidet man alle Schwierigkeiten mit Überschneidungen oder Reihenfolge, für den Preis von doppelt so vielen Umbenennungen wie eigentlich nötig (im worst case).
Meine Frage ist, ob es einen einfachen Algorithmus gibt, der das ohne überflüssige Umbenennungen hinbekommt.