<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.cs.hse.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gusakov</id>
	<title>Wiki - Факультет компьютерных наук - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cs.hse.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gusakov"/>
	<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Gusakov"/>
	<updated>2026-09-21T14:28:31Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17573</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17573"/>
		<updated>2015-11-20T15:00:08Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Критерии оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
Будет прикольно, но не просто.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest,&lt;br /&gt;
scikit-learn&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
Для начала немного поиграем в нарды.&lt;br /&gt;
&lt;br /&gt;
Потом обсудим интерфейсы, тесты, базовые решения, time-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
Можно совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы.&lt;br /&gt;
Ещё одним развитием проекта является хорошая визуализация игры.&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
4 балла: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17572</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17572"/>
		<updated>2015-11-20T14:59:37Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Темы вводных занятий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
Будет прикольно, но не просто.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest,&lt;br /&gt;
scikit-learn&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
Для начала немного поиграем в нарды.&lt;br /&gt;
&lt;br /&gt;
Потом обсудим интерфейсы, тесты, базовые решения, time-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
Можно совершенствовать алгоритм машинного обучения, находя/генерируя автоматически факторы.&lt;br /&gt;
Ещё одним развитием проекта является хорошая визуализация игры.&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17570</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17570"/>
		<updated>2015-11-20T14:56:02Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Что это за проект? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
Будет прикольно, но не просто.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest,&lt;br /&gt;
scikit-learn&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;
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17569</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17569"/>
		<updated>2015-11-20T14:53:56Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Какие начальные требования? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
Будет прикольно, но не просто.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest,&lt;br /&gt;
scikit-learn&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;
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17568</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17568"/>
		<updated>2015-11-20T14:53:42Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Какие начальные требования? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
Будет прикольно, но непросто.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest,&lt;br /&gt;
scikit-learn&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;
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17567</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17567"/>
		<updated>2015-11-20T14:52:54Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Какие будут использоваться технологии? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest,&lt;br /&gt;
scikit-learn&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;
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17566</id>
		<title>Учимся играть в нарды (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B8%D0%BC%D1%81%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BD%D0%B0%D1%80%D0%B4%D1%8B_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=17566"/>
		<updated>2015-11-20T14:52:28Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: Новая страница, с помощью формы Новый_проект&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Учимся играть в нарды&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2016&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=10&lt;br /&gt;
|categorize=yes&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;
Основы машинного обучения, методы линейной регрессии, понятие о нейросетях, temporal-difference learning.&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Интерес к машинному обучению, желание экспериментировать и упорно работать.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
c++, gtest&lt;br /&gt;
scikit-learn&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;
4 балл: Написан класс, описывающий позицию, реализованы правила, по которым делаются ходы.&lt;br /&gt;
+ балл (итого 5): Класс хорошо покрыт тестами.&lt;br /&gt;
+ балл (итого 6): Реализован механизм сравнения разных алгоритмов, есть несколько базовых реализаций алгоритма.&lt;br /&gt;
+ балл (итого 7): Реализован алгоритм, основанный на линейной модели, который побеждает все базовые подходы.&lt;br /&gt;
+ 2 балла (итого 9): То же самое, но на основе более глубокой нейоронной сети.&lt;br /&gt;
+ балл (итого 10): Как-то реализована визуализация, в результате чего можно и человеку сразиться с программой.&lt;br /&gt;
&lt;br /&gt;
Также между алгоритмами будет проведён турнир на спецприз от ментора :)&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
В идеале - вечер пятницы или утро субботы.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=16764</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=16764"/>
		<updated>2015-06-15T08:35:16Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* javascript&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
* Использование машинного обучения при оценке позиций&lt;br /&gt;
* Более серьёзные хаки в джава-скрипте - предсказание последующих ходов сервера&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Должен получиться бот, который с неплохой вероятностью (скажем, 10%) получает в одном из квадратов:&lt;br /&gt;
&lt;br /&gt;
* 7 - 4096&lt;br /&gt;
* 9 - 8192&lt;br /&gt;
&lt;br /&gt;
+1 балл за попытку использования машинного обучения или за достижение &amp;gt;= 16342 любым способом&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=16661</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=16661"/>
		<updated>2015-05-30T18:50:51Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Критерии оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:Gusakov|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* javascript&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
* Использование машинного обучения при оценке позиций&lt;br /&gt;
* Более серьёзные хаки в джава-скрипте - предсказание последующих ходов сервера&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Должен получиться бот, который с неплохой вероятностью (скажем, 10%) получает в одном из квадратов:&lt;br /&gt;
&lt;br /&gt;
* 5 - 4096&lt;br /&gt;
* 7 - 8192&lt;br /&gt;
* 9 - 16384&lt;br /&gt;
&lt;br /&gt;
+1 балл за попытку использования машинного обучения или за достижение 32768 любым способом&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=680</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=680"/>
		<updated>2014-12-01T12:31:28Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Критерии оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
* Библиотека Lemon для алгоритмов на графах&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* 4: Алгоритм работает на графе до 20 вершин&lt;br /&gt;
* 6: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* 8: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
&lt;br /&gt;
+1 балл за сравнение трёх методов на практике с методом локальных оптимизаций: насколько часто локальными оптимизациями не получается добиться точного решения?&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* 4: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* 6: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* 8: 3/2-приближение с использованием поиска паросочетания&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
&lt;br /&gt;
+1 балл за сравнение трёх методов на практике с методом локальных оптимизаций: насколько часто локальными оптимизациями не удаётся получить лучшего решения, чем описанные?&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=679</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=679"/>
		<updated>2014-12-01T12:31:02Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* javascript&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
* Использование машинного обучения при оценке позиций&lt;br /&gt;
* Более серьёзные хаки в джава-скрипте - предсказание последующих ходов сервера&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Должен получиться бот, который с неплохой вероятностью (скажем, 10%) получает в одном из квадратов:&lt;br /&gt;
&lt;br /&gt;
* 4 - 4096&lt;br /&gt;
* 6 - 8192&lt;br /&gt;
* 8 - 16384&lt;br /&gt;
&lt;br /&gt;
+1 балл, если вероятность успеха не 10%, а 50%&lt;br /&gt;
&lt;br /&gt;
+1 балл за попытку использования машинного обучения или за достижение 32768 любым способом&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=678</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=678"/>
		<updated>2014-12-01T12:30:46Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* javascript&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
* Использование машинного обучения при оценке позиций&lt;br /&gt;
* Более серьёзные хаки в джава-скрипте - предсказание последующих ходов сервера&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Должен получиться бот, который с неплохой вероятностью (скажем, 10%) получает в одном из квадратов:&lt;br /&gt;
&lt;br /&gt;
* 4 - 4096&lt;br /&gt;
* 6 - 8192&lt;br /&gt;
* 8 - 16384&lt;br /&gt;
&lt;br /&gt;
+1 балл, если вероятность успеха не 10%, а 50%.&lt;br /&gt;
+1 балл за попытку использования машинного обучения или за достижение 32768 любым способом&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=677</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=677"/>
		<updated>2014-12-01T12:25:31Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.png]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* Работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=676</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=676"/>
		<updated>2014-12-01T12:25:04Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.png]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=675</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=675"/>
		<updated>2014-12-01T12:24:43Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.png|500px|центр]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=674</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=674"/>
		<updated>2014-12-01T12:24:15Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.png]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=673</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=673"/>
		<updated>2014-12-01T12:23:32Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.jpg]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=672</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=672"/>
		<updated>2014-12-01T12:22:57Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.jpg|500px|центр]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=671</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=671"/>
		<updated>2014-12-01T12:21:09Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:gusakov.jpg|500px|центр]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=670</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=670"/>
		<updated>2014-12-01T12:20:33Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Gusakov.jpg|500px|центр]]&lt;br /&gt;
&lt;br /&gt;
= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Gusakov.png&amp;diff=669</id>
		<title>Файл:Gusakov.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Gusakov.png&amp;diff=669"/>
		<updated>2014-12-01T12:19:39Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=668</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=668"/>
		<updated>2014-12-01T12:16:16Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
* Библиотека Lemon для алгоритмов на графах&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* 4: Алгоритм работает на графе до 20 вершин&lt;br /&gt;
* 6: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* 8: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
+1 балл за сравнение трёх методов на практике с методом локальных оптимизаций: насколько часто локальными оптимизациями не получается добиться точного решения?&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* 4: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* 6: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* 8: 3/2-приближение с использованием поиска паросочетания&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
+1 балл за сравнение трёх методов на практике с методом локальных оптимизаций: насколько часто локальными оптимизациями не удаётся получить лучшего решения, чем описанные?&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=667</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=667"/>
		<updated>2014-12-01T12:15:52Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
* Библиотека Lemon&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* 4: Алгоритм работает на графе до 20 вершин&lt;br /&gt;
* 6: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* 8: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
+1 балл за сравнение трёх методов на практике с методом локальных оптимизаций: насколько часто локальными оптимизациями не получается добиться точного решения?&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* 4: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* 6: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* 8: 3/2-приближение с использованием поиска паросочетания&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
+1 балл за сравнение трёх методов на практике с методом локальных оптимизаций: насколько часто локальными оптимизациями не удаётся получить лучшего решения, чем описанные?&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=666</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=666"/>
		<updated>2014-12-01T12:11:49Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
* Библиотека Lemon&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* 4: Алгоритм работает на графе до 20 вершин&lt;br /&gt;
* 6: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* 8: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* 4: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* 6: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* 8: 3/2-приближение с использованием поиска паросочетания&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=665</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=665"/>
		<updated>2014-12-01T12:11:05Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* 4: Алгоритм работает на графе до 20 вершин&lt;br /&gt;
* 6: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* 8: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* 4: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* 6: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* 8: 3/2-приближение с использованием поиска паросочетания&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=664</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=664"/>
		<updated>2014-12-01T12:08:36Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* 4: Алгоритм работает на графе до 20 вершин&lt;br /&gt;
* 6: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* 8: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* 4: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* 6: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* 8: 3/2-приближение с использованием поиска паросочетания&lt;br /&gt;
&lt;br /&gt;
+1 балл за визуализацию решения. Цель визуализации - чтобы на небольшом примере было понятно, как работает алгоритм.&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=663</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=663"/>
		<updated>2014-12-01T12:06:30Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* Визуализация на python&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* удв: Алгоритм работает на графе до 20 вершин, с помощью визуализатора можно понять, как всё работает&lt;br /&gt;
* хор: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* отл: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* удв: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку + визуализация&lt;br /&gt;
* хор: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* отл: 3/2-приближение с использованием поиска паросочетания&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=662</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=662"/>
		<updated>2014-12-01T12:05:07Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&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;
* удв: Алгоритм работает на графе до 20 вершин, с помощью визуализатора можно понять, как всё работает&lt;br /&gt;
* хор: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* отл: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* удв: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку + визуализация&lt;br /&gt;
* хор: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* отл: 3/2-приближение с использованием поиска паросочетания&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=661</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=661"/>
		<updated>2014-12-01T11:59:15Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* javascript&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* 4-5 - 4096&lt;br /&gt;
* 6-7 - 8192&lt;br /&gt;
* 8-10 - 16384&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=660</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=660"/>
		<updated>2014-12-01T11:53:56Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* gtest&lt;br /&gt;
* javascript&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* удв - 4096&lt;br /&gt;
* хор - 8192&lt;br /&gt;
* отл - 16384&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=659</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=659"/>
		<updated>2014-12-01T11:51:19Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Делать плагин для браузера, который общается с С++ программой&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* удв - 4096&lt;br /&gt;
* хор - 8192&lt;br /&gt;
* отл - 16384&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=417</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=417"/>
		<updated>2014-11-19T11:31:20Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Направления развития */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Хакать javascript&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* удв - 4096&lt;br /&gt;
* хор - 8192&lt;br /&gt;
* отл - 16384&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=416</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=416"/>
		<updated>2014-11-19T11:25:12Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Критерии оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Хакать javascript&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* удв - 4096&lt;br /&gt;
* хор - 8192&lt;br /&gt;
* отл - 16384&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=415</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=415"/>
		<updated>2014-11-19T11:23:59Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Хакать javascript&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* удв - 4096&lt;br /&gt;
* хор - 8192&lt;br /&gt;
* отл - 16348&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=414</id>
		<title>2048 (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=2048_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=414"/>
		<updated>2014-11-19T11:21:49Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: Новая страница, с помощью формы Новый_проект&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=2048&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
2048 - игра, известная многим офисным работникам. В неё можно играть онлайн, например, здесь http://go2048.com/&lt;br /&gt;
&lt;br /&gt;
Цель проекта - создать бота, который будет набирать больше, чем могут люди.&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
* Переборным решениям для игровых задач&lt;br /&gt;
* Альфа-бета отсечениям&lt;br /&gt;
* Monte Carlo tree search для оценки позиций&lt;br /&gt;
* Хатать javascript&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории игр&lt;br /&gt;
* Перебор с возвратом, альфа-бета отсечения&lt;br /&gt;
* Monte Carlo tree search&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;
* удв - 4096&lt;br /&gt;
* хор - 8192&lt;br /&gt;
* отл - 16348&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=383</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=383"/>
		<updated>2014-11-17T08:00:16Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Критерии оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
Поскольку задача имеет некоторую практическую ценность, уже существует великое множество методов, помимо рассмотренных. Так например, для точного решения, помимо приведённых эвристик, могут быть полезны генетические алгоритмы, а для специального случая, когда расстояние между городами равно расстоянию на плоскости, существует полиномиальный алгоритм, находящий маршрут с любой наперёд заданной точностью.&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Как уже сказано, есть два пути решения задачи - точный и приближённый.&lt;br /&gt;
Точный путь:&lt;br /&gt;
* удв: Алгоритм работает на графе до 20 вершин, с помощью визуализатора можно понять, как всё работает&lt;br /&gt;
* хор: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* отл: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* удв: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку + визуализация&lt;br /&gt;
* хор: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* отл: 3/2-приближение с использованием поиска паросочетания&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=382</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=382"/>
		<updated>2014-11-17T07:59:37Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
Поскольку задача имеет некоторую практическую ценность, уже существует великое множество методов, помимо рассмотренных. Так например, для точного решения, помимо приведённых эвристик, могут быть полезны генетические алгоритмы, а для специального случая, когда расстояние между городами равно расстоянию на плоскости, существует полиномиальный алгоритм, находящий маршрут с любой наперёд заданной точностью.&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Как уже сказано, есть два пути решения задачи - точный и приближённый.&lt;br /&gt;
Точный путь:&lt;br /&gt;
* удв: Алгоритм работает на графе до 20 вершин, с помощью визуализатора можно понять, как всё работает&lt;br /&gt;
* хор: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* отл: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* удв: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* хор: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* отл: 3/2-приближение с использованием поиска паросочетания&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=381</id>
		<title>Задача коммивояжера (проект)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=381"/>
		<updated>2014-11-17T07:58:03Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: Новая страница, с помощью формы Новый_проект&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Задача коммивояжера&lt;br /&gt;
|mentor=Алексей Гусаков&lt;br /&gt;
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}&lt;br /&gt;
|semester=Весна 2015&lt;br /&gt;
|course=1&lt;br /&gt;
|summer=&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
Задача коммивояжера заключается в отыскании самого выгодного маршрута, проходящего через заданные города с последующим возвратом в исходный город. Для этой простой задачи нет (и скорее всего не будет) решения, правильно работающего за полиномиальное время. Однако, существуют подходы, дающие неплохие практические результаты. Мы изучим два таких подхода: переборный и приближённый. В первом подходе изучим техники, позволяющие быстро находить правильное решение для 50-100 городов, во втором - быстро находить решение, которое доказуемо &amp;quot;не сильно&amp;quot; (в 1.5 раза) отличается от правильного. Результатом работы будет библиотека, реализующая один из двух подходов.&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;
* Программирование на C/C++ (в рамках прослушанного курса)&lt;br /&gt;
* Желание разбираться в алгоритмах&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* git, github&lt;br /&gt;
* gtest&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
* Основы теории графов (что это такое, базовые алгоритмы: минимальное остовное дерево, Эйлеровы циклы)&lt;br /&gt;
* Приближённые алгоритмы, 2-оптимальное решение, паросочетания, 3/2-оптимальное решение&lt;br /&gt;
* Алгоритмы: перебор с возвратом, метод ветвей и границ, эвристики 2-opt и 3-opt, линейное программирование&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
Поскольку задача имеет некоторую практическую ценность, уже существует великое множество методов, помимо рассмотренных. Так например, для точного решения, помимо приведённых эвристик, могут быть полезны генетические алгоритмы, а для специального случая, когда расстояние между городами равно расстоянию на плоскости, существует полиномиальный алгоритм, находящий маршрут с любой наперёд заданной точностью.&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Как уже сказано, есть два пути решения задачи - точный и приближённый.&lt;br /&gt;
Точный путь:&lt;br /&gt;
* удв: Алгоритм работает на графе до 20 вершин, с помощью визуализатора можно понять, как всё работает&lt;br /&gt;
* хор: Реализованы 2-opt и 3-opt, алгоритм работает для 50 вершин&lt;br /&gt;
* отл: Метод ветвей и границ с линейным программированием&lt;br /&gt;
&lt;br /&gt;
Приближённый путь:&lt;br /&gt;
* удв: Алгоритм, который выдаёт какое-нибудь решение и оценку сверху на ошибку&lt;br /&gt;
* хор: 2-приближение с помощью эйлерова цикла&lt;br /&gt;
* отл: 3/2-приближение с использованием паросочетания&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=380</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=380"/>
		<updated>2014-11-17T06:35:47Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: /* Биография */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Факты =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=379</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=379"/>
		<updated>2014-11-17T06:35:22Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Биография =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;br /&gt;
&lt;br /&gt;
= Интересы =&lt;br /&gt;
* Машинное обучение: ранкинг, deep learning&lt;br /&gt;
* Математика: комбинаторная оптимизация, приближённые алгоритмы&lt;br /&gt;
* Спорт: борьба, штанга&lt;br /&gt;
&lt;br /&gt;
= Контакты =&lt;br /&gt;
* agusakov@gmail.com&lt;br /&gt;
* +7 906 758 92 49&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=378</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=378"/>
		<updated>2014-11-17T06:28:39Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Биография =&lt;br /&gt;
* Выпускник мехмата МГУ 2010 года&lt;br /&gt;
* 2 место на ACM ICPC World Finals 2010&lt;br /&gt;
* До настоящего дня работаю в московском гугле&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=377</id>
		<title>Участник:Gusakov</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Gusakov&amp;diff=377"/>
		<updated>2014-11-17T06:28:19Z</updated>

		<summary type="html">&lt;p&gt;Gusakov: Новая страница: «= Биография = Выпускник мехмата МГУ 2010 года 2 место на ACM ICPC World Finals 2010 До настоящего дня раб…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Биография =&lt;br /&gt;
Выпускник мехмата МГУ 2010 года&lt;br /&gt;
2 место на ACM ICPC World Finals 2010&lt;br /&gt;
До настоящего дня работаю в московском гугле&lt;/div&gt;</summary>
		<author><name>Gusakov</name></author>
	</entry>
</feed>