Как я могу оценить проблемы с переменным размером проблемы?

21

Мета достаточно сильно поддерживает вопросы, связанные с написанием задач, по основной теме, при условии, что эти вопросы являются конкретными и подотчетными. Однако таких вопросов у нас пока нет, поэтому я решил проверить воды. Этот вопрос, вероятно, входит в хорошую субъективную, плохую субъективную территорию, но я думаю, что, скорее всего, это должны быть вопросы для написания задач. Чтобы они по-прежнему генерировали высококачественный контент, пожалуйста, не просто публикуйте дикие спекулятивные идеи в ответах. Объясните, почему они избегают проблем, упомянутых ниже, или в идеале указывают на существующие проблемы, которые успешно использовали предложенную технику в прошлом.

Для определенных задач оптимизации свободным параметром в настройке задачи является размер задачи, подлежащей оптимизации. Под «задачей оптимизации» я не имею в виду такие вещи, как жанр , где обычно требуется, чтобы ответы были точными / оптимальными, а задача оценивается либо при фиксированном размере проблемы, либо при наибольшем размере проблемы, которую можно обработать в фиксированное количество времени. Я имею в виду, в частности, проблемы, когда неоптимальные решения основной проблемы разрешены и даже вероятны, и цель состоит в том, чтобы сделать это как можно лучше.

Для определенности рассмотрим проблемы с занятым бобром , хотя в принципе это относится и к другим типам испытаний без известных оптимальных решений (здесь я просто использую занятых бобров, потому что они усугубляют проблемы, упомянутые ниже). Скажем, я хотел бросить вызов поиску самого занятого бобра Brainfuck. Параметр free в проблемах с занятым бобром - это размер кода. Я не могу поставить задачу, не ссылаясь на размер кода каким-либо образом. В некотором смысле, каждое значение параметра размера проблемы Nдает отдельную (все более сложную) задачу. Мой главный вопрос - как я могу решить эту проблему, не сталкиваясь с проблемами балансировки.

Очевидное решение состоит в том, чтобы исправить N: «Найти завершающую программу Brainfuck с Nбайтами исходного кода, которая печатает столько символов, сколько возможно / работает столько раз, сколько возможно». Это имеет огромные проблемы балансирования: если выбрать размер слишком мал, кто - то может быстро найтизагруженный бобер, и проблема окончена. Если я выберу слишком большой размер, оптимальное решение напечатает астрономическое количество символов перед завершением, а это значит, что найти такие программы, скорее всего, будет тривиально, и задача становится терпеливым делом - это также оставляет территорию, где занятых бобров можно найти программно, и вместо этого людям нужно начать формально доказывать свои результаты, что многие люди могут не посчитать очень забавным. Конечно, эта проблема более выражена в проблемах занятого бобра, чем в других типах, из-за роста оптимальных решений, но, тем не менее, она относится и к другим проблемам.

Следующий вариант - оставить без Nограничений и сделать его частью оценки с помощью некоторой функции. Даже для «обычных» задач получить правильный баланс комбинированных баллов невероятно сложно, но в случае занятых бобров это в принципе невозможно, поскольку оптимальные решения растут быстрее, Nчем любая вычисляемая функция. Это означает, что я всегда могу побить лучший из существующих ответов, зайдя на достаточно большую страницу, Nгде я могу легко найти программу, которая работает так долго, что я могу получить лучший результат без особых усилий.

Я также подумал о том, чтобы установить фиксированный режим Nи позволить людям также отправлять бобров для более крупных, Nкоторые будут использоваться в качестве последовательных прерывателей связей. Это имеет аналогичную проблему в том, что кто-то может просто «случайно найти одинаково хорошего занятого бобра» для a N, создавая таким образом связь, а затем просто отправляя почти все для следующего, Nгде найти большую оценку легче (даже если найти оптимальный счет становится все труднее). В этих случаях как бы вы имели дело с несколькими людьми, использующими одно и то же решение? Запретить это также было бы странно, если бы это было оптимально.

Может быть, кто-то может перейти на второй план, сделав обоснованное предположение о разумном, Nа затем попросив занятых бобров для всех размеров в пределах (скажем) 5 байтов N, так что есть некоторая свобода действий в обоих направлениях (и затем вы объединяете ~ 10 баллов в одну по той или иной технике). Это также не кажется вполне удовлетворительным, потому что мое первоначальное предположение по- Nпрежнему может быть далеко за пределами диапазона, который создает интересные проблемы.

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

Мартин Эндер
источник
6
Мне нравится это в качестве модели для вопросов, требующих письменного задания, потому что это не относится к PPCG. Это не "Как мы должны это сделать?" но «Какой хороший способ сделать это?». Я мог вообразить, что такие проблемы запускаются на сайте программистов-любителей или на личном конкурсе.
xnor
Положите Tldr на вершине!
Majora320
1
@ Majora320 ... но затем измените d на w :-)
Луис Мендо

Ответы:

3

Найти следующий N

Задача будет указывать, Nчто представления должны начинаться с.

Затем люди будут отправлять ответы на текущий N. Если данное представление окажется оптимальным, Nоно увеличивается на 1, и процесс повторяется.

Есть несколько способов оценить это:

  1. Оценка лучших представлений на текущий N
  2. Дайте оценку лучшему представлению в настоящее время N, плюс пункт для каждого оптимального решения
  3. То же, что и № 2, но также указывает на человека, который доказал, что данное представление было оптимальным.
Натан Меррилл
источник
1

Дайте очки за решения в пределах ограниченного N

Разрешить Nбыть в пределах установленных границ. Нижняя граница должна исключать заведомо тривиальные ответы, и что верхняя граница не должна быть слишком далеко от нижней границы.

Затем дайте 1 балл за каждого человека, который имеет наилучшее решение для каждого Nв пределах. Если выше Nозначает, что решение сложнее, то дайте им N баллов. (или некоторая формула, основанная на N).

Этот метод аналогичен тому, как это делают AZsPC , но частичные баллы не даются.

Натан Меррилл
источник