61 lines
5.6 KiB
Markdown
61 lines
5.6 KiB
Markdown
# PREREG — плоский режим: залипающее деление в точке, выведенной из порядка
|
||
|
||
Составлено до кода и до прогона, ветка `signfix-and-gates`. Валерий: «если мы можем определить место
|
||
плоских функций, мы можем там тоже делить на 2»; «а если делить не на 2, а на 2.5?»; «делай».
|
||
|
||
## Основание (замерено, без нового прогона метода)
|
||
|
||
- Потолок по готовому `sweep_full.json`: предложенный метод, у которого 20 плоских задач широких
|
||
скобок (fun3–6) решены чистым делением пополам, дал бы на широких скобках **2441** — ровно
|
||
Чандрупатла. Весь разрыв 3220 − 2441 сидит в плоских задачах.
|
||
- Три флага (`flat`, `flat2`, `flatcreep`) давали под проекцией не больше −22: флаг заменял делением
|
||
ОДИН шаг, после чего модель снова недолетала. Место узнавалось и тут же забывалось.
|
||
- Деление в отношении 1 : k от конца с меньшим |f| (`split_k.py`, сервер): на плоских k = 2.5 — 749
|
||
против 1044 у деления пополам, потолок 2146; с противоположного конца хуже деления (1394). Выигрыш
|
||
даёт суждение «какой конец больше похож на корень». Зависимость от k немонотонна (749 / 816 / 708
|
||
при 2.5 / 3 / 4), выбирать k нельзя — отношение нужно вывести.
|
||
|
||
## Правило (новых констант нет)
|
||
|
||
Вход — тот же признак, что у `flat`: последний шаг был шагом модели, знак f не сменился и
|
||
r = f/f_prev ≥ ¼. С этого момента и **до конца прогона** каждый шаг — деление скобки (режим залипает).
|
||
|
||
**Порядок m — из самого несбывшегося обещания.** У касательного шага на подходе порядка m остаток
|
||
r = (1 − 1/m)^m; это обращается в m ≥ 2 однозначно (функция монотонна, r = ¼ ↔ m = 2). При
|
||
r ≥ 1/e решения нет — m = ∞. m замеряется один раз, при входе.
|
||
|
||
**Точка деления из m.** Для |f| ∝ |x − r|^m концы скобки удалены от корня как
|
||
dA : dB = |FA|^(1/m) : |FB|^(1/m), отсюда точка x = A + t(B − A), t = |FA|^(1/m) / (|FA|^(1/m) + |FB|^(1/m)).
|
||
Она ближе к концу с меньшим |f|; m = ∞ даёт t = ½, т.е. деление пополам — правило само сходит в
|
||
деление там, где порядок не прочитан. Выход точки из скобки или совпадение с прежней — середина
|
||
(действующий запасной путь метода).
|
||
|
||
Режимы:
|
||
- `prestep="flatstick"` — залипание + точка из m (проверяемое правило);
|
||
- `prestep="flatstickmid"` — залипание + середина (**абляция** точки из m: разность двух режимов
|
||
и есть вклад выведенного отношения).
|
||
|
||
Предохранитель (проекция и остальные) применяется к шагу как всегда — гарантия им и держится.
|
||
|
||
## Проверка
|
||
|
||
Сразу полная сетка на сервере. Пары «без / `flatstick` / `flatstickmid`» для предложенного метода и
|
||
для него же с Г2 (повтор рисунка шагов), все 7 предохранителей; девять функций без чтений.
|
||
|
||
| # | ПРОЙДЕНО, если |
|
||
|---|---|
|
||
| **W1** | широкие скобки ниже, чем без флага (3220; с Г2 — 3169) |
|
||
| **W2** | канонические задачи не выше, чем без флага (2806; с Г2 — 2782) |
|
||
| **W3** | гарантия: 0 нарушений в семействе, решено ≥ 193 |
|
||
| **W4** | плоские fun3–6 дешевле |
|
||
| **W5** | сообщается: по задачам против Чандрупатлы на канонических; оба набора против 5228 |
|
||
| **W6** | `flatstick` дешевле `flatstickmid` на плоских — иначе выведенное отношение не заслужено |
|
||
|
||
**Правило остановки:** `flatstick` принимается, только если W1, W2, W3 выполнены одновременно.
|
||
Утверждение «точка из порядка работает» — только при W6 сверх того.
|
||
|
||
**Ожидаемый риск, записан заранее:** ложный флаг на канонических задачах (21.6% шагов у `flat`)
|
||
теперь залипает до конца прогона; на простом корне правило при m ≥ 2 делит в точке корня
|
||
из |f| — линейная сходимость вместо модели. Если W2 провалится, это и будет причиной; выход из
|
||
режима тогда — следующий вопрос, не подгонка этого.
|