Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оптимальность схемы Горнера

Теорема D.l. Пусть n— произвольное неотрицательное целое чис­ло. Не существует алгоритма, который, используя только сложение, вычитание и умножение, позволяет вычислять значение

anxn +... + a1x + a0 (D.l)

по числам x,a0,a1,...,an так, что количество сложений илиумноже-ний всегда оказывается меньше n.

В терминах нижних границ это утверждение можно, очевидно, переформулировать следующим образом.

Пусть З6 — класс алгоритмов, вычисляющих значение (D.1) с помо­щью операций сложения, вычитания и умножения. Будем рассматри­вать число n как размер входа x,a0,a1,...,an. Тогда n является ниж­ней границей как аддитивной сложности (измеряемой числом сложе­ний и вычитаний в худшем случае), так и мультипликативной слож­ности (измеряемой числом умножений в худшем случае) алгоритмов класса З6.

Несколько предварительных соглашений и замечаний. Во-первых, будем для определенности считать, что все коэффициенты полино­ма, а также значение x принадлежат полю рациональных чисел Q, хотя достаточно было бы потребовать, например, чтобы они принад­лежали произвольному бесконечному полю. Во-вторых, ограничимся операциями сложения и умножения; позднее мы покажем, что при­влечение вычитаний не является существенным. В-третьих, заметим, что любой алгоритм, который использует только операции сложения и умножения и который вычисляет значение произвольного полино­ма фиксированной степени n по заданному x, можно записать в виде линейной (неветвящейся) программы, одной и той же для всех по­линомов степени n (так как в используемом наборе операций нет операций сравнения). В качестве программных переменных мы бу­дем использовать p с тем или иным целым индексом. Шагом про-



Приложение D


граммы является некоторое присваивание. Подготовительный раздел программы содержит присваивания

P-n-1:=an;...; P-1:=a0; Р0:=х (D.2)

и, возможно, ряд присваиваний вида рк:=..., к<-п - 1, с конкрет­ными числами в правой части (т. е. можно запасти константы, нуж­ные в вычислениях). Вычислительный раздел программы состоит из присваиваний вида

Pi:=pk, k<i, (D.3)

и

Pi:=Pk<>P, Kl<i, ое {+,■}. (D.4)

Значение индекса в левой части будем считать номером шага, пред­полагая, что все используемые в программе значения индекса за­полняют целиком некоторый отрезок множества целых чисел. Шаг вида (D.4) будем называть аддитивным или мультипликативным в зависимости от вида о (+ или •). Шаг вида (D.3) будем называть нейтральным. Каждую программу такого вида, вычисляющую значе­ние (D.1) и обладающую тем свойством, что, не меняя ее вычисли­тельного раздела, а лишь варьируя правые части в (D.2), мы можем получать значения любых полиномов степени п в любых точках, мы назовем п-программой.

Наша цель состоит в доказательстве того, что каким бы ни бы­ло неотрицательное целое п, любая n -программа содержит не ме­нее п аддитивных и не менее п мультипликативных шагов.

Если в n -программе изменить шаги с номерами 0, -1,..., -п - 1, подставляя в правые части присваиваний (D.2) вместо чисел х, а0, а 1, ...,ап их буквенные обозначения, и интерпретировать +, • в вы­числительном разделе как знаки полиномиальных операций, то в ре­зультате выполнения n -программы значениями P1, p 2,... будут поли­номы (т.е. буквенные выражения, «картинки»). В частности, будет построен полином апхп +... + а1х + а0, причем ап,...,а10 и х яв­ляются переменными этого полинома (степень по х которого рав­на п, а степень, например, по ап равна 1). При таком подходе каждая n -программа вычисления значения полинома превращается в про­грамму построения полинома

Р(х, а0, а 1, ...,ап) = апхп +... + а1х + а0 е Q[ x, а0, а 1,..., ап] (D.5)

с помощью операций сложения и умножения, исходя из переменных х,а0 1, ...,ап. Программу обсуждаемого вида, содержащую в под-


Оптимальность схемы Горнера



готовительном разделе формализованные указанным способом ша­ги с номерами -n - 1, -n,..., О, назовем формальной n-программой. Если мы докажем, что любая формальная n -программа содержит не менее n аддитивных и не менее n мультипликативных шагов, то по­ставленная цель будет достигнута.

Лемма D.I. Пусть n^О, S — формальная n-программа, t — поло­жительное целое, не превосходящее наибольшего значения индекса пе­ременной p в S. Пусть среди шагов S с номерами 1,2,..., t нет ад­дитивных, в которых по крайней мере один операнд правой части зависит от an (имеет положительную степень по an как полином от x, a0, a ъ..., an). Тогда после выполнения S каждый из полиномов pi,p2,---,pt либо не зависит от an, либо кратен an (может быть записан в виде anQ, где Q sQ xa o, a,..., an ]).

