2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Обсуждение FindStat
Сообщение28.05.2023, 17:56 
Аватара пользователя


22/11/13
02/04/25
549
Относительно недавно узнал о существовании ресурса FindStat.

Из чего он состоит? В базе данных сайта имеются коллекции, отображения и statistic. Коллекция - это какой-нибудь комбинаторный объект (например перестановки, бинарные слова, бинарные деревья, слова Дика, разбиения множества и т.п.), отображение - это преобразование элементов одной коллекции в элементы другой коллекции, и, наконец, statistic - это преобразование элементов коллекции в целые числа.

Для чего все это нужно? Сайт автоматически находит последовательность отображений начиная с определенной коллекции и заканчивая на statistic.

Возьмем, к примеру,
$$b_1(2^m(2n+1))=\sum\limits_{k=0}^{m}b_1(2^kn)$$
Тогда если
$$s_1(n)=\sum\limits_{k=0}^{2^n-1}b_1(k)$$
то у нас получается что $b_1(n)$ это A347205, а $s_1(n)$ это числа Каталана (A000108).

Теперь смотрим какие коллекции у нас содержат $s_1(n)$ элементов для заданного $n$. На выбор у нас аж три коллекции: бинарные деревья, слова Дика и упорядоченные деревья. Начнем с бинарных деревьев. Заходим на SageMathCell и суем в окошко следующий код:
Код:
@cached_function
def b(x):
    if x == 0: return 1

    n = x // 2
    fn = n & -n
    return b(n) + b(n - fn) if x % 2 == 0 else b(n)

avd = lambda n: BinaryTrees(n)
dst = lambda n: [i for i in range(2^(n-1)) for _ in range(b(i))]

qu = findstat([(avd(n), dst(n)) for n in range(1, 8)], depth=4)
qu[:2]

Через какое-то время нам выходит следующее:
Код:
0: St000289oMp00131oMp00017 (quality [100, 100])
1: St000289oMp00105oMp00094oMp00102oMp00141 (quality [100, 100])

Если выходит quality [100, 100], значит все удалось. Теперь копируем последовательность отображений и суем ее в адресную строку после последней палочки на вот этой странице. Т.е. до у нас https://www.findstat.org/StatisticsDatabase/, а после https://www.findstat.org/StatisticsDatabase/St000289oMp00131oMp00017.

Что же мы видим на данной странице? Мы начали с коллекции "бинарные деревья". Затем через отображение превратили элементы этой коллекции в элементы коллекции "перестановки". Те, в свою очередь, превратили в элементы коллекции "бинарные слова", а завершили все это дело с помощью statistic "бинарные слова -> целые числа".

Что получилось в результате? Каждому числу Каталана соответствуют бинарные деревья определенной длины. Им соответствуют числа от $0$ до $2^n-1$. Сколько раз повторяется число $k$ в результирующей последовательности связанной с деревьями определенной длины? Все очень просто - $b_1(k)$ раз.

Для первого поста я думаю пока хватит, дополнительные детали добавлю в ходе обсуждения.

 Профиль  
                  
 
 Re: Обсуждение FindStat
Сообщение29.05.2023, 12:37 
Аватара пользователя


22/11/13
02/04/25
549
Доступно ли я описал идею назначения сайта? Т.е. она сводится к следующему. Пусть $a(n)$ - произвольная целочисленная последовательность, такая, что $a(n)\in\mathbb{N}$. Кроме того, у $a(n)$ должна быть комбинаторная интерпретация, т.е. правило по которому ее можно получить. Комбинаторная интерпретация должна соответствовать определенной коллекции из представленных в базе. Второй вариант - это когда используя определенную коллекцию мы отсеиваем в ней некоторые элементы.

Дальше мы ищем некую последовательность $b(n)$, которая на определенных промежутках суммируется до $a(n)$. Здесь важно, чтобы последовательные количества суммируемых элементов соответствовали количествам элементов определенной длины одной из представленных в базе коллекции. В моем случае это коллекция "бинарные слова". Если слова начинаются не только с единицы (а оно так и есть), то мы получаем для определенной длины слова определенное количество результирующих целых чисел с помощью statistic "бинарные слова - целые числа". Получается, они принадлежат множеству $\left\lbrace0,1,2,\cdots,2^n-1\right\rbrace$. Другие statistic я пока не изучал.

Теперь еще раз приведу пример. Пусть $a(n)$ это A113227,т.е. количество перестановок, в которых отсутствует паттерн $1-23-4$. Т.е. мы начинаем с коллекции "перестановки" и отсеиваем в ней некоторые элементы. Потом ищем последовательность $b(n)$, которая суммируется до $a(n)$ на промежутках от $0$ до $2^n-1$. В моем случае я начинал с $b(n)$ и узнал что она суммируется до $a(n)$. Последовательность задается следующим образом:
$$b(2^m(2n+1))=\sum\limits_{k=0}^{m}(k+1)b(2^kn)$$
Далее используем следующий код:
Код:
def occurrences(pi):
    n = len(pi)
    return sum(1 for k in range(n) for j in range(k-1) for i in range(j)
               if pi[i] < pi[j] < pi[j+1] < pi[k])
                               
@cached_function
def b(N):
    if not N:
        return 1
    m = valuation(N, 2)
    n = (N // 2^m - 1) / 2
    return sum((k+1)*b(2^k*n) for k in range(m+1))

avd = lambda n: [pi for pi in Permutations(n) if not occurrences(pi)]
dst = lambda n: [i for i in range(2^(n-1)) for _ in range(b(i))]

qu = findstat([(avd(n), dst(n)) for n in range(1, 8)], depth=4)
qu[:2]

Код был любезно представлен неким Мартином Руби вот здесь. Благодаря нему я как раз узнал о существовании сайта FindStat. Все следующие проверки можно осуществлять чуть-чуть видоизменяя этот код, что я и делал. Далее программа возвращает нам
Код:
0: St000289oMp00131oMp00087oMp00235oMp00064 (quality [100, 100])
1: St001879oMp00065oMp00175oMp00081oMp00070 (quality [6, 22])

Т.е. нашлась одна последовательность отображений с абсолютным соответствием, которая стартует с урезанной коллекции "перестановки", осуществляет четыре отображения и завершает все statistic "бинарные слова - целые числа". Вот тут лежит иллюстрация. Таким образом мы получили последовательность отображений, которая результирует в целые числа, а количество целых чисел равных $k$, сопоставляемых с элементами определенной длины равно $b(k)$.

Так что если у вас есть $a(n)$ с определенной комбинаторной интерпретацией и $b(n)$, которая суммируется до $a(n)$ на определенных промежутках, то вы можете поискать последовательность отображений с помощью сайта FindStat. У меня таких последовательностей много, но последовательность отображений находится далеко не всегда.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Stratim, YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group