У меня такое ощущение, что может быть решение по следующим строкам, но это далеко не полное решение.
Пусть S - подмножество вершин. Для каждой вершины V в графе рассмотрим множество D_S (V), которое я определяю следующим образом: D_S (V) = {V}, если V в S, и в противном случае D_S (V) является объединением {V} с множества D_S (W) для всех прямых потомков W из V. (То есть, это «все возможные потомки V, но останавливайте рекурсию всякий раз, когда вы нажимаете на элемент V».) Вопрос в том, можем ли мы найти набор S такой, что размер S равен O (f (N)), а также D_S (V) имеет размер O (g (N)) для всех V и где f и g асимптотически сублинейны? (Может быть, мы можем достигнуть sqrt для обоих, например.)
Если мы сможем это найти, то предлагаю следующую стратегию. Для предварительной обработки создайте для каждого U в S хеш-таблицу, содержащую все вершины, в конечном итоге доступные из U. Это может быть достигнуто в O (f (N) * M); это не обязательно лучше, чем O (N^2), но лучше, чем O (M * Q), по крайней мере.
Теперь, чтобы ответить на запрос «является достижимым из V?», Это тривиально, если V в S. В противном случае мы проверяем, является ли V = U, и в этом случае это также тривиально. Наконец, мы применяем тот же процесс ко всем потомкам V, рекурсивно, возвращая «да», если ответ «да» через один из двух случаев выше, но «нет», только если мы никогда не находим U. Эта рекурсия занимает O (g (N)).
Остается вопрос о том, как выбрать S. Я думаю, что если граф возникает из какого-то процесса, где внешняя степень следует степенному закону, можно просто взять вершины sqrt (N) с наивысшей степенью.Но, например, если у нас есть граф на N = 2 * K вершин (i, 0) и (i, 1), с K^2 ребрами: от каждого (i, 0) до каждого (j, 1); то нет подходящего подмножества S. Но, может быть, графики, которые не имеют подходящего S, по необходимости нуждаются в некоторой степени однородности, которую мы можем использовать ... Или, может быть, нет. Я не знаю. Любые идеи, дайте мне знать!
Даже в DAG может существовать 'O (n^2)' ребер (если только не указано, что граф разрежен), поэтому вы ищете сублинейное время, фактически ... И 'Этот вопрос может быть легко решена в O (n) 'Nope по той же причине. – amit
Мой плохой. Я имел в виду O (n + m). – Badf
Являются ли запросы ответными в автономном режиме? –