10.1 From Basic Concepts to a Generic AlgorithmWe extend the cost func dịch - 10.1 From Basic Concepts to a Generic AlgorithmWe extend the cost func Việt làm thế nào để nói

10.1 From Basic Concepts to a Gener

10.1 From Basic Concepts to a Generic Algorithm
We extend the cost function to paths in the natural way. The cost of a path is the
sum of the costs of its constituent edges, i.e., if p = e1 , e2 , . . . , ek then c(p) =
1≤i≤k c(ei ). The empty path has cost zero.
For a pair s and v of nodes, we are interested in a shortest path from s to v. We
avoid the use of the definite article “the”, since there may be more than one shortest
path. Does a shortest path always exist? Observe that the number of paths from s to
v may be infinite. For example, if r = pCq is a path from s to v containing a cycle
C, then we may go around the cycle an arbitrary number of times and still have a
path from s to v, see Figure 10.2. More precisely, p is a path leading from s to u,
C is a path leading from u to u and q is a path from u to v. Consider the path r (i)
which first uses p to go from s to u, then goes around the cycle i times, and finally
follows q from u to v. The cost of r (i) is c(p) + i • c(C) + c(q). If C is a so-called
negative cycle, i.e., c(C) < 0 then c(r (i+1) ) < c(r (i) ). In this situation there is no
shortest path from s to v. Assume otherwise, say P is a shortest path from s to v.

PSfrag replacements
10.1 From Basic Concepts to a Generic Algorithm
s p
u
q
v
s p
u
(2)
191
C
C
q
v
...
Fig. 10.2. A non-simple path pCq from s to v.
Then c(r (i) ) < c(P ) for i large enough1 and so P is not a shortest path from s to v.
We will next show that shortest paths exist if there are no negative cycles.
Lemma 25. If G contains no negative cycle and v is reachable from s then a shortest
path from s to v exists. Moreover, the shortest path is simple.
Proof. Assume otherwise. Let be the minimal cost of a simple path from s to v and
assume that there is a non-simple path r from s to v of cost less than . Since r is
non-simple we can, as in Figure 10.2, write r as pCq, where C is a cycle and pq is
a simple path. Then ≤ c(pq) and hence c(pq) + c(C) = c(r) < ≤ c(pq). So
c(C) < 0 and we have shown the existence of a negative cycle.
Exercise 170. Strengthen the lemma above and show: if v is reachable from s then a
shortest path from s to v exists iff there is no negative cycle that is reachable from s
and from which one can reach v.
For two nodes s and v, we define the shortest path distance µ(s, v) from s to v as

+∞if there is no path from s to v

µ(s, v) := −∞if there is no shortest path from s to v


c(a shortest path from s to v) otherwise.
Observe that if v is reachable from s, but there is no shortest path from s to v,
then there are paths of arbitrarily large negative cost. Thus it makes sense to define
µ(s, v) = −∞ in this case. Shortest paths have further nice properties which we
state as exercises:
Exercise 171 (Subpaths of Shortest Paths.). Show that subpaths of shortest paths
are themselves shortest paths, i.e., if a path of the form pqr is a shortest path than q
is also a shortest path.
Exercise 172 (Shortest Path Trees.). Assume that all nodes are reachable from s
and that there are no negative cycles. Show that there is an n-node tree T rooted as
s such that all tree paths are shortest paths. Hint: assume first that shortest paths are
unique and consider the subgraph T consisting of all shortest paths starting at s. Use
the preceding exercise to prove that T is a tree. Extend to the case when shortest
paths are not unique.
1
i > (c(p) + c(q) − c(P ))/|c(C)| will do.

192
10 Shortest Paths
Our strategy for finding shortest paths from a source node s is a generalization of
the BFS algorithm in Figure 9.3. We maintain two NodeArrays d and parent. Here
d[v] contains our current knowledge about the distance from s to v and parent[v]
stores the predecessor of v on the currently shortest path to v. We usually refer to
d[v] as the tentative distance of v. Initially, d[s] = 0 and parent[s] = s. All other
nodes have infinite distance and no parent.
The natural way to improve distance values is to propagate distance information
across edges. If there is a path from s to u of cost d[u] and e = (u, v) is an edge out
of u, then there is a path from s to v of cost d[u] + c(e). If this cost is smaller than
the best previously known distance d[v], we update d and parent accordingly. This
process is called edge relaxation.
Procedure relax(e = (u, v) : Edge)
if d[u] + c(e) < d[v] then d[v] := d[u] + c(e);
parent[v] := u
Lemma 26. After any sequence of edge relaxations: If d[v] < ∞, then there is a
path of length d[v] from s to v.
Proof. We use induction on the number of edge relaxations. The claim is certainly
true before the first relaxation. The empty path is a path of length zero from s to v and
all other nodes have infinite distance. Consider next a relaxation of edge e = (u, v).
By induction hypothesis, there is a path p of length d[u] from s to u and a path q of
length d[v] from s to v. If d[u] + c(e) ≥ d[v], there is nothing to show. Otherwise,
pe is a path of length d[u] + c(e) from s to v.
The common strategy of the algorithms in this chapter is to relax edges until
either all shortest paths are found or a negative cycle is discovered. For example, the
fat edges in Figure 10.1 give us the parent information obtained after a sufficient
number of edge relaxations: nodes f , g, i, and h are reachable from s using these
edges and have reached their respective µ(s, •) values 2, −3, −1, and −3. Node b,
j, and d form a negative cost cycle so that their shortest path cost is −∞. Node a is
attached to this cycle and thus µ(s, a) = −∞.
What is a good sequence of edge relaxations? Let p = e1 , . . . , ek be a path
from s to v. If we relax the edges in the order e1 to ek , we have d[v] ≤ c(p) after
the sequence of relaxations. If p is a shortest path from s to v, then d[v] cannot drop
below c(p) by the preceding Lemma and hence d[v] = c(p) after the sequence of
relaxations.
Lemma 27 (Correctness Criterion). After performing a sequence R of edge relax-
ations, we have d[v] = µ(s, v) if for some shortest path p = e1 , e2 , . . . , ek from s
to v, p is a subsequence of R, i.e., there are indices t1 < t2 < • • • < tk such that
R[t1 ] = e1 , R[t2 ] = e2 , . . . , R[tk ] = ek . Moreover, the parent information defines a
path of length µ(s, v) from s to v.
Proof. Here is a schematic view of R and p: the first row indicates time. At time t 1 ,
the edge e1 is relaxed, at time t2 , the edge e2 is relaxed, and so on.

10.2 Directed Acyclic Graphs (DAGs)
193
1, 2, . . . , t1 , . . . , t2 , . . . . . . , tk , . . .
R :=. . . , e 1 , . . . , e2 , . . . . . . , e k , . . .
p:=e1 ,e2 , . . . , e k
We have µ(s, v) = 1≤j≤k c(ej ). For i ∈ 1..k let vi be the target node of ei and
define t0 = 0 and v0 = s. Then d[vi ] ≤1≤j≤i c(ej ) after time ti as a simple
induction shows. This is clear for i = 0 since d[s] is initialized to zero and d-values
are only decreased. After the relaxation of ei = R[ti ] for i > 0, we have d[vi ] ≤
d[vi−1 ] + c(ei ) ≤ 1≤j≤i c(ej ). Thus after time tk , we have d[v] ≤ µ(s, v). Since
d[v] cannot go below µ(s, v) by Lemma 26, we have d[v] = µ(s, v) after time tk and
hence after performing all relaxations in R.
Let us next prove that the parent information traces out shortest paths. We do so
under the additional assumption that shortest paths are unique and leave the general
case to the reader. After the relaxations in R, we have d[vi ] = µ(s, vi ) for 1 ≤ i ≤ k.
When d[vi ] was set to µ(s, vi ) by an operation relax (u, vi ), the existence of a path
of length µ(s, vi ) from s to vi was established. Since, by assumption, the shortest
path from s to vi is unique, we must have u = vi−1 and hence parent[vi ] = vi−1 .
Exercise 173. Redo the second paragraph in the proof above, but without the as-
sumption that shortest paths are unique.
Exercise 174. Let ES be the edges of G in some arbitrary order and let ES (n−1) be
n − 1 copies of ES . Show µ(s, v) = d[v] for all nodes v with µ(s, v) = −∞ after
performing the relaxations ES (n−1) .
In the next sections, we will exhibit more efficient sequences of relaxations for
acyclic graphs and graphs with non-negative edge weights. We come back to general
graphs is Section 10.5.

