математика — есть ли стандартная абстракция для полуколец или моноидов в C ++?

Обеспечивает ли boost или любую другую общую библиотеку C ++ полукольцо или же моноид абстракции (например, шаблон класса)?

У меня есть несколько алгоритмов, которые я хотел бы выразить в терминах этих абстрактных структур, но до сих пор я ничего не встречал. Я могу написать свой, но в идеале это будет в библиотеке, которую я уже использую, например, boost.

Спасибо!

13

Решение

SGI STL имеет MonoidOperation концепция. Например мощность функция реализована для MonoidOperation.

Boost.Graph библиотека также определяет Моноидная концепция.

В дополнение к уже предложил Элементы программирования вы можете посмотреть на Примечания по программированию Александр Степанов (один из авторов НКП).
Заметки находятся в свободном доступе и частично совпадают с НКП книга.

Есть разница в стиле между НКП а также ЗаметкиНКП очень кратко, как учебник математики, но Заметки более «неформальные» — есть несколько небольших историй и т. д.

Кстати, оба имеют некоторое обсуждение упомянутых выше мощность реализация функции.

Постскриптум Есть великие разговоры Александра Степанова:

P.P.S. Сборник трудов Александра А. Степанова

9

Другие решения

Насколько мне известно, стандартная библиотека C ++ не имеет абстракций вокруг этих структур. Однако Алексей Степанов, изобретатель STL, написал книгу под названием Элементы программирования в которой он пишет множество полезных функций, которые работают с моноидами, группами, бинарными операторами, унарными функциями и т. д. Это не обязательно стандарт, но это может быть хорошей отправной точкой для дальнейшего изучения.

Надеюсь это поможет!

7

Boost.Operators предоставляет удобный способ определения групп арифметических операторов для класса.

Предварительно определенные понятия (только синтаксическая типизация утки) включают кольцо, упорядоченное кольцо, евклидово кольцо, упорядоченное евклидово кольцо, поле и упорядоченное поле. Вы должны быть в состоянии определить свои собственные классы для полукольца или моноида, производные от соответствующих групп классов операторов.

3
По вопросам рекламы [email protected]