Рекурсия. Сложность алгоритмов презентация

Слайд 1Программирование на языке высокого уровня
Лекция 13. Рекурсия. Сложность алгоритмов
Кафедра АСОИУ ОмГТУ, 2013
Богатов

Р.Н.

Слайд 2Чтобы понять рекурсию, …нужно сначала понять рекурсию


Слайд 3
Чтобы понять рекурсию, …нужно сначала понять рекурсию
Рекурсия — см. Рекурсия.

Рекурсивная функция

— функция, которая определяется через себя же.



Слайд 4{
... = НОД( Math.Max(A, B), Math.Min(A, B) );
}

ulong НОД(ulong

x, ulong y)
{
if (y == 0)
return x;
else
return НОД(y, x % y);
}

Алгоритм Евклида для вычисления НОД


Слайд 5{
if (!путь_из_(1, 1))
MessageBox.Show("Этот лабиринт абсолютно

точно непроходим!!!";
}

bool путь_из_(int x, int y)
{
m[x, y] = 1;

if (x == N - 2 && y == N - 2) return true;

if (m[x, y + 1] == 0)
if (путь_из_(x, y + 1)) return true;
if (m[x + 1, y] == 0)
if (путь_из_(x + 1, y)) return true;
if (m[x - 1, y] == 0)
if (путь_из_(x - 1, y)) return true;
if (m[x, y - 1] == 0)
if (путь_из_(x, y - 1)) return true;

m[x, y] = 0;
return false;
}

Рекурсивный обход лабиринта


Слайд 6Обход конём [не]шахматной доски
int[] dx = new int[] { 1, 2,

2, 1, -1, -2, -2, -1 };
int[] dy = new int[] { -2, -1, 1, 2, 2, 1, -1, -2 };

void прыгнуть_в_(int x, int y)
{
Доска[x + 2, y + 2] = ход;
if (ход == последний) решений++;
else
{
ход++;
// перебираем ячейки под ударом
for (int i = 0; i < 8; i++)
if (Доска[x + 2 + dx[i], y + 2 + dy[i]] == 0)
прыгнуть_в_(x + dx[i], y + dy[i]);
ход-;
}
Доска[x + 2, y + 2] = 0;
}

Слайд 7Мат. анализ: «О» большое
Пишется: f(x) = O(g(x))
Читается: f является «О» большим

от g

Формальное определение: f(x) = O(g(x)), если Ǝ x0 и c0 | f(x) < c0g(x) при x > x0


Слайд 8Сложность алгоритмов
Говорят: «Сложность алгоритма есть O(N2)»
Значит: при больших N время

работы алгоритма (или количество операций) не более чем c∙N2, где c – положительная константа

N – обычно объём входных данных

Слайд 9Оценка сложности алгоритма


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика