Дерево Уоллеса — различия между версиями
(→Схемная сложность) |
(→Схемная сложность) |
||
Строка 44: | Строка 44: | ||
Каждый элемент <math>3\to2</math> имеет глубину <math>O(1)</math> и размер <math>O(n)</math>. | Каждый элемент <math>3\to2</math> имеет глубину <math>O(1)</math> и размер <math>O(n)</math>. | ||
− | Подсчитаем количество элементов <math>3\to2</math>. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается | + | Подсчитаем количество элементов <math>3\to2</math>. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается в <math>1,{}5</math> раза. Тогда глубина дерева будет равна <math>\log_{3/2}n</math>, и в нём будет <math>n + \frac23n + \left(\frac23\right)^2n + \ldots = O(n)</math> элементов <math>3\to2</math>. |
Тогда общая сложность равна | Тогда общая сложность равна | ||
Версия 20:20, 13 октября 2010
Определение
Дерево Уоллеса - схема для умножения двух чисел.
Принцип работы
Дерево Уоллеса
В отличие от ещё одной схемы для умножения --- матричного умножителя, дерево Уоллеса складывает все числа не последовательно, а с помощью специального элемента(назовём его ), преобразующего 3 числа и в числа и такие, что .
С помощью этого элемента на каждом шаге производятся следующие операции:
- Берутся тройки чисел , , . При этом какие-то числа могут остаться.
- Для каждой тройки применяется элемент .
- Повторяются пункты 1 и 2 пока не осталось 2 числа.
- Оставшиеся 2 числа складываются с помощью двоичного каскадного сумматора.
На выходе имеем число, которое равно сумме чисел на всех входах.
Элемент 3→2
Теперь о том, как устроен элемент
.Для построения элемента
нам потребуется элемент, который умеет складывать 3 бита и возвращать 2 бита результата. Основная идея реализации - отдельная обработка переносов и остатков.Тогда первое число ответа
может быть получена так: , где , и - входные числа, а , и - соответствующие их -е биты.Второе же число
можно получить так: , где - функция медианы(она же "голосование 2 из 3"). С помощью этой функции считается перенос.Очевидно, полученные числа
и дадут в суммеСхемная сложность
Определим схемную сложность этого элемента.
Каждый элемент
имеет глубину и размер .Подсчитаем количество элементов
. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается в раза. Тогда глубина дерева будет равна , и в нём будет элементов . Тогда общая сложность равна