Алгоритмы и структуры данных семинары 154-2 156-2 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Семинары 17-18)
(Семинары 37-38)
 
(не показано 12 промежуточных версии этого же участника)
Строка 1: Строка 1:
Инвайт на AnyTask: CBXezV5 (действителен до 12 марта)
+
== Общая информация ==
  
 +
Все домашки сдаются на ревью в AnyTask (anytask.org), для получения доступа нужно ввести инвайт в соответствии с группой:
  
== Семинар 1 ==
+
Инвайт на AnyTask для 154-2: b002kz4 (действителен до 25 мая)
 +
 
 +
Инвайт на AnyTask для 156-2: MXyU2zi (действителен до 25 мая)
 +
 
 +
Все оценки и варианты заданий можно найти [https://docs.google.com/spreadsheets/d/14PmnC1XtRjbrEfrHF0jm0MlZBI0Gah2YO31g0mf8yn8/edit?usp=sharing тут].
 +
 
 +
== Семинары ==
 +
 
 +
=== Семинар 1 ===
  
 
Тренировались в рекурсии на примере Ханойских башен. [https://www.dropbox.com/s/i21924ziqu6cayr/hanoi.pdf?dl=0 Задачи], нужно решить все, кроме 4.
 
Тренировались в рекурсии на примере Ханойских башен. [https://www.dropbox.com/s/i21924ziqu6cayr/hanoi.pdf?dl=0 Задачи], нужно решить все, кроме 4.
  
== Семинар 2 ==
+
=== Семинар 2 ===
  
 
Разбирали, как тестировать программы на примере сортировки пузырьком: [https://www.dropbox.com/s/mv0v7xy87ob0lx5/bubble_sort.cpp?dl=0 код].
 
Разбирали, как тестировать программы на примере сортировки пузырьком: [https://www.dropbox.com/s/mv0v7xy87ob0lx5/bubble_sort.cpp?dl=0 код].
Строка 14: Строка 23:
 
* Написать двоичный поиск с тестами как в примере выше. При этом функция должна быть реализована максимально абстрактно на шаблонах. После написания тестов и полной отладки задачу нужно сдать [http://informatics.mccme.ru/mod/statements/view3.php?id=192&chapterid=4 сюда]. А потом еще и сдать задачу устно.
 
* Написать двоичный поиск с тестами как в примере выше. При этом функция должна быть реализована максимально абстрактно на шаблонах. После написания тестов и полной отладки задачу нужно сдать [http://informatics.mccme.ru/mod/statements/view3.php?id=192&chapterid=4 сюда]. А потом еще и сдать задачу устно.
  
== Семинар 3 ==
+
=== Семинар 3 ===
  
 
Обсуждали разные сортировки (вставками, слиянием, быструю). Их нужно сдать в [https://official.contest.yandex.ru/contest/2007/enter/ контест].
 
Обсуждали разные сортировки (вставками, слиянием, быструю). Их нужно сдать в [https://official.contest.yandex.ru/contest/2007/enter/ контест].
  
== Семинар 4 ==
+
=== Семинар 4 ===
  
 
Обсуждали асимптотики и O-символику. Начали решать [https://www.dropbox.com/s/dt0p5oqfr8sgjpu/Asymptotic.pdf?dl=0 листок].
 
Обсуждали асимптотики и O-символику. Начали решать [https://www.dropbox.com/s/dt0p5oqfr8sgjpu/Asymptotic.pdf?dl=0 листок].
  
== Cеминары 5-6 ==
+
=== Cеминары 5-6 ===
  
 
Дорешивали старые задачи.
 
Дорешивали старые задачи.
  
== Семинары 7-8 ==
+
=== Семинары 7-8 ===
  
 
Разбирали алгоритмы с лекций: выбор порядковой статистики и поиск пары ближайших точек.
 
Разбирали алгоритмы с лекций: выбор порядковой статистики и поиск пары ближайших точек.
Строка 34: Строка 43:
 
Писали [https://www.dropbox.com/s/dli9d8wbbj4e6wk/Asymptotic.pdf?dl=0 контрольную.] Если вы плохо написали контрольную или пропустили ее, несданные задачи можно сдавать как обычный листок, но с частичным понижением оценки.
 
Писали [https://www.dropbox.com/s/dli9d8wbbj4e6wk/Asymptotic.pdf?dl=0 контрольную.] Если вы плохо написали контрольную или пропустили ее, несданные задачи можно сдавать как обычный листок, но с частичным понижением оценки.
  
== Семинары 9-10 ==
+
=== Семинары 9-10 ===
  
 
Дорешивали старые задачи.
 
Дорешивали старые задачи.
  
== Семинары 11-12 ==
+
=== Семинары 11-12 ===
  
 
Разбирали контест на дин. программирование, решали [https://official.contest.yandex.ru/contest/2185/enter/ контест].
 
Разбирали контест на дин. программирование, решали [https://official.contest.yandex.ru/contest/2185/enter/ контест].
  
== Семинары 13-14 ==
+
=== Семинары 13-14 ===
  
 
Обсуждали редакционное расстояние. Его нужно запрограммировать [https://official.contest.yandex.ru/contest/2206/enter/ здесь].
 
Обсуждали редакционное расстояние. Его нужно запрограммировать [https://official.contest.yandex.ru/contest/2206/enter/ здесь].
Строка 48: Строка 57:
 
Обсуждали обход в ширину и в глубину на графах. Решали [https://official.contest.yandex.ru/contest/2218/enter/ контест на обход в глубину] и [https://official.contest.yandex.ru/contest/2243/enter/ контест на обход в ширину].
 
Обсуждали обход в ширину и в глубину на графах. Решали [https://official.contest.yandex.ru/contest/2218/enter/ контест на обход в глубину] и [https://official.contest.yandex.ru/contest/2243/enter/ контест на обход в ширину].
  
== Семинары 15-16 ==
+
=== Семинары 15-16 ===
  
 
Обсуждали топологическую сортировку и вычисление компонент связности.
 
Обсуждали топологическую сортировку и вычисление компонент связности.
  
== Семинары 17-18 ==
+
=== Семинары 17-20 ===
  
 
Обсуждали поиск путей и кратчайших путей в графе. Обсуждали алгоритмы Флойда-Уоршелла и Беллмана-Форда.
 
Обсуждали поиск путей и кратчайших путей в графе. Обсуждали алгоритмы Флойда-Уоршелла и Беллмана-Форда.
Строка 58: Строка 67:
  
 
Также доступно несколько контестов по старым темам для тренировки: [https://official.contest.yandex.ru/contest/2210/enter/ контест подсчет количества путей] и [https://official.contest.yandex.ru/contest/2155/enter/ контест на стратегию "разделяй и властвуй"].
 
Также доступно несколько контестов по старым темам для тренировки: [https://official.contest.yandex.ru/contest/2210/enter/ контест подсчет количества путей] и [https://official.contest.yandex.ru/contest/2155/enter/ контест на стратегию "разделяй и властвуй"].
 +
 +
=== Семинары 21-22 ===
 +
 +
Обсуждали хеширование.
 +
 +
Писали [https://www.dropbox.com/s/f32y5wra3jjpsjr/Mid-term.pdf?dl=0 контрольную работу]. Задачи, которые вы не решили на контрольной можно будет сдать на следующем семинаре (на нем же будет разбор).
 +
 +
=== Семинары 23-24 ===
 +
 +
Разбирали контрольную работу. Обсуждали красно-черные деревья.
 +
 +
=== Семинары 25-26 ===
 +
 +
Обсуждали деревья отрезков, динамические порядковые статистики, жадные алгоритмы, алгоритм Дейкстры.
 +
 +
Если вы не писали к/р 2 или написали ее на 5 баллов или ниже, можете ее пересдать на консультациях
 +
с ассистентом. [https://www.dropbox.com/s/mod3k3twslrbdvp/Mid-term-2nd-attempt.pdf?dl=0 Условия]. За каждую задачу
 +
ставится 1.5 балла.
 +
 +
=== Семинары 27-28 ===
 +
 +
Обсуждали двоичную кучу, повторяли разные вопросы для дз по хешированию.
 +
 +
=== Семинары 29-32 ===
 +
 +
Обсуждали минимальные остовные деревья, алогритмы Крускала и Прима, структуру данных "Система непересекающихся множеств".
 +
 +
Написали класс связный список, чтобы поразбираться с реализацией классов на C++: [https://www.dropbox.com/s/o15sdpgndk282h0/linked_list.cpp?dl=0 код].
 +
(Сейчас класс немного недоделанный, если кто-нибудь его доделает пришлет, я выложу новую версию).
 +
 +
=== Семинары 33-36 ===
 +
 +
Обсуждали автоматы, регулярные и нерегулярные языки.
 +
 +
[https://www.dropbox.com/s/nrflfpfcwojkp3o/Automatons.pdf?dl=0 Листок] по всему этому.
 +
 +
=== Семинары 37-38 ===
 +
 +
Обсуждали контекстно-свободные грамматики, и еще немного регулярные языки.
 +
 +
Почитать всю теорию можно, например, [https://www.dropbox.com/s/a1lxwgfdn0s31z7/%D0%9F%D0%B5%D0%BD%D1%82%D1%83%D1%81.%20%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8.pdf?dl=0 тут] (некоторые обозначения могут отличаться от обозначений на лекциях).
 +
 +
=== Семинары 39-40 ===
 +
 +
Обсуждали задачу у максимальном потоке. Потренироваться в реализации можно [https://official.contest.yandex.ru/contest/2531/enter/ тут].

Текущая версия на 10:56, 9 июня 2016

Общая информация

Все домашки сдаются на ревью в AnyTask (anytask.org), для получения доступа нужно ввести инвайт в соответствии с группой:

Инвайт на AnyTask для 154-2: b002kz4 (действителен до 25 мая)

Инвайт на AnyTask для 156-2: MXyU2zi (действителен до 25 мая)

Все оценки и варианты заданий можно найти тут.

Семинары

Семинар 1

Тренировались в рекурсии на примере Ханойских башен. Задачи, нужно решить все, кроме 4.

Семинар 2

Разбирали, как тестировать программы на примере сортировки пузырьком: код.

Задачи:

  • Доказать корректность работы сортировки пузырьком.
  • Написать двоичный поиск с тестами как в примере выше. При этом функция должна быть реализована максимально абстрактно на шаблонах. После написания тестов и полной отладки задачу нужно сдать сюда. А потом еще и сдать задачу устно.

Семинар 3

Обсуждали разные сортировки (вставками, слиянием, быструю). Их нужно сдать в контест.

Семинар 4

Обсуждали асимптотики и O-символику. Начали решать листок.

Cеминары 5-6

Дорешивали старые задачи.

Семинары 7-8

Разбирали алгоритмы с лекций: выбор порядковой статистики и поиск пары ближайших точек.

Начали решать листок по рекуррентам.

Писали контрольную. Если вы плохо написали контрольную или пропустили ее, несданные задачи можно сдавать как обычный листок, но с частичным понижением оценки.

Семинары 9-10

Дорешивали старые задачи.

Семинары 11-12

Разбирали контест на дин. программирование, решали контест.

Семинары 13-14

Обсуждали редакционное расстояние. Его нужно запрограммировать здесь.

Обсуждали обход в ширину и в глубину на графах. Решали контест на обход в глубину и контест на обход в ширину.

Семинары 15-16

Обсуждали топологическую сортировку и вычисление компонент связности.

Семинары 17-20

Обсуждали поиск путей и кратчайших путей в графе. Обсуждали алгоритмы Флойда-Уоршелла и Беллмана-Форда. Начали решать контест на кратчайшие пути.

Также доступно несколько контестов по старым темам для тренировки: контест подсчет количества путей и контест на стратегию "разделяй и властвуй".

Семинары 21-22

Обсуждали хеширование.

Писали контрольную работу. Задачи, которые вы не решили на контрольной можно будет сдать на следующем семинаре (на нем же будет разбор).

Семинары 23-24

Разбирали контрольную работу. Обсуждали красно-черные деревья.

Семинары 25-26

Обсуждали деревья отрезков, динамические порядковые статистики, жадные алгоритмы, алгоритм Дейкстры.

Если вы не писали к/р 2 или написали ее на 5 баллов или ниже, можете ее пересдать на консультациях с ассистентом. Условия. За каждую задачу ставится 1.5 балла.

Семинары 27-28

Обсуждали двоичную кучу, повторяли разные вопросы для дз по хешированию.

Семинары 29-32

Обсуждали минимальные остовные деревья, алогритмы Крускала и Прима, структуру данных "Система непересекающихся множеств".

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

Семинары 33-36

Обсуждали автоматы, регулярные и нерегулярные языки.

Листок по всему этому.

Семинары 37-38

Обсуждали контекстно-свободные грамматики, и еще немного регулярные языки.

Почитать всю теорию можно, например, тут (некоторые обозначения могут отличаться от обозначений на лекциях).

Семинары 39-40

Обсуждали задачу у максимальном потоке. Потренироваться в реализации можно тут.