Алгоритм Дийсктра в O ((V + E) * W)

Допустим, у меня есть ориентированный граф G (V, E) с целыми положительными весами на его ребрах. Если я знаю, что для каждого ребра e ∈ E вес (e) ∈ {0,1, .. 2 ^ W} (где W является относительно небольшим), как я могу реализовать алгоритм Djsktra в O ((V + E) * W)?

Я попытался модифицировать алгоритм Dial, где, если бы weight (e) ∈ {0,1, .., W}, я мог бы использовать ведра и реализовать dijsktra в O (V * W + E), но я не могу добиться хороших результатов.

0
Учитывая, что алгоритм равен O (V W + E) *, он уже равен O ((V + E) W) , поскольку первый является сложным быстрее .
добавлено автор Willem Van Onsem, источник
Я не думаю, что было бы разумно использовать 2 ^ W сегмента, так что это, вероятно, должно быть реализовано с другой структурой данных. Так что я думаю, что мы не можем использовать алгоритм набора номера, как здесь.
добавлено автор Epitheoritis 32, источник

Ответов нет

0