Skip to content

alcatraz-rm/Algorithms-and-Data-Structures

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithms-and-Data-Structures

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

Будут затронуты следующие области теории алгоритмов:

Численные алгоритмы:

Связные списки:

  • Однонаправленные связные списки (передвижение по списку, нахождение ячеек по данным и по индексу, использование ограничителей, добавление и удаление ячеек, изменение элемента по индексу, очистка, получение максимума)
  • Двунаправленные связные списки (передвижение по списку, нахождение ячеек по данным и по индексу, использование ограничителей, добавление и удаление ячеек, изменение элемента по индексу, очистка, получение максимума)
  • Копирование связного списка (singly, doubly)
  • Сортировка вставкой (singly, doubly)
  • Сортировка выбором (singly, doubly)
  • Поиск цикла (помеченные ячейки, метод кролика и черепахи, повторная трассировка списка)

Массивы:

Стеки и очереди:

  • Стеки
  • Очереди
    • Очереди связных списков
    • Очереди массивов

Сортировка:

Поиск:

  • Линейный поиск
  • Бинарный поиск
  • Интерполяционный поиск

Хеш-таблицы:

  • Открытая адресация (удаление элементов, линейное пробирование, квадратичное пробирование, псевдослучайное пробирование, двойное хеширование, упорядоченное хеширование)

Графы:

  • Поиск в ширину
  • Поиск в глубину
  • Топологическая сортировка
  • Поиск компонент связности
  • Поиск кратчайшего пути

Рекурсия:

  • Базовые алгоритмы
    • Факториал
    • Числа Фионаччи
    • Ханойские башни
  • Алгоритмы с возвратом
    • Задача о восьми ферзях
    • Ход коня
    • Сочетания и размещения
    • Сочетания с циклами
    • Сочетания с повторениями
    • Сочетания без повторений
    • Размещения с повторениями
    • Размещения без повторений

Деревья:

  • Обход дерева
    • Обход в прямом порядке
    • Симметричный обход
    • Обход в обратном порядке
    • Обход в ширину
  • Упорядоченные деревья:
    • Добавление вершин
    • Поиск вершин
    • Удаление вершин
  • Связные деревья

Сбалансированные деревья:

  • АВЛ-деревья
    • Добавление значений
    • Удаление значений
  • 2-3-деревья
    • Добавление значений
    • Удаление значений
  • В-деревья
    • Добавление значений
    • Удаление значений
  • Иерархически организованные В-деревья
  • В+-деревья

Деревья принятия решений:

  • Поиск по деревьям принятия решений
    • Задачи оптимизации
    • Метод полного перебора
    • Метод ветвей и границ
    • Эвристика дерева принятия решений

Строковые алгоритмы:

  • Парные скобки
    • Вычисление арифметических выражений
    • Синтаксические деревья
  • Сопоставление с шаблоном
    • Детерминированные конечные автоматы
    • Построение ДКА для регулярных выражений
    • Недетерминированные конечные автоматы
  • Поиск строк
  • Вычисление редакционного расстояния

Криптография:

  • Перестановочные шифры
    • Перестановка строк/столбцов
    • Перестановка столбцов
    • Маршрутные шифры
  • Шифры подстановки
    • Шифр Цезаря
    • Шифр Виженера
    • Простая подстановка
    • Схема одноразовых блокнотов
  • Блочные шифры
    • Шифр Фейстеля
  • Шифрование с открытым ключом и RSA (Python)

Все перечисленные выше структуры данных и алгоритмы будут реализованы на языке C++ или Python.

Источники: