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.
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ột 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
µ(sv): = −∞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
có phải mình đường dẫn 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
độc đáo 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.
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 trước đây được biết đến 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
chất béo cạnh trong con số 10.1 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..
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 khi 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 các 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.
đang được dịch, vui lòng đợi..