Jak mogę oceniać wyzwania przy różnych rozmiarach problemów?

21

Istnieje dość silne poparcie dla meta, aby pytania dotyczące pisania pytań były tematem głównym, pod warunkiem, że pytania te są konkretne i można na nie odpowiedzieć. Jednak nie mamy jeszcze takich pytań, więc pomyślałem, że przetestuję wody. To pytanie prawdopodobnie wkracza w dobre subiektywne, złe subiektywne terytorium, ale myślę, że prawdopodobnie takie będą pytania dotyczące pisania wyzwań. Aby mieć pewność, że nadal generują treści wysokiej jakości, nie zamieszczaj w odpowiedziach dzikich pomysłów spekulacyjnych. Wyjaśnij, dlaczego unikają problemów wymienionych poniżej lub idealnie wskazują na istniejące wyzwania, które z powodzeniem stosowały sugerowaną technikę w przeszłości.

W przypadku niektórych wyzwań związanych z optymalizacją wolnym parametrem w ustawianiu wyzwania jest wielkość problemu, który należy zoptymalizować. Przez „wyzwanie optymalizacji” nie rozumiem takich rzeczy, jak nasz gatunek , w którym odpowiedzi są zwykle wymagane, aby były dokładne / optymalne, a wyzwanie jest oceniane na podstawie ustalonego rozmiaru problemu lub największego rozmiaru problemu, który można obsłużyć w ustalonym czasie. Mam na myśli zwłaszcza wyzwania, w których niedopuszczalne rozwiązania podstawowego problemu są dozwolone, a nawet prawdopodobne, a celem jest zrobienie tego, co możliwe.

Ze względu na definitywność zastanów się nad zajętymi wyzwaniami dla bobrów , chociaż w zasadzie dotyczy to również innych rodzajów wyzwań bez znanych optymalnych rozwiązań (używam tutaj tylko zajętych bobrów, ponieważ zaostrzają one problemy wymienione poniżej). Powiedzmy, że chciałem rzucić wyzwanie znalezieniu najbardziej zajętego bobra Brainfuck. Wolnym parametrem w problemach zajętego bobra jest rozmiar kodu. Nie mogę ustawić wyzwania bez odniesienia się do wielkości kodu. W pewien sposób każda wartość parametru rozmiaru problemu Nstanowi osobne (coraz trudniejsze) wyzwanie. Moje główne pytanie dotyczy tego, w jaki sposób mogę sprawić, by takie wyzwanie zadziałało bez problemów z równoważeniem.

Oczywistym rozwiązaniem jest naprawienie N: „Znajdź kończący się program Brainfuck z Nbajtami kodu źródłowego, który drukuje tyle znaków, ile to możliwe / działa dla tylu tyknięć, ile to możliwe.” Ma to ogromne problemy bilansowania: jeśli wybiorę rozmiar za mały, ktoś może szybko znaleźćnajbardziej ruchliwy bóbr i wyzwanie się skończyło. Jeśli wybiorę zbyt duży rozmiar, optymalne rozwiązanie wydrukuje astronomiczną liczbę znaków przed zakończeniem, co oznacza, że ​​znalezienie takich programów będzie trywialne, a wyzwanie stanie się obowiązkiem / ćwiczeniem z cierpliwości - pozostawia to również terytorium, na którym zajęte bobry można znaleźć programowo, a zamiast tego ludzie będą musieli zacząć formalnie udowadniać swoje wyniki, co wiele osób może nie uważać za bardzo zabawne. Oczywiście problem ten jest bardziej wyraźny w przypadku zapracowanych bobrów niż w innych typach, ze względu na wzrost optymalnych rozwiązań, ale jednak dotyczy innych wyzwań.

Następną opcją byłoby pozostawienie Nnieograniczonego i włączenie go do punktacji poprzez jakąś funkcję. Nawet w przypadku „normalnych” wyzwań prawidłowe wyważenie połączonych wyników jest niezwykle trudne, ale w przypadku zajętych bobrów jest to w zasadzie niemożliwe, ze względu na fakt, że optymalne rozwiązania rosną szybciej Nniż jakakolwiek funkcja obliczeniowa. Oznacza to, że zawsze mogę pokonać najlepszą istniejącą odpowiedź, przechodząc do wystarczająco dużej, Ngdzie mogę łatwo znaleźć program, który działa tak długo, że mogę uzyskać lepszy wynik bez większego wysiłku.

