- •Вопросы государственного экзамена
- •1. Архитектура эвм
- •2. Процессор
- •3. Периферийные устройства эвм. Внешние запоминающие устройства
- •4. Организация прерываний в эвм
- •1. Информатика и информация
- •2. Обеспечение целостности и безопасности информации
- •3. Программное обеспечение (по)
- •1. Назначение и функции oc
- •1. Первый период (1945–1955 гг.). Ламповые машины.
- •2. Второй период (1955 г.– начало 60-х). Эвм на основе транзисторов.
- •3. Третий период (начало 60-х – 1980 г.). Эвм на основе интегральных микросхем.
- •4. Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •2. Процессы
- •3. Организация памяти компьютера
- •2.Один процесс в памяти
- •3.Оверлейная структура
- •4.Динамическое распределение. Свопинг
- •5.Схема с переменными разделами
- •4. Система управления вводом-выводом
- •1. Критерии качества программ
- •2. Процессы жизненного цикла программных средств
- •3. Семантический подход к языкам программирования
- •Перегрузка процедур и функций
- •Множественное наследование
- •Шаблонные функции
- •Обработка исключений
- •4. Основные структуры программирования
- •Операторы действия
- •Оператор цикла
- •Подпрограмма
- •5. Структурные типы данных в языках программирования
- •Массивы
- •Записи (структуры)
- •Множества
- •6. Этапы развития технологии программирования
- •1. Представление математических объектов в системах компьютерной алгебры
- •2. Алгоритм Евклида
- •3. Модулярная арифметика
- •4. Вычисление полиномов
- •5. Нахождение нод полиномов от одной переменной
- •1. Понятие информации формы её представления
- •2. Энтропия
- •3. Количество информации
- •1 Комбинаторный подход
- •2 Вероятностный подход
- •3 Алгоритмический подход
- •4. Кодирование
- •5. Сжатие данных
- •6. Помехоустойчивое кодирование
- •1. Html
- •Id и name
- •Idref и idrefs
- •2. Основы JavaScript
- •3. Основы web-дизайна
- •4. SharePoint 2010
- •1. Функции, процедуры и службы управления учебным процессом
- •2. Состав и функции подсистем ису
- •3. Технологии проектирования ис
- •4. Основные направления информатизации процесса обучения
- •1. Системный подход в моделировании
- •2. Стохастическое моделирование
- •3. Имитационное моделирование
- •4. Агентное моделирование
- •1. Методы представления знаний
- •3. Экспертные системы
- •4. Логическое программирование
- •1. Процесс проектирования информационных систем в образовании
- •2. Этапы проектирования информационных систем в образовании
- •3. Управление проектированием информационных систем в образовании
- •4. Анализ компромиссов и рисков программного проекта
- •5. Uml как язык объектно-ориентированного проектирования
- •1. Основные задачи и базовые понятия теории систем
- •2. Системный подход к исследованию систем
- •3. Методы описания информационных систем
- •4. Моделирование и проектирование информационных систем
- •5. Информационные модели принятия решений
4. Вычисление полиномов
Полином – многочлен.
Общая запись: y = anxn + an-1xn-1+…+a1x + a0
Вычисление х в степени n (бинарный метод, метод множителей, степенное дерево, аддитивная сложность).
Бинарный метод
Запишем n в двоичной системе счисления и заменим в этой записи каждую цифру “1” парой букв SX, а каждую цифру “0” – буквой S, после чего вычеркнем крайнюю левую пару букв SX. Результат, читаемый слева на право, превращается в правило вычисления хn, если букву “S” интерпретировать как операцию возведения в квадрат (S – square – квадрат), а букву “X ” – как операцию умножения на х.
Пример: n = 46, переводим в двоичную n = 1011102, заменяем SxSSxSxSxS, записываем правило: x2x4x5x10x11x22x23x46 итого 8 умножений
Метод множителей
Если n=p·q, где р – наименьший простой множитель числа n и q >1, то для вычисления хn мы можем сначала вычислить хр, а затем возвести это число в степень q. В случае, когда n простое, мы можем вычислить сначала число хn-1, а затем умножить его на х.
Если n=1, число хn имеется без всяких вычислений. Многократное применение этих правил дает нам процедуру вычисления хn для любого данного n.
Пример: n = pq ; p=7, q=13, n=91
y = x7 = ((x2)x)2x
y13 = (((y2)y)2)2y
итого 9 умножений
Степенное дерево
Допустим нужно вычислить xn. Находим на дереве число n, и тогда путь от корня дерева к узлу n определяет последовательность эффективного вычисления xn .
Аддитивная сложность
Аддитивной цепочкой для n называется всякая последовательность целых чисел 1=a0,…,ar=n, обладающих тем свойством, что ai=aj+ak при некоторых k ≤ j < i для всех i=1,2,…,r.
Заметим, что а1 всегда равно 2, а2 равно 2, 3 или 4.
Наименьшее значение r длины аддитивных цепочек для n обозначается через l(n) и называется аддитивной сложностью или высотой числа n.
Схема Горнера.
f(x)=anxn+an-1xn-1+…+a1x+a0, an≠0
f(x)=(…(anx+an-1)x+…)x+a0
Весь процесс требует n умножений и n сложений.
Обобщенная схема Горнера.
Используется когда необходимо вычислить сразу как полином, так и его производную.
F’(x)=nanxn-1+(n -1)an-1xn-2+…+a1
Это удобно сделать, положив
c0=an, b0=0
cj=cj-1x+an-j, bj=bj-1x+cj-1, 1≤j≤n.
Здесь cn=f(x) и bn=f’(x), вычисление требует (2n -1) умножений и (2n -1) сложений, причем нет необходимости хранить в памяти новые коэффициенты j·aj.
Пример: f’(x)=2x7+0x6-3x5-4x4-x3-8
C0=a5=2
……
C5=C4*x+a0 = (((2x2-3)*x-4)*x-1)*x-8= f(x)
b0=0
b1=b0*x+C0=2
…….
b5=b4x+C4=2x4+3x2-4x-4
Литература: [1], [5].
5. Нахождение нод полиномов от одной переменной
Наивный метод.
Пусть f и g полиномы и мы хотим вычислить их НОД. "наивный" метод (основан на алгоритме Евклида). Такие действия над полиномами с рациональными коэффициентами требуют неоднократного вычисления НОД целых чисел и что целые числа, фигурирующие в этих вычислениях, не всегда являются маленькими.
Модулярные методы.
Вычисления НОДа наивным методом наводят на мысль о модулярных методах, в которых нет возможности разбухания промежуточных выражений, поскольку целые числа по модулю 5 ограничены (четырьмя).
Вопросы: 1.- как вычислять нетривиальный НОД? 2.- что делать, если модулярный НОД не является модулярным образом НОД?м 3.- какова стоимость этого метода? Граница для коэффициентов НОД двух полиномов.
Неравенство Ландау-Миньотта, следствия.
Теорема (неравенство Ландау-Миньотта). Пусть -делитель полинома(где аi, bi-целые числа). Тогда .Следствие 1. Каждый коэффициент НОД полиномов ,(с целыми коэффициентами аi, bi) ограничен величиной.Следствие 2. Каждый коэффициент НОД полиномов ,(с целыми коэффициентами аi, bi) ограничен величиной .
Соответствие модулярное – целое.
Соответствие модулярное-целое: Лемма 1. Если число p не делит старший коэффициент НОД(a,b) полиномов a и b, то степень НОД(aр,bр) больше или равна степени НОД(f,g). Формулировка, которой легче пользоваться: Следствие. Если число р не делит старшие коэффициенты полиномов a и b (в частности, может делить один из них, но не оба одновременно), то степень НОД (aр,bр) >= степени НОД(a,b). Поскольку НОД является единственным полиномом этой степени, который делит и a, и b, то мы можем проверить корректность наших вычислений НОД: если результат имеет ту же степень, что и НОД(aр,bр) (где р удовлетворяет предположению следствия), и если он делит a и b, то он совпадает с НОД (с точностью до целого множителя). Пример. Пусть a=х8+х6-3х4+3х3+х2+2х-5; b=3х6+5х4-4х2-9х+21. Тогда НОД(a2,b2) = х+1, хотя мы уже знаем, НОД(a,b)=1.
Лемма 2. Пусть c=НОД(a,b). Если число р удовлетворяет условию следствия и, если р не делит Resх(a/c,b/c), то НОД(aр,bр)=cр. Если НОД(aр,bр)=НОД(a,b)р, то мы говорим, что редукция задачи хорошая или что р - число с хорошей редукцией. В противном случае мы говорим, что р - число с плохой редукцией. Из этой леммы, в частности, следует, что существует только конечное число значений р, таких, что степень НОД(aр,bр) отличается от степени НОД (a,b): - это те р, которые делят НОД старших коэффициентов; - это те р, которые делят результант, упоминающийся в лемме (он не нулевой и потому имеет только конечное число делителей).
Вычисление НОД.
Как вычислять нетривиальный НОД. Очевидный метод – воспользоваться неравенством Ландау-Миньотта, которое позволяет определить такое число М таоке, что все коэффициенты НОД ограничены М, и производить вычисления по модулю простого числа, большего чем 2М.
М:=граница_Ландау_Миньотта (a, b);
Цикл до ∞
р:=найти_большое_простое (2·М);
если степень_остатка(p, a) или степень_остатка(p, b) то
c:=модулярный_НОД(a,b,р);
если делит (c, a) и делит (c, b) то
выход c;
где:
алгоритм «граница_Ландау_Миньотта» применяет следствия и неравенства; алгоритм «найти_большое_простое» - возвращает большое простое число, не делящее его аргумент (каждый раз новое число); алгоритм «степень_остатка» проверяет, что редукция по модулю p не меняет степень, т.е. p не делит старший коэффициент; алгоритм «модулярный_НОД» применяет алгоритм Евклида по модулю p; алгоритм «делит» проверяет, что полиномы делятся над кольцом целых чисел. Недостаток этого метода состоит в том, что он требует многочисленных вычислений по модулю р, которое может быть довольно большим. Поэтому обычно примен-ся метод, использующий несколько маленьких простых чисел и китайскую теорему об остатках. Если мы вычислим cр и cq, где c-требуемый НОД, а р,q-два простых числа, то эта теорема позволяет нам вычислить cрq.
Оценка стоимости алгоритма.
Оценим стоимость алгоритма. Время вычисления ограничивается величиной О(n3·log23·H), где n-такое, что степени полиномов a, b не больше этого числа; H-величина, удовлетворяющая неравенству.
Литература: [1], [5], [6].
ТЕОРИЯ ИНФОРМАЦИИ