Blog:Advanced Algorithms

Материал из DISCOPAL
Перейти к: навигация, поиск

Новости курса «Эффективные алгоритмы» для 6 курса ФУПМ МФТИ.

Не портите страницы задач, оформляйте правильно

Обзор квестов курса

Эксперимент — улучшаем старые решения

Несколько беспокоит, что многие из вас так и не приступали к практическим задачам. Возможно это почему-то сложно, или непонятно, а близок уже второй дедлайн (и главное, из-за него блокируется доступ к остальным квестам).

Экспериментально до второго дедлайна (2024-04-08) попробуем такую схему:

  • Можно взять любую из решенных задач, у которой не было решений в этом году — посмотреть-попробовать имеющееся Python-решение — и если получится его ускорить в 2 раза, то это решение тоже засчитаем. Как обычно, надеюсь, это будет честная работа.
Эксперимент — улучшаем старые решения 2024-03-28 16-04-56 image0.png
  • Ну разумеется, при оформлении все также — «резервируем» страницу-задачу и т.п., включая проверку стиля, и все остальные правила сохраняются.
  • И конечно, не стоит держать решения у себя до самого последнего момента дедлайна — мне очень не хотелось бы получить разом сотню решений на проверку под самый конец, отгружайте по готовности — что не успею проверить, то …


Python-решения — давайте потренируемся их сделать питонистей

При решении квеста «Практикуемся В Алгоритмах» жалко, что часто вижу технически питон код, но совсем не в питон стиле — переписанный нейросетями с других языков, плохо отформатированный, грязный... а ведь именно четкость и читаемость, это то, что я хочу чтобы получилось, до того, как перейдем к чему-то типа «Моделирование труднорешаемых задач», ибо там уже это править будет тяжело.

Чтобы прочувствовать дзен-питона, давайте хотя бы сначала придерживаться PEP-8, ну, или формально, проверяйте онлайн-чекером — чтобы это не прошло впустую, я тоже буду им проверять, и «заворачивать» решение, пока не пройдет. Это совсем несложное ограничение, грызу локти, что не делал такого раньше. Заодно это будет мотивировать добавить комментариев и сделать код более читаемым.

Ну 100% прохождение чистым сделать не получится — в LeetCode например, уже, как правило навязывают «непитоновое» название функции класса в каком-нибудь CamelCase, но в остальном, это будет неплохая тренировка питон-стиля — нормальные названия переменных, избавится от привычки ставить лишнюю пунктуацию, правильная расстановка пробелов и т.п.


2024-02-26 Feedback

Обращаю внимание — решать задачи по алгоритмической практике именно на Python. Первый квест по регистрации должен был научить вас внимательности.

2024-02-26 Feedback 2024-02-26 13-59-13 image0.png

Цель — именно взбодрить Python-знания, ибо на этом основаны и другие квесты, и в курсе труднорешаемых задач экономия байтов и свойства других языков ни к чему — стремитесь именно к простоте кода. [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13]

    • Да, даже если вы решаете «бонусные задачи» на Spoj/Codechef ([14]) — тоже нужен питон, именно в этом цель. Да, иногда это сложно, иногда возможно не получится, поэтому за них (решенных именно на Python) большие бонусные баллы — «2 балла из 10 баллов оценки» (как за весь квест с остальными задачами, плюс можно хоть ими до «отл» набрать — но не факт, что у вас получится — хотя польза будет «не взлетим, так поплаваем»). Напомню, некоторые полезные ссылки по теме (но давайте теперь лучше без машинного кода, плиз, понятно, что так можно засунуть любое сишное решение, это забавно, и уже понятно как делать, но такое…):
  • К вопросу об оформлении (для тех, кто так и не стал смотреть как оформлять правильно) — надо делать вики-ссылки на исходную страницу-задачу: [15], [16], [17], [18], [19]. Это важно! Вики-ссылки двухсторонние поддерживающие сохранение целостности при переименовании ресурсов (именно таким задумывался Интернет, в рамках проекта Xanadu, но не осилили и упростили).
  • Не откладывайте, ибо все задачи с простыми решениями на пару строк (A, B) разберут! Или выбьют все задачи из какой-нибудь категории!
  • C другой стороны, те кто набрал нужное количество — остановитесь, оставьте задачи остальным (задачи это ценный ресурс, и цель не замучить вас, а чисто подтянуть-проверить-выровнять)! Кто закрыл квест, у тех будет подкрашено как-то так:
2024-02-26 Feedback 2024-02-26 14-33-39 image0.png

Пока мне именно важно, чтобы все втянулись, а не так, что «отличники» где-то в отрыве уже занимаются и труднорешаемыми задачами и пишут статью в Q1, а все остальные даже не приступили к квесту.


Регистрируемся, начинаем работать, выбираем удобное время созвонов

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

Регистрируемся, начинаем работать, выбираем удобное время созвонов 2024-02-14 16-21-38 image0.png

(явно меньше чем в телеграм-канале, явно не до конца осилен квест у «красных»). Я не хочу составлять списки по общему набору (у большинства же курс по выбору) — так что давайте, таки завершим квест.

Вот мотивация — зарегистрированные могут голосовать и что-то выбирать.