Zastanawiałem się również nad ustaleniem stałej pozycji Ni zezwalaniem ludziom na przesyłanie bobrów na większe, Nktóre będą używane jako kolejne przerywniki remisów. Ma to podobny problem, że ktoś może po prostu „znaleźć równie dobrze zajętego bobra” dla N, tworząc w ten sposób remis, a następnie po prostu przesłać prawie wszystko do następnego, w Nktórym łatwiej jest znaleźć duży wynik (nawet jeśli znalezienie optymalny wynik staje się trudniejszy). W takich przypadkach, jak poradziłbyś sobie z wieloma osobami korzystającymi z tego samego rozwiązania? Zakazanie byłoby również dziwne, gdyby było optymalne.

Może ktoś mógłby uderzyć w środek ziemi, wykształcając domysły na rozsądnym poziomie, Na następnie prosząc o zajęte bobry dla wszystkich rozmiarów w (powiedzmy) 5 bajtach N, aby mieć pewną swobodę w obu kierunkach (a następnie połączyć wyniki ~ 10 w pojedynczą technikę). Nie wydaje mi się to również zadowalające, ponieważ moje początkowe przypuszczenie Nmoże nadal znajdować się daleko poza zasięgiem, co stwarza ciekawe wyzwania.

TL; DR: w przypadku gdy wyzwaniem jest (nieoptymalne rozwiązanie i) optymalizacja problemu o zmiennej wielkości, jak włączyć rozmiar do wyzwania? Idealnie chciałbym, aby ludzie mogli pracować z taką wartością, Nktóra znajduje się w pobliżu górnego końca zakresu rozmiarów użytkowych. Ale na wypadek, gdyby okazało się, że możliwe są do tego optymalne rozwiązania N, byłoby wspaniale, gdyby Nzaczęły się ważyć rozwiązania dla nieco większych , tak aby wyzwanie mogło być kontynuowane z bardziej interesującym rozmiarem problemu.

Martin Ender
źródło
6
Podoba mi się to jako model pytań do pisania, ponieważ nie jest specyficzny dla PPCG. To nie jest „Jak powinniśmy to zrobić?” ale „Jaki jest dobry sposób na to?”. Mogłem sobie wyobrazić, że takie wyzwania są organizowane na stronie dla hobbystów programistycznych lub na zawodach osobistych.
xnor
Umieść tldr na szczycie!
Majora320,
1
@ Majora320 ... ale potem zmień d na w :-)
Luis Mendo

Odpowiedzi:

3

Znajdź następny N.

Wyzwanie oznaczałoby, Nże wnioski powinny rozpocząć się od.

Następnie ludzie przesyłaliby odpowiedzi na bieżąco N. Jeśli okaże się, że dane przesłanie jest optymalne, Nzostaje zwiększone o 1 i proces się powtarza.

Istnieje kilka sposobów, aby to ocenić:

  1. Zdobądź najlepsze zgłoszenie na bieżąco N
  2. Daj punkt najlepszemu obecnie zgłaszaniu Nplus punkt za każde optymalne rozwiązanie
  3. To samo co nr 2, ale także daj osobie, która udowodniła, że ​​dane przesłanie było optymalne.
Nathan Merrill
źródło
1

Daj punkty za rozwiązania w obrębie ograniczonego N.

Pozwól, Naby były w ustalonych granicach. Dolna granica powinna wykluczać oczywiście trywialne odpowiedzi, a górna granica nie powinna być zbyt daleko od dolnej granicy.

Następnie daj 1 punkt za każdą osobę, która ma najlepsze rozwiązanie dla każdego Nw granicach. Jeśli wyższy Noznacza, że ​​rozwiązanie jest trudniejsze, daj im N punktów. (lub jakąś formułę opartą na N).

Ta metoda jest podobna do tego, jak robi to AZsPC , ale nie przyznaje się punktów cząstkowych.

Nathan Merrill
źródło