
- •1. Цели и задачи курса «Теоретические основы информатики».
- •2. Асимптотическое сравнение целочисленных функций.
- •31. Основные понятия теории графов.
- •33. Внутреннее представление графа.
- •34. Алгоритм обхода вершин графа "в глубину".
- •35. Алгоритм обхода вершин графа "в ширину".
- •36. Сравнение свойств алгоритмов обхода "в глубину" и "в ширину".
- •38. Построение остовного дерева с заданной корневой вершиной.
1. Цели и задачи курса «Теоретические основы информатики».
Теоретические основы информатики (ТОИ) – раздел информатики, посвященный разработке новых структур данных и алгоритмов работы с этими структурами.
ТОИ рассматривает вопросы быстродействия алгоритмов, их корректность, зависимость времени работы от вида и количества исходных данных. Известно, что для одной и той же задачи можно предложить множество алгоритмов ее решения. Но эти алгоритмы могут различаться по времени работы в миллионы раз.
Кроме того, разные алгоритмы по разному тратят оперативную память компьютера. Таким образом, эффективным алгоритмом следует считать тот корректный алгоритм, который: 1) выдвигает минимальные требования по затратам памяти; 2) выполняется за минимальное время.
Рассмотрим простой пример. Пусть поток (1000 студентов) решили провести игру: один человек выходит за дверь (водящий), остальные задумывают фамилию одного из присутствующих студентов. Водящий должен угадать эту фамилию, задавая вопросы, которые допускают ответы да\нет.
1 алгоритм: водящий называет фамилии студентов по списку, по очередности в списке имеющемся. В лудшем случае он отгадает фамилию за 1 вопрос. В худшем придется задать 999 вопросов.
2 алгоритм: водящий спрашивает: «Эта фамилия в первой половине списка?». В случае ответа да, фамилия входит в первые 500 фамилий списка и тогда второй вопрос будет следующим: «Эта фамилия входит в первые 250 фамилий?». Если нет, то третий вопрос: «Эта фамилия входит в диапазон от 126 до 250 фамилий?». И т.д.
Таким образом каждый вопрос сокращает район поиска в 2 раза. И следовательно для угадывания задуманной фамилии в худшем случае потребуется не более 10 вопросов. (210=1024>1000).
2. Асимптотическое сравнение целочисленных функций.
Как правило, время работы алгоритма определяется величиной некоторых из исходных данных.
Очевидно, чем больше значение некоторого исходного данного, тем больше будет выполняться алгоритм. Поэтому важно уметь оценивать количество операций, выполняемых алгоритмом в зависимости от некоторых исходных данных. Если такая зависимость установлена, то можно оценить сколько времени потребуется для решения задачи при определенных заданных исходных значениях.
Наиболее часто связь между величиной исходных данных и временем работы компьютера выражается через следующие целочисленные функции:
n-факториал
13! > 3 млрд=3·109
Рекурсивное определение
V={v1,v2,…,vn}, |V|=n – мощность множества
Сколько перестановок можно реализовать в множестве? Ответ: Pn=n·(n-1)·(n-2)·…·2·1=n!
Показательная функция 2n.
V={v1,v2,…,vn}. Сколько различных подмножеств можно образовать из элементов данного множества?
31. Основные понятия теории графов.
Пусть дано множество относительных элементов V={v1, v2, …, vn}.
|V|=n – количество элементов в множестве – мощность множества. Это множество – множество вершин. пусть некоторые пары вершин связаны между собой определенным заданным условием. такая связь называется ребром (дугой) между двумя вершинами. множество заданных ребер E={e1, e2, …, em}. |E|=m.
Совокупность двух множеств {V,E}=G называется графом. Самой очевидной иллюстрацией графа является карта с обозначенными на ней городами и дорогами, соединяющими некоторые города. множество городов – множество вершин, дорог – ребер.
есть и не такие очевидные примеры к понятию граф. Например, водопроводная сеть, локальная компьютерная сеть, клеточный лабиринт, часовой механизм – заданы связи между отдельными шестеренками.
для графа можно рассмотреть следующие задачи:
1). Просмотр всех вершин графа с целью выбора наилучшей в некотором смысле вершины.
2). Поиск пути от заданной исходной вершины до заданной конечной.
3). Подсчет количества подграфов, внутри которых существуют пути между двумя любыми вершинами. такие подграфы называются компонентами связности.
граф называется связным, если в нем существуют пути между любыми двумя вершинами.
Если в графе не для всех вершин существуют пути, связывающие 2 вершины, то граф называется многосвязным, а связные подграфы называются компонентами связности.
Количество ребер, выходящих из некоторой вершины, называется степенью этой вершины.
Если существуют ребра, связывающие абсолютно все пары вершин, то граф называется полным.
Если в графе существует путь, в котором исходная и конечная вершина – одна и та же вершина, то этот путь называется циклом.
Граф, не содержащий ни одного цикла называется деревом.
4). Поиск остовного дерева (каркаса).
Если каждому ребру графа приписана некоторая числовая характеристика, то граф называется взвешенным, а эта характеристика называется весом ребра.
Для взвешенных графов важным является задача поиска кратчайшего пути между двумя заданными вершинами, т.е. пути, для которого сумма весов входящих в него ребер является минимальной.
Если каждому ребру графа приписано только одно возможное направление перехода по этому ребру, то граф называется ориентированным (орграф).
Ребра в орграфе – дуги.
Граф называется двудольным, если все вершины можно разбить на 2 группы, такие, что каждое ребро соединяет вершины из разных групп (долей).
-племя женихов и невест
-шестеренки
-Турист попал на экскурсию в замок, имеющий какой-то вид (лабиринт). В каждой комнате не более хорошо дверей. Туристу надо пройти из заданной входной комнаты до одного из существующих выходов. Чтобы можно быфло вернуться, если заблудился, турист записывал маршрут следующим образом:
М= «СССВВВЮЗЗССЗЗСВВВВС». Найти используя М, более короткий путь от входа к выходу.