Дерево Уоллеса — различия между версиями
Komarov (обсуждение | вклад) (→Как оно работает(макро)?) |
Komarov (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | == | + | ==Определение== |
Дерево Уоллеса --- схема для умножения двух чисел. | Дерево Уоллеса --- схема для умножения двух чисел. | ||
Строка 7: | Строка 7: | ||
===Дерево Уоллеса=== | ===Дерево Уоллеса=== | ||
− | [[file:wallace_tree.png|thumb|200px| | + | [[file:wallace_tree.png|thumb|200px|Иллюстрация работы дерева для суммирования 9 чисел]] |
В отличие от ещё одной схемы для умножения --- [[Матричный умножитель|матричного умножителя]], дерево Уоллеса не складывает все числа последовательно, а с помощью специального элемента(назовём его <math>3\to2</math>) преобразует 3 числа <math>x, y</math> и <math> z </math> в числа <math>a</math> и <math>b</math> такие, что <math>x + y + z = a + b</math>. | В отличие от ещё одной схемы для умножения --- [[Матричный умножитель|матричного умножителя]], дерево Уоллеса не складывает все числа последовательно, а с помощью специального элемента(назовём его <math>3\to2</math>) преобразует 3 числа <math>x, y</math> и <math> z </math> в числа <math>a</math> и <math>b</math> такие, что <math>x + y + z = a + b</math>. | ||
Строка 19: | Строка 19: | ||
На выходе имеем число, которое равно сумме чисел на всех входах. | На выходе имеем число, которое равно сумме чисел на всех входах. | ||
− | == | + | ===Элемент 3→2=== |
[[file:3→2.png|thumb|200px|Элемент 3→2]] | [[file:3→2.png|thumb|200px|Элемент 3→2]] | ||
Теперь о том, как устроен элемент <math>3\to2</math>. | Теперь о том, как устроен элемент <math>3\to2</math>. | ||
Строка 39: | Строка 39: | ||
Очевидно, полученные числа <math>a</math> и <math>b</math> дадут в сумме <math>x + y + z</math> | Очевидно, полученные числа <math>a</math> и <math>b</math> дадут в сумме <math>x + y + z</math> | ||
− | == | + | ==Схемная сложность== |
Теперь подсчитаем схемную сложность этого элемента. | Теперь подсчитаем схемную сложность этого элемента. |
Версия 08:02, 11 октября 2010
Определение
Дерево Уоллеса --- схема для умножения двух чисел.
Принцип работы
Дерево Уоллеса
В отличие от ещё одной схемы для умножения --- матричного умножителя, дерево Уоллеса не складывает все числа последовательно, а с помощью специального элемента(назовём его ) преобразует 3 числа и в числа и такие, что .
С помощью этого элемента на каждом шаге производятся следующие операции:
- Берутся тройки чисел , . При этом какие-то числа могут остаться.
- Для каждой тройки применяется элемент .
- Повторять пункты 1 и 2 пока не осталось 2 числа.
- Оставшиеся 2 числа складываются с помощью двоичного каскадного сумматора.
На выходе имеем число, которое равно сумме чисел на всех входах.
Элемент 3→2
Теперь о том, как устроен элемент
.Для построения элемента
нам потребуется элемент, который умеет складывать 3 бита и возвращать 2 бита результата. Основная идея реализации --- отдельная обработка переносов и остатков.Тогда первое число ответа
может быть получена так: , где , и --- входные числа, а , и --- соответствующие их -е биты.Второе же число
можно получить так: , где --- функция медианы(она же "голосование 2 из 3"). С помощью этой функции считается перенос.Очевидно, полученные числа
и дадут в суммеСхемная сложность
Теперь подсчитаем схемную сложность этого элемента.
Каждый элемент
имеет глубину и размер .Теперь разберёмся, сколько в этой схеме элементов
. На каждом шаге количество чисел, которые нужно просуммировать, уменьшается на . Тогда глубина дерева будет равна элементов . Тогда общая сложность равна