Информация об изменениях

Сообщение Re[3]: Roles in C# 9. Нужно? от 09.06.2020 2:51

Изменено 09.06.2020 2:53 Sinclair

Re[3]: Roles in C# 9. Нужно?
Здравствуйте, Serginio1, Вы писали:

S>Я вот только не понял зачем IntMulMonoid, IntAddMonoid

Затем, что нам нужны операции умножения и сложения.
Например, если у нас a = bool[,] — матрица смежности для какого-то графа, то MatrixMultiply(a, a) даст нам матрицу "достижимость за 2 перехода", если умножение заменить оператором &&, а сложение — ||.
Повторив умножение log(N) раз, получим транзитивное замыкание матрицы смежности.
Re[3]: Roles in C# 9. Нужно?
Здравствуйте, Serginio1, Вы писали:

S>Я вот только не понял зачем IntMulMonoid, IntAddMonoid

interface IMonoid<T>
{
static T Zero{get;}
static T operator+(T t1, T t2)
static T operator*(T t1, T t2)
}

Про это я писал — это не IMonoid, а IRing.
Плохо то, что в нём мы не можем повторно использовать IntAddMonoid и IntMulMonoid.