![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Алгоритмы сортировки, поиска длиннейшего пути во взвешенном графе и поиска покрытия, близкого к кратчайшему |
Введение Теория алгоритмов и практика их построения и анализа является концептуальной основой разнообразных процессов обработки информации. В настоящее время теория алгоритмов образует теоретический фундамент вычислительных наук. Применение теории алгоритмов осуществляется как в использовании самих результатов (особенно это касается использования разработанных алгоритмов), так и в обнаружении новых понятий и уточнении старых. С ее помощью проясняются такие понятия как доказуемость, эффективность, разрешимость, перечислимость и другие. Фактически, алгоритм – это точно определенная (однозначная) последовательность простых (элементарных) действий, обеспечивающих решение любой задачи из некоторого класса, т.е. такой набор инструкций, который можно реализовать чисто механически, вне зависимости от умственных способностей и возможностей исполнителя. Как заметил Кнут: «Алгоритм должен быть определен настолько четко, чтобы его указаниям мог следовать даже компьютер». Эффективность алгоритма определяется анализом, который должен дать четкое представление, во-первых, о емкостной и, во-вторых, о временной сложности процесса. Речь идет о размерах памяти, в которой предстоит размещать все данные, участвующие в вычислительном процессе (естественно, к ним относятся входные наборы, промежуточная и выходная информация), а также физических ресурсах, затраченных исполнителем. В курсовой работе представлены различные подходы и методы использования алгоритмов, приведены оценки сложностей алгоритмов, реализации математических задач с помощью алгоритмов. Проведена краткая характеристика используемых структур данных, эффективность их применения в данной задаче 1. Выбор варианта задания В основе выбора индивидуального варианта задания лежит процедура определения целочисленного остатка от деления выражения Y, образованного суммой номера студента по журнальному списку и числом Х, полученным умножением последней цифры номера группы на 100. После определения значения выражения Y находится остаток от деления для соответствующего списка алгоритмов: Y mod 4 1 – алгоритмы покрытия; Y mod 6 1 – алгоритмы на графах; Y mod 5 1 – алгоритмы сортировки. Мой номер по журнальному списку равен 5, группа АЕ-035. Поэтому имеем Y=5 5 100=505. Получаем такие варианты: А = 505 mod 4 1 = 2; B = 505 mod 6 1 = 2; C = 505 mod 5 1 = 1. Таким образом, имеем следующие алгоритмы: покрытия – по методу «построение одного кратчайшего покрытия», на графах – нахождение самого длинного пути, сортировки – простыми включениями. Постановка задачи. Необходимо ввести таблицу покрытия. Алгоритм должен найти покрытие, близкое к кратчайшему. 2. Алгоритм сортировки 2.1 Математическое описание задачи и методов её решения В общем смысле сортировку следует понимать как процесс перегруппировки заданного множества объектов в некотором определенном порядке. Её цель – облегчить последующий поиск элементов в таком отсортированном множестве. Если у нас есть элементы а1, , а , то сортировка есть перестановка этих элементов в массив ак1, , ак , где при некоторой упорядочивающей функции f выполняются отношения f(ak1)≤f(ak2)≤ ≤f(ak ).
Метод сортировки называется устойчивым, если в её процессе относительное расположение элементов с равными ключами не изменяется. Существуют такие алгоритмы сортировок массива: сортировка с помощью прямого включения, прямого выбора, прямого обмена, включений с уменьшающимися расстояниями, дерева, разделения и другие. 2.2 Словесное описание алгоритма и его работы В силу простоты алгоритм сортировки простыми включениями не требует разделения на подпрограммы. Элементы мысленно делятся на уже «готовую» последовательность а1 а2 и исходную последовательность а1 а . При каждом шаге, начиная с i=2 и увеличивая i каждый раз на единицу, из исходной последовательности извлекается i-й элемент и перекладывается в готовую последовательность, при этом он вставляется в нужное место. Словесное описание алгоритма сортировки простыми включениями: 0. В готовую подпоследовательность записывается а1, во входную – а2, .а . 1. i = 2. 2 Переносим элемент х = а из входной подпоследовательности в готовую так, чтобы готовая подпоследовательность осталась под сортированной. Для этого: а) расширяем готовую подпоследовательность слева: а0 = х – барьер; б) просматривая элементы готовой подпоследовательности слева направо, находим такой номер j что и ai &l ;=x &l ; ai 1; в) если j=j-1, то переходим к пункту г), иначе расширяем готовуюподпоследовательность справа, сдвигая ее элементы, начиная с ai вправо; г) ai 1 = x д) i = i 1. Если i &l ;= , то переходим к п. 2, иначе сортировка заканчивается. Процесс может закончиться при двух различных условиях: 1) найден элемент с ключом, меньшим, чем ключ x; 2) достигнут конец готовой последовательности. Получается цикл с двумя условиями. Поэтому для некоторого улучшения быстродействия применяется барьер – a присваивается значение ключа x. Проанализируем этот алгоритм. Число сравнений (Сi) при i-м просеивании самое большее равно i-1, самое меньшее – 1; если предположить, что все перестановки из ключей равновероятны, то среднее число сравнения – i/2. Число же пересылок (присваиваний элементов) Mi равно Сi 2 (включая барьер). Поэтому общее число сравнений и число пересылок таковы: Сmi = -1,Mmi =3 ( -1) Cave=( 2 -2)/4,Mave=( 2 -10)/4, Cmax=( 2 -4)/4,Mmax=( 2 3 -4)/2. Минимальные оценки в случае уже упорядоченной исходной последовательности элементов, наихудшие же оценки – когда они первоначально расположены в обратном порядке. Очевидно, что приведенный алгоритм описывает метод устойчивой сортировки (см. ). Этот алгоритм можно легко улучшить, поскольку готовая последовательность сама уже упорядочена. Поэтому при поиске подходящей позиции для i-го ключа целесообразно использовать двоичный поиск. При этом такой модифицированный алгоритм носит название метода с двоичным включением. Словесное описание алгоритма сортировки с двоичным включением: 0. В готовую подпоследовательность записывается а1, во входную а2, .а . 1. i = 2 2 Переносим элемент х=аi из входной подпоследовательности в готовую так, чтобы последняя осталась под сортированной. Для этого: а) организуем бинарный поиск места включения х в готовую подпоследовательность: находим срединный элемент готовой подпоследовательности – am, где m =] i/2 (, и сравниваем его с х.
Если am &g ; х то ведем далее поиск в левой половине готовой подпоследовательности, т.е. опять находим срединный элемент и сравниваем его с х и т.д., пока не найдем номер j такой, что ai &l ;=x &l ; ai 1, иначе аналогично ведем поиск в правой половине готовой подпоследовательности; б) если j=j-1, то переходим к пункту в), иначе расширяем готовую подпоследовательность справа, сдвигая ее элементы, начиная с ai вправо; в) ai 1 = х 3. i=i 1. Если i &l ;= , то переходим к п. 2, иначе сортировка заканчивается. Деление пополам производится i log2i. Число сравнений практически не зависит от начального порядка элементов. В нижней части последовательности место включения отыскивается несколько быстрее, чем в верхней, поэтому предпочтительна ситуация, когда элементы немного упорядочены. Фактически, если элементы в обратном порядке, потребуется минимальное число сравнений, если уже упорядочены – максимальное: C≈ log2(log2-log2e±0,5). Однако число пересылок так и остается порядка 2. И на самом деле сортировка уже упорядоченного массива потребует больше времени, чем метод с прямыми включениями (см. ). 2.3 Выбор структур данных Алгоритмы сортировки очень сильно зависят от структуры данных, так что выделяют два класса: сортировку массивов и сортировку последовательностей (файлов). В данной работе рассматривается сортировка массивов. Тип данных «массив» удобен тем, что хранится во внутренней памяти и имеет случайный доступ к элементам, то есть более быстрый, чем у последовательности. Поэтому массивы целесообразно использовать для хранения небольших, часто используемых множеств. Обычно упорядочивающая функция не вычисляется по какому-либо правилу, а хранится как явная компонента (поле) каждого элемента. Её значение называется ключом элемента. Поэтому для представления элемента хорошо подходит тип «запись», что на языке «Pascal» выглядит следующим образом: YPE i em = RECORD key: I EGER; {здесь описаны другие компоненты} E D; Поскольку в алгоритме сортировки используется только ключ элемента, то остальную информацию об элементе можно опустить – считаем, что тип элемента определен как I EGER. Можно выбрать и другой тип, на котором определено общее отношение порядка. Из выше сказанного следует, что в процессе работы потребуются следующие переменные: – количество элементов массива; A – сортируемый массив; i – переменная цикла (по исходной последовательности); j – переменная внутреннего цикла (по готовой последовательности); x – i-й ключ (переносимый элемент). Все переменные целого типа. 2.4 Описание схемы алгоритма Блок-схема данного алгоритма изображена на рис. 2 в Приложении. Алгоритм работает следующим образом. Сначала вводятся исходные данные: длина массива и его элементы (блоки 1, 2), затем организуется цикл по всей длине массива, во время которого ставится «барьер» (блок 3) и проводится сравнение i-го ключа с элементами готовой последовательности (стоящими раньше него). При этом все элементы, большие этого ключа (это условие проверяется в блоке 4), сдвигаются вправо (блок 5). Это происходит до тех пор, пока не встретится элемент меньший либо равный данному ключу (по крайней мере барьеру).
Если хотя бы одно решение отличается от других, переходим к операции 1, где задается новое значение а. Если все три решения равны, считаем результат – полученный а-оптимальный гамильтонов цикл – удовлетворительным решением ЗОК. Последовательность выполнения операций алгоритма показана на графе (рис.9.1). Работа алгоритма «а-оптимум» анализировалась для различных п. При решении задач метод «обогащения» исходного множества ветвей и алгоритм «а-оптимум» использовались совместно. Во всех приведенных случаях такой совместный счет эффективнее алгоритма «а-оптимум» на необогащенном множестве ветвей графа. С соответствующими изменениями предложенные методы «обогащения» и «а-оптимизации» могут использоваться и для задач поиска а-оптимальных простых путей и циклов (или их совокупностей), покрывающих т ? п вершин графа. Рис.9.1. Схема алгоритма «а-оптимум» Глава 10. Экология 10.1. Введение Экология – это вид современной человеческой деятельности, включающий в себя науку, проектирование, образование, анализ, экспертизу, контроль и другие компоненты деятельности, общее содержание которых описано в главе 4
1. Поиск оптимального пути в графе
2. Социализм в поисках "третьего пути"
3. Рациональные методики поиска оптимальных путей сетевых графиков и их автоматизация на ЭВМ
4. Алгоритмы численного решения задач
5. Поиск кратчайшего пути в многоугольнике
10. Понятие алгоритма, его свойства. Описание алгоритмов с помощью блок схем на языке Turbo Pascal
11. Алгоритм возникновения и развития международных конфликтов и возможные пути их решения
12. Максимальное ускорение алгоритма поиска
14. Алгоритмы на графах. Независимые и доминирующие множества
15. Алгоритмы поиска подстроки в строке
16. Программная реализация алгоритма Дейкстры (построение цепей минимальной длины)
17. Способы описания алгоритма. Виды операторов
18. Алгоритмы поиска кратчайших покрытий булевых матриц
19. Алгоритм раскраски графа (точный)
20. Разработка алгоритмов контроля и диагностики системы управления ориентацией космического аппарата
26. VB, MS Access, VC++, Delphi, Builder C++ принципы(технология), алгоритмы программирования
27. Разработка системы задач (алгоритмы-программы) по дискретной математике
29. Алгоритм компактного хранения и решения СЛАУ высокого порядка
31. Применение алгоритма RSA для шифрования потоков данных
32. Использование алгоритмов при изучении орфографии в начальных классах
33. Алгоритмы и методы компоновки, размещения и трассировки радиоэлектронной аппаратуры
34. Сравнительный анализ нейросетевых реализаций алгоритмов распознавания образов
36. Структуры данных и алгоритмы
37. Алгоритм компактного хранения и решения СЛАУ высокого порядка
41. Градиентный алгоритм для систем независимости с отрицательными весами
42. Место цифровой рентгенографии в современном алгоритме лучевой диагностики
43. Принципы и особенности составления лекарственных алгоритмов
44. Алгоритм иммуногематологического исследования женщин во время беременности
45. Алгоритмы выполнения манипуляций
46. Алгоритм развития для науки
47. Об алгоритмах самоорганизации в задаче синтеза информационных технологий обработки сигналов
48. Способ устойчивого решения неустойчивых задач и его алгоритм
49. Алгоритм определения перечня специальных квалификационных характеристик (компетентностей)
51. Вот где задача зарыта! Алгоритм постановки задач рекламной кампании
52. Алгоритм решения обратной задачи вихретокового контроля (ВТК)
53. Алгоритм работы процессора
57. Генетический алгоритм глобальной трассировки
58. Исполнитель алгоритмов – человек
59. Планирование поставок торговой фирме с использованием имитации и генетического алгоритма
60. Алгоритмы и протоколы маршрутизации
61. Алгоритмы нейрокибернетики
62. Быстрые алгоритмы сортировки
63. Конфигурирования программного обеспечения алгоритма OSPF на маршрутизаторе
66. Алгоритм сжатия "Unbuffered RLE"
67. Алгоритм сжатия видео: рецепторы как кодировщики
68. Методика и алгоритмы контроля работоспособности и диагностики сейсмометрических каналов
75. Граф Л.Н. Толстой: путь к «Войне и миру»
76. Структуры данных и алгоритмы
78. Математическая логика и теория алгоритмов
79. Применение рекурсии в алгоритмах с возвратом. Файловый тип. Ввод/вывод
80. Алгоритм внедрения управленческого абсолюта
81. Алгоритм действий по управлению конфликтом
82. Алгоритм разработки и реализации федеральных целевых программ по развитию проблемных регионов России
83. Алгоритм нейтрализации замечаний и возражений
85. Горные породы, алгоритмы их определения
90. Алгоритмічні мови програмування
92. Алгоритмы и организация данных
93. Алгоритмы параллельных процессов при исследовании устойчивости подкрепленных пологих оболочек
95. Використання генетичних алгоритмів для складання розкладу
96. Интеллектуальные информационные технологии и системы: генетические алгоритмы
97. Компрессия информации и упорядочение дерева по алгоритму Виттера
98. Методические проблемы изучения алгоритмов работы с величинами