Материал: 00464

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Владимирский государственный университет

им. А. Г. и Н. Г. Столетовых» (ВлГУ)

А. В. ШУТОВ

Ю.А. МЕДВЕДЕВ

СТРУКТУРЫ И АЛГОРИТМЫ КОМПЬЮТЕРНОЙ

ОБРАБОТКИ ДАННЫХ

Часть 1. Курс лекций

по дисциплине «Структуры и алгоритмы компьютерной обработки данных» для студентов, обучающихся по направлению 010500 «Математическое обеспечение и администрирование информационных систем»

Владимир – 2013

УДК 004.31

ББК 32.988-5я7

Ш 97

Шутов А. В., Медведев Ю. А.

Структуры и алгоритмы компьютерной обработки данных. Часть 1 (Курс лекций). – Владимир: ВлГУ, 2013. – 101 с.

Учебное пособие адресовано студентам вузов, обучающимся по направлению 010500 «Математическое обеспечение и администрирование информационных систем».

Курс включает 9 лекция по 3 темам: алгоритмы на графах, алгоритмы комбинаторного перебора, общие методы разработки алгоритмов. Материал систематизирован и может быть использован студентами физико-математических факультетов вузов.

Рецензенты: доктор технических наук, профессор Монахов М. Ю., зав. кафедрой информатики и защиты информации ВлГУ;

доктор физико-математических наук, профессор ВлГУ

Алхутов Ю. А.

Печатается по решению Редакционно-

издательского совета ВлГУ

© ФГБОУ ВПО «Владимирский государственный университет», 2013

© Шутов А. В., Медведев Ю. А., 2013

Введение.

  1. Цели освоения дисциплины

Целью освоения дисциплины «Структуры и алгоритмы компьютерной обработки данных» является формирование системы понятий, знаний, умений и навыков в области использования классических алгоритмов и структур данных.

  1. Место дисциплины в структуре ооп впо

Раздел образовательной программы: Б.3. Профессиональный цикл. Базовая часть.

Для изучения курса необходимы начальные знания по следующим дисциплинам:

- информатика,

- программирование,

- алгебра,

- дискретная математика,

- математический анализ.

Для того чтобы приступить к изучению курса «Структуры и алгоритмы компьютерной обработки данных», студент должен знать:

- основные понятия алгебры, математического анализа, дискретной математики и информатики;

- основные управляющие структуры,

- один из языков программирования.

Знания и умения, полученные в ходе освоения данной дисциплины, понадобятся при изучении таких последующих дисциплин ООП, как:

- объектно-ориентированное программирование;

- параллельное программирование;

- базы данных и СУБД;

- технология разработки ПО.

  1. Компетенции обучающегося, формируемые в результате освоения дисциплины (модуля)

В результате освоения данной дисциплины формируются следующие компетенции:

ОК-10 – демонстрировать фундаментальную подготовку по основам профессиональных знаний;

ОК-12 – демонстрировать владение основными методами, способами и средствами получения, хранения, переработки информации, иметь навыки работы с компьютером как средством управления информацией;

ОК-14 – демонстрировать способность к анализу и синтезу;

ПК-2 – демонстрировать умение понять поставленную задачу;

ПК-3 – демонстрировать умение формулировать результат;

ПК-7 – демонстрировать умение грамотно пользоваться языком предметной области;

ПК-11 – демонстрировать самостоятельное построение алгоритма и его анализ;

ПК-14 – демонстрировать контекстную обработку информации.

В результате освоения дисциплины обучающийся должен:

Знать:

• основные абстрактные типы данных и способы их реализации

• основные алгоритмы работы с деревьями

• основные алгоритмы сортировки и поиска

• основные алгоритмы комбинаторного перебора

• основные алгоритмы работы с графами

• базовые методы разработки алгоритмов

• основные результаты и проблемы теории сложности вычислений

Уметь:

• реализовывать на одном из языков программирования основные абстрактные типы данных

• реализовывать на одном из языков программирования основные алгоритмы работы с деревьями

• реализовывать на одном из языков программирования основные алгоритмы сортировки и поиска

• реализовывать на одном из языков программирования основные алгоритмы комбинаторного перебора

• реализовывать на одном из языков программирования основные алгоритмы работы с графами

• использовать базовые методы разработки алгоритмов

Тема 1. Алгоритмы на графах (6 часов).

План лекций.

  1. Начальные понятия теории графов.

Начальные понятия теории графов. Определение графа. Графы и бинарные отношения. Откуда берутся графы. Число графов. Смежность, инцидентность, степени. Некоторые специальные графы. Графы и матрицы. Взвешенные графы. Изоморфизм. Инварианты. Операции над графами. Локальные операции. Подграфы. Алгебраические операции.

  1. Поиск в глубину и ширину.

Поиск в ширину. Процедура поиска в ширину. BFS-дерево и вычисление расстояний. Процедура поиска в глубину. DFS-дерево. Глубинная нумерация. Построение каркаса. Шарниры.

  1. Эйлеровы и гамильтоновы циклы.

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

Лекция 1. Начальные понятия теории графов.

Графы являются существенным элементом математических моделей в самых разнообразных областях науки и практики. Они помогают наглядно представить взаимоотношения между объектами или событиями в сложных системах. Многие алгоритмические задачи дискретной математики могут быть сформулированы как задачи, так или иначе связанные с графами, например задачи, в которых требуется выяснить какие-либо особенности устройства графа, или найти в графе часть, удовлетворяющую некоторым требованиям, или построить граф с заданными свойствами.

