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.
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à không có phụ huynh.
Tự nhiên cách để 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 đến v.
đang được dịch, vui lòng đợi..