Схема Эстрина - Википедия - Estrins scheme
В числовой анализ, Схема Эстрина (после Джеральд Эстрин ), также известный как Метод Эстрина, является алгоритм для численной оценки многочлены.
Метод Хорнера для вычисления многочленов является одним из наиболее часто используемых алгоритмов для этой цели, и в отличие от схемы Эстрина он оптимален в том смысле, что минимизирует количество умножений и сложений, необходимых для вычисления произвольного многочлена. На современном процессоре инструкции, которые не зависят друг от друга, могут выполняться параллельно. Метод Хорнера содержит серию умножений и сложений, каждое из которых зависит от предыдущей инструкции и поэтому не может выполняться параллельно. Схема Эстрина - это один из методов, который пытается преодолеть эту сериализацию, оставаясь при этом достаточно близким к оптимальному.
Описание алгоритма
Схема Эстрина действует рекурсивно, преобразовывая степень-п многочлен от Икс (за п≥2) до степени-⌊п/ 2⌋ полином от Икс2 с помощью ⌈п/ 2⌉ независимых операций (плюс одна для вычисления Икс2).
Для произвольного полинома п(Икс) = C0 + C1Икс + C2Икс2 + C3Икс3 + ⋯ + CпИксп, можно сгруппировать соседние термины в подвыражения вида (А + Bx) и перепишем его как многочлен от Икс2: п(Икс) = (C0 + C1Икс) + (C2 + C3Икс)Икс2 + (C4 + C5Икс)Икс4 + ⋯ = Q(Икс2).
Каждое из этих подвыражений и Икс2, могут вычисляться параллельно. Их также можно оценить с помощью собственного умножать – накапливать инструкция для некоторых архитектур, преимущество, которое разделяет метод Хорнера.
Затем эту группировку можно повторить, чтобы получить многочлен от Икс4: п(Икс) = Q(Икс2) = ((C0 + C1Икс) + (C2 + C3Икс)Икс2) + ((C4 + C5Икс) + (C6 + C7Икс)Икс2)Икс4 + ⋯ = р(Икс4).
Повторение этого журнала2п⌋ + 1 раз, приходим к схеме Эстрина для параллельного вычисления многочлена:
- Вычислить Dя = C2я + C2я+1Икс для всех 0 ≤я ≤ ⌊п/ 2⌋. (Если п четно, тогда Cп+1 = 0 и Dп/2 = Cп.)
- Если п ≤ 1, вычисление завершено и D0 это окончательный ответ.
- В противном случае вычислите у = Икс2 (параллельно с вычислением Dя).
- Оценивать Q(у) = D0 + D1у + D2у2 + ⋯ + D⌊п/2⌋у⌊п/2⌋ по схеме Эстрина.
Это выполняет в общей сложности п операции умножения-накопления (аналогично методу Хорнера) в строке 1 и дополнительный ⌊log2п⌋ квадратов в строке 3. В обмен на эти дополнительные квадраты все операции на каждом уровне схемы являются независимыми и могут вычисляться параллельно; самый длинный путь зависимости - ⌊log2п⌋ + 1 операция в длину.
Примеры
Брать пп(Икс) для обозначения полинома n-го порядка вида: пп(Икс) = C0 + C1Икс + C2Икс2 + C3Икс3 + ⋯ + CпИксп
Написано по схеме Эстрина:
- п3(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2
- п4(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2 + C4Икс4
- п5(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2 + (C4 + C5Икс) Икс4
- п6(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2 + ((C4 + C5Икс) + C6Икс2)Икс4
- п7(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2 + ((C4 + C5Икс) + (C6 + C7Икс) Икс2)Икс4
- п8(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2 + ((C4 + C5Икс) + (C6 + C7Икс) Икс2)Икс4 + C8Икс8
- п9(Икс) = (C0 + C1Икс) + (C2 + C3Икс) Икс2 + ((C4 + C5Икс) + (C6 + C7Икс) Икс2)Икс4 + (C8 + C9Икс) Икс8
- …
Подробно рассмотрим оценку п15(Икс):
- Входы: Икс, C0, C1, C2, C3, C4, C5 C6, C7, C8, C9 C10, C11, C12, C13 C14, C15
- Шаг 1: Икс2, C0+C1Икс, C2+C3Икс, C4+C5Икс, C6+C7Икс, C8+C9Икс, C10+C11Икс, C12+C13Икс, C14+C15Икс
- Шаг 2: Икс4, (C0+C1Икс) + (C2+C3Икс)Икс2, (C4+C5Икс) + (C6+C7Икс)Икс2, (C8+C9Икс) + (C10+C11Икс)Икс2, (C12+C13Икс) + (C14+C15Икс)Икс2
- Шаг 3: Икс8, ((C0+C1Икс) + (C2+C3Икс)Икс2) + ((C4+C5Икс) + (C6+C7Икс)Икс2)Икс4, ((C8+C9Икс) + (C10+C11Икс)Икс2) + ((C12+C13Икс) + (C14+C15Икс)Икс2)Икс4
- Шаг 4: (((C0+C1Икс) + (C2+C3Икс)Икс2) + ((C4+C5Икс) + (C6+C7Икс)Икс2)Икс4) + (((C8+C9Икс) + (C10+C11Икс)Икс2) + ((C12+C13Икс) + (C14+C15Икс)Икс2)Икс4)Икс8
Рекомендации
- Эстрин, Джеральд (Май 1960 г.). «Организация компьютерных систем - компьютер с фиксированной плюс переменной структурой» (PDF). Proc. Western Joint Comput. Конф. Сан-Франциско: 33–40. Дои:10.1145/1460361.1460365.
- Мюллер, Жан-Мишель (2005). Элементарные функции: алгоритмы и реализация (2-е изд.). Birkhäuser. п. 58. ISBN 0-8176-4372-9.
дальнейшее чтение
- fast_polynomial, библиотека Sage, использующая улучшенную схему (расширенная аннотация ).