Цель этой и двух следующих лекций - дать краткое введение в теорию графов. В них приводится минимум понятий, необходимый для того, чтобы можно было начать какую-либо содержательную работу с графами или приступить к более глубокому изучению теории графов. Доказательства приводятся только в тех случаях, когда их сложность не превышает некоторого интуитивно ощущаемого порога. Поэтому, например, такие важные факты, как теорема Кирхгофа или теорема Понтрягина-Куратовского, сообщаются без доказательств.

Определение графа

Для описания строения различных систем, состоящих из связанных между собой элементов, часто используют графические схемы, изображая элементы точками (кружками, прямоугольниками и т.д.), а связи между ними - линиями или стрелками, соединяющими элементы. При этом получаются диаграммы вроде тех, что показаны на рис. 1.1.

Рис. 1.1.

На таких диаграммах часто ни способ изображения элементов, ни форма или длина линий не имеют значения - важно лишь, какие именно пары элементов соединены линиями. Если посмотреть внимательно, то можно заметить, что рисунки 1.1а и 1.1 б изображают одну и ту же структуру связей между элементами , , , , , . Эту же структуру можно описать, не прибегая к графическому изображению, а просто перечислив пары связанных между собой элементов: , , , , , , . Таким образом, когда мы отвлекаемся от всех несущественных подробностей, у нас остаются два списка: список элементов и список пар элементов. Вместе они составляют то, что математики называют графом. Из этого примера видно, что понятие графа само по себе не связано напрямую с геометрией или графикой. Тем не менее, возможность нарисовать граф - одна из привлекательных черт этого математического объекта.

Термин "граф" неоднозначен, это легко заметить, сравнивая приводимые в разных книгах определения. Однако во всех этих определениях есть кое-что общее. В любом случае граф состоит из двух множеств - множества вершин и множества ребер, причем для каждого ребра указана пара вершин, которые это ребро соединяет. Вершины и ребра называются элементами графа. Здесь будут рассматриваться только конечные графы, то есть такие, у которых оба множества конечны. Чтобы получить законченное определение графа того или иного типа, необходимо уточнить еще три момента.

  1. Ориентированный или неориентированный?

Прежде всего, нужно договориться, считаем ли мы пары и различными. Если да, то говорят, что рассматриваются упорядоченные пары (порядок элементов в паре важен), если нет - неупорядоченные. Если ребро соединяет вершину с вершиной и пара считается упорядоченной, то это ребро называется ориентированным, вершина - его началом, вершина - концом. Если же эта пара считается неупорядоченной, то ребро называется неориентированным, а обе вершины - его концами. Чаще всего рассматривают графы, в которых все ребра имеют один тип - либо ориентированные, либо неориентированные. Соответственно и весь граф называют ориентированным или неориентированным. На рисунках ориентацию ребра (направление от начала к концу) указывают стрелкой. На рис. 1.1 показаны неориентированные графы, а на рис. 1.2 - ориентированные.

  1. Кратные ребра.

Следующий пункт, требующий уточнения, - могут ли разные ребра иметь одинаковые начала и концы? Если да, то говорят, что в графе допускаются кратные ребра. Граф с кратными ребрами называют также мультиграфом. На рис. 1.2 изображены два графа, левый является ориентированным мультиграфом, а правый - ориентированным графом без кратных ребер.

  1. Петли.

Ребро, которому поставлена в соответствие пара вида , то есть ребро, соединяющее вершину с нею же самой, называется петлей. Если такие ребра не допускаются, то говорят, что рассматриваются графы без петель.

Рис. 1.2.

Комбинируя эти три признака, можно получить разные варианты определения понятия графа. Особенно часто встречаются неориентированные графы без петель и кратных ребер. Такие графы называют обыкновенными. Если в графе нет кратных ребер, то можно просто отождествить ребра с соответствующими парами вершин - считать, что ребро это и есть пара вершин. Чтобы исключить петли, достаточно оговорить, что вершины, образующие ребро, должны быть различны. Это приводит к следующему определению обыкновенного графа.

Определение. Обыкновенным графом называется пара , где - конечное множество, - множество неупорядоченных пар различных элементов из . Элементы множества называются вершинами графа, элементы множества - его ребрами.

Слегка модифицируя это определение, можно получить определения других типов графов без кратных ребер: если заменить слово "неупорядоченных" словом "упорядоченных", получится определение ориентированного графа без петель, если убрать слово "различных", получится определение графа с петлями. Ориентированный граф часто называют орграфом.

В дальнейшем термин "граф" мы будем употреблять в смысле "обыкновенный граф", а рассматривая другие типы графов, будем специально это оговаривать.

Множество вершин графа будем обозначать через , множество ребер - , число вершин - , число ребер - .

Из определения видно, что для задания обыкновенного графа достаточно перечислить его вершины и ребра, причем каждое ребро должно быть парой вершин. Положим, например, , . Тем самым задан граф с , . Если граф не слишком велик, то более наглядно представить его можно с помощью рисунка, на котором вершины изображаются кружками или иными значками, а ребра - линиями, соединяющими вершины. Заданный выше граф показан на рисунке 1.3. Мы будем часто пользоваться именно этим способом представления графа, при этом обозначения вершин иногда будут помещаться внутри кружков, изображающих вершины, иногда рядом с ними, а иногда, когда имена вершин несущественны, и вовсе опускаться.

Рис. 1.3.

Источник: https://studfile.net/preview/16712985/