Zeitaufwand für die Prüfung, ob zwei Sätze in Python gleich sind

8

Lesen diese Frage Ich fragte mich, wie viel Zeit (asymptotisch gesprochen) Python benötigt, um Ausdrücke wie

auszuwerten %Vor%

Das heißt, um zu überprüfen, ob zwei Instanzen der festgelegten Klasse gleich sind.

    
Immanuel Weihnachten 12.09.2012, 14:19
quelle

1 Antwort

17

Der Vergleich zwischen den Sets wird durch die Funktion set_richcompare in setobject.c , Zeile implementiert 1848 Sie werden sehen, dass die Gleichheit folgendermaßen implementiert ist:

  1. Wenn die Mengen nicht die gleiche Größe haben, geben Sie false zurück.

  2. Wenn beide Mengen gehasht wurden und die Hashwerte sich unterscheiden, geben Sie false zurück.

  3. Rufen Sie set_issubset auf.

Der Subset-Test für zwei Sets sieht so aus:

%Vor%

Sie werden sehen, dass es funktioniert, indem Sie alle Elemente der ersten Menge durchlaufen und dann jede einzelne in der anderen Menge nachschlagen. Also (es sei denn es gibt viele Hash-Kollisionen) ist dies linear in der Größe der ersten Menge.

    
Gareth Rees 12.09.2012, 14:27
quelle

Tags und Links