Dijkstra ưu tiên giải pháp có số cạnh nhỏ nhất nếu một số đường dẫn có cùng trọng số


9

Bạn có thể sửa đổi bất kỳ biểu đồ để Dijkstra tìm thấy giải pháp với số lượng cạnh tối thiểu:G

Nhân mỗi trọng số cạnh với một số , sau đó thêm 1 vào trọng số để xử phạt mỗi cạnh bổ sung trong giải pháp, nghĩa làa1

w(u,v)=aw(u,v)+1

Điều này không làm việc cho tất cả các giá trị của ; một nhu cầu phải có ít nhất x cho điều này để làm việc. Nếu a không phải là số tối thiểu này, nó có thể không chọn đường dẫn ngắn nhất. Làm thế nào để tôi tìm thấy giá trị tối thiểu x này ?aaxax

Thi thiên Điều này đã được thực hiện một cách giải trí, tôi đã hoàn thành bài tập về nhà từ lâu.


Nếu hai đường dẫn có trọng lượng bằng nhau, nên chọn đường dẫn có ít cạnh nhất. Lấy làm tiếc. Tôi thấy rằng tôi đã không làm rõ điều đó.
Mèo Unun

1
Bạn cũng có thể làm điều đó bằng cách thêm cho tất cả trọng lượng cạnh, nơi ε < m / e , m = trọng số cạnh tối thiểu, e = số cạnh trên đường đi ngắn nhất (hoặc thậm chí nói chung, nếu bạn không biết chiều dài con đường ngắn nhất) . ϵϵ<m/e
BlueRaja - Daniel Pflughoeft

1
Tidbit thú vị, cảm ơn. Sẽ phải nhìn vào nó.
Mèo Unun

Câu trả lời:


5

Cho đồ thị , ta xác định G = ( V , E , w ) với w ( e ) = a w ( e ) + 1 trong đó a = | E | + Ε đối với một số ε 0 như đề xuất trong các ý kiến của câu hỏi.G=(V,E,w)G=(V,E,w)w(e)=aw(e)+1a=|E|+εε0

Bổ đề
Hãy một đường dẫn trong G với chi phí C , tức là w ( P ) = C . Sau đó, P đã tốn một C + | P | trong G ' , tức là w ' ( P ) = một C + | P | .PGCw(P)=CPaC+|P|Gw(P)=aC+|P|

Bổ đề sau trực tiếp từ định nghĩa của .w

G PGPG

  1. PG
    Pw(P)<w(P)|P|,|P||E|aw(P)<w(P)PG
  2. P
    Pw(P)=w(P)|P|<|P|w(P)<w(P)PG

PG


a<|E|a=|E|εε(0,|E|)


  1. aGw(P)<w(P)G|E|w

a=|E|a
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.