Во-первых, забудьте о «1 для всех других операций» и «точной мощности 3» битов на минуту. Что, если стоимость составляла всего 2i, когда я являюсь точной степенью 2?
Хорошо, предположим, что мы делаем вид, что каждая операция стоит четыре. То есть для каждой операции мы помещаем четыре монеты в нашу «кучу долговых расписок» ... Затем мы используем эти монеты, чтобы «заплатить», когда мы достигаем фактических степеней 2. (Это один из способов описания метода потенциальной функции.)
Шаг 1: внесите четыре монеты. Нужно заплатить 2 * 1 = 2, поэтому наша куча монет на два.
Шаг 2: внесите еще четыре монеты. Нужно заплатить 2 * 2 = 4, поэтому наша куча снова в два.
Шаг 3: внесите четыре монеты. В куче теперь шесть монет.
Шаг 4: внесите четыре монеты. В куче теперь десять монет, но 4 - это степень 2, поэтому пришло время заплатить 4 * 2 = 8, поэтому наша куча снова падает до двух монет.
Шаги 5-7: внесите по четыре монеты каждая. Всего сейчас 14 монет.
Шаг 8: внесите четыре монеты (всего = 18), потратьте 8 * 2 = 16, еще раз две монеты останутся.
Довольно легко доказать, что устойчивое состояние здесь состоит в том, что мы продолжаем истощать наши монеты до постоянной (2), но никогда не опускаемся ниже. Поэтому амортизированная стоимость составляет четыре единицы за операцию.
Теперь предположим, что операция X стоит 2i, когда i - степень 2 (и ноль в противном случае). Предположим, что операция Y стоит 3i, когда i - степень 3 (и ноль в противном случае). И предположим, что операция Z стоит 1, за исключением случаев, когда i является степенью 2 или степенью 3. Обратите внимание, что ваша задача эквивалентна выполнению операции X и Y и Z для каждой итерации. .. Таким образом, если вы можете рассчитать амортизированную стоимость X, Y и Z отдельно, вы можете просто сложить их, чтобы получить общую амортизированную стоимость.
Я только что дал тебе X; Я оставляю Y и Z в качестве упражнения. (Хотя я не верю, что окончательный ответ - 10. Возможно, близко к 10) ...