194
10 Shortest Paths
Dijkstra’s Algorithm
declare all nodes unscanned and initialize d and parent
while there is an unscanned node with tentative distance < +∞ do
u:= the unscanned node with minimal tentative distance
relax all edges (u, v) out of u and declare u scanned
s
scanned
u
Fig. 10.4. Dijkstra’s shortest path algorithm for non-negative edge weights
order. Thus, by Lemma 27, we compute correct shortest path distances if we first
relax the edges out of v1 , then the edges out of v2 , etc, see Figure 10.3 for an exam-
ple. In this way, each edge is relaxed only once. Since every edge relaxation takes
constant time, we obtain a total execution time of O(m + n).
Theorem 27. Shortest paths in acyclic graphs can be computed in time O(n + m).
Exercise 175 (Route Planning for Public Transportation.). Finding quickest routes
in public transportation systems can be modeled as a shortest path problem in acyclic
graphs. Consider a bus or train leaving place p at time t and reaching its next stop p
at time t . This connection is viewed as an edge connecting nodes (p, t) and (p , t ).
Also, for each stop p and subsequent events (arrival and/or departure) at p, say at
times t and t with t < t , we have the waiting link from (p, t) to (p, t ). (a) Show
that the graph obtained in this way is a DAG. (b) You need an additional node model-
ing your starting point in space and time. There should also be one edge connecting
it to the transportation network. How should this edge look? (c) Suppose you have
computed the shortest path tree from your starting node to all nodes in the public
transportation graph reachable from it. How do you actually find the route you are
i
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
10.1 từ khái niệm cơ bản để một thuật toán chung
chúng tôi mở rộng các chức năng chi phí để đường dẫn cách tự nhiên. Chi phí của một con đường là các
tổng của các chi phí của thành phần đa cung, tức là, nếu p = e1, e2,..., ek sau đó c(p) =
1≤i≤k c (ei). Đường dẫn có sản phẩm nào có chi phí zero.
cho một cặp s và v của nút, chúng tôi đang quan tâm đến một đường đi ngắn nhất từ s đến v. Chúng tôi
tránh sử dụng definite điều "các", kể từ khi có thể có nhiều hơn một ngắn nhất
đường dẫn. Có một con đường ngắn nhất luôn luôn tồn tại? Quan sát mà số lượng các đường đi từ s để
v có thể là infinite. Ví dụ, nếu r = pCq là một đường đi từ s đến v có chứa một chu kỳ
C, sau đó chúng tôi có thể đi xung quanh chu kỳ một số tùy ý của thời gian và vẫn còn có một
đường đi từ s đến v, xem hình 10.2. Chính xác hơn, p là một con đường dẫn từ s tới bạn,
C là hàng đầu con đường từ bạn để bạn và q là một con đường từ bạn v. xem xét r đường dẫn (i)
chính mà sử dụng p để đi từ s cho bạn, sau đó đi xung quanh thành phố chu kỳ tôi lần, và finally
sau q từ bạn để v. Chi phí r (i) là c(p) tôi • c(C) c(q). Nếu C là một để-gọi là
phủ định chu kỳ, tức là, c(C) < 0 thì c (r (i 1)) < c (r (i)). Trong tình huống này có là không có
các đường đi ngắn nhất từ s để c. Assume nếu không, nói P là một đường đi ngắn nhất từ s để c.

thay thế PSfrag
16.2 từ khái niệm cơ bản để một thuật toán chung
s p
u
q
v
s p
u
(2)
191
C
C
q
v
...
hình 10.2. Một con đường không đơn giản pCq từ s để c.
sau đó c (r (i)) < c (P) cho tôi enough1 lớn và rất P không phải là một con đường ngắn nhất từ s để c.
tiếp theo chúng tôi sẽ hiển thị rằng con đường ngắn nhất tồn tại nếu không có không có chu kỳ tiêu cực.
bổ đề 25. Nếu G chứa không có chu kỳ tiêu cực và v là thể truy cập từ s thì một ngắn nhất
đường đi từ s đến v tồn tại. Hơn nữa, đường đi ngắn nhất là đơn giản.
bằng chứng. Giả sử nếu không. Cho phép là chi phí tối thiểu của một đường đi từ s đến v và
giả định rằng có một con đường không đơn giản r từ s đến v của chi phí ít hơn. Kể từ khi r là
phòng không đơn giản chúng ta có thể, như trong hình 10.2, viết r là pCq, nơi C là một chu kỳ và pq là
một con đường đơn giản. Sau đó ≤ c(pq) và do đó c(pq) c(C) = c(r) < ≤ c(pq). So
c(C) < 0 và chúng tôi đã cho thấy sự tồn tại của một chu kỳ tiêu cực.
tập thể dục 170. Tăng cường bổ đề ở trên và hiển thị: nếu v là thể truy cập từ s sau đó, một
đường đi ngắn nhất từ s đến v tồn tại iff có là không có chu kỳ tiêu cực có thể truy cập từ s
và từ mà một trong những có thể tiếp cận
cho hai nút s và v, chúng tôi define ngắn nhất con đường khoảng cách μ (s, v) từ s đến v như

 ∞if có là không có đường đi từ s đến v

μ (s, v): = −∞if có là không có đường đi ngắn nhất từ s đến v


c (một đường đi ngắn nhất từ s đến v) khác.
quan sát mà nếu v là thể truy cập từ s, nhưng không có đường dẫn ngắn nhất từ s đến v,
sau đó, có các đường dẫn tùy tiện lớn phí tiêu cực. Do đó nó làm cho cảm giác để define
μ (s, v) = −∞ trong trường hợp này. Con đường ngắn nhất có thêm tài sản tốt đẹp mà chúng tôi
nhà nước như bài tập:
tập thể dục 171 (nét của ngắn nhất Paths.). Hiển thị đó nét của đường đi ngắn nhất
là mình con đường ngắn nhất, tức là, nếu một con đường của pqr mẫu là một con đường ngắn nhất hơn q
cũng là một đường ngắn nhất
tập thể dục 172 (cây con đường ngắn nhất.). Cho rằng tất cả các nút có thể truy cập từ s
và rằng không có không có chu kỳ tiêu cực. Hiển thị là một cây n-nút T bắt nguồn từ như
s như vậy mà tất cả cây đường dẫn là đường đi ngắn nhất. Gợi ý: giả định chính mà con đường ngắn nhất
duy nhất và xem xét gọn T bao gồm đường dẫn ngắn nhất tất cả bắt đầu từ s. sử dụng
tập thể dục trước để chứng minh rằng T là một cây. Mở rộng trường hợp khi ngắn nhất
đường dẫn không phải là duy nhất.
1
tôi > (c(p) c(q) − c (P)) / |c (C) | sẽ làm

192
con đường ngắn nhất 10
chiến lược của chúng tôi cho finding đường đi ngắn nhất từ một nguồn nút s là một tổng quát của
thuật toán BFS trong hình 9.3. Chúng tôi duy trì hai NodeArrays d và phụ huynh. Ở đây
d [v] có kiến thức hiện tại của chúng tôi về khoảng cách từ s đến v và phụ huynh [v]
mua sắm tiền thân của v trên con đường ngắn nhất hiện nay để v. Chúng tôi thường đề cập đến
d [v] như cách v, dự kiến. Ban đầu, d [s] = 0 và phụ huynh [s] = s. Tất cả các
nút có khoảng cách infinite và phụ huynh không.
cách tự nhiên để cải thiện khoảng cách giá trị là để truyền bá thông tin khoảng cách
trên cạnh. Nếu có một đường đi từ s tới bạn về chi phí d [u] và e = (u, v) là một cạnh trong
của bạn, sau đó có là một đường đi từ s đến v của chi phí d [u] c(e). Nếu chi phí này là nhỏ hơn
tốt nhất được biết đến trước đây khoảng cách d [v], chúng tôi Cập Nhật d và phụ huynh cho phù hợp. Điều này
quá trình được gọi là cạnh thư giãn.
thủ tục thư giãn (e = (u, v): Edge)
nếu d [u] c(e) < d [v] sau đó d [v]: = d [u] c (e);
phụ huynh [v]: = u
bổ đề 26. Sau khi bất kỳ chuỗi các cạnh thư giãn: nếu d [v] < ∞, sau đó có là một
các đường dẫn của chiều dài d [v] từ s để c.
bằng chứng. Chúng tôi sử dụng cảm ứng về số cạnh thư giãn. Yêu cầu bồi thường là chắc chắn
đúng trước khi thư giãn chính. Đường dẫn có sản phẩm nào là một con đường của chiều dài zero từ s đến v và
tất cả các nút khác có khoảng cách infinite. Xem xét tiếp theo một thư giãn cạnh e = (u, v).
bởi giả thuyết cảm ứng, có là một p đường dẫn của chiều dài d [u] từ s cho bạn và một con đường q của
chiều dài d [v] từ s đến v. Nếu d [u] c(e) ≥ d [v], không có gì để hiển thị. Nếu không,
PE là một con đường của chiều dài d [u] c(e) từ s để c.
chiến lược phổ biến trong các thuật toán trong chương này là để thư giãn cạnh đến
hoặc tất cả các đường dẫn ngắn nhất được tìm thấy hoặc phát hiện ra một chu kỳ tiêu cực. Ví dụ, các
cạnh chất béo trong hình 10,1 cung cấp cho chúng tôi thông tin phụ huynh thu được sau khi một sufficient
số thư giãn cạnh: nút f, g, tôi và h được thể truy cập từ s sử dụng những
đa cung và đã đạt đến của giá trị tương ứng μ (s, •) 2, −3, −1, và −3. Node b,
j, và d hình thức một tiêu cực chi phí chu kỳ do đó chi phí con đường ngắn nhất của họ là −∞. Nút một là
gắn liền với chu kỳ này và do đó µ(s, a) = −∞.
một chuỗi các cạnh thư giãn tốt là gì? Cho p = e1,..., ek là một con đường
từ s đến v. Nếu chúng tôi thư giãn cạnh trong trật tự để ek e1, chúng tôi có d [v] ≤ c(p) sau khi
Chuỗi thư giãn. Nếu p là một đường đi ngắn nhất từ s đến v, sau đó d [v] không thể thả
dưới đây c(p) bởi bổ đề trước và do đó d [v] = c(p) sau khi trình tự của
thư giãn.
bổ đề 27 (đúng đắn tiêu chí). Sau khi thực hiện một chuỗi R cạnh thư giãn-
ations, chúng tôi có d [v] = μ (s, v) nếu cho một số con đường ngắn nhất p = e1, e2,..., ek từ s
để v, p là một subsequence R, tức là, có những chỉ số t1 < t2 < • • • < tk như vậy mà
R [t1] = e1, R [t2] = e2,..., R [tk] = ek. Hơn nữa, defines thông tin phụ huynh một
các đường dẫn của chiều dài μ (s, v) từ s để c.
bằng chứng. Đây là một cái nhìn sơ của R và p: dòng chính cho biết thời gian. Thời gian n 1,
e1 cạnh thoải mái, tại thời gian t2, e2 cạnh thoải mái, và vv..

10,2 đạo diễn Acyclic đồ thị (DAGs)
193
1, 2,..., t1 , . . . , t2 , . . . . . . , tk , . . .
R :=. . . , e 1 , . . . , e2 , . . . . . . , e k,...
p: = e1, e2,..., e k
hiện có μ (s, v) = 1≤j≤k c (ej). Cho tôi ∈ 1..k cho vi là nút mục tiêu của ei và
define t0 = 0 và v0 = s. Sau đó d [vi] ≤1≤j≤i c (ej) sau khi thời gian ti là một đơn giản
cho thấy cảm ứng. Đây là rõ ràng cho tôi = 0 kể từ khi d [s] được khởi tạo zero và d-giá trị
chỉ giảm. Sau khi thư giãn ei = R [ti] cho tôi > 0, chúng tôi có d [vi] ≤
d [vi−1] c (ei) ≤ 1≤j≤i c (ej). Vì vậy sau khi thời gian tk, chúng tôi có d [v] ≤ μ (s, v). Kể từ khi
d [v] không thể đi dưới đây μ (s, v) bởi bổ đề 26, chúng tôi có d [v] = μ (s, v) sau thời gian tk và
do đó sau khi thực hiện tất cả thư giãn ở R.
cho chúng tôi tiếp theo chứng minh rằng thông tin phụ huynh dấu vết trong con đường ngắn nhất. Chúng tôi làm như vậy
theo giả định bổ sung rằng con đường ngắn nhất là duy nhất và để lại tướng
trường hợp đến người đọc. Sau khi thư giãn trong R, chúng tôi có d [vi] = μ (s, vi) với 1 ≤ tôi ≤ k.
khi d [vi] đã được thiết lập để μ (s, vi) bởi một hoạt động thư giãn (u, vi), sự tồn tại của một con đường
chiều dài μ (s, vi) từ s để vi được thành lập. Kể từ khi, bởi giả định, ngắn nhất
đường đi từ s tới vi là duy nhất, chúng ta phải có u = vi−1 và do đó phụ huynh [vi] = vi−1.
tập thể dục 173. Làm lại đoạn thứ hai trong chứng minh ở trên, nhưng mà không có như là-
sumption con đường ngắn nhất là duy nhất.
tập thể dục 174. Giả sử ES là các cạnh của G một số để tùy ý và giả sử ES (n-1) là
n − 1 bản sao của các ES. Hiển thị μ (s, v) = d [v] cho tất cả các nút v với μ (s, v) = −∞ sau khi
hoạt động thư giãn ES (n-1).
Trong phần tiếp theo, chúng tôi sẽ triển lãm thêm efficient chuỗi của thư giãn cho
acyclic đồ thị và đồ thị với trọng lượng không âm cạnh. Chúng tôi trở về, tướng
đồ thị là phần 10,5.