Обсудим удобное время созвона. Аудиторию уже отобрали (кому-то она была нужна, а нам она особо не нужна, и даже неудобна в нашем формате), так что давайте подумаем, когда вам удобно, я попробую подстроится.

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

Итак:

  • У вас по пять «голосов», можно их потратить на один или несколько слотов, можете их отзывать, и перенаправлять на другое время.

По идее, со временем должна выйти сходимость к какой-то удобной всем точке. Ну или по крайней мере, я смогу выбрать из какого-то не совсем уж неудобного всем «локального максимума».

Какое время удобно для онлайн-созвона на неделе?

Понедельник 10:000
0%
Понедельник 11:000
0%
Понедельник 12:000
0%
Понедельник 13:000
0%
Понедельник 14:000
0%
Понедельник 15:000
0%
Понедельник 16:000
0%
Понедельник 17:005
16%
Понедельник 18:001
3%
Понедельник 19:001
3%
Понедельник 20:000
0%
Вторник 10:000
0%
Вторник 11:000
0%
Вторник 12:000
0%
Вторник 13:000
0%
Вторник 14:000
0%
Вторник 15:000
0%
Вторник 16:000
0%
Вторник 17:003
10%
Вторник 18:001
3%
Вторник 19:000
0%
Вторник 20:000
0%
Среда 10:000
0%
Среда 11:000
0%
Среда 12:000
0%
Среда 16:000
0%
Среда 18:002
6%
Среда 19:000
0%
Среда 20:000
0%
Четверг 10:000
0%
Четверг 11:000
0%
Четверг 12:002
6%
Четверг 13:002
6%
Четверг 14:000
0%
Четверг 15:000
0%
Четверг 16:000
0%
Четверг 17:000
0%
Четверг 18:008
26%
Четверг 19:001
3%
Четверг 20:000
0%
Пятница 10:000
0%
Пятница 11:000
0%
Пятница 12:000
0%
Пятница 13:000
0%
Пятница 14:000
0%
Пятница 15:000
0%
Пятница 16:002
6%
Пятница 17:000
0%
Пятница 18:000
0%
Пятница 19:001
3%
Пятница 20:002
6%

Вы должны войти в систему, чтобы участвовать в этом голосовании.

Ну и наоборот, антиголосование (чтобы не выбрать и максимально неудобное для многих время) — тут можно хоть все сделать «неудобным», если у вас хватит на это терпения.

В какое время вы точно не можете?

Понедельник 10:002
2%
Понедельник 11:003
3%
Понедельник 12:001
1%
Понедельник 13:002
2%
Понедельник 14:002
2%
Понедельник 15:003
3%
Понедельник 16:003
3%
Понедельник 17:002
2%
Понедельник 18:001
1%
Понедельник 19:000
0%
Понедельник 20:000
0%
Вторник 10:003
3%
Вторник 11:003
3%
Вторник 12:003
3%
Вторник 13:001
1%
Вторник 14:001
1%
Вторник 15:002
2%
Вторник 16:002
2%
Вторник 17:002
2%
Вторник 18:001
1%
Вторник 19:002
2%
Вторник 20:000
0%
Среда 10:004
3%
Среда 11:004
3%
Среда 12:004
3%
Среда 16:002
2%
Среда 17:002
2%
Среда 18:002
2%
Среда 19:001
1%
Среда 20:000
0%
Четверг 10:004
3%
Четверг 11:004
3%
Четверг 12:003
3%
Четверг 13:003
3%
Четверг 14:003
3%
Четверг 15:004
3%
Четверг 16:003
3%
Четверг 17:003
3%
Четверг 18:004
3%
Четверг 19:002
2%
Четверг 20:001
1%
Пятница 10:003
3%
Пятница 11:003
3%
Пятница 12:003
3%
Пятница 13:003
3%
Пятница 14:003
3%
Пятница 15:003
3%
Пятница 16:003
3%
Пятница 17:003
3%
Пятница 18:002
2%
Пятница 19:001
1%
Пятница 20:001
1%

Вы должны войти в систему, чтобы участвовать в этом голосовании.


Пользуясь случаем, напомню очевидное


Если что-то не работает, не получается — не стесняйте, пишите лично в телеграм — возможно прямо лично созвонимся и разберемся, что не так.

Разбор задачи «Независимое множество ребер»

TLDR
  • Не забывайте хотя бы перед сдачей прогонять ноутбук сверху донизу (можно запутаться в порядке выполнения ячеек и инициализации переменных)
  • Повторяемые вещи да, стоит засунуть в функцию (включая генерацию модели), но тогда не забывайте чтобы функция работала от параметров, а не от непонятно где заданных глобальных переменных
  • Используйте мои хелперы, чтобы парсить данные, входные данные держите прямо в ноутбуке, в плоских строках — нам тут не нужна возня с CSV-файлами
  • Преобразования данных как раз удобно показывать в ячейках ноутбука — новая структура — и сразу что в ней. Пандасовые датафреймы красивы, не надо их печатать превращая в строки.
  • При визуализации графа, запоминайте сгенеренную планаризацию прямо в нем же.
  • Индексы модели полезны, стоит итерировать по ним, если надо что-то делать с переменными.
« новейшие ‹ 20 более новых старейшие »