Моноидная факторизация
В математике факторизация это — свободного моноида последовательность подмножеств слов, обладающая тем свойством, что каждое слово в свободном моноиде может быть записано как конкатенация элементов, взятых из подмножеств. Теорема Чена- Фокса - Линдона утверждает, что слова Линдона обеспечивают факторизацию. Теорема Шютценбергера связывает определение в терминах мультипликативного свойства с аддитивным свойством. [ нужны разъяснения ]
Пусть А * быть свободным моноидом в алфавите A . Пусть X i — последовательность подмножеств A * индексируется полностью упорядоченным индексов I. набором Факторизация слова w в A * это выражение
с и . Некоторые авторы меняют порядок неравенств.
Теорема Чена – Фокса – Линдона
[ редактировать ]Слово Линдона в полностью упорядоченном алфавите A — это слово, которое лексикографически меньше всех его вращений. [1] Теорема Чена-Фокса-Линдона утверждает, что каждая строка может быть сформирована уникальным способом путем объединения лексикографически невозрастающей последовательности слов Линдона. Следовательно, принимая X l за одноэлементное множество { l } для каждого слова Линдона l с индексным набором L слов Линдона, упорядоченных лексикографически, мы получаем факторизацию A * . [2] Такая факторизация может быть найдена в линейном времени и постоянном пространстве с помощью алгоритма Дюваля. [3] Алгоритм [4] в коде Python :
def chen_fox_lyndon_factorization(s: list[int]) -> list[int]:
"""Monoid factorisation using the Chen–Fox–Lyndon theorem.
Args:
s: a list of integers
Returns:
a list of integers
"""
n = len(s)
factorization = []
i = 0
while i < n:
j, k = i + 1, i
while j < n and s[k] <= s[j]:
if s[k] < s[j]:
k = i
else:
k += 1
j += 1
while i <= k:
factorization.append(s[i:i + j - k])
i += j - k
return factorization
Слова зала
[ редактировать ]Множество Холла обеспечивает факторизацию. [5] Действительно, слова Линдона представляют собой особый случай слов Холла. В статье о словах Холла представлено описание всех механизмов, необходимых для доказательства этой факторизации.
деление пополам
[ редактировать ]Разделение свободного моноида пополам — это факторизация всего с двумя классами X 0 , X 1 . [6]
Примеры:
- А знак равно { а , б }, Икс 0 = { а * б } 1 = {a,
Если X , Y — непересекающиеся множества непустых слов, то ( X , Y ) — делимое пополам A * тогда и только тогда, когда [7]
Как следствие, для любого разбиения P , Q группы A + существует единственное деление пополам ( X , Y ), где X подмножество P , а Y — подмножество Q. — [8]
Теорема Шютценбергера
[ редактировать ]Эта теорема утверждает, что последовательность X i подмножеств A * образует факторизацию тогда и только тогда, когда выполняются два из следующих трех утверждений:
- Каждый элемент А * имеет хотя бы одно выражение в требуемой форме; [ нужны разъяснения ]
- Каждый элемент А * имеет не более одного выражения в требуемой форме;
- Каждому сопряженному классу C соответствует только один из = X и i * , C в Mi сопряжены Mi. в моноидов Mi элементы [9] [ нужны разъяснения ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Лотарь (1997) стр.64
- ^ Лотарь (1997) стр.67
- ^ Дюваль, Жан-Пьер (1983). «Факторизация слов по упорядоченному алфавиту». Журнал алгоритмов . 4 (4): 363–381. дои : 10.1016/0196-6774(83)90017-2 . .
- ^ «Факторизация Линдона — Алгоритмы конкурентного программирования» . cp-algorithms.com . Проверено 30 января 2024 г.
- ^ Ги Мелансон, (1992) « Комбинаторика деревьев Холла и слов Холла », Журнал комбинаторной теории , 59A (2), стр. 285–308.
- ^ Лотарь (1997) стр.68
- ^ Лотарь (1997) стр.69
- ^ Лотарь (1997) стр.71
- ^ Лотарь (1997) стр.92
- Лотер, М. (1997), Комбинаторика слов , Энциклопедия математики и ее приложений, том. 17, Перрен, Д.; Ройтенауэр, К.; Берстель, Дж.; Пин, Ж.-Э. ; Пирилло, Г.; Фоата, Д.; Сакарович Дж.; Саймон, И.; Шютценбергер, член парламента; Шоффрут, К.; Кори, Р.; Линдон, Р.; Рота, Г.-К. Предисловие Роджера Линдона (2-е изд.), Cambridge University Press , ISBN 0-521-59924-5 , Збл 0874.20040