Порядок сдачи и защиты курсового проекта



Нормативный срок сдачи КР – предзачетная неделя семестра.

Студент допускается к защите после проверки пояснительной записки преподавателем. При обнаружении серьезных ошибок и упущений записка может быть возвращена на доработку.

Защита проекта включает:

1. Краткий доклад студента по результатам выполненного проектирования.

2. Демонстрацию работающих программ на компьютере с пояснениями.

3. Ответы на вопросы преподавателя.

Результаты курсового проектирования оцениваются с учетом:

a) наличия работающих программ и соответствия их п.3;

b) качества выполнения пояснительной записки и соответствия ее п.4;

c) уровня ответов студента.

 

ЛИТЕРАТУРА

А) основная

1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.

2. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. М.: Вильяме, 2001. 384 с.

3. Бентли Д. Жемчужины творчества программистов. М.: Радио и связь, 1990.

4. Вирт Н. Алгоритмы + структуры данных = программы. М.: Мир, 1985.

5. Вирт Н. Алгоритмы и структуры данных. М: Мир, 1989. 360 с.

6. Грин Д., Кнут Д. Математические методы анализа алгоритмов. М: Мир, 1987.

7. Гудман С, Хидетниеми С. Введение в разработку и анализ алгоритмов. М.: Мир, 1981.

8. Дейкстра Э. Дисциплина программирования. М: Мир, 1978.

9. Кнут Д. Е. Искусство программирования: В 3 т. М.: Вильяме, 2000.

10. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: Построение и анализ. М.: МЦНМО, 2001.

 

В) русскоязычные ресурсы Internet

1. http://algo.4u.ru/

2. http://algolist.manual.ru/

3. http://alglib.chat.ru/

4. http://algo.do.ru/

5. http://hcinsu.chat.ru/

6. http://algolist.da.ru/

7. http://progstone.narod.ru/links/wantalgo.html

8. http://www.sevmashvtuz.edu/links/algorithms.html

9. http://www.intuit.ru/department/algorithms/staldata/

ПРИЛОЖЕНИЕ

Варианты заданий

Вариант выполнения курсовой работы включает три части. Содержанием каждой части является одно из заданий. Описания вариантов приведены в таблице вариантов, описания заданий представлены ниже.

Таблица вариантов

Номер варианта

Номера заданий

Часть 1 Часть 2 Часть 3
1 15 1 2
2 14 15 3
3 13 2 4
4 12 14 15
5 11 3 14
6 10 13 13
7 9 4 5
8 8 12 6
9 7 5 7
10 6 11 12
11 5 6 11
12 4 10 10
13 3 7 1
14 2 9 8
15 1 8 9
16 15 14 9
17 10 11 8
18 8 7 13
19 6 9 12
20 14 13 6

Описания заданий

Часть 1. Задачи на графах

 

1. Дан ориентированный граф с N вершинами (N<50). Вер­шины и дуги окрашены в цвета с номерами от 1 до М (М<6). Указаны две вершины, в которых находятся фишки игрока и конечная вершина. Правило перемещения фишек: игрок мо­жет передвигать фишку по дуге, если ее цвет совпадает с цве­том вершины, в которой находится другая фишка; ходы можно делать только в направлении дуг графа; поочередность ходов необязательна. Игра заканчивается, если одна из фишек дости­гает конечной вершины. Написать программу поиска кратчайшего пути до конечной вершины, если он существует.

2. Задан неориентированный граф. При прохождении по не­которым ребрам отдельные (определенные заранее) ребра могут исчезать или появляться. Написать программу поиска кратчайшего пути из вершины с номером q в вершину с номером w.

3. Заданы два числа N и М (20<M<N<150), где N — количе­ство точек на плоскости. Написать программу построения дере­ва из М точек так, чтобы оно было оптимальным.

Примечание. Дерево называется оптимальным, если сумма всех его ребер минимальна. Все ребра — это расстояния между вершинами, заданными координатами точек на плоскости.

4. Даны два числа N и М. Написать программу построения графа из N вершин и М ребер. Каждой вершине ставится в соответствие число ребер, входящих в нее. Граф должен быть таким, чтобы сумма квадратов этих чисел была минимальна.

5. Задан ориентированный граф с N вершинами, каждому ребру которого приписан неотрицательный вес. Написать про­грамму поиска простого цикла, для которого среднее геометри­ческое весов его ребер было бы минимально.

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

6. Внутрь квадрата с координатами левого нижнего угла (0,0) и координатами верхнего правого угла (100, 100) поместили N (1<N<30) квадратиков. Написать программу поиска крат­чайшего пути из точки (0,0) в точку (100,100), который бы не пересекал ни одного из этих квадратиков. Ограничения:

· длина стороны каждого квадратика равна 5;

· стороны квадратиков параллельны осям координат;

· координаты всех углов квадратиков — целочисленные;

· квадратики не имеют общих точек.

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

7. Задан неориентированный граф с N вершинами, пронуме­рованными целыми числами от 1 до N. Написать программу, которая последовательно решает следующие задачи:

