Алгоритм потоковой передачи для подсчета треугольников на графике

cs.stackexchange https://cs.stackexchange.com/questions/127839

Вопрос

Как описано в ссылке, алгоритм (см. Внизу) предполагает выводить оценку $ \ Hat T $ для # из треугольников в данном графике $ g= (v, e) $ , обозначает $ T $ . Написано, что «это может быть легко показано», что $$ E [\ Hat T]= T $$ Но, к сожалению, я не вижу этого. Попытка анализировать $ E [\ Hat T] $ , думаю следующим образом:

    .
  • в строке 1, обозначим вероятность случайным образом (и равномерно) Выберите край, который является частью треугольника, как $ p $ . Поскольку треугольники могут поделиться краями, $$ \ frac t m \ le p \ le \ frac {3t} m $$ Например, рассмотрим следующий случай:

     Введите описание изображения здесь

    Центральный треугольник не добавляет новых ребер на количество возможностей для выбора ребра, которая является частью треугольника. Вы можете представить себе другую конфигурацию, в которой есть только 3 внешние треугольники, и они не касаются друг друга (в этой конфигурации, мы не увидим центральный 4-й треугольник). В обоих случаях ((случай I) 4 треугольниках, как видно на изображении; (Case II) 3 неразмерных треугольников), вероятность выбрать край, которая является частью треугольника, составляет 1 (хотя количество треугольников отличается). < / P >.

  • в строке 2, вероятность, чтобы равномерно выбирать на случайной вершине, которая «закрывает треугольник» с краем с предыдущего шага, точно $ \ FRAC 1 {N -2} $ .

Поэтому я вижу только что

$$ T \ le e [\ hat t] \ le 3t $$

Что я скучаю?


Другой вопрос, который у меня есть относительно строки 3. Поток заказывается, и мы сначала выбираем случайное преимущество $ (u, v) $ (строка 1), Затем случайная вершина $ W $ w $ из $ v \ backslash \ {u, v \} $ (линия 2). Я чувствую, что анализ должен учитывать, что в строке 3 мы проверяем, стоит ли $ (u, w) $ и $ ( v, w) $ появляются после $ (u, v) $ в потоке. Может быть, после того, как я поймете ответ на мой первый вопрос, это будет понятнее.


<Сильный> алгоритм:

  1. Выберите краю $ (u, v) $ равномерно на случайном из потока.
  2. Выберите вершину $ W $ равномерно у случайных из $ v \ backslash \ {u, v \} $ < / span>
  3. Если $ (u, w) $ и $ (v, w) $ появится после < SPAN CLASS= «Математический контейнер»> $ (u, v) $ в потоке, затем Выход $ m (N-2) $ . Else, Выход $ 0 $ .
  4. Кроме того, хотя я не видел написано, я считаю, что есть предположение, что $ V $ известно впереди.


    Ссылка: поток данных Лекция лекций проф. Amit Chakrabarti, раздел "15.3 Подсчет треугольника", httplow noreferrer"> https://www.c.dartmouth.edu/~ac/teach/data-streams-lecnotes.pdf


    С наилучшими пожеланиями

Это было полезно?

Решение

Пусть $ (u, v, w) $ Будьте определенным треугольником в потоке и предположим, что край $ (u, v) $ появляется первым. Вероятность, которую мы выбрали $ (u, v) $ на первом шаге, - 1 / m $ . Вероятность, которую мы выбрали $ W $ на втором этапе, - $ 1 / (N-2) $ . Следовательно, вероятность, которую мы выбрали треугольник $ (u, v, w) $ - 1 $ / [M (N-2 )] $ . Обозначим это событие по $ e_ {u, v, w} $ .

Если $ (u_1, v_1, w_1) $ и $ (u_2, v_2, w_2) $ - это два разных треугольника, которые события $ e_ {u_1, v_1, w_1} $ и $ e_ {u_2, v_2, W_2} $ несерьезно (обратите внимание, что треугольники не должны быть несешенными). Поэтому, если есть $ t $ Trangles, то вероятность того, что мы выбрали один из них, именно $ t / [m ( N-2)] $ . Следовательно, ожидаемый выход алгоритма является точно $ T $ .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top