Мета достаточно сильно поддерживает вопросы, связанные с написанием задач, по основной теме, при условии, что эти вопросы являются конкретными и подотчетными. Однако таких вопросов у нас пока нет, поэтому я решил проверить воды. Этот вопрос, вероятно, входит в хорошую субъективную, плохую субъективную территорию, но я думаю, что, скорее всего, это должны быть вопросы для написания задач. Чтобы они по-прежнему генерировали высококачественный контент, пожалуйста, не просто публикуйте дикие спекулятивные идеи в ответах. Объясните, почему они избегают проблем, упомянутых ниже, или в идеале указывают на существующие проблемы, которые успешно использовали предложенную технику в прошлом.
Для определенных задач оптимизации свободным параметром в настройке задачи является размер задачи, подлежащей оптимизации. Под «задачей оптимизации» я не имею в виду такие вещи, как жанр самого быстрого кода , где обычно требуется, чтобы ответы были точными / оптимальными, а задача оценивается либо при фиксированном размере проблемы, либо при наибольшем размере проблемы, которую можно обработать в фиксированное количество времени. Я имею в виду, в частности, проблемы, когда неоптимальные решения основной проблемы разрешены и даже вероятны, и цель состоит в том, чтобы сделать это как можно лучше.
Для определенности рассмотрим проблемы с занятым бобром , хотя в принципе это относится и к другим типам испытаний без известных оптимальных решений (здесь я просто использую занятых бобров, потому что они усугубляют проблемы, упомянутые ниже). Скажем, я хотел бросить вызов поиску самого занятого бобра Brainfuck. Параметр free в проблемах с занятым бобром - это размер кода. Я не могу поставить задачу, не ссылаясь на размер кода каким-либо образом. В некотором смысле, каждое значение параметра размера проблемы N
дает отдельную (все более сложную) задачу. Мой главный вопрос - как я могу решить эту проблему, не сталкиваясь с проблемами балансировки.
Очевидное решение состоит в том, чтобы исправить N
: «Найти завершающую программу Brainfuck с N
байтами исходного кода, которая печатает столько символов, сколько возможно / работает столько раз, сколько возможно». Это имеет огромные проблемы балансирования: если выбрать размер слишком мал, кто - то может быстро найтизагруженный бобер, и проблема окончена. Если я выберу слишком большой размер, оптимальное решение напечатает астрономическое количество символов перед завершением, а это значит, что найти такие программы, скорее всего, будет тривиально, и задача становится терпеливым делом - это также оставляет территорию, где занятых бобров можно найти программно, и вместо этого людям нужно начать формально доказывать свои результаты, что многие люди могут не посчитать очень забавным. Конечно, эта проблема более выражена в проблемах занятого бобра, чем в других типах, из-за роста оптимальных решений, но, тем не менее, она относится и к другим проблемам.
Следующий вариант - оставить без N
ограничений и сделать его частью оценки с помощью некоторой функции. Даже для «обычных» задач получить правильный баланс комбинированных баллов невероятно сложно, но в случае занятых бобров это в принципе невозможно, поскольку оптимальные решения растут быстрее, N
чем любая вычисляемая функция. Это означает, что я всегда могу побить лучший из существующих ответов, зайдя на достаточно большую страницу, N
где я могу легко найти программу, которая работает так долго, что я могу получить лучший результат без особых усилий.
Я также подумал о том, чтобы установить фиксированный режим N
и позволить людям также отправлять бобров для более крупных, N
которые будут использоваться в качестве последовательных прерывателей связей. Это имеет аналогичную проблему в том, что кто-то может просто «случайно найти одинаково хорошего занятого бобра» для a N
, создавая таким образом связь, а затем просто отправляя почти все для следующего, N
где найти большую оценку легче (даже если найти оптимальный счет становится все труднее). В этих случаях как бы вы имели дело с несколькими людьми, использующими одно и то же решение? Запретить это также было бы странно, если бы это было оптимально.
Может быть, кто-то может перейти на второй план, сделав обоснованное предположение о разумном, N
а затем попросив занятых бобров для всех размеров в пределах (скажем) 5 байтов N
, так что есть некоторая свобода действий в обоих направлениях (и затем вы объединяете ~ 10 баллов в одну по той или иной технике). Это также не кажется вполне удовлетворительным, потому что мое первоначальное предположение по- N
прежнему может быть далеко за пределами диапазона, который создает интересные проблемы.
TL; DR: в случаях, когда задача состоит в том, чтобы (субоптимально решить и) оптимизировать проблему, размер которой является переменным, как мне включить размер в задачу? В идеале я хотел бы, чтобы люди могли работать со значением, N
которое находится ближе к верхнему пределу диапазона возможных размеров. Но на тот случай, если окажется, что для этого возможны оптимальные решения N
, было бы здорово, если бы решения для немного большего размера N
начали взвешиваться, чтобы проблема могла продолжаться с более интересным размером проблемы.