Como preparação para um exame sobre algoritmos e complexidade, atualmente estou resolvendo exercícios antigos. Um conceito com o qual eu já estava lutando quando o encontrei pela primeira vez é o conceito de análise amortizada. O que é análise amortizada e como fazê-lo? Em nossas notas de aula, afirma-se que "a análise amortizada fornece limites para o" tempo médio "necessário para determinada operação e também pode fornecer um limite para o pior caso". Isso parece realmente útil, mas quando se trata de exemplos, não tenho idéia do que devo fazer e, mesmo depois de ler a solução de amostra, não tenho idéia do que eles estão fazendo.
Vamos somar 1 na base 2, ou seja, 0, 1, 10, 11, 100, 101, 110, 111, 1000, ... Usando a análise amortizada, mostre que em cada etapa somente amortizada constantemente, muitos bits precisam ser alterados.
(o exercício é originalmente em alemão, peço desculpas pela minha tradução talvez não seja perfeitamente precisa)
Agora a solução padrão primeiro define para alguma constante . Eu acho que isso é chamado de função potencial que, de alguma forma, corresponde às unidades excessivas de tempo (mas não tenho idéia do porquê de apresentar essa definição específica). Supondo que tenhamos que mudar bits na ésima etapa. Esse passo é sempre da forma
Esta afirmação é compreensível para mim, mas, novamente, não vejo a motivação por trás disso. Então, do nada, eles criam o que chamam de "estimativa"
e afirmam que para , obtemos que é o que tivemos que mostrar.
O que acabou de acontecer? O que é ? Por que podemos escolher ? Em geral, se eu tiver que mostrar que em cada etapa apenas amortizadas constantemente muitas "unidades de tempo" são necessárias, isso significa que eu tenho que mostrar que é constante?
Existem alguns outros exercícios relacionados à análise amortizada e também não os compreendo. Eu pensei que se alguém pudesse me ajudar com este, eu poderia dar outra chance aos outros exercícios e talvez isso me ajude a entender o conceito.
Agradecemos antecipadamente por qualquer ajuda.