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

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




 Markdown to forum
У меня есть вот такой маркдаун: «Маркдаун»
Можно его как-то автоматически преобразовать в форум-пригодный вид?

 Re: Markdown to forum
Аватара пользователя
Хорошая LLM должна справиться. Либо сразу попросить переделать текст, потом посмотреть глазами на результат и попросить поправить косяки, либо попросить написать конвертер. Первое займет минут 5 времени, второе думаю пару часов.

(Результат после двух подпинываний)

Техническое задание: Адаптивный пуловый генератор CRT-условий (gp2c-совместимая версия, ред. 2.1)

$$
\begin{array}{|l|l|}
\hline
\textbf{Параметр} & \textbf{Значение} \\
\hline
\textbf{Версия} & 2.1 \\
\textbf{Дата} & \text{2026-04-19} \\
\textbf{Статус} & \text{Утверждено к реализации} \\
\textbf{Целевой компилятор} & \texttt{gp2c -g} (\text{PARI/GP} \rightarrow \text{C}) \\
\hline
\end{array}
$$

---

1. Цель
Разработать алгоритм, генерирующий пул ранжированных CRT-систем $\{(x_0^{(k)}, M^{(k)}, \{M_i^{(k)}\})\}_{k=1}^K$, оптимизированных для поиска цепочек длины $L$ с заданным количеством делителей $\tau(x+i)=T$. Алгоритм должен динамически подбирать структуру модулей под любое $T \ge 2$, контролировать реальный шаг перебора через $\log(\text{lcm}(M_i))$ и полностью компилироваться в gp2c без предупреждений.

2. Термины и обозначения

$$
\begin{array}{|l|l|l|l|}
\hline
\textbf{Термин} & \textbf{Обозначение} & \textbf{Тип} & \textbf{Определение} \\
\hline
\text{Длина цепочки} & L & \texttt{int} & \text{Количество последовательных чисел} \\
\text{Целевое } \tau & T & \texttt{int} & \text{Требуемое количество делителей} \\
\text{Модуль позиции } i & M_i & \texttt{int} & \texttt{conds[k][i]}\text{, гарантирует } \tau(M_i) \mid T \\
\text{Остаточное } \tau & \tau_R^{(i)} & \texttt{int} & T / \tau(M_i)\text{. Допустимый набор: } \{2,4,8,12\} \\
\text{Бюджет шага} & B_{\text{lcm}} & \texttt{real} & \texttt{max\_logLcm}\text{. Ограничивает } \log(\text{lcm}(M_0,\dots,M_{L-1})) \\
\text{Начальное смещение} & x_0 & \texttt{int} & \text{Решение CRT: } x_0+i \equiv 0 \pmod{M_i} \\
\text{Шаг CRT} & M & \texttt{int} & \text{lcm}(M_0,\dots,M_{L-1}) \\
\text{Вес вероятности} & w(\tau_R) & \texttt{real} & \text{Эмпирический приоритет остатка} \\
\hline
\end{array}
$$

3. Математическая модель

3.1. Допустимые остатки и веса
Эмпирически установлено, что остатки $\tau_R=3$ и $\tau_R=6$ требуют редких структур ($p^2$ или $p_1p_2^2$) и катастрофически снижают плотность поиска. Они жёстко отсекаются.

$$
\begin{array}{|l|l|l|l|l|l|}
\hline
\tau_R & 4 & 8 & 12 & 2 & 6, 3 \\
\hline
w(\tau_R) & 1.00 & 0.55 & 0.05 & 0.15 & \textbf{0.0 (\text{отсев})} \\
\hline
\end{array}
$$

3.2. Бюджет по НОК
Шаг перебора определяется $M = \text{lcm}(M_0,\dots,M_{L-1})$. Алгоритм обязан вычислять и ограничивать log(lcm(M_i)). Контроль через $\sum \log M_i$ не допускается как математически неточный.

3.3. Корреляции CRT
Структура CRT создаёт положительную корреляцию делителей соседних чисел. Совместная вероятность оценивается как:
$$P_{\text{chain}} \approx \prod_{i=0}^{L-1} P(\tau(R_i)=\tau_R) \cdot \rho^{\frac{L(L-1)}{2}}, \quad \rho \approx 1.05\dots1.08$$

4. Архитектура и этапы алгоритма

Этап 1: Инициализация и пул простых
  • Предвыделение статических матриц pool_conds[K,L], pool_lcm[K], pool_scores[K].
  • Генерация массива простых до primepi(max(2000, L+500)).

Этап 2: Распределение малых простых
  • Для каждого $p \le \min(L, 60)$ выбирается offset с минимальным числом конфликтов делимости.
  • offset рандомизируется среди допустимых для обеспечения разнообразия пула.
  • $p$ назначается позициям, где $T \bmod \tau(M_i \cdot p) == 0$.

