1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Lý thuyết đồ thị - TS. Trần Ngọc Việt

31 8 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Bài giảng Cấu trúc dữ liệu và giải thuật: Lý thuyết đồ thị, được biên soạn gồm các nội dung chính sau: định nghĩa về đồ thị, cây; biểu diễn đồ thị trên máy tính; thuật toán đường đi ngắn nhất – dijkstra’s. Mời các bạn cùng tham khảo!

L(b)= min{L(x)| x ∈ T} = Suy ra: v = b T:= T – {b} = {𝑐, 𝑑, 𝑒, 𝑧} + Thực bước 3: Vì 𝑧 ≠ 𝑣, sang bước +Thực bước 4: Xét đỉnh d đỉnh c kề đỉnh b Ta có L(c) := ∞ > L(b) + w(b,c) = + = ⟹ L(c) := 9, gán P(c) := b; L(d) := : khơng đổi (Hình 4) KHOA CƠNG NGHỆ THƠNG TIN 22 4.2 Thuật tốn đường ngắn +Thực bước 2: L(d)= min{L(x)| x ∈ T} = Suy ra: v = d T:= T – {d} = {𝑐, 𝑒, 𝑧} + Thực bước 3: Vì 𝑧 ≠ 𝑣, sang bước +Thực bước 4: Xét đỉnh e đỉnh c kề đỉnh d Ta có L(e) := ∞ > L(d) + w(d,e) = + = ⟹ L(e) := 8, gán P(e) := d; L(c) := > L(d) + w(d,c) = + = ⟹ L(c) := 5, gán P(c) := d; (Hình 5) KHOA CƠNG NGHỆ THƠNG TIN 23 4.2 Thuật tốn đường ngắn +Thực bước 2: L(c)= min{L(x)| x ∈ T} = Suy ra: v = c T:= T – {c} = {𝑒, 𝑧} + Thực bước 3: Vì 𝑧 ≠ 𝑣, sang bước +Thực bước 4: Xét đỉnh e đỉnh z kề đỉnh c Ta có L(e) := : khơng đổi; L(z) := ∞ > L(c) + w(c,z) = + = ⟹ L(z) := 8, gán P(z) := c; (Hình 6) KHOA CƠNG NGHỆ THƠNG TIN 24 4.2 Thuật tốn đường ngắn +Thực bước 2: L(z)= min{L(x)| x ∈ T} = Suy ra: v = z T:= T – {z} + Thực bước 3: Vì 𝑧 = 𝑣, kết thúc L(z) = độ dài đường ngắn từ a đến z Vậy đường ngắn là: a →d →c →z KHOA CÔNG NGHỆ THÔNG TIN 25 #BÀI TẬP 1: a) Viết ma trận kề từ đồ thị có hướng sau (Hình 1) b) Tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị có hướng sau (Hình 2) KHOA CƠNG NGHỆ THƠNG TIN 26 BÀI KIỂM #BÀI TẬPTRA 2: số Áp dụng thuật tốn Dijkstra’s tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị vô hướng sau a)Viết ma trận kề từ đồ thị vơ hướng hình b)Tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị vơ hướng hình (Hình 1) KHOA CÔNG NGHỆ THÔNG TIN 27 #Thực hành 01: #Nhận xét: input, output ?? KHOA CÔNG NGHỆ THÔNG TIN >>> import math >>> import sys >>> class Graph(): def init (cung, dinh): cung.x = dinh cung.graph = [[0 for column in range(dinh)] for row in range(dinh)] def inketqua(cung, L, a): print ("đỉnh nguồn xuất phát từ: ") for nut in range(cung.x): print (a," đến đỉnh ",nut, "độ dài đường là: ", L[nut]) def duongdinhonhat(cung, L, P): = sys.maxsize for x in range(cung.x): if L[x] < and P[x] == False: = L[x] min_index = x return min_index def timduongdi(cung, a): L = [sys.maxsize] * cung.x L[a] = P = [False] * cung.x for cout in range(cung.x): u = cung.duongdinhonhat(L, P) P[u] = True for x in range(cung.x): if cung.graph[u][x] > and P[x] == False and L[x] > L[u] + cung.graph[u][x]: L[x] = L[u] + cung.graph[u][x] cung.inketqua(L, a) >>> g = Graph(6) #đồ thị vô hướng >>> g.graph = [[0, 3, 0, 1, 0, 0], [3, 0, 5, 2, 0, 0], [0, 5, 0, 0, 4, 2], [1, 2, 0, 0, 6, 0], [0, 0, 4, 6, 0, 7], [0, 0, 2, 0, 7, 0] ]; >>> g.timduongdi(0); 28 #Thực hành 02: >>> g = Graph(6) #đồ thị có hướng >>> g.graph = [[0, 3, 0, 4, 0, 0], [0, 0, 6, 2, 0, 0], [0, 0, 0, 0, 4, 3], [0, 0, 1, 0, 4, 0], [0, 0, 0, 0, 0, 5], [0, 0, 0, 0, 0, 0] ]; >>> g.timduongdi(0); #Nhận xét: input, output thuật toán đường ngắn #Yêu cầu – comment vào dấu note, bước lặp, vòng lặp giải thuật KHOA CÔNG NGHỆ THÔNG TIN 29 #Thực hành 03: a)Viết ma trận kề từ đồ thị có hướng (hình 1) a) Viết ma trận kề từ đồ thị có hướng b)Tìm đường ngắn từ đỉnh a đến đỉnh z (đỉnh đến đỉnh 5) b) Tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị có hướng đồ thị có hướng (hình 1) (Hình 1) KHOA CƠNG NGHỆ THƠNG TIN 30 ... THÔNG TIN 25 #BÀI TẬP 1: a) Viết ma trận kề từ đồ thị có hướng sau (Hình 1) b) Tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị có hướng sau (Hình 2) KHOA CÔNG NGHỆ THÔNG TIN 26 BÀI KIỂM #BÀI TẬPTRA 2:... Dijkstra’s tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị vô hướng sau a)Viết ma trận kề từ đồ thị vơ hướng hình b)Tìm đường ngắn từ đỉnh a đến đỉnh z đồ thị vơ hướng hình (Hình 1) KHOA CƠNG NGHỆ THƠNG... #Yêu cầu – comment vào dấu note, bước lặp, vịng lặp giải thuật KHOA CƠNG NGHỆ THÔNG TIN 29 #Thực hành 03: a)Viết ma trận kề từ đồ thị có hướng (hình 1) a) Viết ma trận kề từ đồ thị có hướng b)Tìm

Ngày đăng: 27/01/2023, 08:32

Xem thêm: