2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Нестандартная задача для программистов
Сообщение10.10.2011, 12:27 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Добрый день, уважаемые форумчане!

Думаю, среди вас есть много программистов.
Хочу предложить хорошую задачку.

Ну, чтобы не делать копипаст, даю ссылку, где задача подробно сформулирована:
http://e-science.ru/forum/index.php?showtopic=34163
(это очень близкий форум ПЕН).

Задачка относится к теме "Knight's tours" (см. тему там же, рядом с задачей). Я давно веду эту тему. Разработаны алгоритмы создания маршрутов. Коллега по задаче А. Чернов создал уникальную базу маршрутов, которая работает в режиме он-лайн:
http://ukt:alex-black.ru/
Сейчас в базе более 1000 маршрутов, но многие из них не максимальные и требуют улучшения.

Вот для работы с маршрутами и нужна модификация программы.
Программа уже существует, но она не делает всего того, что мне нужно.
Исходник программы выложен на форуме. Могу прислать и исполняемую программу, чтобы посмотреть работу программы.

Если задача кого-нибудь заинтересует, пишите. Можно здесь, можно на ПЕН, можно в личку.

На этом форуме тоже есть тема о данной задаче, но по сравнению с темой на ПЕН она, как комарик по сравнению с бегемотом :-)

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение22.10.2011, 06:54 
Заслуженный участник


26/07/09
1559
Алматы
Простите, если немного не в тему, но не известно ли вам, каков на данный момент прогресс в аналитическом подсчете количества (незамкнутых) маршрутов коня?

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение22.10.2011, 07:18 


26/01/10
959
Circiter в сообщении #494992 писал(а):
ростите, если немного не в тему, но не известно ли вам, каков на данный момент прогресс в аналитическом подсчете количества (незамкнутых) маршрутов коня?


Если вы имеете в виду любые простые маршруты, а не те, что предлагает автор темы, то для произвольных размеров доски $m\times n$ ответ неизвестен и скорее всего он не представим в виде d-конечной функции (считайте, не может быть выписан аналитически вообще). Если зафиксировать параметр $m$, то легко можно получить последовательность решений для произвольного $n$, когда число $m$ не очень велико, так как очевидно, что решение выписывается в виде рекуррентного соотношения. Я не видел ответов по этой задаче, но про циклы шахматного коня ответ известен для $m\leq4$ (по-моему). Не буду сейчас искать ссылки, но вот гамильтоновы циклы для $m=3$ есть здесь A070030.

К сожалению, простой случай доски $8\times 8$ до сих пор не решён. Уже несколько лет жду, когда кто-нибудь это сделает; ещё год подожду и предоставляю свой ответ, а то надоело... Эта нелепая фраза из википедии:
Цитата:
В то же время задача подсчёта всех возможных незамкнутых маршрутов значительно сложнее и не решена до сих пор

слегка выводит из себя именно выражением "значительно сложнее". Я бы написал "немногим более сложна".

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение22.10.2011, 07:20 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Circiter в сообщении #494992 писал(а):
Простите, если немного не в тему, но не известно ли вам, каков на данный момент прогресс в аналитическом подсчете количества (незамкнутых) маршрутов коня?

Какого количества? Досок разных размеров бесконечно много. Соответственно и маршрутов бесконечно много. Или вас интересует количество разных (максимальных) маршрутов на доске одного конкретного размера?

Я тут в предыдущем посте дала ссылку на базу маршрутов, к сожалению, с ошибкой, правильно так:
http://ukt.alex-black.ru/
Кроме того, в теме на ПЕН (ссылка дана в теме о маршрутах коня "Knight's tours") приведены полученные формулы для вычисления максимальной длины пути для некоторых размеров досок.

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение22.10.2011, 12:27 
Заслуженный участник


26/07/09
1559
Алматы
Ух-ты, я даже и подумал, что доски рассматривают в том числе и нестандартные, я то про обычную шахматную говорил, $8\times 8$. :)

2Zealint
Цитата:
ещё год подожду и предоставляю свой

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

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение22.10.2011, 15:46 


26/01/10
959
Circiter в сообщении #495037 писал(а):
Ничего себе. Как же вы можете ждать? Я бы не усидел бы на месте. :) Ну а, скажем, хотя-бы само число незамкнутых маршрутов для стандартной доски вы тоже пока не собираетесь сообщать (пусть даже без доказательства)? Жаль... Ведь пока есть только грубая верхняя оценка и всё...

