Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> Python Programming >> .

Qual è la complessità temporale dell'operazione di intersezione nei set di Python?

La complessità temporale dell'operazione di intersezione in set di python, usando il metodo `&` o il metodo `intersection ()`, è o (min (len (s1), len (s2)) In media, dove `s1` e` s2` sono gli insiemi da intersecarsi.

Ecco perché:

* Implementazione: I set Python sono implementati utilizzando le tabelle hash. Ciò consente ricerche molto veloci (in media, O (1)).

* Processo di intersezione: L'operazione di intersezione ripete essenzialmente attraverso il set più piccolo e controlla se ogni elemento esiste nel set più grande.

* Costo di ricerca: Il controllo dell'esistenza di un elemento nel set più grande è, in media, un'operazione O (1) dovuta all'implementazione della tabella hash.

Pertanto, se `s1` è il set più piccolo, l'operazione itera attraverso` s1` (len (s1)) ed esegue una ricerca O (1) in `s2` per ogni elemento. Ciò si traduce in una complessità temporale totale di O (len (S1) * 1) =O (len (S1)). Allo stesso modo, se `s2` è più piccolo, la complessità è O (len (S2)). Pertanto, la complessità complessiva è O (min (len (S1), len (S2))).

Scenario peggiore:

Mentre il caso medio è O (min (len (S1), len (S2))), lo scenario peggiore è O (len (S1) * len (S2)) se ci sono molte collisioni di hash, che portano a o (n) ricerche anziché O (1). Tuttavia, questo è raro in pratica con l'hashing ben progettato di Python.

Esempio:

`` `Python

set1 ={1, 2, 3, 4, 5}

set2 ={3, 5, 6, 7, 8, 9, 10}

intersection_set =set1 &set2 # o set1.intersection (set2)

print (intersection_set) # output:{3, 5}

`` `

In questo esempio, la complessità temporale dell'operazione di intersezione sarebbe più vicina a O (len (set1)) perché `set1` è più piccolo.

 

Programmazione © www.354353.com