Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eindeutige Permutationen eines Multisets effizient generieren?

Wie kann ich eindeutige Permutationen eines Multisets effizient generieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-13 10:53:12765Durchsuche

How Can I Efficiently Generate Unique Permutations of a Multiset?

Eindeutige Permutationen zählen

Die Permutationsfunktion von Itertools behandelt Elemente aufgrund ihrer Position und nicht ihres Wertes als eindeutig. Dadurch können Duplikate entstehen, wie im folgenden Beispiel: [(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1 , 1, 1), (1, 1, 1)].

Duplikate vermeiden

Die ursprüngliche Anfrage betraf eine Algorithmus, der diese Duplikate vermeidet, ohne auf Nachfilterung aufgrund der großen Anzahl beteiligter Permutationen zurückzugreifen.

Multiset Permutations in sympy

Für solche Fälle bietet Sympy die multiset_permutations an Iterator. Im Gegensatz zu Permutationen behandelt dieser Iterator Elemente aufgrund ihrer Werte und nicht ihrer Positionen als eindeutig.

Betrachten Sie die folgenden Beispiele:

>>> from sympy.utilities.iterables import multiset_permutations
>>> list(multiset_permutations([1,1,1]))
[[1, 1, 1]]
>>> list(multiset_permutations([1,1,2]))
[[1, 1, 2], [1, 2, 1], [2, 1, 1]]

Wie Sie sehen können, erzeugt multiset_permutations nur eindeutige Permutationen.

Das obige ist der detaillierte Inhalt vonWie kann ich eindeutige Permutationen eines Multisets effizient generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn