TAILIEUCHUNG - Lý thuyết đồ thị - Phần 3
Đồ thị vô hướng (có hướng) G=(V,E) được gọi là đồ thị có trong số nếu mỗi cạnh (cung) . | . Đường đi trong đồ thị . Định nghiã đường đi. . Tính liên thông. . Chu trình Euler và đường đi Euler. . Tìm đường đi ngắn nhất. . Đường đi trong đồ thị Đồ thị có trọng số Định nghĩa 1. Đồ thị vô hướng (có hướng) G=(V,E) được gọi là đồ thị có trọng số nếu mỗi cạnh (cung) e E được đặt tương ứng với một số thực w(e). Số thực w(e) được gọi là trọng số của cạnh (cung) e. Định nghĩa 2. Ma trận trọng số của đơn đồ thị G =(V,E) là ma trận W=[wi,k] trong đó wi,k là trọng số của cạnh (cung) nối đỉnh thứ i với đỉnh thứ k (nếu có); wi,k= nếu không có cạnh (cung) nối đỉnh thứ i với đỉnh thứ k. . Tìm đường đi ngắn nhất . Đường đi trong đồ thị Theo định nghiã trên: các phần tử của ma trận trọng só có thể là các số âm. Một đơn đồ thị bất kỳ cũng có thể xem là đồ thị có trọng số nếu mỗi cạnh (cung) đều gắn trọng số là 1 (như định nghĩa đường đi độ dài 1 trong mục trước) và khi đó ma trận trọng số chính là ma trận 0-1. Ví dụ: xét một mạng hàng không, khi đó mạng này có thể coi là các đồ thị có trọng số với các kiểu trọng số sau đây: Độ dài cung đường bay Giá cước vận chuyển cho một đơn vị vận chuyển thời gian thực hiện chuyến bay giữa hai sân bay . Tìm đường đi ngắn nhất . Đường đi trong đồ thị Ma trận trọng số của đồ thị trên là Ví dụ: . Tìm đường đi ngắn nhất . Đường đi trong đồ thị Bài toán được đặt ra là: tìm đường đi ngắn nhất trong đồ thị có trọng số G =(V,E) từ đỉnh x đến đỉnh y cho trước. Ý tưởng giải thuật là: ta sẽ lần lượt duyệt và xác định độ dài của đường đi ngắn nhất từ đỉnh x đến các đỉnh lân cận, cho đến khi đỉnh đích y được duyệt. Ở mỗi bước duyệt, mỗi đỉnh v sẽ được gắn nhãn, là cặp (l(v);t(v)) trong đó: l(v) là độ dài của đường đi tìm được từ đỉnh đầu x đến đỉnh v cho đến thời điểm đang xét; t(v) là đỉnh trước đỉnh v trong đường đi đó. . Tìm đường đi ngắn nhất . Đường đi trong đồ thị Từ đó ta có thuật toán sau đây Dijkstra (Hà lan-1930-2002): Bước khởi đầu: Với mọi đỉnh v V, l(v):= ; t(v):=‘’; L(x):=0; {độ dài đường đi từ x đến x bằng 0} S:= ; {S là tập đỉnh đã được duyệt} Bước lặp: Khi y S thực hiện: Tìm u trong tập các đỉnh chưa được duyệt (u V\S) sao cho l(u) bé nhất; S:=S {u}; Với mọi đỉnh v thuộc tập các đỉnh chưa được duyệt và có cạnh (cung) từ u đến v, thực hiện Nếu l(u) + wuv . Đường đi trong đồ thị Ví dụ: Tìm đường đi ngắn nhất từ A1 đến A4 . Tìm đường đi ngắn nhất Bước khởi đầu A1 0 A2 A3 A4 A5 A6 Bước 1 A1 0 15,A1 20,A1 20,A1 14, A1 Bước 2 A6 0 15,A1 20,A1 35,A6 20,A1 14, A1 Bước 3 A2 0 15,A1 20,A1 33,A2 20,A1 14, A1 Bước 4 A3 0 15,A1 20,A1 33,A2 20,A1 14, A1 Bước 5 A5 0 15,A1 20,A1 33,A2 20,A1 14, A1 Bước 6 A4 0 15,A1 20,A1 33,A2 20,A1 14, A1 . Đường đi trong đồ thị Giới thiệu chương trình . Tìm đường đi ngắn nhất 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 . Đường đi trong đồ thị . Tìm đường đi ngắn nhất Edsger Wybe Dijkstra (sinh ngày 11 tháng 5, 1930 tại Rotterdam – mất ngày 6 tháng 8, 2002 tại Nuenen). Là nhà khoa học máy tính Hà Lan. Ông được nhận giải thưởng Turing cho các đóng góp có tính chất nền tảng trong lĩnh vực ngôn ngữ lập trình. Không lâu trước khi chết, ông đã được nhận giải Bài báo ảnh hưởng lớn trong lĩnh vực tính toán phân tán của ACM dành cho bài báo đã khởi đầu cho ngành con Self-stabilization. Sau khi ông qua đời, giải thưởng thường niên này đã được đổi tên thành giải thưởng ACM Edsger W. Dijkstra. Edsger Dijkstra (ảnh của Brian Randell) . Đường đi trong đồ thị
đang nạp các trang xem trước