1

Re: Сумма по всем достижимым вершинам

Решаю тут одну задачу и не могу придумать такой вот алгоритм:

дан ориентированный ациклический граф, в каждой вершине записано число. Хочется для каждой вершины посчитать сумму чисел по всем вершинам, которые достижимы из данной.

Естественно, надо что-нибудь быстрее O(N^3) (N - количество вершин).

2

Re: Сумма по всем достижимым вершинам

Ну вот у меня только такая мысль.... Найти для каждой вершины множество достижимых из нее вершин. Но! Хранить это можно эффективно - в виде битовой карты. То есть скажем множество из 1000 вершин можно представить не больше чем 20 числами типа long long.
Все это можно сделать за один проход в глубину. Обновление тоже очень быстро как битовая операция "или" для массива в 20 чисел.....

3

Re: Сумма по всем достижимым вершинам

Глупый глупый я. Если вершинам приписать веса, равные разным степеням двойки, сконденсировать граф и заюзать этот алгоритм, то получится в точности флойд, а его быстрее, чем за куб не сделать hmm

4 Отредактировано MSDN (2010-07-06 12:46:08)

Re: Сумма по всем достижимым вершинам

Почему? Мы же каждую вершину обходим ровно 1 раз. То есть как бы обход запускаем много раз - но обойдет он в сумме ровно N вершин.
Асимптотика O(N+M*P(n)) где P(n) - время сливания двух битовых карт.

5

Re: Сумма по всем достижимым вершинам

Не ну как бы да если без карт битовых то P(n) = N
тогда время кубическое..... smile

6

Re: Сумма по всем достижимым вершинам

Наверно я не понял условие как всегда, но что мешает брать вершину, запускать поиск в глубину, суммировать все вершины достижимые из неё?
Сложность получается O(V*E) ~= O(V^3).

7

Re: Сумма по всем достижимым вершинам

Мы тут про такой алгоритм и говорили... Просто его можно ускорить (немного) - Чтобы по каждой вершине не ходить по 100 раз, можно замемоизировать - то есть хранить список достижимых вершин из данной. Как это сделать эффективнее чем в лоб написано выше

8

Re: Сумма по всем достижимым вершинам

Ааа smile Я просто прочитал типо что бы было N^3, а надо быстрее ^_^

9

Re: Сумма по всем достижимым вершинам

Так а можно точные размеры кол-ва рёбер и вершин? Не понимаю как можно решать задачу, вам нужно оптимальнео решение? о_о Или которое только даёт Accepted!!! ~_~

10

Re: Сумма по всем достижимым вершинам

Я уже решил ту задачу, там N было не больше 500 и даже три вложенных цикла прошли по времени.