Дерево Уоллеса — различия между версиями
(→Схемная сложность) |
(→Схемная сложность) |
||
Строка 35: | Строка 35: | ||
Каждый элемент <tex>3\to2</tex> имеет глубину <tex>O(1)</tex> и размер <tex>O(n)</tex>. | Каждый элемент <tex>3\to2</tex> имеет глубину <tex>O(1)</tex> и размер <tex>O(n)</tex>. | ||
− | Подсчитаем количество элементов <tex>3\to2</tex>. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается в полтора раза. Тогда глубина дерева будет равна <tex>\log_{\frac{3}{2}}n</tex>, и в нём будет <tex> n + \dfrac{2}{3} n + \left(\dfrac{2}{3}\right)^2n + \ldots = O(n)</tex> элементов <tex>3\to2</tex>. | + | Подсчитаем количество элементов <tex>3\to2</tex>. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается в полтора раза. Тогда глубина дерева будет равна <tex>\log_{\frac{3}{2}}n</tex>, и в нём будет <tex> n + \dfrac{2}{3} n + \left(\dfrac{2}{3}\right)^2n + \ldots = O(n)</tex> элементов <tex>3\to2</tex>. Обозначим за <tex>size</tex> общее количество элементов в цепи; за <tex>size_{3\to2}</tex> количество элементов <tex>3\to2</tex>; за <tex>size_{sum}</tex> количесвтво элементов матричного каскадного сумматора в схеме; |
Тогда общая сложность равна | Тогда общая сложность равна | ||
Версия 20:10, 7 января 2017
Дерево Уоллеса (англ. Wallace tree) — схема для умножения двух чисел. Время работы .
Содержание
Принцип работы
Дерево Уоллеса
Для получения произведения, воспользуемся методом, напоминающим умножение «в столбик»: распишем произведение в сумму матричном умножителе).
чисел (как вОднако, в отличие от матричного умножителя, дерево Уоллеса складывает все числа не последовательно, а с помощью специального элемента(назовём его ), преобразующего числа , и в числа и такие, что .
С помощью этого элемента на каждом шаге производятся следующие операции:
- Берутся тройки чисел , ,
- Для каждой тройки применяется элемент .
- Повторяются пункты 1 и 2 пока не осталось числа.
- Оставшиеся двоичного каскадного сумматора. числа складываются с помощью
На выходе имеем число, которое равно сумме чисел на всех входах.
Элемент 3→2
Для того, чтобы представить сумму трёх чисел с помощью двух чисел, воспользуемся полным сумматором. Для каждого
направим , и на вход полного сумматора. Тогда младший бит сумматора будет -ым битом первого числа, а старший — -ым второго.Очевидно, полученные числа в сумме дают
.На иллюстрации изображён элемент
для четырёхбитных чисел, в верхнем прямоугольнике изображены четыре полных сумматора, выходы которых и являются разрядами результатов.Поскольку все полные сумматоры работают параллельно (выходы на каждом из них зависят только от собственных входов), то глубина такой схемы есть константа (не зависит от количества бит).
Схемная сложность
Определим количество элементов и глубину схемы для умножения двух чисел из
бит.Каждый элемент
имеет глубину и размер .Подсчитаем количество элементов
. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается в полтора раза. Тогда глубина дерева будет равна , и в нём будет элементов . Обозначим за общее количество элементов в цепи; за количество элементов ; за количесвтво элементов матричного каскадного сумматора в схеме; Тогда общая сложность равна
Смотри также
Источники
- Кормен, Т., Лейзерсон, Ч., Ривест, Р. Алгоритмы: построение и анализ — 960 с. — ISBN 5-900916-37-5