194
con đường ngắn nhất 10
thuật toán Dijkstra
tuyên bố tất cả các nút unscanned và khởi tạo d và phụ huynh
trong khi có một nút unscanned với dự kiến khoảng cách < ∞ làm
u:= nút unscanned với khoảng cách tối thiểu dự kiến
thư giãn tất cả các cạnh (u, v) ra khỏi bạn và tuyên bố u quét
s
quét
u
hình 10.4. Thuật toán Dijkstra con đường ngắn nhất cho trọng lượng không âm cạnh
đơn đặt hàng. Vì vậy, bởi bổ đề 27, chúng tôi tính toán chính xác khoảng cách con đường ngắn nhất nếu chúng tôi vòng
thư giãn cạnh ra khỏi v1, sau đó các cạnh ra khỏi v2, vv, hãy xem hình 10.3 cho một kỳ thi-
ple. Bằng cách này, mỗi cạnh thoải mái chỉ một lần. Kể từ khi mỗi thư giãn cạnh mất
thời gian liên tục, chúng tôi có được một tổng thời gian thực hiện của O(m n).
định lý 27. Các đường dẫn ngắn nhất trong đồ thị acyclic có thể được tính trong thời gian O(n m).
tập thể dục 175 (tuyến đường quy hoạch cho giao thông công cộng.). Việc tìm kiếm nhanh nhất tuyến đường
trong giao thông công cộng hệ thống có thể được mô hình hóa như một bài toán đường đi ngắn nhất trong acyclic
đồ thị. Xem xét một xe buýt hoặc xe lửa để lại nơi p tại thời gian t và tiếp cận của nó dừng tiếp theo p
lúc thời gian t. Kết nối này được xem như là một cạnh kết nối nút (p, t) và (p, t).
ngoài ra, đối với mỗi dừng p và sự kiện tiếp theo (xuất hiện và/hoặc khởi hành) tại p, nói tại
lần t và t với t < t, chúng tôi đã chờ đợi liên kết từ (p, t) để (p, t). (a) Hiển thị
đồ thị thu được bằng cách này là một DAG. (b) bạn cần một nút bổ sung mô hình-
ing của bạn bắt đầu từ điểm trong không gian và thời gian. Cũng cần có một cạnh kết nối
nó để mạng lưới giao thông. Cạnh này nên trông thế nào? (c) giả sử bạn có
tính cây con đường ngắn nhất từ nút đầu tiên của bạn để tất cả các nút trong công chúng
giao thông vận tải biểu đồ thể truy cập từ nó. Làm thế nào để bạn thực sự nhiều con đường bạn đang
tôi
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
10.1 From Basic Concepts to a Generic Algorithm
We extend the cost function to paths in the natural way. The cost of a path is the
sum of the costs of its constituent edges, i.e., if p = e1 , e2 , . . . , ek then c(p) =
1≤i≤k c(ei ). The empty path has cost zero.
For a pair s and v of nodes, we are interested in a shortest path from s to v. We
avoid the use of the definite article “the”, since there may be more than one shortest
path. Does a shortest path always exist? Observe that the number of paths from s to
v may be infinite. For example, if r = pCq is a path from s to v containing a cycle
C, then we may go around the cycle an arbitrary number of times and still have a
path from s to v, see Figure 10.2. More precisely, p is a path leading from s to u,
C is a path leading from u to u and q is a path from u to v. Consider the path r (i)
which first uses p to go from s to u, then goes around the cycle i times, and finally
follows q from u to v. The cost of r (i) is c(p) + i • c(C) + c(q). If C is a so-called
negative cycle, i.e., c(C) < 0 then c(r (i+1) ) < c(r (i) ). In this situation there is no
shortest path from s to v. Assume otherwise, say P is a shortest path from s to v.