Доказательство. Индукция по t. Для t = 1 утверждение очевидно.

Пусть t > 1 и утверждение леммы верно для 1, 2,..., t - 1. Для шага с номером t имеется три возможности:

pt:=pk> pt:=pk+pl> pt'-=pk'ph

k,l^t-l. При осуществлении первой возможности требуемое непо­
средственно следует из предположения индукции. При второй воз­
можности из сказанного в условии леммы относительно аддитивных
шагов следует, что pt не зависит от an. При третьей возможности
любой из полиномов pk, pl может быть либо кратным an, либо не
зависеть от an; в обоих случаях получаем то, что нам нужно.

Лемма D.2. Каждая формальная n-программа S, n^О, построения полинома P вида (D.5) содержит не менее n аддитивных шагов.

Доказательство. Индукция по n.

Для n = О утверждение очевидно.

Пусть n > 0 и утверждение леммы верно для 0,1,..., n - 1. Предпо­ложим, что S содержит менее n аддитивных шагов. Ясно, что в S име­ется по крайней мере один аддитивный шаг такой, что по крайней мере один из его операндов зависит от an. В силу леммы D.1 первый такой шаг будет иметь по крайней мере один операнд, являющийся кратным an полиномом. Пусть этот шаг имеет вид pi:=pk + pl, и зна­чением pk (именно этот операнд мы берем только для определенно­сти) является полином anQ, Q e(Q)[ x, a 0, a ъ..., an ]. Если в S заменить шаг p - n -!:= an на p - n -х:=0, а шаг pi:=pk + pl —на pi:= pl, то, оче­видно, получится формальная (n- 1)-программа построения полино-



Приложение D


ма an-гxn +... + aгx + a0, содержащая менее чем n - 1 аддитивных
шагов. Противоречие. П

Исследуя число мультипликативных шагов, мы докажем утвержде­ние более сильное, чем то, которое непосредственно нас интересует.

