O que conta como uma operação?

8

Desculpas pela pergunta do novato, mas estou um pouco confuso sobre o que exatamente conta como uma "operação simples" ao calcular a complexidade de tempo de um algoritmo. Em particular, por que consideramos todas as operações iguais?

Certamente, dividir dois números muito grandes consome mais tempo do que adicionar um a um número (como em cada iteração de um loop for). A multiplicação, por exemplo, pode consistir em qualquer número de pequenas adições. Então, em vez de apenas adicioná-los, não deveríamos aplicar algum tipo de peso a cada operação, dependendo do tipo de operação (adição, multiplicação, etc.) e do tamanho dos números envolvidos?

Meu problema é que me pedem para provar que a complexidade do meu algoritmo éO(f) (para alguma função f) e não tenho certeza de como fazer isso de maneira matematicamente rigorosa devido à imprecisão inerente na definição de "operação simples". Então, como eu iria fazer isso?

user85798
fonte

Respostas:

1

Operações simples são algo que leva tempo constante para ser alcançado. A confusão é que a divisão não parece levar tempo constante e, de fato, em geral, não é. MAS!

A divisão e a adição levam tempo constante se, por exemplo, você estiver adicionando dois números inteiros de 32 bits, o que geralmente ocorre. No entanto, se você estiver adicionando números arbitrariamente grandes, eles não serão realmente constantes, embora às vezes eu ache que as pessoas o tratem como se fosse porque é suposto que os números não são grandes demais.

Alex Li
fonte
1
Bem vindo ao site! Esta é uma explicação muito simplificada e não tenho certeza de que lide com o problema muito bem. Em particular, existem vários modelos de computação. Com as máquinas de Turing, por exemplo, você não pode sequer indexar em uma matriz em tempo constante; com modelos de palavras, você pode fazer aritmética emO(registron)números de bits em tempo constante, onde né o comprimento da entrada. É preciso selecionar um modelo apropriado para a coisa que foi analisada e as situações em que a análise será usada.
David Richerby