PSfrag replacements
10.1 From Basic Concepts to a Generic Algorithm
s p
u
q
v
s p
u
(2)
191
C
C
q
v
...
Fig. 10.2. A non-simple path pCq from s to v.
Then c(r (i) ) < c(P ) for i large enough1 and so P is not a shortest path from s to v.
We will next show that shortest paths exist if there are no negative cycles.
Lemma 25. If G contains no negative cycle and v is reachable from s then a shortest
path from s to v exists. Moreover, the shortest path is simple.
Proof. Assume otherwise. Let be the minimal cost of a simple path from s to v and
assume that there is a non-simple path r from s to v of cost less than . Since r is
non-simple we can, as in Figure 10.2, write r as pCq, where C is a cycle and pq is
a simple path. Then ≤ c(pq) and hence c(pq) + c(C) = c(r) < ≤ c(pq). So
c(C) < 0 and we have shown the existence of a negative cycle.
Exercise 170. Strengthen the lemma above and show: if v is reachable from s then a
shortest path from s to v exists iff there is no negative cycle that is reachable from s
and from which one can reach v.
For two nodes s and v, we define the shortest path distance µ(s, v) from s to v as

+∞if there is no path from s to v

µ(s, v) := −∞if there is no shortest path from s to v


c(a shortest path from s to v) otherwise.
Observe that if v is reachable from s, but there is no shortest path from s to v,
then there are paths of arbitrarily large negative cost. Thus it makes sense to define
µ(s, v) = −∞ in this case. Shortest paths have further nice properties which we
state as exercises:
Exercise 171 (Subpaths of Shortest Paths.). Show that subpaths of shortest paths
are themselves shortest paths, i.e., if a path of the form pqr is a shortest path than q
is also a shortest path.
Exercise 172 (Shortest Path Trees.). Assume that all nodes are reachable from s
and that there are no negative cycles. Show that there is an n-node tree T rooted as
s such that all tree paths are shortest paths. Hint: assume first that shortest paths are
unique and consider the subgraph T consisting of all shortest paths starting at s. Use
the preceding exercise to prove that T is a tree. Extend to the case when shortest
paths are not unique.
1
i > (c(p) + c(q) − c(P ))/|c(C)| will do.

192
10 Shortest Paths
Our strategy for finding shortest paths from a source node s is a generalization of
the BFS algorithm in Figure 9.3. We maintain two NodeArrays d and parent. Here
d[v] contains our current knowledge about the distance from s to v and parent[v]
stores the predecessor of v on the currently shortest path to v. We usually refer to
d[v] as the tentative distance of v. Initially, d[s] = 0 and parent[s] = s. All other
nodes have infinite distance and no parent.
The natural way to improve distance values is to propagate distance information
across edges. If there is a path from s to u of cost d[u] and e = (u, v) is an edge out
of u, then there is a path from s to v of cost d[u] + c(e). If this cost is smaller than
the best previously known distance d[v], we update d and parent accordingly. This
process is called edge relaxation.
Procedure relax(e = (u, v) : Edge)
if d[u] + c(e) < d[v] then d[v] := d[u] + c(e);
parent[v] := u
Lemma 26. After any sequence of edge relaxations: If d[v] < ∞, then there is a
path of length d[v] from s to v.
Proof. We use induction on the number of edge relaxations. The claim is certainly
true before the first relaxation. The empty path is a path of length zero from s to v and
all other nodes have infinite distance. Consider next a relaxation of edge e = (u, v).
By induction hypothesis, there is a path p of length d[u] from s to u and a path q of
length d[v] from s to v. If d[u] + c(e) ≥ d[v], there is nothing to show. Otherwise,
pe is a path of length d[u] + c(e) from s to v.
The common strategy of the algorithms in this chapter is to relax edges until
either all shortest paths are found or a negative cycle is discovered. For example, the
fat edges in Figure 10.1 give us the parent information obtained after a sufficient
number of edge relaxations: nodes f , g, i, and h are reachable from s using these
edges and have reached their respective µ(s, •) values 2, −3, −1, and −3. Node b,
j, and d form a negative cost cycle so that their shortest path cost is −∞. Node a is
attached to this cycle and thus µ(s, a) = −∞.
What is a good sequence of edge relaxations? Let p = e1 , . . . , ek be a path
from s to v. If we relax the edges in the order e1 to ek , we have d[v] ≤ c(p) after
the sequence of relaxations. If p is a shortest path from s to v, then d[v] cannot drop
below c(p) by the preceding Lemma and hence d[v] = c(p) after the sequence of
relaxations.
Lemma 27 (Correctness Criterion). After performing a sequence R of edge relax-
ations, we have d[v] = µ(s, v) if for some shortest path p = e1 , e2 , . . . , ek from s
to v, p is a subsequence of R, i.e., there are indices t1 < t2 < • • • < tk such that
R[t1 ] = e1 , R[t2 ] = e2 , . . . , R[tk ] = ek . Moreover, the parent information defines a
path of length µ(s, v) from s to v.
Proof. Here is a schematic view of R and p: the first row indicates time. At time t 1 ,
the edge e1 is relaxed, at time t2 , the edge e2 is relaxed, and so on.

