Главная#
ALG#
Pied Piper
Преподаватель: Лебедев Евгений Денисович
Почта: lebedeved !СОБАКА! edu.miigaik.ru
Объявления:#
Индивидуальные темы:#
Индивидуальные темы
- Программа-демонстратор алгоритмов сортировки массивов
- Маргаритковый мир
- Генератор лабиринтов алгоритмом Эйлера
- Генератор лабиринтов на основе алгоритма Краскала (или Прима)
- Генерация лабиринта на основе случайного поиска в глубину
- Генераторы простых чисел (решето Эратосфера)
- Программа-демонстратор алгоритма поиска А*
- Муравьиный алгоритм и его применение (предлагается для поиска оптимального маршрута)
- K-d-дерево (для индексации точек)
- Алгоритмы решения задачи о рюкзаке
- Генерация карты высот на основе шума Прима
- Генерация высот алгоритмом Diamond-Square
- Решение задачи коммиявояжера методом отжига на реальных данных
- Алгоритм решения задачи заливки однородной области (обход в ширину)
- Алгоритм решения задачи сборки кубика-рубика
- Алгоритм решения пятнашек
- Алгоритм Минимакс (на примере игры крестики-нолики)
- Поиск минимального отсуствующего числа
- Гравитационная задача N-тел
- Алгоритм трассировки лучей (2D-реализация)
Требования к проекту
1. Презентация 10-20 слайдов
2. Первый слайд титульный лист
- название проекта, группа, ФИО, предмет
3. Второй слайд постановка задачи
- о чем ваша задача?
4. Трейти слайд методы решения
- перечисляете известные методы решения (названия методов/ ссылки на конкретные алгоритмы / ссылки на иную литературу). Выбранный вами алгоритм / алгоритмы подчеркиваете жирным или цветным шрифтом
5. Четвертый слайд средства реализации
- язык программирования, версия языка программирования (для С++ номер стандарта), верссии использованных библиотек
6. Пятый салйд Блок схема
алгоритма/алгоритмов выбранных вами или код наиболее важной функции
. Блок-схема выполяется посредствам ресурса programforyou
7. Шестой слайд Описание интерфейса программы
(даже если это консольное приложение) - что на вход, как пользователю это ввести
8. Седьмойслайд - Демонстрация работы программы
(предварительно записанное видео или гиф. Рекомендуется гиф)
9. Восьмой слайд - Асимптотическая оценка
предложенного алгоритма/алгоритмов, если это возможно
10. Девятый слайд - Замеры времени работы при разных данных
. Таблицей оформяется.
11. Десятый слайд - Заключительный комментарий. Выводы.
Время выступления 10-20 минут. Обратите внимание, что некотоыре пункты могут потребоваться нескольких слайдов, поэтому разброс у каждого свой, но прошу придерживаться струткуры!
Вопросы по реализации проектов обсуждаются во время очных занятий.
Поскольку мы с вами говорим о парралеллизации
, то, очевидно, такие работы выше ценятся независимо от выбранного языка программирования. Однако даже без нее вы можете получить максимальный балл.
Начиная с апреля, я хотел бы начать слушать доклады.
Диф. зачет#
Warning
Кто будет пойман на генерации кода при помощи ИИ во время сдачи диф.зачета досрочно завершает попытку и отправляется на перездачу в другой день. Если это последний день приема, то студент уходит с долгом до осеннего семестра.
Даты приема 19, 26 мая. К этим датам у вас должны быть сданы Лабораторные работы в нужном количестве. С собой зачетку.
При ответе на теоертические вопросы не разрешается пользоваться конспектами.
О чем был курс?
Считается, что из курса вы вынесите следующее:
-
Сможете рассказать в виде краткого обзора про алгоритмические стратегии: Методы «грубой силы», Жадные алгоритмы, Численные алгоритмы, Алгоритмы с возвратом, Эвристические алгоритмы (отдельно Муравьиные алгоритмы, Генетические алгоритмы)
-
Сформировали навык оценки алгоритмов по скорости работы (асимптотический анализ)
-
Сформировали навык оценки ресурса параллелизма алгоритмов (видеть, какие участки кода можно потенциально распарареллить)
Билет состоит из 2 теоретических вопросов и 1 практического задания. Примеры практических заданий представлены В Лабораторная работа №7 "Методы решения алгоритмических задач". В случае предосталвения неполного или некорретного решения задание может быть уточнено или заменено на дополнительное.
Вопросы к диф.зачёту
- Формализация понятия алгоритма. Машина Тьюринга. Нормальные алгоритмы Маркова. Лямбда-исчисление Черча. Тезис Черча. Теорема о рекурсии.
- Абстрактная модель вычислений. Вычислительные ресурсы. Асимптотический анализ алгоритмов (нотация big-O).
- Вычисление рекурсивной функции. Асимптотический анализ алгоритмов рекурсивных алгоритмов.Анализ рекуррентных соотношений. Мастер-теорема.
- Представление чисел в памяти компьютера. Проблемы компьютерных вычислений, вызванные использованием стандарта IEEE754. Применение побитовых операторов.
- Основы параллелизации. Параллелизация на уровне процессора. Векторные операции. Интрисики.
- Процесс и поток. Параллелизация на уровне данных. Проблема разделения ресурсов. Задача обедающих философов. Средства синхронизации.
- Алгоритмы численных приближений. Идея целочисленного интегрирования. Ресурс парраллелизации в алгоритмах численных приближений.
- Методы оптимизации "Разделяй и влавствуй". Бинарное возведение в степень. Алгоритм Карацубы. Ресурс парраллелизации при реализации метода декомпозиции.
- Оценка эффективности параллельных вычислений. Модель вычислений в виде графа "операции-операнды". Показатели эффективности параллельного алгоритма.
- Оценка эффективности параллельных вычислений. Закона Амдала. Закон Густавсона - Барсиса. Практические приложения закона Амдала.
- Реализация параллельных алгоритмов в Python. Global Interpreter Lock (GIL). Готовые решения для многопоточных приложений в Python.
- Алгоритмы сортировки. Асимптотический анализ сортировки пузырьком, поразрядной сортировки, быстрой сортировки. Ресурс параллелизации в алгоритма БС.
- Полный перебор. Методы оптимизации полного перебора алгоритмы поиска с возвратом.
- Граф. Виды графов. Представление графов в памяти. Примеры графовых задач. Граф как инструмент научного анализа.
- Деревья. Обход деревьев. Двоичная куча. Поиск в двоичном дереве. Идея индексирования данных.
- Граф. Виды графов. Представление графов в памяти. Специализированные форматы хранения графов. Поиск в глубину. Поиск в ширину.
- Граф. Специализированные форматы хранения графов. Параллельный поиск в ширину.
- Динамическое программирование. Задача о кратчайшем пути. Алгоритм Дейкстры. Ресурс оптимизации алгоритма Дейкстры.
- Динамическое программирование. Задача о кратчайшем пути. Алгоритм Дейкстры. Ресурс парраллелизации алгоритма Дейкстры.
- Динамическое программирование. Задача о кратчайшем пути. Алгоритм Дельта-шага. Ресурс парраллелизации алгоритма Дельта-шага.
- Жадные алгоритмы. Задача о рюкзаке. Пример жадной оптимизации (Алгоритм А*).
- Задача коммивояжера. Разбор решений: метод грубой силы (полный перебор), динамическое программирование, жадный алгоритм.
- Поиск с возвратом. Метод ветвей и границ. Задача Коммивояжера. Использование эвристик для оптимизации перебора (алгоритм Литтла).
- Эвристические алгоритмы. Алгоритм имитации отжига. Примеры использования алгоритма имитации отжига.
- Эвристические алгоритмы. Генетический алгоритм. Примеры использования алгоритма генетического алгоритма.
- Эвристические алгоритмы. Муравьиный алгоритм. Примеры использования алгоритма муравьиного алгоритма.
- Формализация понятия алгоритма. Лямбда-исчисление Черча. Тезис Черча. Алгоритмически неразрешимые задачи.
- Основы параллелизации. Средства синхронизации и их реализация. Атомарные переменные. Мьютексы. Семафоры.