Например, у меня есть матрица смежности symri c (без self-l oop), т.е.
A =
[
[0, 1, 1, 0, 0],
[1, 0, 1, 0, 1],
[1, 1, 0, 1, 0],
[0, 0, 1, 0, 1],
[0, 1, 0, 1, 0]]
Затем я получил массив метки кластера i, связанный с этим графом , т.е.
cluster = [1,1,2,2,3]
Это означает, что узел 1 и узел 2 находятся в одной группе, узел 3 и узел 4 находятся в одной группе, узел 5 находятся в независимой группе.
Вопрос в том, как я могу получить сумму ребер внутри групп и между группами,
Внутри групп: означает, что граница между узлами с одной и той же меткой кластера, например, узел 1 и узел 2 являются в той же группе, поэтому сумма для них равна 1, то же самое для узла 3 и узла 4. Для узла 5 его 0.
Между группами: означает границу между узлами, которые имеют разные метки кластера, например, группа 1 и группа 2, это означает, что суммируется край, узел 1, узел 3, узел 1, узел 4, узел 2, узел 3, узел 2, узел 4. Ответ 2 между группой 1 и группой 2.
затем вернуть 2d-симметричный c массив, содержащий результат, т.е.
* 1 016 *