Учитывая неориентированный граф G = (V, E), V1, V2 являются подмножествами V. d(V1,V2)=min d(v1,v2)
,
так что мне нужно, чтобы выяснить, как найти D (V1, V2), в O(|V|+|E|)
нахождения miniums расстояние между двумя подмножествами вершин
, если затем d(V1,V2)=0
в противном случае, я случайно выбрать v1' от V1 и запустить BFS (V1, v1 '), за исключением самой дальней вершины из v1' на v1 '' буду сделать то же для некоторой случайной вершины v2 'из V2. return d (V1, V2) = min {d (v1 ', v2'), d (v1 ', v2' '), d (v1''v2'), d (v1 '', v2 '')}
будет ли это работать? поскольку время выполнения BFS является O (| V | + | E |) предложенный алгоритм будет работать в O (| V | + | E |)
Нет, не будет. Рассмотрим случай, когда оба ваших начальных узла и конечные узлы - это просто не пара узлов с расстоянием 1 на вашем графике. – LumpN
Учитываются ли края? –
@AlexandruBarbarosie no –