Blog:Advanced Algorithms

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

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

2023-10-17 Feedback

  • Есть завершившие квест, но есть и даже не начавшие. →
    2023-10-17 Feedback 2023-10-19 23-28-58 image0.png
    • Скоро начнутся новые квесты, на Lab17, последний раз обновил пригласительный токен. Не тяните с регистрацией (ну если вам не «уд» надо).
2023-10-17 Feedback 2023-10-17 20-26-19 image0.png
  • Не боимся, очень многие решаются в пару строк → 1, 2 … не тяните.

2023-09-22 Feedback

  • Только двое прошли тест по регистрации до конца («все всё заполнили и оказались на Lab17»). Нагоняйте! Еще раз выписал пригласительный токен, не ждите, когда протухнет и он.
  • Кто не очень уверенно работает с Jupyter ноутбуками → пролистайте по порядку номеров краткий крешкурс по Jupyter-ноутбукам, и нашей системе коллаборативных юпитер-ноутбуков (можно смело редактировать, править, что-то исправлять). Рекомендуется на самом деле всем.

Сейчас идет первый квест → Blog:Advanced_Algorithms/Жадные_алгоритмы,_Python,_Leetcode,_система_визуализации_алгоритмов_—_начинаем_«в_алгоритмы» (там только ссылка на проект другая будет, у вас → идем сюда.


  • Некоторые уже начали решать, видите — решения элементарны → 1, 2, 3… но не затягивайте, легкие задачи обычно выбивают первыми.
    • Группа «ИСПРАН» кто уже решал такие задачи на третьем курсе — зачтутся и прошлые, просто пинганите, когда у вас наберется.
  • Deadlinы где-то до конца октября, но чем раньше, тем лучше — можно перейти к следующим задачам.

Если вы не уверенно программируете простые задачи на Python, ничего страшного!



  • Насчет тестов и остальных блоков — это дальше.

Развертывание «Моделирования труднорешаемых задач» локально под линуксом

Моделирование труднорешаемых задач работает на нашей лабе и не требует ничего кроме броузера. Но если есть желание работать локально (плохой интернет), или привычка к vscode, то можно и все развернуть локально.

Под Linux все должно быть просто:

git clone https://gitlab.ispras.ru/discopal/hard-problems-formulations.git
cd hard-problems-formulations


Если у вас федора-центось или что-то производное с пакетным менеджером DNF — вызовите

./install-packages-fedora-rhel.sh

Если другой линукс — поставьте перечисленные там пакеты или их аналоги удобным вам образом.

Потом должны встать без ошибок в локальный каталог-виртуаленв питоновские пакеты (ваш набор библиотек в системном питоне совсем не пострадает):

./install-env.sh 
code .
  • Полезный опыт овладения VSCode — универсальный швейцарский нож ITшника.
  • Возможность отладки, построчно и REPL.

Новую версию ноутбука желательно заливать через лабу, копированием или аплоадом...


2023-05-20 Разбор ошибок в вероятностном тестировании сведения 3SAT к Minimum Exact Cover

Разбор ошибок в вероятностном тестировании сведения 3SAT к Minimum Exact Cover.

2023-05-20 Разбор ошибок в вероятностном тестировании сведения 3SAT к Minimum Exact Cover 2023-05-20 11-22-57 image0.png

TLDR: На самом деле, надо не забывать конвертировать решение ЦЛП для решенной задачи к True/False решениям о выполнимости 3SAT формулы.

2023-05-17 Feedback

  • Времени осталось мало!

2023-05-17 Feedback 2023-05-19 15-28-29 image0.png 2023-05-17 Feedback 2023-05-19 15-29-48 image0.png


2023-04-22 Feedback

2023-03-22 Feedback 2023-04-25 01-18-11 image0.png


2023-03-22 Feedback 2023-04-25 12-08-01 image0.png
  • Голосовалка → Vote-week-2023-04-07
    • Очень неактивно
    • 2.5 человека на вторник-вечер и четверг-утро.
    • Ну попробуем сегодня и вторник вечер.
2023-04-22 Feedback 2023-04-25 13-42-20 image0.png
  • Но PULL/vs PUSH
2023-04-22 Feedback 2023-04-25 12-25-38 image0.png



2023-03-22 Feedback 2023-04-25 12-10-10 image0.png

  • В этом году достаточно «одной полной задачи» — Pyomo+NPC+Вероятностные тесты
2023-03-22 Feedback 2023-04-25 12-14-44 image0.png
  • +1 балл → т.е. минимум «хор», кто никак не проявлялся, либо «отл» если достаточно очков за тесты и классную активность.
  • чем быстрее начнете → тем быстрее освободитесь для сессии (и возможно более удобные задачи).


2023-03-04 Feedback


  • «Фактор A»

WTF, не надо так

Не делайте так. Посмотрите как оформлять.

https://vimeo.com/91590613 https://vimeo.com/803931121

Через некоторое время просто удалю здесь все. Вернее верну исходную версию, ибо вы просто стерли решением постановку.

Кто-то неверно делает ссылку на задачу →


  • Кто-то вырвался вперед… 
    • Участник:DmitryTeterin/rungs — ну просто же (первые расхватают все легкое!).
    • Но очень хотелось бы увидеть хотя бы 2/3 успешно начавших
  • «Официальные видеоразборы» подшиваю к решенным задачам.
    • Ну можно смотреть из альбома (начинайте с самых коротких? увы, не получилось отсортировать).
  • «Как зайти на Spoj»
  • Кончилась «легкая сортировка с литкода» — насыпал много новых и легких.

2023-03-01 Feedback

2023-03-01 Feedback 2023-03-01 21-50-17 image0.png
2023-03-01 Feedback 2023-03-01 21-53-52 image0.png
  • Ответы на ваши вопросы.
    • Как оформлять задачи и особенно, как заводить личные подстраницы → https://vimeo.com/803931121

Жадные алгоритмы, Python, Leetcode, система визуализации алгоритмов — начинаем «в алгоритмы»

Всяко лучше чем Rust/C++
      • Если уж совсем дремучие люди → им может помочь Udaff.
  • Если нет, ничего страшного → идем на http://pythontutor.ru/, https://exercism.org/tracks/python
  • После основ, попробуем жадные алгоритмы на Python и Leetcode.
Жадные алгоритмы, Python, Leetcode, система визуализации алгоритмов — начинаем «в алгоритмы» 2023-02-20 01-24-46 image0.png

и поиграйте с ними и их визуализацией живьем, для полного понимания.

  • Lab17 — как регистрироваться и присоединится к вашему проекту.
  • Запускаем VS Code Server в вашем проекте папке «algo-visual».
    • Теоретически, может сработать ссылка, но может нет[1], тогда смотрите видео как.
    • Открываем Python-файл и PNG-картинку визуализации в соседних вкладках VS Code, смотрим видео с объяснениями, играем, понимаем.
    • Не обязательно все смотреть, можно только непонятное, ролики минимальны 5-10 минут.

Немного теории по жадным алгоритмам, наши темы:

И начинаем процесс, см. ↓↓↓↓


2021-10-15 Practical Block 2021-11-03 14-27-56 image0.png

Концептуально:

2021-10-15 Practical Block 2021-11-03 15-02-30 image0.png

2021-10-15 Practical Block 2021-11-03 14-24-09 image0.png

(Их там 146)

    • Не нужно брать десятки задач на себя сразу, и освобождайте то, что не получается.
  • Решенное
    • Ну смотрите, как оформлено в прошлые годы
    • Решение на подстранице вашей личной страницы
      • Вики-ссылка на задачу
      • Python-код в «<source lang="python"></source>»
      • Метка «{{checkme}}», когда решите.
2021-10-15 Practical Block 2021-11-03 14-22-47 image0.png

(Их там 21)


  • Как легче решать Python
    • Загрузка данных
    • Выбирайте более свежий CPython или PyPy.

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

  1. На lab17 новая версия, незапатченная, работаю над.

2023-02-09 Вводное знакомство

Знаете ли вы Python?

  1. Да
  2. Нет

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

Проверим?

Знаете ли вы Jupyter-ноутбуки?

  1. Да
  2. Нет

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

Знаете ли вы теорию сложности с вероятностными классами (RP-BPP…)?

  1. Да
  2. Нет

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

Проверим?

Решали ли вы задачи на Leetcode/Codechef/Spoj… ?

  1. Да
  2. Нет

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

  • Если нет, ничего страшного разберемся в этом курсе.

Хорошие практики компактных Pyomo-формулировок на примере решения «Производство подразделяемых задач»

2022-12-19 Разбор задачи «Хранилище артефактов»

2022-12-09 Feedback

Course-2022-balls.drawio.svg

2022-12-09 Feedback 2022-12-09 16-58-43 image0.png


2022-12-06 «Воспроизведение статей» — на отл.

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

Концептуально:

  • Это на «отл»
  • Win-Win!
  • Подготовка к защите дипломов-курсовых-кандидатских — моделирование диплома-научной работы и ее защиты.
  • Анализ научной статьи про алгоритмы, с переложением ключевой части в Jupyter-ноутбук.
    • Полностью «переписывать статью не надо» — не надо переводить-копировать все содержание.
      • Доказательства не нужны.
    • Разобраться в введении
    • Моделировать постановку задачи (обычно это ЦЛП)
      • Возможно придумать тестовые данные, если их там нет или не прилагались к статье.
    • Воспроизвести максимально декомпозировав, основной алгоритм — попробовать смоделировать и воспроизвести алгоритм для решения.
    • Некоторые примеры работ в папке articles2jupyter-examples
    • глобальная проблема воспроизводимости + https://paperswithcode.com/ → мы помогаем решать.
    • Если что не получается — пингуйте.
    • Запишите к ним видеоролик, как в Blog:Advanced Algorithms/2022-12-01 Кто решил бизнес-задачи, запишите по ним видеоролики
    • Научитесь пользоваться OBS — (см. также [1]), попробуйте использовать экранное рисование ([2]) и сделать это живым и доступным.
    • Запишите видео-презентацию и забросьте мне (unlisted youtube, файлохранилища…)


  • Если предлагаемые статьи не понравились, а есть что-то про алгоритмы по теме вашей работы-диплома → можете работать над этим.
    • Может прямо это и будет драфтом дипломной работы
    • Презентацию можно сделать прямо из Jupyter-ноутбука, см RISE.
  • Идем на Lab
  • Оформляем свои ноутбуки в папке «advalg-2022-homeworks»
  • Учимся на готовых решениях коллег в соседних папках и решениях прошлых лет → articles2jupyter-examples

Разбор оптимизационной задачи «Группировка людей»

Несколько сумбурный разбор этой задачи сходу (но может это и хорошо, ошибка и поиск ошибок — полезно показать).

Студенту — не забыть доделать визуализацию результатата покрасивей (граф, кластеры, связи там). Например, как-то так → [1], [2]


Хорошие практики компактных Pyomo-формулировок на примере решения «Задачи о станках»

  • Старайтесь делать компактные и читаемые Pyomo-формулировки
    • тогда даже не понадобится куча плохочитаемых латех-пояснений.
  • Посмотрите — как индексировать переменные и ограничения, как использовать слайсы в суммах, поменьше лишнего кода (особенно всяких скобок).
  • Задача Optprob/Покупка станков

Задача о двух кучах камней и примеры использования различных ЦЛП-солверов

«Задача о двух кучах камней и примеры использования различных ЦЛП-солверов»

  • компактная задача и постановка, однако на которой зафейлился CBC — наш солвер «по умолчанию», и возник повод попробовать другие ЦЛП-солверы, и повод пошевелить постановку.

2022-12-02 Feeback

2022-12-01 Кто решил бизнес-задачи, запишите по ним видеоролики

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


Ох, понял, что никто не пошел смотреть ссылки, поэтому полезное тут повторю рядом

  • Не экономьте битрейт при записи OBS — ставьте при записи 3 Mbit, потом видеохостинги сами ужмут. Или перепакуете. Главное, не потратить время, получив замыленный и нечитаемый текст юпитер-ноутбуков, очень обидно. Почти как не записать звук.
  • Сначала запишите минутку видео со звуком и послушайте — например, выяснится, что звука вообще нет, или он ужасный (что-то с уровнем например — можно поиграть настройками OBS), а то и вовсе надо сменить микрофон. Для общажных условий, любой микрофон прищепка (стоит копейки, пригодится вам обязательно — сейчас все айти удаленное, непрерывные созвоны — и возможно вас еле терпят и ненавидят за бубнящий микрофон, но почему-то не говорят) может оказаться лучше обычного встроенного в ноутбук микрофона, который может поймать электрошумы из собственной схемы, эхо плохомеблированной комнаты общежития, и т.п.
2022-12-01 Кто решил бизнес-задачи, запишите по ним видеоролики 2022-12-23 03-08-31 image0.png
  • Сделайте полноэкранный режим броузера — больше места для полезной информации.
  • Лучше в discopal-lab понажимать на кнопочку с плюсиком → это лучше, чем просто увеличивать шрифты во всем броузере, хотя и можно и так.
    • Особенно это важно, когда у вас слабое разрешение — 720 например.
  • Полезно сделать курсор большим — в виндах, KDE и GNOME это настраивается по разному, но настраивается.

Потом можно либо мне файл прислать, либо сами на любой видеохостинг (ну хоть на ютуб в unlisted mode) можете загрузить — подошью ваше обьяснение, и это будет работать как обучающий материал для ваших коллег! Ну или поместите «На проверку» решение, написав, что дописали ролик. Просто если вы это сделаете «тихо», где-то добавив ссылку в ноутбук, я это просто не замечу....


2022-11-27 Разбор задачи «Капитальные инвестиции» и решения студента

Задача Optprob/Капитальные инвестиции

Ключевой вывод:

  • Пусть будет больше говорящих переменных (про каждый факт)
  • Их связывают простые ограничения
  • И целевая функция простая
  • Это будет легче верифицировать и модифицировать.
  • Решатели сами выкинут лишние переменные и превратят модель в плоскую.