Может вы меня неправильно поняли... у меня нет строгих аналитических доказательств, какие приняты в математике. У меня нет даже числа, но я знаю, как его легко посчитать на компьютере (я решил множество подобных задач и для более большой доски, не решённых ранее). Просто пока не располагаю временем на решение упражнений для студентов 2-3 курса, занимающихся программированием. Чуть меньше чем через год такое время может появиться, тогда почти сразу за этим появится и число. Из списка нерешённых задач такого типа, эта является наиболее простой, поэтому я как раз жду, что именно её решат в первую очередь, сам сейчас занимаюсь более сложными.

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

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение23.10.2011, 12:35 
Заслуженный участник


26/07/09
1559
Алматы
2Zealint
Надо ли полагать, что, учитывая акцент на почти тривиальности подсчета (и даже его доступности студентам-программистам), ваш подход основан на сведении задачи подсчета незамкнутых маршрутов к уже решенной задаче о количестве гамильтоновых циклов на графе коня над стандартной доской? Например, известна идея, заключающаяся в добавлении к графу коня ещё одной вершины, соединенной со всеми остальными 64-мя вершинами, с последующим счетом гамильтоновых циклов уже в полученном графе... Или же намеки на ваше видение возможного решения следует искать в ваших недавних отжигах по физике полимеров?

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

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение23.10.2011, 16:05 


26/01/10
959
Circiter в сообщении #495299 писал(а):
2Zealint
Надо ли полагать, что, учитывая акцент на почти тривиальности подсчета (и даже его доступности студентам-программистам), ваш подход основан на сведении задачи подсчета незамкнутых маршрутов к уже решенной задаче о количестве гамильтоновых циклов на графе коня над стандартной доской? Например, известна идея, заключающаяся в добавлении к графу коня ещё одной вершины, соединенной со всеми остальными 64-мя вершинами, с последующим счетом гамильтоновых циклов уже в полученном графе... Или же намеки на ваше видение возможного решения следует искать в ваших недавних отжигах по физике полимеров?

Нет, интерпретировать мои слова нужно не более чем как амбиции, а искать причину этих амбиций не следует ни в физике полимеров, ни в добавлении вершины к графу шахматного коня [ ну зачем же так граф портить? : ) ]. Возможно, я ошибаюсь, и задачу недаром никто поднять не смог... (было бы наивно полагать, что все такие глупые вокруг)

Хотя такого раньше не было - я всегда заранее знал, решу задачу или нет и никогда не ошибался. Если я вижу, что задача неподъёмная, то это как-то сразу понятно. Несколько раз я ошибался, называя простую задачу неподъемной. А вот когда мне кажется, что задача решается просто, то значит так оно и есть. Когда сяду за её решение, сообщу сюда в первую очередь, или признаюсь, что был по отношению к ней неправ, но получение новых результатов (пусть не для $8\times8$, а например для $6 \times n\,\forall n$ могу гарантировать, если никто раньше их не получит, что было бы неплохо).

(отжиг)

Не совсем понятно слово "отжиг" - то ли намёк на то, что я занимаюсь ерундой, то ли ещё на что-то. Мы ведь в разных школах учились, и одинаковые бытовые выражения применяли в разных ситуациях... И что именно я отжёг по физике полимеров, тоже непонятно. Там есть 5-6 любопытных результатов, но отжигом их называть я бы не стал



Цитата:
Кстати, спасибо за ваши ответы в этой теме. Мне вот одно время эта задача была очень-очень интересна (самостоятельно продвинуться, конечно, нисколечки не удалось), но последнее время я уже не слежу за её прогрессом; думал, что, возможно, дело сдвинулось с места...

Не за что. Меня удивило только то, что вы про шахматные доски отличного от стандарта размера ничего не думали.

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение23.10.2011, 18:24 
Заслуженный участник


26/07/09
1559
Алматы
2Zealint
Цитата:
Когда сяду за её решение, сообщу сюда в первую очередь

Было бы замечательно. Не то что бы задача неподъемная, но, очевидно, какие-то грабли там есть...

Цитата:
А чисто с философской точки зрения, само по себе число ради числа мало интересно

Я согласен, что компьютерные доказательства, несмотря на привычность после четырёх красок, все-таки не обладают той степенью красоты, коей могут похвастаться доказательства классические, расчитанные на проверку человеком с бумагой и карандашом. Но исключений-то полно. Да и сам факт получения какого-то результата уже ценен, даже будучи более абстрактным понятием чем число. :)

А может число маршрутов коня специалисты ещё не подсчитали исключительно из-за лени или нежелания тратить время на результат, который и так вот-вот кто-нибудь получит? Не понятно... Циклы подсчитали, а незамкнутые пути нет. Странно (наверное, сама эта гамильтоновость сильно мешает, это же не просто матрицу в степень возвести как при поиске циклов, тут и мозгом повредиться можно).

Цитата:
ни в добавлении вершины к графу шахматного коня [ ну зачем же так граф портить? : ) ]

Ну в нем и так есть некрасивости, нерегулярности из-за края доски... Делов-то, ещё одну клетку к доске пририсовать. :) Впрочем, я не знаю, стоит ли этот подход внимания. Я попробовал покопать в эту сторону, но ничего не получилось. Вообще, это же вроде стандартный прием поиска путей в графе имея только алгоритм поиска циклов.

(Оффтоп)

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

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение23.10.2011, 20:14 


26/01/10
959
Circiter в сообщении #495413 писал(а):
Я согласен, что компьютерные доказательства, несмотря на привычность после четырёх красок, все-таки не обладают той степенью красоты, коей могут похвастаться доказательства классические, расчитанные на проверку человеком с бумагой и карандашом. Но исключений-то полно. Да и сам факт получения какого-то результата уже ценен, даже будучи более абстрактным понятием чем число. :)

Ну так а что делать, если, например, формула состоит из 30 миллионов символов? Кто её будет доказывать с карандашом в руке? А у меня одна такая формула есть и есть еще несколько чуть поменьше. В перечислительной комбинаторике почти всё, что можно было легко решить на бумаге, уже решили, теперь в ход идут чисто вычислительные доказательства. Причём доказать строго, что программа на тысячу строк работает правильно, насколько мне известно, невозможно. Мне кажется, это чисто философская проблема - нужно переосмыслить наши представления о том, что такое доказательство и в каких случаях считать что-то правильным. Например, задача про n ферзей A000170 для n=26 была решена, но считать ответ правильным начали после того, как кто-то другой получил такое же число. А кто докажет?

Цитата:
А может число маршрутов коня специалисты ещё не подсчитали исключительно из-за лени или нежелания тратить время на результат, который и так вот-вот кто-нибудь получит? Не понятно... Циклы подсчитали, а незамкнутые пути нет.

Может быть. Только вот я не специалист, поэтому жду, когда именно специалисты назовут ответ, чтобы у них хлеб не отбирать : ) . Я просто любитель, решаю только то, что хочу и когда хочу. Вроде моего друга из Чехии, который всякие шахматные задачи решает в своё удовольствие. Вот тут есть его книга (слева кнопка "Problems", потом справа книга "Non-attacking chess pieces"), где собраны результаты. В следующем издании там появятся ещё некоторые мои формулы и даже данные, полученные участниками моих конкурсов по программированию.

Цитата:
Вообще, это же вроде стандартный прием поиска путей в графе имея только алгоритм поиска циклов.

Так-то оно так, но поиск циклов и подсчёт циклов - совершенно разные задачи. А ещё все зависит от подхода. Может быть добавление вершины чем-то поможет, но мне оно пока мешает. Представьте, было 64 клетки (красиво), а стало 65 (ужасно). Один лишний бит всю картину портит. Вместо 64 битового числа в некоторых алгоритмах нужно заводить 65 битовое - это же ужас! А с точки зрения других - это нарушает красивую симметричную структуру графа.

Я думаю, что нет смысла что-то конкретное обсуждать, пока я свои амбиции не подтвердил. Пусть лучше специалисты поторопятся с решением, а то я у них уже столько хлеба халявного отобрал. Через год и этот кусок оттяпаю.

 Профиль  
                  
 
 Re: Нестандартная задача для программистов
Сообщение01.09.2013, 21:20 


02/05/10
26
Извините, что поднимаю старую тему, но есть некоторые результаты по этой проблеме (речь идет об A165134), а поскольку здесь уже было обсуждение этого вопроса, нет смысла создавать новую.

Мне удалось посчитать количество незамкнутых маршрутов для доски 8x8, но есть некоторые сомнения в результате. А именно: на страничке Guenter Stertenbrink приведены данные по количеству маршрутов для доски 8x8 (в том числе) с фиксированными окончаниями. Во-первых, часть данных для доски 8x8 там отсутствует и хотелось бы независимого подтверждения, а, во-вторых, одно значение не совпадает с тем, которое получено мной. Пересчитать это значение другим методом я пока не могу.

Алгоритм, который был применен, и результаты приведены здесь.

Если есть способ посчитать маршруты проще, хотелось бы о нем услышать.

 Профиль  
                  
 
 Posted automatically
Сообщение04.11.2013, 01:47 
Основатель
Аватара пользователя


11/05/05
4313
 i  Тема перемещена из форума «Программирование» в форум «Олимпиадные задачи (CS)»
Причина переноса: не указана.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Dmitriy40


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group