CBRR2501 (Разработка алгоритмов и программ выполнения операций над последовательными и связанными представлениями структур данных)

2016-07-31СтудИзба

Описание файла

Документ из архива "Разработка алгоритмов и программ выполнения операций над последовательными и связанными представлениями структур данных", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "CBRR2501"

Текст из документа "CBRR2501"

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ.

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

им. К.Э. ЦИОЛКОВКОГО

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе на тему: “Разработка алгоритмов и

программ выполнения операций над последовательными

и связанными представлениями структур данных

по курсу Теория алгоритмов и вычислительных

методы

Руководитель: Авдошин С.М.

Дата сдачи: _____________

Подпись: _____________

Студент: Лицентов Д.Б.

Группа: 3ИТ-2-26

Москва

1998

1. Постановка задачи.

Дано:

Два орграфа X и Y с N вершинами (X в последовательном представлении, Y в связанном представлении) без кратностей. Дуги орграфов образуют неупорядоченные списки. Орграфы задаются неупорядоченными списками смежных вершин - номеров вершин, в которые ведут ребра из каждой вершины графа.

Требуется:

Выполнить над ребрами орграфов операцию разности(X/Y). В результате выполнения этой операции новый орграф Z определяется в связанном представлении, а старый орграф X исправляется в последовательном представлении.

Особенности представления данных:

Последовательное представление данных: одномерный массив Array, содержащую два целочисленных поля I (содержит номер вершины, из которой исходит дуга) и J (содержит номер вершины, в которую входит дуга).

Array[_]

I

J

Array[ 1 ]

From

To

Array[ 2 ]

From

To

From

To

Array[ N ]

From

To

Nколичество дуг в орграфе X.

Связанное представление данных: одномерный массив Spisok указателей на структуру index, представляющую собой элемент списка и содержащий поле: целочисленное index (содержит номер вершины, в которую входит дуга) и Next - указатель на структуру Spisok, указывающее на следующий элемент списка

Spisok[ _ ]

NEXT

index

next

index

next

Index

Next

Spisok[ 1 ]

To

To

NULL

To

To

NULL

Spisok[ N ]

To

To

NULL

N - количество вершин в графе Y,Z.

2. Внешнее описание программы.

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

N

X11 X12 ... X1k1 0

X21 X22 ... X2k2 0

...

XN1 XN2 ... XNkN 0

Y11 Y12 ... Y1k1 0

Y21 Y22 ... Y2k2 0

...

YN1 YN2 ... YNkN 0

где N - число вершин в графах

Xij - номер очередной вершины смежной i в графе X (i = 1..N, j=1..ki)

Yij - номер очередной вершины смежной i в графе Y(i = 1..N, j=1..ki)

Если из какой-то вершины не выходит ни одного ребра, то для нее в исходных данных задаем только ноль (например ‘0’ - вершина 2 изолирована). Таким образом, для каждого графа должно вводится в общей сложности N нолей.

Формат печати результатов работы программы представлен в следующем формате:

Даны неориентированные графы X и Y без кратностей.

Для каждого графа задаем номера вершины смежности с данной.

Граф X (в ЭВМ в последовательном представлении):

1 : X11 X12 ... X1k1

2 : X21 X22 ... X2k2

...

N : XN1 XN2 ... XNkN

Граф Y (в ЭВМ в связанном представлении):

1 : Y11 Y12 ... Y1k1

2 : Y21 Y22 ... Y2k2

...

N : YN1 YN2 ... YNkN

Над графами выполняется операция разности двумя способами

с получением нового графа Z (в связанном представлении):

1 : Z11 1,Z12 ... Z1k1

2 : Z21 Z22 ... Z2k2

...

N : ZN1 ZN2 ... ZNkN

И исправлением старого графа X (в последовательном представлении):

1 : X11 X12 ... X1k1

2 : X21 X22 ... X2k2

...

N : XN1 XN2 ... XNkN

Кол-во вершин, кол-во дуг графа X, кол-во дуг графа Y

и кол-во времени, затраченного на вычисление разности X и Y:

N MX MY T

где T - кол-во времени, затраченного на вычисление разности X и Y

Zij - номер очередной вершины смежной i в графе Z(i = 1..N, j=1..ki)

MX - кол-во дуг в графе X

MY - кол-во дуг в графе Y

Метод решения:

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

Аномалии исходных данных и реакция программы на них:

  1. нехватка памяти при распределение: вывод сообщения на экран и завершение работы программы;

  2. неверный формат файла: вывод сообщения на экран и завершение работы программы;

Входные данные

Входными данными для моей работы является начальное число вершин графа, которое по мере работы программы увеличиться на 30 верши. Это число не может превосходить значения 80 вершин, так как в процессе работы программы число увеличивается на 30 и становиться 110 – это «критическое» число получается из расчета 110216/3. Это происходит потому, что стандартный тип int не может вместить в себя более чем 216. Мне же требуется для нормально работы программы, чтобы тип вмещал в себя утроенное количество вершин неориентированного графа. Конечно, это всего лишь приближение, но с учётом того, что графы генерируются случайно возможность набора 33000 невелико и, следовательно, допустимо.

Входной файл генерируется каждый раз новый.

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

Оценка временной сложности.

Каткие сведения о временной сложности.

Качество алгоритма оценивается как точность решения и эффективность алгоритма, которая определяется тем временем, которое затрачивается для решения задачи и необходимым объёмом памяти машины.

Временная сложность алгоритма есть зависимость от количества выполняемых элементарных операций как функция размерности задачи. Временная сложность алгоритма А обозначается .

Размерность задачи – это совокупность параметров, определяющих меру исходных данных. Временная оценка алгоритма бывает двух типов:

  1. априорная – асимптотическая оценка сложности

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

Именно асимптотическая оценка алгоритма определяет в итоге размерность задачи, которую можно решить с помощью ЭВМ. Если алгоритм обрабатывает входные данные размера N за время CN2, где С – некая постоянная, то говорят, что временная сложность этого алгоритма есть . Вернее говорить, что положительная и нулевая функция есть , если существует такая постоянная С, что для всех отрицательных значений N.

Вычисление временной сложности.

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

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

При прогоне программы мы получаем значения функции, которые можно изобразить на графике как функцию f(NX,NY,NZ). Данные точки показывают характер кривой. Для аппроксимации этого облака точек в своей курсовой работе я использовал метод наименьших квадратов.

Анализ по методу наименьших квадратов заключается в определении параметров кривой, описывающих связь между некоторым числом N пар значений Xi, Yi (в данном случае n и t соответственно), обеспечивая при этом наименьшую среднеквадратичную погрешность. Графически эту задачу можно представить следующим образом – в облаке точек Xi, Yi плоскости XY (смотри рисунок) требуется провести прямую так, чтобы величина всех отклонений отвечала условию:

N

F =

K=1

Где

В моём случае T(NX,NY,NZ)=O(NX*(NY+NZ) =>

T(NX,NY,NZ)=C1*NX*(NY+NZ)+C2*(NY+NZ)+C3*(NY)+C4*(NZ)

Следовательно для моего примера мы получим:

Для того чтобы получить значение функции на K-том эксперименте, мы засекаем значение времени перед вызовом функции, которая реализует алгоритм, вставим оператор вида:

TikTak=clock();

Где функция clock() даёт время с точностью до нескольких миллисекунд (в языке С++ она описана в заголовочном файле time.h). После выполнения процедуры, реализует алгоритм, мы находим разность времени

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее