Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конкурс для программистов, Предлагаются 3 задачи для соревнования 
:(
    Опции темы
Zealint
Дата 1.3.2011, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.2.2010

Репутация: нет
Всего: нет



В моей прошлой теме администратор дал добро на размещение подобного рода объявлений.

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

Кого интересует, добро пожаловать на страницу конкурса.

Конкурс любительский - just for fun, как говорится. Без призов. По случаю первого дня весны.

PM MAIL WWW   Вверх
maxim1000
Дата 1.3.2011, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Zealint @  1.3.2011,  21:07 Найти цитируемый пост)
В моей прошлой теме администратор дал добро на размещение подобного рода объявлений.

С некоторой оговоркой: "думаю, пока люди проявляют интерес и обсуждают задачи, нет ничего плохого".

А для этого было бы неплохо процитировать условия задач здесь...


--------------------
qqq
PM WWW   Вверх
Zealint
Дата 1.3.2011, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.2.2010

Репутация: нет
Всего: нет



Хорошо. Можно процитировать условия. Но не всё подряд, а самые важные моменты. Все подробности и нужные ссылки лучше пусть останутся на странице конкурса.

Задача 1. Плохая сеть для задачи о максимальном потоке.

Для решения задачи о максимальном потоке существует большое количество алгоритмов и методов. Пожалуй, наиболее известный из них – это метод Форда-Фалкерсона и модификация Эдмондса-Карпа для него (когда дополняющий путь выбирается с наименьшей возможной длиной). Пусть n – число вершин в сети, а m – число рёбер. Известно, что алгоритм Эдмондса-Карпа работает за время O(nm^2) (можно доказать, что дополняющий путь потребуется искать не более O(nm) раз и время поиска такого пути не больше O(m)). В реальных задачах эта оценка не достигается, хотя существует специальный извращённый тест, подтверждающий асимптотику. Поскольку это конкурс по спортивному программированию, то предполагается, что участники знакомы с этим классическим алгоритмом.

Требуется придумать такую сеть, на которой алгоритм Эдмондса-Карпа выполняет как можно больше итераций увеличения потока вдоль дополняющего пути. Для определённости, такой тест нужно подогнать именно под мою реализацию (специально написанную для конкурса). В моей реализации дополняющий путь ищется поиском в ширину, но каждый раз ищется лексикографически минимальный путь из всех путей с минимальной длиной (если считать, что путь – это последовательность вершин). На странице конкурса предлагается скачать мою реализацию этого алгоритма, с помощью которой участники смогут тестировать свои сети. Там же приводится пример простой сети с картинкой. Участникам предлагается ограничиться сетью из 256 вершин без петель и кратных дуг.

Задача 2. Королевский баян

Баяном задача названа по причине своей чрезвычайной заезженности. Однако так далеко, как я предлагаю, её ещё никто не решал.

Задано натуральное n. Имеется шахматная доска размером 2n×2n. Сколькими способами можно расположить на ней n^2 шахматных королей так, чтобы они не били друг друга? Например, для n=1 ответ 4 (один король может занять любую из 4 позиций доски 2×2). Для n=2 ответ 79. Более того, ответы для некоторых других значений n можно найти в сети очень быстро. Например, в энциклопедии oeis.org под номером A018807 (эти значения были посчитаны ещё до 2000 года). Поскольку ответы до n=11 уже известны (на самом деле известны и дальше, но искать сложнее), будем начинать конкурс от n=12. Как обычно, у кого больше n, тот и победил. Ответы для достаточно больших n у меня есть, будем надеяться, что этого хватит для проверки ответов участников.

Задача 3. Блуждания на прямой

Есть числовая прямая. Точка находится в позиции 0 на этой прямой. Точка за один шаг может (и обязана) переместиться на 1, 2, …, k единиц вперед или назад. Сколькими способами можно, выполнив ровно n шагов, вернуться в начало координат? Например, если k=1, то для n=0,1,2,…,10 ответы будут, соответственно 1,0,2,0,6,0,20,0,70,0,252. Данная последовательность (обозначим её через а(n)) удовлетворяет линейному рекуррентному соотношению с полиномиальными коэффициентами: 

n*a(n) = 4*(n-1)*a(n-2) (n≥2).

То есть, например, при n=2 имеем 2*2=4*(2-1)*1 или при n=10 имеем 10*252=4*(10-1)*70.

Ответ для k=2 имеет вид

-2*n*(2*n-1)*a(n) = (17*n^2-77*n+60)*a(n-1)+(-78*n^2+222*n-180)*a(n-2)+(-216*n^2+972*n-1080)*a(n-3),
а сама последовательность [1,0,4,6,36,100,430,1470,5796,21336,...]

На странице конкурса также даны ссылки на известные решения для k=3,4 и предлагается решить задачу для k=5,6,... и так далее, кто дальше.

PM MAIL WWW   Вверх
Zealint
Дата 14.3.2011, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.2.2010

Репутация: нет
Всего: нет



К сожалению, на разных форумах я так и не встретил желающих что-либо обсудить. Тем не менее, конкурс завершён, предлагаю ознакомиться с итогами.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0596 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.