• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Article
Synthesis of Acyclic Models for Processes Without Repeating Events

Joulitov A.K., Lomazova I.A.

Proceedings of the Institute for System Programming of the RAS. 2026. Vol. 38. No. 4(2) . P. 215-224.

Book chapter
An LLM-Based Approach for Creating Multi-agent Systems

Rezunik L., Alexandrov D., Mikhail Prozorskiy.

In bk.: Intelligent Decision Technologies. Proceedings of the 17th KES-IDT 2025 Conference. Vol. 450. Cham: Springer, 2026. P. 81-91.

Working paper
Approach to Designing CV Systems for Medical Applications: Data, Architecture and AI
In press

Ryabtsev D., Vasilyev Boris, Shershakov S.

Computer Science ::Computer Vision and Pattern Recognition. 2501.14689. arXiv, 2025

Algorithms and Data Structures

2026/2027
Academic Year
RUS
Instruction in Russian
8
ECTS credits
Type:
Compulsory course
When:
2 year, 1-4 module

Instructors

Бутаков Дмитрий Викторович

Бутаков Дмитрий Викторович

Егорова Елизавета Петровна

Егорова Елизавета Петровна

Маров Руслан Джабирович

Маров Руслан Джабирович

Стоуэлл Максим Нейтонович

Стоуэлл Максим Нейтонович

Программа дисциплины

Аннотация

Учебный курс "Алгоритмы и структуры данных" является обязательной дисциплиной для студентов второго курса по направлению "Программная инженерия" факультета компьютерных наук НИУ ВШЭ. Основная цель курса заключается в формировании у студентов навыков анализа производительности алгоритмов, работающих с различными структурами данных, и выбора оптимальных решений для конкретных практических задач. В ходе обучения рассматриваются методы асимптотического анализа сложности как детерминированных, так и стохастических алгоритмов, изучаются алгоритмы сортировки, методы эффективного хранения и поиска данных, включая организацию хеш-таблиц и деревьев, а также графовые и строковые алгоритмы. Особое внимание уделяется различным парадигмам разработки алгоритмов, таким как жадные методы, приближенные алгоритмы и динамическое программирования. Кроме того, рассматриваются фундаментальный вопросы разрешимости и вычислимости. Лекции направлены на систематическое освоение материала, тогда как практические занятия позволяют закрепить полученные знания через решение задач и реализацию изученных алгоритмов и структур данных на языке программирования С++. Тесная взаимосвязь лекционного материала и практической работы обеспечивает глубокое и всестороннее освоение курса.
Цель освоения дисциплины

Цель освоения дисциплины

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