Во-первых, мы будем рассматривать формальные n -программы, которые строят полином, возможно лишь «по модулю xn +1» рав­ный P (x, a0, aъ..., an), т. е. некоторый полином вида Uxn +1 + anxn +...... +aгx + a0, где U e(Q>[ x, a0, aг,...,an], и при этом конкретный вид U может быть любым, и он нас не будет интересовать. Мы согласны, та­ким образом, получить любой полином W(.x,a0,aъ..., an) такой, что разность W{x, a0, aъ..., an) -P{x, a0, aъ..., an) делится на xn +1:

W (x, a 0, a 1,..., an)= P (x, a 0, a 1,..., an) (mod xn +1) (D.6)

(этим мы фактически расширяем понятие формальной n -програм­мы). Во-вторых, мы будем исследовать число существенно мульти­пликативных шагов, т.е. таких шагов вида pi:=pk -pl, для которых k,l ^ -n - 1; последнее означает, что операнды таких шагов не явля­ются заранее запасенными константами. Ясно, что если для постро­ения любого полинома W (x, a 0, aъ..., an), удовлетворяющего (D.6), не существует формальной n -программы, содержащей менее n суще­ственно мультипликативных шагов, то, в частности, не существует и формальной n -программы для построения P (x, a0, aъ...,an), содер­жащей менее n мультипликативных шагов.

Лемма D.3. Пусть n^О, S — формальная n-программа, t— поло­жительное целое, не превосходящее наибольшего значения индекса пе­ременной p в S. Пусть среди шагов S с номерами 1, 2,..., t нет суще­ственно мультипликативных, в которых по крайней мере один опе­ранд правой части зависит от an. Тогда после выполнения S каждый из полиномов p\,p2,---,pt либо не зависит от an, либо имеет вид can + Q, где c е Q \ {0} и полином Q не зависит от an.

Доказательство аналогично доказательству леммы D.I. □

Лемма D.4. Каждая формальная n-программа S построения како­го-либо W, удовлетворяющего (D.6) при P = anxn +... + aгx + a0, со­держит не менее n существенно мультипликативных шагов.

Доказательство. Индукция по n. Для n = 0 утверждение очевидно.

Пусть n > 0 и утверждение леммы верно для 0,1,..., n - 1. Пусть S — формальная n -программа построения некоторого полинома


Оптимальность схемы Горнера



У/{х,а0ъ...ап), удовлетворяющего (D.6). Предположим, что в S меньше чем п существенно мультипликативных шагов. Покажем, что в таком случае можно построить формальную (п- 1)-программу, в которой меньше чем п - 1 существенно мультипликативных шагов, и тем самым получить противоречие с предположением индукции.

В силу леммы D.3 формальная n -программа S содержит по край­ней мере один существенно мультипликативный шаг, по крайней мере один из операндов которого зависит от ап. Пусть

Pi:=Рк 'Pi (D.7)

будет самым первым таким шагом, и пусть значением рк явля­ется полином вида сап + Q (x, а0г,...,ап-г), с Ф 0. Тогда удале­ние из S всех шагов с номерами, большими i - 1, и замена шага р-п-х:= ап шагом р-п-х:= 0 дает программу S' ', получающую поли­ном 0_{х,а0ъ...,ап-г) в качестве значения переменной Рк. Пусть т —наименьшее значение индекса переменной р, встречающееся в S'. Добавим к S' шаг Рт-г:= с', где с' = -1 / с, и шаг Pi:= Рт-гРк, который, заметим, не является существенно мультипликативным. Получаемая

программа строит полином - Q (x, а0, аг,..., ап-1); существенно муль­типликативных шагов в ней на единицу меньше, чем среди шагов с номерами 1, 2,..., i в S. Обозначим эту программу через S".

Дальнейшие преобразования программы S имеют целью получе­ние такой программы, которая содержит не более п - 1 существенно мультипликативных шагов и при этом находит некоторый полином, по модулю хп равный ап-гхп - г +... + агх + а0. Мы видим, что если бы значением р-п-х было не ап, а тот полином, который строится с помощью S", то i -й шаг S привел бы к присваиванию перемен­ной р; значения 0, а после окончания выполнения всех шагов мы бы получили

W = W{x, а0, аъ..., ап-ъ c'Q{x, а0, аъ..., an -i)).

В силу (D.6) подстановка an = c'Q{x,a0,a1,..., an -1) в W даст нам

W = Р{х, а0, аъ...,ап-ъ c'Q{x, a 0, аъ..., ап-г)) +

+ U\x,a0,a1,...,an-1)xn+1.

Принимая во внимание равенство Р = апхп +... +агх + а0, получаем W 'eQ[ x, a 0) a 1,... a „-1] и

W / = a „-1 xn -1 +...+ a 1 x + a 0 (mod х").

Отбросим предварительный раздел формальной n -программы S и запишем шаги ее вычислительного раздела вслед за S", преобразуя



Приложение D


эти шаги следующим образом:

(a) если шаг не является шагом (D.7) или существенно мультипли­кативным шагом вида pt:= prps, t ^ k, то увеличиваем на i индекс в левой части и увеличиваем на i каждый из положительных индек­сов в правой части (неположительные индексы не изменяются);

(b) в правых частях всюду заменяем p - n -х на pi;

(c) каждый существенно мультипликативный шаг вида pt:=pr-ps, t^k, заменяем нейтральным шагом pt+i:=pt;

(d) шаг (D.7) заменяем нейтральным шагом p2i:= p - n -i.

Прибегая к замене (c), мы пользуемся независимостью от an полино­
мов, являющихся значениями pr и ps, это позволяет не дублировать
существенно мультипликативные шаги, содержащиеся в S"; заверша­
ющая замена (d) приводит нас к формальной (n - 1)-программе по­
строения W ', имеющей менее n - 1 существенно мультипликативных
шагов. □

В силу сказанного ранее, из лемм D.2, D.4 следует теорема D.1 г.

Заметим, что замена каждого вычитания сложением с дополни­тельным домножением второго операнда на -1 не меняет числа су­щественно мультипликативных шагов. Поэтому доказательство тео­ремы D.1 сохраняет силу при рассмотрении сложения и вычитания в качестве аддитивных операций.

Известен алгоритм, который для вычисления значения произволь­ного полинома n -й степени требует n сложений и n умножений, это алгоритм («схема») Горнера:

anxn + an-гxn-г +...+a1x + a0 = {... {anx + an-г)x +... + aг)x + a0.

Таким образом, мы получили следующий результат:

Если рассматривать n в качестве размера входа

x,a0,a1,...,an,

то как по числу сложений, так и по числу умножений схема Горнера является оптимальным в худшем случае алгоритмом вычисления зна­чения anxn +... + aгx + a0 с помощью операций сложения и умножения.

Разумеется, полиномы какого-либо частного вида, как, например, xn, могут вычисляться с меньшими затратами.

1 В 1962 г. В.Я. Пан доказал утверждение теоремы D.1 в несколько более общей фор­ме— см., например, [19, разд. 4.6.4, упр. 38]. Главные идеи доказательства, приведен­ного выше в этом приложении, взяты из [57].


Приложение E

<== предыдущая лекция | следующая лекция ==>
С1. Показательная функция и логарифмическая оценка | О сортировке, оптимальной по числу сравнений в худшем случае
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 502; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.