10.2 Directed Acyclic Graphs (DAGs)
193
1, 2, . . . , t1 , . . . , t2 , . . . . . . , tk , . . .
R :=. . . , e 1 , . . . , e2 , . . . . . . , e k , . . .
p:=e1 ,e2 , . . . , e k
We have µ(s, v) = 1≤j≤k c(ej ). For i ∈ 1..k let vi be the target node of ei and
define t0 = 0 and v0 = s. Then d[vi ] ≤1≤j≤i c(ej ) after time ti as a simple
induction shows. This is clear for i = 0 since d[s] is initialized to zero and d-values
are only decreased. After the relaxation of ei = R[ti ] for i > 0, we have d[vi ] ≤
d[vi−1 ] + c(ei ) ≤ 1≤j≤i c(ej ). Thus after time tk , we have d[v] ≤ µ(s, v). Since
d[v] cannot go below µ(s, v) by Lemma 26, we have d[v] = µ(s, v) after time tk and
hence after performing all relaxations in R.
Let us next prove that the parent information traces out shortest paths. We do so
under the additional assumption that shortest paths are unique and leave the general
case to the reader. After the relaxations in R, we have d[vi ] = µ(s, vi ) for 1 ≤ i ≤ k.
When d[vi ] was set to µ(s, vi ) by an operation relax (u, vi ), the existence of a path
of length µ(s, vi ) from s to vi was established. Since, by assumption, the shortest
path from s to vi is unique, we must have u = vi−1 and hence parent[vi ] = vi−1 .
Exercise 173. Redo the second paragraph in the proof above, but without the as-
sumption that shortest paths are unique.
Exercise 174. Let ES be the edges of G in some arbitrary order and let ES (n−1) be
n − 1 copies of ES . Show µ(s, v) = d[v] for all nodes v with µ(s, v) = −∞ after
performing the relaxations ES (n−1) .
In the next sections, we will exhibit more efficient sequences of relaxations for
acyclic graphs and graphs with non-negative edge weights. We come back to general
graphs is Section 10.5.

194
10 Shortest Paths
Dijkstra’s Algorithm
declare all nodes unscanned and initialize d and parent
while there is an unscanned node with tentative distance < +∞ do
u:= the unscanned node with minimal tentative distance
relax all edges (u, v) out of u and declare u scanned
s
scanned
u
Fig. 10.4. Dijkstra’s shortest path algorithm for non-negative edge weights
order. Thus, by Lemma 27, we compute correct shortest path distances if we first
relax the edges out of v1 , then the edges out of v2 , etc, see Figure 10.3 for an exam-
ple. In this way, each edge is relaxed only once. Since every edge relaxation takes
constant time, we obtain a total execution time of O(m + n).
Theorem 27. Shortest paths in acyclic graphs can be computed in time O(n + m).
Exercise 175 (Route Planning for Public Transportation.). Finding quickest routes
in public transportation systems can be modeled as a shortest path problem in acyclic
graphs. Consider a bus or train leaving place p at time t and reaching its next stop p
at time t . This connection is viewed as an edge connecting nodes (p, t) and (p , t ).
Also, for each stop p and subsequent events (arrival and/or departure) at p, say at
times t and t with t < t , we have the waiting link from (p, t) to (p, t ). (a) Show
that the graph obtained in this way is a DAG. (b) You need an additional node model-
ing your starting point in space and time. There should also be one edge connecting
it to the transportation network. How should this edge look? (c) Suppose you have
computed the shortest path tree from your starting node to all nodes in the public
transportation graph reachable from it. How do you actually find the route you are
i
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: