
- •7. Разработка эффективных алгоритмов: методы «Разделяй и влавствуй» и динамическое программирование.
- •2. Общие принципы код-я информации и формы ее представления в эвм
- •5. Анализ алгоритмов сортировки: обменная сортировка методом «пузырька», метод «простого выбора».
- •17. Анализ алг-мов поиска: послед-ый поиск в неупорядоч .Массиве, бинарный поиск в упорядоч. Массиве.
- •6. Разработка эффективных алгоритмов: методы «Разделяй и влавствуй» и «Балансировки».
- •8. Разработка эффективных алгоритмов: методы жадные алгоритмы. Задача о выборе заявок. Принцип жадного выбора.
- •Задача о выборе заявок
- •9. Алгоритм: содержательный и формализованный подходы к понятию «алгоритм». Свойства алгоритма и способы его описания.
- •21. Классификация ппо. Текстовые редакторы, издательские системы. Технологии обработки текстовой информации.
- •10.Линейность, ветвление и цикл. Их реализация в языках программирования.
- •4. Задача сортировки. Алгоритмы сортировки. Сортировка и индексирование.
- •12. Логические яп. Декларативность программ. Решение логических задач.
- •13. Функц яп. Декларативность прогтамм. Лямбда-исчислениею
- •29. Накопители инф-ции, принципы их действия. Физ. И лог. Стр-ра диска.
- •14. Языки программирования. Основные элементы. Обзор и классификация. Методологии программирования.
- •15. Понятие типа данных. Простые (базовые) типы данных. Ссылочный тип.
- •16. Структурированные типы данных (массивы, записи, множества, файлы)
- •18. Объектно-ориентированное программирование. Инкапсуляция. Наследование. Полиморфизм.
- •19. Программное обеспечение эвм. Операционные системы. Развитие ос. Оболочки ос.
- •20. Программное обеспечение эвм. Сервисные программы (антивирусы, архиваторы, дефрагментаторы, диагностика и отладка).
- •22. Классификация ппо. Табличная организация информации. Табличные модели. Табличные процессоры.
- •11. Подпрограммы. Их реализ. В яп. Рекурсия, модул. Пр-ние
- •23. Классификация ппо. Базы данных. Проектирование баз данных. Субд.
- •25. Реляционная алгебра. Операции над таблицами.
- •26. Эвм как средство обработки информации. Класс-кация эвм. Перспективы раз-ия вт
- •45. Нейр. Сети. Одн. Перцептр. Актив. Ф-ия. Лог. Операц. На основе прст. Перцептр.
- •27. Понятие архитектуры эвм. Центральные устройства эвм, их наз-е и характеристики
- •28. Устройства ввода и вывода информации, их назначения и функции.
- •30. Базовая эталонная модель взаимодействия открытых систем международной организации стандартизации и ее значение в развитии телекоммуникации.
- •Взаимодействие уровней модели osi
- •31. Протоколы общения компьютеров в сети (ip, tcp, udp, ftp, smpt, http, nntp) и интерфейсы. Области взаимодействия открытых сетей.
- •32. Принципы функционирования локальных вычислительных сетей. Основные компоненты и типы лвс. Одноранговые сети. Сети на основе сервера. Комбинированные сети.
- •33. Основные типы кабельных сред передачи данных. Узкополосная и широкополосная передача сигналов. Асинхронная передача и автоподстройка. Сетевой адаптер.
- •34. Беспроводные сети. Передача "точка-точка". Инфракрасные лазерные лвс. Беспроводные лвс с радиопередачей. Мобильные сети.
- •35. Классификация моделей. Моделирование физических процессов. Понятие вычислительного эксперимента, его этапы и фазы. Области применения вычислительного эксперимента.
- •36. Моделирование стохастических систем. Моделирование случайных величин с равномерным распределением. Методы проверки случайности данных.
- •37. Приближенное число. Абсолютная и относительная погрешности. Виды, основные источники, способы устранения погрешностей.
- •38. Решение уравнений методами бисекций и итераций.
- •40. Постан. З-чи интер-ния. Интер-ный многоч. Сплайны.
- •43. Обработка результатов наблюдений. Уточнение параметров методом средних и методом наименьших квадратов.
- •44. Нечеткая логика. Ф. Принадлежности. Ф. Ограничения. Основные операции в нечеткой логике.
- •46. Нейр. Сети. Обуч. С пом-ю алгор. Обр. Распр.
- •54. Алгебра высказываний. Нормальные формы. Совершенные нормальные формы. Теорема существования нормальной формы. Приложение алгебры высказываний к логико-математической практике.
- •47. Знания. Классификация. Экспертные системы. Искусственный интеллект
- •48. Представление знаний (логическая модель, семантические сети, фреймы, продукции).
- •49. Представление задачи оптимизации в канонической, стандартной и матричной форме. Постановка задачи линейного программирования. Математическая модель все типов задач линейного программирования.
- •50. Решение задач линейного программирования графическим методом.
- •1. Система огранич-й представл. В канонич. Видет
- •2. Пусть система огр-ий злп представлена в виде:
- •3. Пусть система ограничений злп представлена в виде
- •52. Элементы теории двойственности. Прямая и двойственная задачи линейного программирования. Основные теоремы двойственности. Применение двойственного симплексного метода.
- •53. Основные понятия теории графов. Степень вершины графа. Ориентированные графы, связные графы и компоненты связности. Понятие взвешенного графа. Способы задания графа.
6. Разработка эффективных алгоритмов: методы «Разделяй и влавствуй» и «Балансировки».
Одна из самых конструктивных идей состоит в разложении задачи “размерности” n на одну операцию некоторой сложности, например, O(n) или O(1), и похожую задачу размерности m, меньшей n, или в общем случае на k задач с размерностями m1, m2, …, mk таких, что m1+ m2 + …+mk £n. Эта идея открывает путь к решению многих задач. Из нее исходят, в частности, почти все методы сортировки.
Теорема 1. Пусть a, b, c – неотрицательные постоянные. Решение рекуррентных уравнений
где n - степень числа c, имеет вид:
Из этой теоремы вытекает, что разбиение задачи размера n (за линейное время) на две подзадачи размера n/2 дает алгоритм сложности O(nlogn): a = c = 2. Если бы подзадач было 3, 4 или 8 (c=2, a=3>2, a=4>2, a=8>2 ), то получился бы алгоритм сложности порядка nlog3, n2 и n3 соответственно.
С другой стороны, разбиение задачи на 4 подзадачи размера n/4 дает алгоритм сложности O(nlogn): a = c = 4. Если бы подзадач было 9 и 16 (c=4, a=9>4, a=16>4) – порядка nlog3 и n2 соответственно.
Поэтому асимптотически более быстрый алгоритм умножения целых чисел можно было бы получить, если бы удалось так разбить исходные целые числа на 4 части, чтобы суметь выразить исходное умножение через 8 или менее меньших умножений. Другой тип рекуррентных соотношений возникает в случае, когда работа по разбиению задачи на не пропорциональна ее размеру.
Балансировка (уравновешивание)
Из приведенных выше примеров видно, что недостаточно разделять задачу для получения эффективных алгоритмов, нужно уравновешивать разделяемые части. Среди возможных способов разбиения деление на равные части дает в общем случае оптимальный результат. Алгоритмы Бинарного (или Дихотомического) поиска или Быстрой сортировки являются прямыми приложениями этого принципа.
Метод “разделяй и властвуй” – не единственная техника, при использовании которой полезна балансировка для разработки эффективных алгоритмов. Например, эффективные алгоритмы получаются в результате балансировки размеров поддеревьев или весов операций.
Для иллюстрации принципа уравновешивания приведем два алгоритма сортировки и сопоставим эффекты от разбиения задачи на подзадачи неравных и равных размеров.
Рассмотрим задачу расположения n целых чисел в порядке неубывания.
1) Алгоритм “пузырьковой сортировки”. Поскольку при исследовании последовательности сначала ищется наименьший (наибольший) элемент и меняется с первым (с последним), а затем процесс повторяется на остальных n-1 элементах, то этот алгоритм приводит к рекуррентному соотношению вида
для числа сравнений, произведенных между сортируемыми элементами. Решением для (13) служит T(n) = n(n–1)/2, что составляет O(n2).
Хотя этот алгоритм можно считать рекурсивным применением приема “разделяй и властвуй” с разбиением задачи на неравные части, он не эффективен для больших n. Для разработки асимптотически эффективного алгоритма сортировки надо позаботиться о сбалансированности. Вместо того, чтобы разбивать задачу размера n на две подзадачи, одна из которых имеет размер 1, а другая – размер n–1, надо разбить ее на две подзадачи с размерами примерно n/2. Это выполняется методом, известным как сортировка слиянием.
2) Алгоритм сортировки слиянием. Метод слияний - один из самых первых методов, предназначенных для сортировки на ЭВМ; он был придуман фон Нейманом еще в 1945 г В основе этого метода лежит идея, согласно которой слияние двух отсортированных списков выполняется быстро. Список из одного элемента уже отсортирован, поэтому сортировка слиянием разбивает список на одноэлементные куски, а затем постепенно их сливает. Поэтому вся деятельность заключается в слиянии двух списков.
Сортировку слиянием можно записать в виде рекурсивного алгоритма, выполняющего работу, двигаясь вверх по рекурсии. Для подсчета числа сравнений в этом алгоритме приходим к рекуррентному уравнению
решением которого по теореме 1 является T(n) = O(nlogn).
Таким образом, для больших n сбалансированность размеров подзадач дала значительную выгоду.
Сортировка слиянием особенно интересна для структур данных, отличных от массивов. Но следует помнить, что для слияния списков требуется дополнительная память.