Этап 3: Добивка с контролем lcm
  • Цикл продолжается, пока log(pool_lcm[k]) < max_logLcm.
  • На каждом шаге ищется позиция с максимальным $\tau_R > 8$.
  • Подбирается наименьшее $p > L$, не использованное в текущей системе.
  • Проверяется: log(lcm(current_lcm, p^e)) <= max_logLcm и допустимость нового $\tau_R$.
  • При успехе обновляется pool_conds[k] и pool_lcm[k].

Этап 4: Решение CRT и фильтрация
  • Последовательное применение chinese(). При несовместности $\gcd(M_i,M_j) \nmid |i-j|$ система помечается score = -1.0.
  • Жёсткий фильтр: если хотя бы одна позиция имеет $\tau_R \in \{3,6\}$ или $\tau_R > 12$, система отбраковывается.
  • Скор рассчитывается как $S_k = \frac{\sum w(\tau_R^{(i)}) \cdot \prod_{p \le L, p|M_i}(1-1/p)}{\log(M)}$.

Этап 5: Сортировка и дедупликация
  • Пул сортируется по убыванию $S_k$.
  • Удаляются дубликаты по паре $(x_0, M)$. Хвост матрицы обнуляется.

5. Требования к gp2c-совместимости (Фактические)

  1. Комментарии: Запрещён синтаксис //. Использовать только /* ... */ или \ для конца строки.
  2. Управление потоком: Ключевое слово continue отсутствует в GP. Использовать next.
  3. Динамические структуры: В строгом режиме gp2c -g не рекомендуется использовать List(), mapcreate(), concat() в горячих циклах. Предпочтительны статические vector()/matrix() с предварительным выделением памяти.
  4. Область видимости: Все переменные должны быть объявлены в my(...) в начале тела функции.
  5. Синтаксис выражений:
    • Стандартное деление / допустимо без явного приведения типов.
    • Конструкции if(cond, action); полностью валидны.
    • Критично лишь корректное закрытие всех скобок (), {} и [], а также отсутствие разрыва операторов if(...) символом новой строки внутри списка аргументов.

6. Выходные данные
Матрица размера K × (5 + L):
[ [L, T, x0, M, score, M_0, ..., M_{L-1}], ... ]
Отсортирована по убыванию score. Недействительные системы имеют score = -1.0 или нулевые строки.

7. Вспомогательные функции

$$
\begin{array}{|l|l|l|l|}
\hline
\textbf{Функция} & \textbf{Вход} & \textbf{Выход} & \textbf{Назначение} \\
\hline
\texttt{analyze\_chains} & \text{matrix, int, int} & \text{int(1/0)} & \text{Построчная статистика: плотности по позициям, распределение совпадений, оценка корреляции CRT} \\
\texttt{generate\_crt\_pool} & \text{int, int, real, int, int, int, int} & \text{matrix} & \text{Основной генератор с контролем lcm и динамическим подбором структур} \\
\texttt{search\_chains\_fast} & \text{matrix, int, int, int} & \text{int} & \text{Оптимизированный поиск с прогресс-баром и ранним выходом} \\
\hline
\end{array}
$$

8. Критерии успеха

  1. gp2c: gp2c-run -g script.gp выполняется без ошибок и предупреждений. Время компиляции < 2с.
  2. Математика: Пул содержит только системы с $\tau_R \in \{2,4,8,12\}$. Бюджет log(lcm) не превышен. CRT-совместность гарантирована.
  3. Производительность: При $L=6, T=24, \log M \approx 28$ генерация пула $K=20$ занимает < 10 мс в скомпилированном виде. Поиск 50 цепочек на $10^5$ шагов занимает < 3 сек.
  4. Стабильность: Детерминированность при seed, корректная работа для $T \in \{24, 36, 48, 96, 192\}$, $L \le 12$.
  5. Анализ: analyze_chains выводит статистику по каждой системе отдельно, позволяя выявлять "узкие" позиции ($\tau_R$ с низкой плотностью).

9. Эмпирические ограничения и рекомендации
  • Для $T=24$ оптимальна конфигурация $\tau_R = [4,4,4,4,4,4]$ или $[4,4,4,4,8,8]$ с $\log(\text{lcm}) \approx 26\text{--}29$.
  • При $T > 96$ или $L > 10$ рекомендуется увеличивать K до 30–50 и ослаблять max_logLcm на 10–15%.
  • Алгоритм использует жадную эвристику с оценкой lcm. Для $T > 192$ возможна частичная деградация плотности; в таких случаях предпочтительно увеличивать pool_size, а не бюджет.

---
✅ Документ готов к использованию как эталонная спецификация для разработки, компиляции и сопровождения пулового генератора CRT-условий.

 Re: Markdown to forum
mihaild
Фигасе! Вы волшебник!

 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group