· выясняет количество компонент связности графа;

· находит и выдает все такие ребра, что удаление любого из них ведет к увеличению числа компонент связности;

· определяет, можно ли ориентировать все ребра графа та­ким образом, чтобы получившийся граф оказался сильно связным;

· ориентирует максимальное количество ребер, чтобы полу­чившийся граф оказался сильно связным;

· определяет минимальное количество ребер, которые сле­дует добавить в граф, чтобы ответ на третий пункт был утвердительным.

 

8. Задан ориентированный граф с N (1<N<30) вершинами, пронумерованными целыми числами от 1 до N. Разработать про­грамму, которая подсчитывает количество различных путей между всеми парами вершин графа.

9. Задан ориентированный граф с N вершинами, пронумеро­ванными целыми числами от 1 до N. Разработать программу, кото­рая подсчитывает количество различных путей между всеми па­рами вершин графа.

Входные данные. Входной файл input.txt содержит количе­ство вершин графа N (1<N<30) и список дуг графа, заданных номерами начальной и конечной вершин.

Выходные данные. В выходной файл output.txt вывести матрицу N×N, элемент (i,j) которой равен числу различных путей, ведущих из вершины i в вершину j или -1, если существует бесконечно много таких путей.

10. Дан ориентированный граф. Вершинам приписаны веса. Начальная и конечная вершины заданы. Требуется найти путь между этими вершинами с максимально возможным суммарным весом. Путь должен удовлетворять следующим условиям:

· по каждой дуге разрешается пройти один раз;

· если в вершину попадаем по входящей дуге, то к суммар­ному весу вес этой вершины прибавляется;

· если в вершину попадаем по выходящей дуге, то из сум­марного веса вес этой вершины вычитается.

Входные данные. Входной файл input.txt со­держит данные в следующей последовательно­сти:

· N x1 х2 ... xN — количество вершин графа и их веса (1≤N≤30, 1<хi<30000);

· b,e  — номера начальной и конечной вер­шин;

· М — количество дуг;

· i1, j1 — номера вершин, соединяемых пер­вой дугой;

· i2, j2 — номера вершин, соединяемых вто­рой дугой;

· iM, jM — номера вершин, соединяемых ду­гой с номером М.

Выходные данные. В выходной файл output.txt требуется вывести максимальный вес пути и путь, на ко­тором он достигается. В случае, если решение не существует, выходной файл должен содержать единственную строку «решения нет».

11. Дан взвешенный (ребрам приписаны веса) связный граф G=(V,E).

Обозначим через D{v,u} минимальное расстояние между вершинами v,u € V. Величина D(G) = Max(D(v,u)) называется диаметром графа. Величина R(v) = Max(D(v,u)) максимальным удалением в графе от вершины v. Величину R(G) = Min(R(v)) называют радиусом графа. Любая вершина t€V, такая, что R(t)=R(G), называется центром графа.

Разработать программу поиска диаметра, радиуса и центров графа.

Примечание. Первый шаг решения заключается в формировании матрицы минимальных расстояний между всеми парами вершин графа.

12. Согласно теореме Д. Кенига (1936 г.) для двудольности графа необходимо и достаточно, чтобы он не содержал циклов нечетной длины. Определить, является ли заданный граф двудольным.

Примечание. При поиске в ширину вершины графа помечаются метками 0, 1, 2 и т. д. Первой вершине, с которой начинается просмотр, приписывается метка 0, вершинам, связанным с ней, — метка 1 и т. д. Разобьем граф после просмотра на два подграфа: подграф X включает вершины с четными метками, подграф Y — с нечетными. Если оба подграфа пусты — исходный граф является двудольным.

13. Задача Штейнера на графах. В связном взвешенном гра­фе G с выделенным подмножеством вершин U (U € V) требуется найти связный подграф Т, удовлетворяющий двум условиям:

· множество вершин подграфа Т содержит заданное под­множество U;

· граф Т имеет минимальный вес среди всех подграфов, удовлетворяющих первому условию.

Примечание. Очевидно, что искомый подграф является дере­вом, оно называется деревом Штейнера. Задача сводится к нахождению дерева минимального веса в подграфах графа G, множество вершин которых содержит U. Эффективных алгоритмов решения задачи неизвестно, поэтому наиболее простой состоит в переборе вариантов при небольших значениях числа вершин.

14. Задача о пяти ферзях. На шахматной доске 8x8 расставить наименьшее число ферзей так, чтобы каждая клетка доски была под боем.

Примечание. Построить граф для данной доски с учетом пра­вил перемещения ферзя. Всякой искомой расстановке соответ­ствует наименьшее доминирующее множество в графе.

15. Для заданного ориентированного графа с N вершинами разработать:

· структуру представления графа;

· процедуру заполнения графа из N узлов;

· процедуру поиска всех путей от заданной вершины ко всем остальным методом в глубину;

· процедуру поиска кратчайших путей от заданной вершины ко всем остальным методом в ширину;

· процедуру построения остового дерева графа.

 


Дата добавления: 2018-11-24; просмотров: 254; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!