Планируемые результаты обучения

  • овладеть принципами построения и методами анализа временной сложности алгоритмов
  • овладеть подходами к проектированию базовых и продвинутых структур данных
  • получить практический опыт в реализации алгоритмов и структур данных на языке программирования C++
  • овладеть методами точного и асимптотического анализа сложности алгоритмов
  • овладеть подходами к анализу, проектированию и реализации базовых (массивы, списки, стеки, очереди) и продвинутых (хеш-таблицы, очереди с приоритетами, сбалансированные деревья поиска, графы) структур данных
  • получить практический опыт реализации изученных алгоритмов и структур данных на языке программирования С++
  • овладеть специальными подходами к разработке алгоритмов (стохастические и приближенные алгоритмы)
  • овладеть основными парадигмами разработки алгоритмов (жадные алгоритмы, динамическое программирование и "разделяй-и-властвуй")
  • овладеть подходами точного, асимптотического и амортизированного анализа сложности алгоритмов
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Неделя 1. Корректность и сложность алгоритма
  • Неделя 2. Линейные контейнеры
  • Неделя 3. Асимптотический анализ. Рекуррентное соотношение
  • Неделя 4. Асимптотический анализ. Дерево рекурсии
  • Неделя 5. Мастер-теорема для решения рекуррентных соотношений
  • Неделя 6-7. Стохастические алгоритмы
  • Неделя 8. Сортировка, основанная на сравнениях
  • Неделя 9. Линейная сортировка
  • Неделя 10. Бинарные деревья (поиска). Введение
  • Неделя 11. AVL-деревья и красно-черные деревья
  • Неделя 12. Случайные и декартовы деревья
  • Неделя 5. Мастер-теорема
  • Неделя 1. Введение
  • Неделя 2. Линейные
  • Неделя 3. Асимптотический
  • Неделя 4. Асимптотический-2
  • Неделя 6-7. Стохастические
  • Неделя 8. Сортировка, основанная
  • Неделя 9. Линейная
  • Неделя 10. Бинарные
  • Неделя 11. AVL
  • Неделя 13. Splay-деревья
  • Неделя 12. Случай
  • Неделя 13. Splay
  • Неделя 14. Хеширование. Хеш-функции
  • Неделя 15. Хеш-таблицы
  • Неделя 16. Вероятностные структуры данных
  • Неделя 17. Графы. Базовые аспекты
  • Неделя 18. Остовное дерево графа
  • Неделя 19. Поиск кратчайших путей в графе
  • Неделя 20. Сети и потоки
  • Неделя 21. Паросочетания в графах
  • Неделя 22-23. Раскраска и укладка графа
  • Неделя 24. Поиск точного вхождения строки в текст
  • Неделя 25. Редакционные расстояния
  • Неделя 26. Поиск вхождения набора строк в текст
  • Неделя 27. Хранение и сортировка строк
  • Неделя 28. Кодирование и сжатие строк
  • Неделя 29. Жадный алгоритм и динамическое программирование
  • Неделя 30. Приближенные алгоритмы. Метод ветвей и границ
  • Неделя 31. Стохастические алгоритмы
  • Неделя 32. Разрешимость
Элементы контроля

Элементы контроля

  • неблокирующий ЭКЗАМЕН1
    Устный экзамен по материалам первого семестра курса
  • неблокирующий ЭКЗАМЕН2
    Устный экзамен по материалам второго семестра курса
  • неблокирующий ПР1
    Регулярная работа на практических занятиях в течение первого семестра
  • неблокирующий НАКОП2
    Формализуемая часть накопленной оценки регулярной работы в течение второго семестра
  • неблокирующий ПР2
    Регулярная работа на практических занятиях в течение второго семестра
  • неблокирующий НАКОП1
    Формализуемая часть накопленной оценки регулярной работы в течение первого семестра
  • блокирующий Внешняя оценка
    Внешний экзамен компетенций образовательной программы топ-уровня
Промежуточная аттестация

Промежуточная аттестация

  • 2026/2027 2nd module
    Итоговая оценка за первый семестр рассчитывается по следующей формуле: min(ИТОГ1 + 0,05*Внешняя оценка; 10), где ИТОГ1 = 0,45*НАКОП1 + 0,25*ПР1 + 0,3*ЭКЗАМЕН1
  • 2026/2027 4th module
    0.25 * ПР2 + 0.3 * ЭКЗАМЕН2 + 0.45 * НАКОП2
Список литературы

Список литературы

Рекомендуемая основная литература

  • Data structures and algorithm analysis in C++, Weiss, M. A., 2006
  • Introduction to algorithms, Cormen, T. H., 2009
  • Kleinberg, J., & Tardos, E. (2014). Algorithm Design: Pearson New International Edition. Harlow, Essex: Pearson. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1418332
  • Теория графов, Оре, О., 1980

Рекомендуемая дополнительная литература

  • Алгоритмы на С++ - Седжвик Р. - Национальный Открытый Университет "ИНТУИТ" - - - 2016 - русский - https://e.lanbook.com/book/100565 - ЛАНЬ - 100565
  • Алгоритмы на С++ : анализ структуры данных, сортировка, поиск, алгоритмы на графах, Седжвик, Р., 2014
  • Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих. - 978-5-4461-0923-4 - Бхаргава А. - 2022 - Санкт-Петербург: Питер - https://ibooks.ru/products/376971 - 376971 - iBOOKS
  • Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих. - 978-5-496-02541-6 - Бхаргава А. - 2017 - Санкт-Петербург: Питер - https://ibooks.ru/products/364142 - 364142 - iBOOKS
  • Теория графов, Оре, О., 2009

Авторы

  • Нестеров Роман Александрович