КАТЕГОРИИ: Архитектура-(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, причем ап,...,а1,а0 и х являются переменными этого полинома (степень по х которого равна п, а степень, например, по ап равна 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. При осуществлении первой возможности требуемое непо Лемма 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:= pr • ps, 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 полино В силу сказанного ранее, из лемм 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
Дата добавления: 2014-01-11; Просмотров: 502; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |