O que é uma operação idempotente?

O que é uma operação idempotente?

Solução

Em computação, uma operação idempotente é aquela que não tem efeito adicional se for chamada mais de uma vez com os mesmos parâmetros de entrada. Por exemplo, remover um item de um conjunto pode ser considerado uma operação idempotente no conjunto.

Em matemática, uma operação idempotente é aquela em que f(f(x)) = f(x). Por exemplo, a função abs() é idempotente porque abs(abs(x))) = abs(x) para todos os x.

Estas definições ligeiramente diferentes podem ser reconciliadas considerando que x na definição matemática representa o estado de um objeto, e f é uma operação que pode mutilar esse objeto. Por exemplo, considere o Python set e seu método discard. O método `discard' remove um elemento de um conjunto, e não faz nada se o elemento não existir. Então:

my_set.discard(x)

tem exactamente o mesmo efeito que fazer a mesma operação duas vezes:

my_set.discard(x)
my_set.discard(x)

Operações idempotentes são frequentemente utilizadas no desenho de protocolos de rede, onde um pedido para realizar uma operação é garantido de acontecer pelo menos uma vez, mas também pode acontecer mais de uma vez. Se a operação é idempotente, então não há mal nenhum em realizar a operação duas ou mais vezes.

Veja o artigo da Wikipedia em idempotence para mais informações.


A resposta acima tinha alguns exemplos incorretos e enganosos. Os comentários abaixo escritos antes de abril de 2014 referem-se a uma revisão mais antiga.

Comentários (15)

Não importa quantas vezes você chamar a operação, o resultado será o mesmo.

Comentários (5)

Uma operação idempotente produz o resultado no mesmo estado, mesmo se você o chamar mais de uma vez, desde que você passe nos mesmos parâmetros.

Comentários (2)