Я пишу некоторый код машинного обучения в MATLAB и представляю граф с матрицей смежности A и кластеризацию графа с матрицей Z, определенной следующими способами.
A: a_ijравно 1, если существует ребро между узлом i и узлом j.0 иначеZ: z_ij равен 1, если узел j находится в кластере i.В противном случае - 0.
Я вычисляю матрицу N, которая представляет собой число ребер между кластерами, определенное следующим образом:
N: n_ij - это число ребер между узлами в кластере i.и узлы в кластере j.n_ii - это число ребер внутри кластера i.
N можно вычислить следующим образом:
N = zAz'
где z 'транспонирован по z.
Если у меня многоузлов, то вычисление занимает некоторое время, но это не проблема.Проблема в том, что я перемещаю узлы из кластера в кластер много раз, и каждый раз, когда я хочу вычислить N.
Итак, проблема в следующем: учитывая, что я знаю N, и что я тогдапереместить узел i из кластера c_1 в кластер c_2, как мне эффективно обновить N?