<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_2019</id>
	<title>Дискретная оптимизация 2019 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_2019"/>
	<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_2019&amp;action=history"/>
	<updated>2026-06-06T11:20:37Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.wikicshse.ru/index.php?title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_2019&amp;diff=2158&amp;oldid=prev</id>
		<title>imported&gt;Ignat: TSP criterias</title>
		<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_2019&amp;diff=2158&amp;oldid=prev"/>
		<updated>2019-06-18T16:56:53Z</updated>

		<summary type="html">&lt;p&gt;TSP criterias&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== О курсе ==&lt;br /&gt;
&lt;br /&gt;
Курс читается для студентов 3-го курса [https://cs.hse.ru/ami ПМИ ФКН ВШЭ] в 4 модуле. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Лектор:&amp;#039;&amp;#039;&amp;#039; [http://wiki.cs.hse.ru/%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Ignat  Игнат Колесниченко]&lt;br /&gt;
&lt;br /&gt;
Лекции проходят по вторникам, 13:40 - 15:00, ауд. 622, семинары проходят сразу после лекции во вторник.&lt;br /&gt;
&lt;br /&gt;
=== Полезные ссылки ===&lt;br /&gt;
&lt;br /&gt;
Канал в телеграм для объявлений: https://t.me/joinchat/AAAAAFSFHLfHTjeBd2Ueqg&lt;br /&gt;
&lt;br /&gt;
Таблица с оценками: TODO&lt;br /&gt;
&lt;br /&gt;
== Семинары ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Преподаватель !! Связь !! Страница&lt;br /&gt;
|-&lt;br /&gt;
| - || Колесниченко Игнат || ignat1990@gmail.com || http://wiki.cs.hse.ru/%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Ignat &lt;br /&gt;
|-&lt;br /&gt;
| МОП 161 || Савченко Руслан || telegram: @savrus || ? &lt;br /&gt;
|-&lt;br /&gt;
| МОП 162 + РС 166-2  ||  Лахтанов Иван || telegram: @ivan_lakhtanov  || ? &lt;br /&gt;
|-&lt;br /&gt;
| АДИС 163 + АПР 167 + РС 166-1 || Смирнов Иван || telegram: @ifsmirnov || ? &lt;br /&gt;
|-&lt;br /&gt;
| АДИС 164 || Саакян Вильям || telegram: @wilwell  || ?&lt;br /&gt;
|- &lt;br /&gt;
| РС 165 || Ахмедов Максим || telegram: @max_akhmedov || ? &lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Консультации ===&lt;br /&gt;
&lt;br /&gt;
Консультации с преподавателями и учебными ассистентами (если иное не оговорено на странице семинаров конкретной группы) по курсу проводятся по предварительной договорённости ввиду невостребованности регулярных консультаций.&lt;br /&gt;
&lt;br /&gt;
=== Правила выставления оценок ===&lt;br /&gt;
&lt;br /&gt;
В курсе предусмотрено следующий набор контрольных мероприятий:&lt;br /&gt;
&lt;br /&gt;
1) Контрольная работа с теоретическими задачами и теоретически мини-ДЗ. Точные критерии оценивания будут определены в ходе курса. Вклад данной части в общую оценку – 2 из 10.&lt;br /&gt;
&lt;br /&gt;
Оценка за эту часть выставляется как минимум из 10 и {суммы оценок за три мини-ДЗ + оценка за контрольную работу}&lt;br /&gt;
&lt;br /&gt;
2) Контест с решением практических задач, проводимые во время лекции и семинара (то есть на 3 часа). Вклад данной части в общую оценку – 2 из 10.&lt;br /&gt;
&lt;br /&gt;
Оценка за эту часть выставляется как количество баллов набранных за решение задача контеста. Решенная задача во время самого контеста стоит 2.5 балла, после контеста 1.25 балла.&lt;br /&gt;
&lt;br /&gt;
3) Практические домашние задания (в виде Я.Контестов с длительностью несколько недель). Вклад данной части в общую оценку – 3 из 10.&lt;br /&gt;
&lt;br /&gt;
Оценка за эту часть выставляется как {минимум из 15 и {сумма баллов за два практических домашних задания}} / 1.5. Число 15 может быть еще скорректировано в нижнюю сторону.&lt;br /&gt;
&lt;br /&gt;
4) Устный теоретический экзамен. Вклад данной части в общую оценку – 3 из 10.&lt;br /&gt;
&lt;br /&gt;
За экзамен выставляется оценка от 0 до 10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
За каждую из частей будет выставлена оценка от 0 до 10 (с шагом в 0.5 балла). Итоговая оценка вычисляется по формуле:&lt;br /&gt;
&lt;br /&gt;
O&amp;lt;sub&amp;gt;итоговая&amp;lt;/sub&amp;gt; = round(0.2 * O&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + 0.2 * О&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; + 0.3 * О&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; + 0.3 * O&amp;lt;sub&amp;gt;экз&amp;lt;/sub&amp;gt;), где round – это функция арифметического округления.&lt;br /&gt;
&lt;br /&gt;
Так как формальные правила требует округлений отдельных оценок и округления оценки за работу в семестре – фактические оценки в ведомости будут выставлены таким образом, чтобы соответствовать той оценке, которые получается по указанной выше формуле. &lt;br /&gt;
&lt;br /&gt;
=== Правила сдачи заданий ===&lt;br /&gt;
&lt;br /&gt;
Дедлайны по всем домашним заданиям являются жёсткими, то есть после срока работы не принимаются.&lt;br /&gt;
&lt;br /&gt;
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.&lt;br /&gt;
&lt;br /&gt;
При наличии уважительной причины дедлайн по домашнему заданию может быть перенесён. Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
===Лекция 1===&lt;br /&gt;
Примеры комбинаторных задача:  Maximum Matching, Set Cover, TSP. Представление задачи Maximum Matching в виде ILP, релаксация ILP до LP. Напоминание про LP – понятие полиэдров и политопов, формы задания, понятие вершины. Теорема о том, что оптимум достигается в вершине. Базисные допустимые решения и их связь с вершинами.&lt;br /&gt;
&lt;br /&gt;
===Лекция 2===&lt;br /&gt;
Явное построение двойственной задаче для задачи о паросочетаниях. Теорема о сильной двойственности, условия дополняющей нежесткости. Метод ветвей и границ (Branch and Bound) для решения комбинаторных задач. Применение B&amp;amp;B для решения ILP. Задача о рюкзаке, решение LP в задаче о рюкзаке.&lt;br /&gt;
&lt;br /&gt;
===Лекция 3===&lt;br /&gt;
Алгоритм 2-приближения для задачи о рюкзаке. Динамика по стоимостям и по весам для задачи о рюкзаке. Динамика по весам с использованием O(W) памяти. Построение схем приближения для задачи о рюкзаке: PTAS c временем O(n^(1 + 1/eps)) (без доказательства), FPTAS с временем O(n^2/eps), алгоритм Ibara-Kim с временем O(n/eps^2).&lt;br /&gt;
&lt;br /&gt;
===Лекция 4===&lt;br /&gt;
Задача о кратчайших путях, построение решения с помощью техники Primal-Dual.&lt;br /&gt;
&lt;br /&gt;
===Лекция 5===&lt;br /&gt;
Задача о взвешенном паросочетании в двудольном графе, построение решения с помощью техники Primal-Dual. Существование совершенного паросочетания в регулярном двудольном графе.&lt;br /&gt;
&lt;br /&gt;
===Лекция 6===&lt;br /&gt;
Метод локального поиска. Его применения к задаче о расстановке ферзей и к задаче о раскраске графа. Метапоиски – метод отжига.&lt;br /&gt;
&lt;br /&gt;
===Лекция 7===&lt;br /&gt;
Формулировка задачи TSP в виде линейной программы с экспоненциальным числом условий. Граница Хелда-Карпа. Применение симплекс-метода для рещения TSP на практике.&lt;br /&gt;
Метод Branch&amp;amp;Cut решения ILP, метод секущих плоскостей. Секущие плоскости Гомори-Хватала.&lt;br /&gt;
&lt;br /&gt;
===Лекция 8===&lt;br /&gt;
Метод эллипсоидов и его применение к построению слабополиномиального решения задачи линейного программирования. &lt;br /&gt;
Задача о максимальном разрезе, жадное решение.&lt;br /&gt;
Сведение задачи о максимальном разрезе к задаче полуопределенного программирование и построение вероятностного 0.878-приближения.&lt;br /&gt;
&lt;br /&gt;
== Семинары ==&lt;br /&gt;
&lt;br /&gt;
===Семинар 1===&lt;br /&gt;
Приведение линейных программ к разным формам. Правила построение двойственных программ для программы в общей форме. Утверждение о целочисленности вершины в задаче о совершенном паросочетании в двудольном графе. Тотальная унимодулярность, и теорема о целочисленности полиэдра. &lt;br /&gt;
&lt;br /&gt;
===Семинар 2===&lt;br /&gt;
Теорема о дополняющем пути. Алгоритм Куна поиска паросочетания в двудольном графе. Условия дополняющей нежесткости для пары задач Maximum Matching, Vertex Cover. Поиск вершинного покрытия из максимального паросочетания в двудольном графе.&lt;br /&gt;
&lt;br /&gt;
===Семинар 3===&lt;br /&gt;
Построение прямой и двойственной задачи для задачи о потоки в графе. Построение линейное программы для задачи о поиске максимальной клики в графе и для задачи Car Sequencing.&lt;br /&gt;
&lt;br /&gt;
===Семинар 4===&lt;br /&gt;
Задача Set-Cover, построение линейной и двойственной программ. Округление решения линейной программы, дающее f-приближение. Primal-Dual алгоритм для эффективного поиска f-приближения в данной задачи.&lt;br /&gt;
&lt;br /&gt;
===Семинар 5===&lt;br /&gt;
Контрольная работа.&lt;br /&gt;
&lt;br /&gt;
===Семинар 6===&lt;br /&gt;
Задача коммивояжера (TSP). 2-приближенные алгоритм для метрической задачи. 1-5 приближенный алгоритм Кристофидеса. Локальные поиск – 2-OPT шаги, эвристика Lin-Kernighan.&lt;br /&gt;
&lt;br /&gt;
===Семинар 7===&lt;br /&gt;
Инструменты для решения задач дискретной оптимизации: GLPK, Gurobi, or-tools. Методика Contraint Programming и её применение к задаче Car-Sequencing. Задача об открытии складов, её формулировка в виде ILP.&lt;br /&gt;
&lt;br /&gt;
===Семинар 8===&lt;br /&gt;
Симплекс-метод, построение секущей плоскости из решения найденного симплекс-методом.&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
&lt;br /&gt;
===Задание 1 (задача о рюкзаке)===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Дедлайн: 23.59 28 апреля. Не опаздывайте, после дедлайна решения не принимаются.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В задании предлагается решать задачу о рюкзаке. Архив с заданием доступен [https://yadi.sk/d/K7W0GqAjo8RGmQ здесь]. Обратите внимание, что ваше решение должно состоять из успешная посылка в Я.Контесте и написанный отчет, которые вы должны прислать по почту. При этом успешность посылки не означает, что ваше решение близко к оптимуму и наберем хоть какие-то баллы за задачу.&lt;br /&gt;
&lt;br /&gt;
Для задачи о рюкзаке имеется [http://akhmedov.me:50022/knapsack/ грейдер] - в него можно сдавать решения публичных тестов и сравниваться с другими участниками. Имя необходимо указывать в формате &amp;quot;фамилия транслитом маленькими буквами + подчеркивание + имя транслитом маленькими буквами&amp;quot;, например: kolesnichenko_ignat.&lt;br /&gt;
&lt;br /&gt;
Контест для сдачи задач доступен по [https://contest.yandex.ru/contest/12610 ссылке].&lt;br /&gt;
&lt;br /&gt;
Задание и вопросы по нему следует отправлять на почту  discret.opt.hse@gmail.com. В заголовке письма указывайте &amp;quot;ФИО Практика1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Критерии оценивания качества решения.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Для каждого закрытого теста в качестве baseline был выбран ответ жадного алгоритма, за него полагается 0.1 балла. За достижение оптимального ответа в тесте полагается 0.5 балла. Для остальных значений оценка вычисляется линейно исходя из двух указанных точек (например, если значение вашего решения лежит ровно посередине между оптимальным и жадным, то за него полагается 0.3 балла).&lt;br /&gt;
&lt;br /&gt;
Оценки за все 10 закрытых тестов суммируются и округляются вниз до ближайшего полуцелого числа. Таким образом финальная оценка лежит в диапазоне от 0 до 5 баллов. Причем 5 баллов получает только решение нашедшее оптимумы на всех закрытых тестах.&lt;br /&gt;
&lt;br /&gt;
Все тесты к задаче, а также ответы жадного и оптимального алгоритмов для закрытых тестов доступны по ссылке https://yadi.sk/d/2gZG00VoYoSeDA&lt;br /&gt;
&lt;br /&gt;
===Задание 2 (задача коммивояжера, задача об открытии складов, задача о сборке автомобилей)===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Дедлайн: 23.59 16 июня. Не опаздывайте, после дедлайна решения не принимаются.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В задании предлагается решать несколько комбинаторных задач. Архив с заданием доступен [https://yadi.sk/d/Qqxag0uWdnL12A здесь]. Обратите внимание, что ваше решение должно состоять из успешной посылки в Я.Контесте и написанного отчета, которые вы должны прислать по почту. &lt;br /&gt;
&lt;br /&gt;
Контест для сдачи задач https://contest.yandex.ru/contest/12924.&lt;br /&gt;
&lt;br /&gt;
Грейдер для задачи Коммивояжера http://akhmedov.me:50028/tsp/ –  в него можно сдавать решения публичных тестов и сравниваться с другими участниками. Имя необходимо указывать в формате &amp;quot;фамилия транслитом маленькими буквами + подчеркивание + имя транслитом маленькими буквами&amp;quot;, например: kolesnichenko_ignat&lt;br /&gt;
&lt;br /&gt;
Задание и вопросы по нему следует отправлять на почту  discret.opt.hse@gmail.com. В заголовке письма указывайте &amp;quot;ФИО Номер группы. Практика2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Критерии оценивания качества решения в задаче коммивояжера.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Оценивание производилось следующим образом – было взято три базовых решения: &lt;br /&gt;
1) 2-приближение через MST, его оценка бралась за точку отсчета в 0 баллов за тест.&lt;br /&gt;
2) качественно написанный 2-OPT (с разными политиками выбора того, какие ребра и как переключать), величина этого решения соответствует оценки в 0.6 балла за тест.&lt;br /&gt;
3) решение близкое к оптимальному (лучшее решение с одного из публичных источников по задаче), величина этого решения полагалась равной максимуму в 1 балл за тест.&lt;br /&gt;
&lt;br /&gt;
После этого по ответу вашего решения линейной интерполяцией высчитывалась оценка за ваше решение, оценка складывалась по всем тестам и округлялась до ближайшего полуцелого числа.&lt;br /&gt;
&lt;br /&gt;
Тесты в TSP вещь ценная, поэтому готов их показать только лично по запросу с обещанием не выкладывать в открытый доступ.&lt;br /&gt;
&lt;br /&gt;
==Экзамен==&lt;br /&gt;
&lt;br /&gt;
[https://yadi.sk/i/GP7lXeyKyKfF3Q Программа экзамена]&lt;br /&gt;
&lt;br /&gt;
[https://yadi.sk/d/CWb9JstME0Rntw Здесь будут выкладываться разные статьи, полезные для подготовки]&lt;br /&gt;
&lt;br /&gt;
[https://yadi.sk/i/GUF17cTPf5uT0A Порядок проведения экзамена]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Пересдача ==&lt;br /&gt;
&lt;br /&gt;
== Комиссия ==&lt;br /&gt;
&lt;br /&gt;
== Полезные материалы ==&lt;br /&gt;
===Рекомендуемая литература  ===&lt;br /&gt;
&lt;br /&gt;
  * &amp;quot;B.Korte, J.Vygen – Combinatorial optimization&amp;quot; – подробная книга по теории комбинаторной оптимизации (http://www.or.uni-bonn.de/~vygen/co.html).&lt;br /&gt;
  * &amp;quot;V. Vazirani – Approximation Algorithms&amp;quot; – одна из лучших книг по приближенным алгоритмам.&lt;br /&gt;
  * &amp;quot;H. Papadimitriou – Combinatorial Optimization: Algorithms and Complexity&amp;quot; – классический учебник по комбинаторной оптимизации. &lt;br /&gt;
  * &amp;quot;Where are the hard knapsack problems?&amp;quot; [David Pisinger] - интересные рассуждения по поводу того, как генерировать сложные тесты для задачи о рюкзаке.&lt;br /&gt;
  * [[https://web.tuke.sk/fei-cit/butka/hop/htsp.pdf &amp;quot;Heuristics for the Traveling Salesman Problem&amp;quot; [Christian Nilsson]]]  - краткое но насыщенное описание эвристик для задачи о коммивояжёре.&lt;br /&gt;
  * &amp;quot;Handbook of Constraint Programming&amp;quot; [F. Rossi, P. van Beek and T. Walsh] - справочник по программированию в ограничениях.&lt;br /&gt;
  * &amp;quot;Handbook of Metaheuristics&amp;quot; [Michel Gendreau, Jean-Yves Potvin] - справочник с описанием эвристических алгоритмов оптимизации.&lt;br /&gt;
  * &amp;quot;An Effective Implementation of the Lin-Kernighan Traveling Salesman Heuristic&amp;quot; [Keld Helsgaun] - описание эвристики Лина-Кернигана для задачи комивояжёра.&lt;br /&gt;
  * &amp;quot;The car sequencing problem: overview of state-of-the-art methods and industrial case-study of the ROADEF’2005 challenge problem&amp;quot; - описание эвристик, в том числе локального поиска, для задачи car sequencing.&lt;br /&gt;
&lt;br /&gt;
===Полезные ссылки  ===&lt;br /&gt;
&lt;br /&gt;
  * [[http://dopt.s3-website-us-east-1.amazonaws.com/003/viz/tsp/ Визуализатор маршрута коммивояжёра]] (вершины подаются в 0-индексации)&lt;br /&gt;
  * Курс по дискретной оптимизации на [[https://www.coursera.org/course/optimization Coursera]]. Содержит хорошие видео-лекции по Constraint Programming и Local Search.&lt;br /&gt;
&lt;br /&gt;
===Библиотеки для решения задач оптимизации===&lt;br /&gt;
  *  [[https://developers.google.com/optimization/ Google Optimization Tools]] (C++, Python, Java, C#) - фреймворк для решения задач дискретной оптимизаций. Позволяет программировать в парадигме Constraint Programming. Содержит инструменты для решения задач линейного программирования. ([[http://www.lia.disi.unibo.it/Staff/MicheleLombardi/or-tools-doc/documentation_hub.html Более полная документация]])&lt;br /&gt;
  * [[http://numberjack.ucc.ie/ Numberjack]] (Python)&lt;br /&gt;
  * [[http://choco-solver.org/ Choco]] (Java)&lt;br /&gt;
  * [[http://www.gecode.org/index.html Gecode]] (C++)&lt;br /&gt;
  * [[http://www.minizinc.org/ MiniZinc]] (MiniZinc) - Довольно выразительный язык для CP. Есть ((http://www.hakank.org/minizinc/ много примеров)).&lt;/div&gt;</summary>
		<author><name>imported&gt;Ignat</name></author>
	</entry>
</feed>