Quando as pessoas dizem que os conjuntos têm O (1) verificação de associação, estão falando sobre o caso médio . Na pior das hipóteses (quando todos os valores de hash colidem), a verificação de associação é O (n). Veja o wiki do Python sobre complexidade de tempo .
O artigo da Wikipedia diz que a melhor complexidade de tempo para uma tabela de hash que não é redimensionada é O(1 + k/n). Esse resultado não se aplica diretamente aos conjuntos Python, pois os conjuntos Python usam uma tabela de hash que é redimensionada.
Um pouco mais adiante, no artigo da Wikipedia, diz que, para o caso médio , e assumindo uma função simples de hash uniforme, a complexidade do tempo é O(1/(1-k/n))onde k/npode ser limitada por uma constante c<1.
Big-O refere-se apenas ao comportamento assintótico como n → ∞. Como k / n pode ser limitado por uma constante, c <1, independente de n ,
O(1/(1-k/n))não é maior O(1/(1-c))que o equivalente a O(constant)= O(1).
Portanto, assumindo um hash simples e uniforme, em média , a verificação de associação para conjuntos Python é O(1).
setimplementação original estavadictcom valores fictícios e foi otimizada mais tarde.