В математике и компьютере наука, исторический моноид - это способ представления историй одновременно запущенных компьютерных процессов в виде набора строк, каждая строка представляет отдельную историю процесса. История моноид предоставляет набор примитивов синхронизации (таких как блокировки, мьютексы или соединения потоков ) для обеспечение точек встречи между набором независимо выполняющихся процессов или потоков.
Исторические моноиды встречаются в теории параллельных вычислений и обеспечивают низкоуровневую математическую основу для вычислений процесса, например, CSP - язык последовательных процессов связи или CCS - исчисление взаимодействующих систем. Исторические моноиды были впервые представлены MW Shields.
Исторические моноиды изоморфны моноидам трассировки (частично свободным коммутативным моноидам) и моноид из графов зависимостей. По сути, они являются бесплатными объектами и универсальными. Исторический моноид - это тип полуабелевого категориального продукта в категории моноидов.
Пусть
обозначает набор из n (не обязательно попарно непересекающихся) алфавитов . Пусть обозначает все возможные комбинации строк конечной длины из алфавитов:
(Говоря более формальным языком, - это декартово произведение из свободных моноидов. из . Верхний индекс - это звезда Клини.) Состав в моноиде продукта - компонентный. мудро, так что для
и
затем
для всех в . Определим объединенный алфавит как
(объединение здесь - это объединение множества , а не дизъюнктное объединение.) Для любой строки мы можем выбрать только буквы в некотором с использованием соответствующей строковой проекции . A распределение- это отображение, которое работает на со всеми , разделяя его на компоненты в каждом свободном моноиде:
Для каждого кортеж называется элементарной историей файла. Он служит индикаторной функцией для включения буквы a в алфавит . То есть
где
Здесь обозначает пустую строку. исторический моноид - это подмоноид производного моноида сгенерировано элементарными историями: (где верхний индекс - звезда Клини, нанесенная с покомпонентное определение композиции, как указано выше). Элементы называются глобальными историями, а проекции глобальной истории называются индивидуальными историями .
Использование слова «история» в этом контексте и связь с параллельными вычислениями можно понять следующим образом. Индивидуальная история - это запись последовательности состояний процесса (или потока или машины ); алфавит - это набор состояний процесса.
Буква, встречающаяся в двух или более алфавитах, служит примитивом синхронизации между различными индивидуальными историями. То есть, если такая буква встречается в одной индивидуальной истории, она также должна встречаться в другой истории и служит для «связывания» или «встречи» их вместе.
Рассмотрим, например, и . Алфавит объединения, конечно, равен . Элементарные истории: , , , и . В этом примере индивидуальная история первого процесса может быть , а индивидуальная история второй машины может быть . Обе эти индивидуальные истории представлены глобальной историей , поскольку проекция этой строки на отдельные алфавиты дает индивидуальные истории. В глобальной истории буквы и можно рассматривать как переходящие с буквами и , в том смысле, что их можно переупорядочивать без изменения отдельных историй. Такая коммутация - это просто утверждение, что первый и второй процессы выполняются одновременно и не упорядочены по отношению друг к другу; они (пока) не обменивались сообщениями и не выполняли синхронизацию.
Буква служит примитивом синхронизации, поскольку ее появление отмечает место как в глобальной, так и в индивидуальной истории, которое нельзя переместить. Таким образом, хотя буквы и могут быть переупорядочены после и , их нельзя переупорядочить после . Таким образом, глобальная история и глобальная история имеют как отдельные истории и , что указывает на то, что выполнение может произойти раньше или после . Однако буква синхронизируется, поэтому гарантированно появится после , хотя находится в другом процессе, чем .
Исторический моноид изоморфен моноиду трассировки и, как таковой, является типом полуабелевого категориального продукта в категории моноидов. В частности, исторический моноид изоморфен моноиду трассировки с заданным отношением зависимости по
Проще говоря, это всего лишь формальное утверждение приведенного выше неформального обсуждения: буквы в алфавите можно коммутативно переупорядочить после букв в алфавите , если только это буквы не встречаются в обоих алфавитах. Таким образом, следы - это в точности глобальные истории, и наоборот.
И наоборот, для любого моноида трассировки можно построить изоморфный моноид истории, взяв последовательность алфавиты где диапазоны по всем парам в .