- •Лекція 1. Теорія алгоритмів. Аналіз алгоритмів
- •График роста o большое
- •Числа Фибоначчи
- •Свойства
- •Алгоритм Евклида нахождения нод (наибольшего общего делителя)
- •Алгоритм
- •Реализация
- •Время работы
- •Псевдокод
- •Лекція 2. Алгоритмічні стратегії
- •Лекція 3. Побудова алгоритмів
- •Лекція 4. Задачі лінійної алгебри
Псевдокод
Вход: натуральное число n
Пусть A — булевый массив, индексируемый числами от 2 до n,
изначально заполненный значениями true.
для
i := 2, 3, 4, ..., пока i2
n:
если A[i] = true:
для j := i2, i2 + i, i2 + 2i, ..., пока j n:
A[j] := false
Выход: числа i, для которых A[i] = true - это все простые числа от 2 до n.
С/С++
int n;
vector<bool> prime (n+1, true);
prime[0] = prime[1] = false;
for (int i=2; i*i<=n; ++i) // valid for n < 46340^2 = 2147395600
if (prime[i])
for (int j=i*i; j<=n; j+=i)
prime[j] = false;
Література:
1. Рублев В.С. Основы теории алгоритмов: учеб. пособие / В.С. Рублев. – Ярославль: ЯрГУ, 2005. – 143 с.
2. Гуц А.К. Математическая логика и теория алгоритмов: учеб. пособие / А.К. Гуц. – Омск: Наследие, 2003. – 108 с.
3. Кормен Т. Алгоритмы: построение и анализ / Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн; пер. с англ., под ред. И.В. Красикова. – [3-е изд.]. – М.: Вильямс, 2013. – 1328 с.
4. Лафоре Р. Структуры данных и алгоритмы в Java / Р. Лафоре; пер. с англ. – [2-е изд.]. – СПб.: Питер, 2013. – 704 с.
Лекція 2. Алгоритмічні стратегії
2.1 Алгоритмические стратегии.
Можно выделить следующие классы (или группы) алгоритмов:
1) алгоритмы работы со структурами данных;
2) алгоритмы сортировки;
3) алгоритмы поиска;
4) алгоритмы на графах;
5) алгоритмы обработки строк.
В основе таких алгоритмов лежат следующие алгоритмические стратегии:
«рекурсивные алгоритмы»;
«жадные алгоритмы»;
«эвристические алгоритмы»;
«динамическое программирование»
«алгоритмы грубой силы»;
«разделяй и властвуй»;
«алгоритмы с возвратом»;
сопоставления с образцом и алгоритмы обработки строк/текстов;
алгоритмы численной аппроксимации;
оnline- и offline-алгоритмы;
динамическое программирование;
и другие.
з
Алгоритм. стратегии.
1. Разделяй и властвуй.
Метод наименьших квадратов (МНК) — математический метод, применяемый для решения различных задач, основанный на минимизации отклонений суммы квадратов некоторых функций от искомых переменных.
Пусть
дана система уравнений
,
где
—
некоторые функции,
—
некоторые известные значения, x —
набор неизвестных (искомых) переменных.
Для произвольных значений
значения
отличаются
от
.
Суть метода наименьших квадратов
заключается в том, чтобы найти такие
значения
,
при которых минимизируется сумма
квадратов отклонений (ошибок)
:
Интерполя́ция, интерполи́рование — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.
Аппроксимация – процесс подбора эмпирической функции φ(х) для установления из опыта функциональной зависимости y= φ(х)
Пусть
задан набор экспериментальных данных,
-
точек
,
требуется найти функцию
на
интервале
,
которая наилучшим образом приближала
бы набор
.
Рассмотрим
две точки в
-мерном
метрическом пространстве:
(
Непринципиально:
—
можно считать
-мерным
случайным
событием,
-мерной
случайной величины
.
—
-мерное
среднее случайной величины
,
с условием что
-
непрерывна
на
,
-
зависимость среднего значения
от
.)
Далее:
Требуется
найти минимальное расстояние между
двумя точками
и
в
евклидовом
пространстве
(в общем случае пространство и функция
расстояния
может быть отличной от расстояния
евклидова пространства, например как
в «методе
наименьших модулей»):
Приближающую
функцию будем искать в виде многочлена
степени
:
