Programação  
 
Rede de conhecimento computador >> Programação >> Programação Python >> Content
Qual é a complexidade do tempo da operação de interseção definida no Python?
A complexidade do tempo da operação de interseção do conjunto em Python depende do método usado e do tamanho dos conjuntos envolvidos. Aqui está um colapso:

1. Usando o operador `&` ou o método `interseção ()`:

* Caso médio: O (min (Len (set1), len (set2)))
* Pior caso: O (n*m) onde n é o comprimento de um conjunto e m é o comprimento do outro, mas isso é muito improvável.

Explicação:

* O `set` do Python é implementado usando uma tabela de hash. O algoritmo itera essencialmente através do conjunto menor e verifica se cada elemento está presente no conjunto maior. O operador `in` em um conjunto (verificação da associação) leva O (1) em média devido à pesquisa da tabela de hash.
* Portanto, se `set1` for menor, ele itera através de` set1` e executar uma pesquisa de tabela de hash em `set2` para cada elemento, resultando em complexidade O (LEN (Set1)). A mesma lógica se aplica se `set2` for menor.
* O pior caso de O (n* m) ocorreria se as colisões de hash fossem galopantes, degradando as pesquisas de conjunto de O (1) a O (n). Isso é altamente incomum com os bons algoritmos de hash do Python.

2. Usando o método `intersection_update ()` (interseção no local):

* Caso médio: O (Len (Set)) onde o conjunto é o conjunto que será atualizado.
* Pior caso: O mesmo que `interseção ()` - improvável o (n*m)

Explicação:

`Intesection_update ()` modifica o conjunto no qual é chamado, removendo elementos que não estão presentes no (s) outro (s). A complexidade do tempo é semelhante ao `interseção ()` porque ainda precisa verificar a associação no (s) outro (s).

Exemplo:

`` `Python
set1 ={1, 2, 3, 4, 5}
set2 ={3, 5, 6, 7, 8}

Interseção usando e operador:


intersection_set =set1 &set2
Print (Intersection_set) # Saída:{3, 5}

Interseção usando o método de interseção ():


intersection_set =set1.intersection (set2)
Print (Intersection_set) # Saída:{3, 5}

Interseção usando o método intersection_update () (modifica o set1):


set1.intersection_update (set2)
Print (set1) # saída:{3, 5}
`` `

Tabela de resumo:

| Método | Complexidade média do tempo do caso | Na pior das hipóteses complexidade do tempo (improvável) |
| ---------------------------- | ---------------------------- | ------------------------------------------ |
| `&` Operador | O (min (len (set1), len (set2))) | O (n*m) |
| `Intersecção ()` | O (min (len (set1), len (set2))) | O (n*m) |
| `intersection_update ()` | O (Len (Set)) | O (n*m) |

Tecla de takeaway: A operação de interseção do conjunto em Python é geralmente muito eficiente, graças ao uso de tabelas de hash. Geralmente, você pode assumir que é O (min (Len (set1), Len (set2))) para fins práticos.

Anterior :

Próximo :
  Os artigos relacionados
·Como testar Python Fluxo manipuladores 
·Como iterar sobre Linhas de arquivo em Python 
·A Função Python Strip 
·Como escrever um programa em Python para Diofantinas eq…
·Como contar Digits em Python 
·Como projetar Accounting Software 
·Estruturas Python 
·Como remover dados de uma matriz em Python 
·Como substituir Regex em Python 
·Funções recursivas Python 
  Artigos em destaque
·Como abrir Linux Python XRCed 
·Como criar um arquivo usando Perl 
·Como limpar e preencher caixas de listagem no Visual Ba…
·Diferenças entre Gravar e WriteLine em Python 
·Como fazer uma nova-linha em XSLT 
·Qual é o outro nome da unidade de exibição visual? 
·Python Tk Tutorial 
·Como atribuir teclas de atalho para uma caixa de texto …
·Como redimensionar imagens em PHP 
·Como escrever um programa em C para converter Hexadecim…
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados