Динамика и статика — метрики графов социальных сетей -...
-
Upload
yandex -
Category
Technology
-
view
1.632 -
download
1
description
Transcript of Динамика и статика — метрики графов социальных сетей -...
Как узнать главу заговора
Центральные метрики безмасштабных графов
Сергей Зефиров, [email protected]
Безмасштабные графы
➔ Социальные сети◆ Facebook◆ Twitter◆ математика (число Эрдоша)
➔ Взаимодействие белков➔ “Богатые богатеют”➔ Картина не изменится при
увеличении числа узлов
log(соседи)
log(количество узлов)
Хранение графов
➔ Отношение “узел->набор соседей”◆ просто разбить (`mod` N) и хранить соседей◆ неравномерное разбиение◆ количество соседей = k * размер графа
➔ Матрица связности в гиперразреженном формате◆ тройки (i, j, вес) или даже двойки (i,j)◆ индекс компьютера = hash [i,j] `mod` N◆ гарантия оптимальности умножения
Количество соседей
➔ di - количество соседей➔ A - матрица связности графа (0 или 1)➔ d = diag(A^2)/2➔ Просто, но все равно важно
Коэффициент кластеризации
➔ Отношение количества треугольников у узла к количеству потенциальных треугольников
➔ cci=trianglei/(di*(di-1)/2)➔ Узел 1
◆ 2 существующихтреугольника
◆ 6 потенциальных
1
d
cb
a
Где применяется
➔ Быстрая нетривиальная центральная характеристика
➔ Лидер группы в социальной сети➔ Первый зараженный вирусом узел
◆ Стремительное изменение КК узла сети означает угрозу заражения
◆ Десятые доли секунды - десятки миллионов рублей
Матричная формулировка
➔ A - матрица связности, a - обновление➔ Диагональ A^3/2 - количество
треугольников➔ Просто вывести шаговое обновление:
◆ (A+a)^3-A^3=aA2+2AaA+2a2A+Aa2+a3
➔ A - сотни миллионов, a - тысячи
Промежуточная центральность
➔ sab - количество кратчайших путей из a в b➔ sab(v) - проходящих через v➔ B(v) = Σa/=b/=v sab(v)/sab
◆ Сложная метрика◆ Показывает более важный центр группы
➔ Требует вычисления кратчайших путей➔ Время вычисления O(nm) (m - количество
дуг)
Алгоритм (Graph alg. linear alg.)
Поиск в ширину
d = 0S = <пустая матрица>p = 0, p(r) = 1f = A(r, :)while f .= 0 do d = d + 1 p = p + f S(d, :) = f f = fA׬p
Обновление коэффициентов
while d ≥ 2 do w = S(d,:)×(1+u)÷p w = Aw w = w×S(d−1,:)×p u = u + w d = d − 1
Суммирование значений
b = b + u
S - логическая, f - плав. точка
Результаты
➔ исходники тут:◆ https://github.com/thesz/small-demos/tree/master/betweenness
➔ генератор и несколько вариантов, включая самый первый
➔ время O(nm), память O(N+M) (должна быть)
➔ память растет быстрее: 27M для 2^10 узлов, 101M для 2^11, 388M для 2^12
Обсуждение
➔ ленивость, скорее всего➔ однако!
◆ перевести IntMap на Int32 - экономия и ускорение● не более 109 элементов на узле
◆ сделать специализацию IntMap Double● вместо указателя, тэга и Double только Double● потребуется вдвое меньше памяти
➔ 128G ОЗУ - 221 узлов сети◆ 40 машин/Twitter
k-промежуточная центральность
➔ Промежуточная центральность чувствительна к удалению узлов
➔ Считаем кратчайшие+k пути◆ примерно совпадает с обычной◆ более устойчива к изменению топологии
Литература
➔ SUMMA➔ Статьи про суперразреженные матрицы➔ Incremental Centrality Algorithms for
Dynamic Network Analysis by Miray Kas➔ Вычисление промежуточной
центральности на Cray XMT➔ http://www.graph500.org/