Сообщение 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) раз, получим транзитивное замыкание матрицы смежности.
S>Я вот только не понял зачем IntMulMonoid, IntAddMonoid
Затем, что нам нужны операции умножения и сложения.
Например, если у нас a = bool[,] — матрица смежности для какого-то графа, то MatrixMultiply(a, a) даст нам матрицу "достижимость за 2 перехода", если умножение заменить оператором &&, а сложение — ||.
Повторив умножение log(N) раз, получим транзитивное замыкание матрицы смежности.
Re[3]: Roles in C# 9. Нужно?
Здравствуйте, Serginio1, Вы писали:
S>Я вот только не понял зачем IntMulMonoid, IntAddMonoid
Про это я писал — это не IMonoid, а IRing.
Плохо то, что в нём мы не можем повторно использовать IntAddMonoid и IntMulMonoid.
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.