Die zeitliche Komplexität des Kreuzungsvorgangs in Python -Mengen unter Verwendung des "Operators" und der Methode "Intersection ()" beträgt
o (min (len (s1), len (s2)) Im Durchschnitt, wo "S1" und "S2" die Sets geschnitten werden.
Hier ist der Grund:
* Implementierung: Python -Sets werden mit Hash -Tabellen implementiert. Dies ermöglicht sehr schnelle Lookups (im Durchschnitt O (1)).
* Schnittprozess: Der Kreuzungsvorgang iteriert im Wesentlichen den kleineren Satz und prüft, ob jedes Element im größeren Satz existiert.
* Suchkosten: Die Überprüfung auf das Vorhandensein eines Elements im größeren Satz ist im Durchschnitt ein O (1) -Operationsvorgang aufgrund der Hash -Tabellen -Implementierung.
Wenn "S1" der kleinere Satz ist, iteriert der Betrieb durch "S1" (Len (S1)) und führt für jedes Element eine O (1) -Suche in "s2" durch. Dies führt zu einer Gesamtzeitkomplexität von O (Len (S1) * 1) =O (Len (S1)). In ähnlicher Weise ist die Komplexität O (Len (S2)), wenn "s2" kleiner ist. Somit ist die Gesamtkomplexität O (min (Len (S1), Len (S2))).
Worst-Case-Szenario:
Während der durchschnittliche Fall O (min (len (s1), len (s2)) ist, ist das Worst-Case-Szenario O (Len (S1) * Len (S2)), wenn es viele Hash-Kollisionen gibt, die zu O (n) -Suchenden anstelle von O (1) führen. Dies ist jedoch in der Praxis mit Pythons gut gestaltetem Hashing selten.
Beispiel:
`` `Python
set1 ={1, 2, 3, 4, 5}
set2 ={3, 5, 6, 7, 8, 9, 10}
intersection_set =set1 &set2 # oder set1.intersection (set2)
print (intersection_set) # output:{3, 5}
`` `
In diesem Beispiel wäre die Zeitkomplexität des Schnittbetriebs näher an O (Len (set1)), da `set1` kleiner ist.