Tài liệu giảng dạy Toán rời rạc & lý thuyết đồ thị (Ngành/Nghề: Công nghệ thông tin – Trình độ Cao đẳng) gồm có 2 phần. Phần 1 gồm có 4 chương với những nội dung về toán rời rạc như: cơ sở logic, phương pháp đếm, quan hệ, hàm bool và đại số bool. Phần 2 gồm 4 chương với những kiến thức về lý thuyết đồ thị như: đồ thị, các bài toán về chu trình, cây, bài toán về con đường ngắn nhất. Mời các bạn cùng tham khảo.
TẬP ĐOÀN DỆT MAY VIỆT NAM TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT TP.HCM TÀI LIỆU GIẢNG DẠY MÔN HỌC: TOÁN RỜI RẠC & LÝ THUYẾT ĐỒ THỊ NGÀNH/NGHỀ: CƠNG NGHỆ THƠNG TIN TRÌNH ĐỘ: CAO ĐẲNG TP HỒ CHÍ MINH, năm 2019 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin đƣợc phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Tài liệu giảng dạy đƣợc biên soạn dựa tài liệu Toán rời rạc GS Nguyễn Hữu Anh, trƣờng Đại học Tổng hợp TP Hồ Chí Minh, tài liệu Lý thuyết đồ thị Pts Nguyễn Cam, Pts Chu Đức Khánh Tài liệu giảng dạy Toán rời rạc lý thuyết đồ thị đƣợc dùng làm tài liệu học tập cho sinh viên ngành Cơng nghệ thơng tin, đƣợc trình bày theo chƣơng trình mơn học đƣợc xây dựng Tài liệu giảng dạy giúp cho sinh viên kiến thức Toán rời rạc, Lý thuyết đồ thị Tài liệu giảng dạy bao gồm: Phần 1: Toán rời rạc Chƣơng 1: Cơ sở logic Chƣơng 2: Phƣơng pháp đếm Chƣơng 3: Quan hệ Chƣơng 4: Hàm Bool đại số Bool Phần 2: Lý thuyết đồ thị Chƣơng 1: Đồ thị Chƣơng 2: Các toán chu trình Chƣơng 3: Cây Chƣơng 4: Bài tốn đƣờng ngắn Trong trình biên soạn, có nhiều cố gắng nhƣng khơng tránh khỏi hạn chế số thiếu sót định, nhóm tác giả mong nhận đƣợc ý kiến đóng góp quý đọc giả để tài liệu giảng dạy ngày hoàn thiện Xin chân thành cảm ơn TP HCM, ngày … tháng … năm Tham gia biên soạn Ths Võ Thị Thục Hà MỤC LỤC Phần 1: Toán rời rạc Chƣơng 1: CƠ SỞ LOGIC I Phép tính mệnh đề 1 Khái niệm mệnh đề Phân loại mệnh đề Các phép toán logic Dạng mệnh đề II Qui tắc suy diễn III Vị từ lƣợng từ Vi từ Lƣợng từ IV Nguyên lý quy nạp Chƣơng 2: PHƢƠNG PHÁP ĐẾM I Tập hợp Khái niệm tập hợp Các phép toán tập hợp 10 Tính chất phép tốn 10 Tích Descartes tập hợp 11 II Ánh xạ 11 III Giải tích tổ hợp 13 Phép đếm 13 Giải tích tổ hợp 14 Chƣơng 3: QUAN HỆ 17 I Quan hệ 17 II Quan hệ tƣơng đƣơng 18 III Quan hệ thứ tự 18 Chƣơng 4: ĐẠI SỐ BOOL VÀ HÀM BOOL 20 I Đại số Bool 20 II Hàm Bool 21 III Mạng cổng công thức tối tiểu 24 Các cổng logic 24 Tổ hợp cổng logic 25 Tối thiểu hóa hàm Boole 25 IV Phƣơng pháp bảng Karnaugh 25 Phần 2: Đồ thị Chƣơng 1: ĐỒ THỊ 29 I Định nghĩa 29 II Biểu đồ 29 III Bậc đỉnh 30 Định lý 30 Hệ luận 30 Hệ luận 30 Hệ luận IV Ma trận liên kết 31 V Đƣờng chu trình 31 VI Sự liên thông 32 VII Sự đẳng hình 32 VIII Đồ thị có hƣớng 33 Chƣơng 2: CÁC BÀI TOÁN VỀ CHU TRÌNH 35 I Chu trình Euler 35 Euler toán cầu KONIGSBURG 35 Chu trình Euler 35 II Chu trình Hamilton 38 Định nghĩa 38 Quy tắc tìm chu trình Hamilton 39 Định lý 40 Định lý 40 Định lý (Dirac) 40 Định lý (Konig) 40 Chƣơng 3: CÂY 41 I Khảo sát tổng quát 41 Định nghĩa tính chất 41 Định lý (Daisy Chain Theorem) 41 Tâm bán kính 41 Cây m-phân 42 II Cây nhị phân phép duyệt 43 Định nghĩa 43 Phép duyệt 43 III Cây bao trùm 44 Định nghĩa 44 Định lý 44 DFS BFS 44 Định lý 46 IV Cây bao trùm nhỏ 46 Định nghĩa 46 Định lý 53 Giải thuật PRIM 48 Giải thuật Kruskal 50 410 Chƣơng 4: BÀI TOÁN VỀ CON ĐƢỜNG NGẮN8 NHẤT AA 52 A10 I Giới thiệu toán 52 A II Giải thuật DIJKSTRA 52 TÀI LIỆU GIẢNG DẠY MƠN HỌC/MƠ ĐUN Tên mơn học: Tốn rời rạc lý thuyết đồ thị Mã môn học: MH 09 Thời gian thực môn học: 45 giờ; (Lý thuyết: 43 giờ; Thực hành, thí nghiệm, thảo luận, tập: giờ; Kiểm tra: giờ) I Vị trí, tính chất mơn học: - Vị trí: Mơn học đƣợc bố trí sau ngƣời học học xong mơn học chung - Tính chất: Là mơn học sở ngành bắt buộc II Mục tiêu môn học: - Kiến thức: Trình bày đƣợc kiến thức sở logic, quy tắc phép suy luận Phân biệt đƣợc hàm logic mạch logic Trình bày đƣợc khái niệm lý thuyết đồ thị; Biểu diễn đồ thị; Đồ thị Euler Đồ thị Hamilton; Cây nhị phân; Bài toán đƣờng ngắn - Kỹ năng: Xác định sở logic, quy tắc phép suy luận, phƣơng pháp chứng minh, hàm logic mạch logic Biểu diễn đƣợc phép toán đồ thị, nhị phân - Năng lực tự chủ trách nhiệm: Chủ động, tích cực học tập rèn luyện Tích cực tham gia tự học, tham gia xây dựng bài, làm việc nhóm III Nội dung mơn học: Nội dung tổng quát phân bổ thời gian: Số TT Tên chƣơng, mục Phần 1: Toán rời rạc Chƣơng 1: Cơ sở logic Chƣơng 2: Phƣơng pháp đếm Chƣơng 3: Quan hệ Chƣơng 4: Hàm Bool đại số Bool Phần 2: Lý thuyết đồ thị Chƣơng 1: Đồ thị Chƣơng 2: Các toán chu trình Thời gian (giờ) Thực hành, Tổng Lý thí nghiệm, Kiểm số thuyết thảo luận, tra tập 6 6 6 6 Chƣơng 3: Cây Chƣơng 4: Bài toán đƣờng ngắn 6 Cộng 45 43 Nội dung chi tiết: Phần 1: Toán rời rạc Chƣơng 1: Cơ sở logic Mục tiêu: - Trình bày đƣợc phép tính mệnh đề - Sử dụng đƣợc quy tắc suy diễn - Trình bày đƣợc khái niệm vị từ, lƣợng tử - Sử dụng đƣợc nguyên lý quy nạp Nội dung chƣơng: 2.1 Phép tính mệnh đề 2.2 Quy tắc suy diễn 2.3 Vị từ lƣợng tử 2.4 Nguyên lý quy nạp Chƣơng 2: Phƣơng pháp đếm Mục tiêu: - Trình bày đƣợc khái niệm tập hợp phép tốn - Trình bày khái niệm ánh xạ - Thực tốn giải tích tổ hợp Nội dung chƣơng: 2.1 Tập hợp 2.2 Ánh xạ 2.3 Giải tích tổ hợp Chƣơng 3: Quan hệ Mục tiêu: - Phân biệt đƣợc quan hệ - Phân biệt đƣợc quan hệ tƣơng đƣơng Nội dung chƣơng: 2.1 Quan hệ 2.2 Quan hệ tƣơng đƣơng 2.3 Thứ tự Kiểm tra Chƣơng 4: Hàm Bool đại số Bool Mục tiêu: - Trình bày đƣợc khái niệm đại số Bool, hàm Bool Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: Thời gian: - Giải đƣợc toán đại số Bool - Trình bày đƣợc mạch logic, cơng thức đa tối tiểu - Sử dụng đƣợc phƣơng pháp biểu đồ Karnaugh Nội dung chƣơng: 2.1 Đại số Bool 2.2 Hàm Bool 2.3 Mạch logic & công thức đa tối tiểu 2.4 Phƣơng pháp biểu đồ Karnaugh Phần 2: Lý thuyết đồ thị Chƣơng 1: Đồ thị Thời gian: Mục tiêu: - Trình bày khái niệm, định nghĩa đồ thị - Trình bày đƣợc khái niệm bậc, ma trận liên kết, đƣờng, chu trình - Phân biệt đồ thị có hƣớng vơ hƣớng - Thực toán đồ thị Nội dung chƣơng: 2.1 Định nghĩa Thời gian: 2.2 Biểu đồ 2.3 Bậc đỉnh Thời gian: 2.4 Ma trận liên kết 2.5 Đƣờng, chu trình Thời gian: 2.6 Sự liên thông 2.7 Sự đẳng hình Thời gian: 2.8 Đồ thị có hƣớng Thời gian: Chƣơng 2: Các toán chu trình Thời gian: Mục tiêu: - Trình bày đƣợc khái niệm chu trình, đƣờng Euler - Biết cách tìm chu trình đƣờng Euler - Trình bày đƣợc khái niệm chu trình Hamilton - Biết cách tìm chu trình đƣờng Hamilton Nội dung chƣơng: 2.1 Chu trình Eurler Thời gian: 2.2 Chu trình Hamilton Thời gian: Chƣơng 3: Cây Thời gian: Mục tiêu: - Trình bày đƣợc khái niệm, định nghĩa - Trình bày thực đƣợc phép duyệt nhị phân - Trình bày đƣợc khái niệm bao trùm - Thực cách tìm bao trùm nhỏ Nội dung chƣơng: 2.1 Khảo sát tổng quát Thời gian: 2.2 Cây nhị phân phép duyệt Thời gian: 2.3 Cây bao trùm Thời gian: 2.4 Cây bao trùm nhỏ Thời gian: Kiểm tra Thời gian: Chƣơng 4: Bài toán đƣờng ngắn Thời gian: Mục tiêu: - Trình bày đƣợc khái niệm đƣờng ngắn - Sử dụng đƣợc giải thuật Dijstra để tìm đƣờng ngắn Nội dung chƣơng: 2.1 Giới thiệu toán Thời gian: 2.2 Giải thuật Dijstra Thời gian: IV Điều kiện thực mơn học: Phịng học chun mơn hóa/nhà xƣởng: phịng học lý thuyết Trang thiết bị máy móc: máy vi tính Học liệu, dụng cụ, nguyên vật liệu: sách, tập, slide, máy chiếu, máy tính, giấy A4, loại giấy dùng minh họa, hình vẽ minh họa lý thuyết V Nội dung phƣơng pháp đánh giá: Nội dung: - Kiến thức: Biểu diễn đồ thị; Đồ thị Euler Đồ thị Hamilton; Cây nhị phân; Bài toán đƣờng ngắn - Kỹ năng: Xác định quy tắc phép suy luận, phƣơng pháp chứng minh, hàm logic mạch logic - Năng lực tự chủ trách nhiệm: Tích cực tham gia tự học, tham gia xây dựng bài, làm việc nhóm Phƣơng pháp: Các kiến thức kỹ đƣợc đánh giá qua nội dung tự nghiên cứu, ý thức thực môn học, kiểm tra thƣờng xuyên, kiểm tra định kỳ kiểm tra kết thúc môn học: - Điểm môn học bao gồm điểm trung bình điểm kiểm tra: tự nghiên cứu, điểm kiểm tra thƣờng xuyên, kiểm tra định kỳ có trọng số 0,4 điểm thi kết thúc mơn học có trọng số 0,6 - Điểm trung bình điểm kiểm tra trung bình cộng điểm kiểm tra thƣờng xuyên, điểm kiểm tra định kỳ tự nghiên cứu theo hệ số loại Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 42 Một đỉnh x T gốc T gồm x đỉnh sau Nhƣ vậy, huỷ gốc khỏi T, ta đƣợc rừng Bây ta xét tự T Độ lệch tâm đỉnh x, ký hiệu E9x), khoảng cách lớn từ x đến đỉnh T E(x) = (x, y) Đỉnh có độ lệch tâm nhỏ T đƣợc gọi tâm T, độ lệch tâm tâm đƣợc gọi bán kính T 3.2 Định lý Một tự có nhiều tâm Cây m-phân 4.1 Định nghĩa Cho có gốc T Nếu số tối đa đỉnh T m có đỉnh có m T gọi m-phân Nếu đỉnh T có m T gọi m-phân đầy đủ 4.2 Định lý Một m-phân đầy đủ có i đỉnh có mi + đỉnh 4.2 Hệ luận Cho T m-phân đầy đủ thì: (i) T có i đỉnh T có l = (m – 1)i + (ii) T có l T có i = (i) n = đỉnh đỉnh (ii) T có n đỉnh T có i = đỉnh l = Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 43 4.3 Định lý (i) Một m-phân có chiều cao h có nhiều mh (ii) Một m-phân có l có chiều cao h ≥ [logml] (iii) Một m-phân đầy đủ cân có l có chiều cao h = [logml] II Cây nhị phân phép duyệt Định nghĩa Cây nhị phân có gốc cho đỉnh có nhiều Từ gốc, có hay cạnh xuống, đỉnh nối với gốc phía trái (phải) cạnh gọi bên trái (con bên phải) Mỗi đỉnh lại có bên trái hay bên phải nhƣ cuối Một nhị phân tập rỗng, gồm gốc với hai nhị phân cách biệt gọi bên trái bên phải Phép duyệt Duyệt đƣa danh sách liệt kê tất đỉnh cây, đỉnh lần Có giải thuật thƣờng dùng để duyệt nhị phân Preorder Search, Inorder Search Postorder Search Có giải thuật vừa nêu đệ quy a Giải thuật Preorder Search Đến gốc Đến bên trái, dùng Preorder Đến bên phải, dùng Preorder Ví dụ: Xét nhị phân A B D C E F Giải thuật Preorder cho ta thứ tự đỉnh là: A, [cây bên trái], [cây bên phải] Trong đó, thứ tự đỉnh bên trái A là: B D E thứ tự đỉnh bên phải cùa A là: C F Vậy kết quả: A B D E C F b Giải thuật Inorder Search Đến bên trái, dùng Inorder Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 44 Đến gốc Đến bên phải, dùng Inorder Ví dụ: Xét ví dụ Giải thuật Inorder cho ta thứ tự đỉnh là: [cây bên trái], A, [cây bên phải] Trong đó, thứ tự đỉnh bên trái A là: D B E thứ tự đỉnh bên trái A là: C F Vậy kết quả: D B E A C F c Giải thuật Postorder Search Đến bên trái, dùng Postorder Đến bên phải, dùng Postoeder Đến gốc Ví dụ: Xét ví dụ Giải thuật Postorder cho ta thứ tự đỉnh [cây bên trái], [cây bên phải], A Trong đó, thứ tự đỉnh bên trái A là: D E B thứ tự đỉnh bên phải A là: F C Vậy kết quả: D E B F C A III Cây bao trùm Định nghĩa Cho đồ thị vô hƣớng G.Một T gọi bao trùm G T đồ thị chứa đỉnh G Định lý Đồ thị G có bao trùm G liên thông DFS BFS Giải thuật nêu đƣợc áp dụng để tìm bao trùm đồ thị liên thông G theo cách: 3.1 Phép duyệt theo bề sâu (Depth-First Search) Chọn đỉnh G làm gốc T Tạo đƣờng từ gốc qua đỉnh không T, kéo dài đƣờng đến kéo dài thêm Đặt đƣờng vào T quay trở đỉnh trƣớc đó, xem đỉnh gốc Lập lại thủ tục đỉnh G nằm T Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 45 Cây bao trùm nhận đƣợc phƣơng pháp gọi bao trùm tạo theo bề sâu (Depth-First Spanning Tree) 3.2 Phép duyệt theo bề rộng (Breadth-First Search) Chọn đỉnh G làm gốc T Đặt cạnh nối gốc với đỉnh T vào T Lần lƣợt xét đỉnh gốc, xem đỉnh gốc Lập lại thủ tục đỉnh G nằm T Cây bao trùm nhận đƣợc phƣơng pháp gọi bao trùm tạo theo bề rộng (Breadth-First Spanning Tree) Ví dụ: Gọi đồ thị liên thông G sau: Ma trận liên kết G là: Lấy đỉnh làm gốc 3 7 8 Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 46 Cây bao trùm tạo theo bề rộng là: 8 Định lý Coi bao trùm T đồ thị G Thêm vào T cạnh G (không thuộc T), ta đƣợc chu trình T Huỷ cạnh chu trình khỏi T, ta nhận đƣợc bao trùm G IV Cây bao trùm nhỏ Định nghĩa Cho đồ thị G Giả sử cạnh G đƣợc gán với số gọi trọng số cạnh Thì G đƣợc gọi đồ thị có trọng số Tổng trọng số tất cạnh đƣờng (chu trình, đồ thị con) gọi trọng số đƣờng (chu trình, đồ thị con) Ký hiệu trọng số cạnh e (đồ thị G) c(e) (c(G)) Bài tốn đặt tìm bao trùm có trọng số nhỏ (minimail spanning tree: MST) đồ thị có trọng số liên thơng Định lý Gọi T bao trùm đồ thị có trọng số liên thơng G Thì T MST cạnh e T có trọng số lớn chu trình tạo e với cạnh T Ví dụ: Xét đồ thị có trọng số G sau đây: A B 3 D F E G C 10 H Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 47 Ta bao trùm G: A B 3 D E 8 10 F C G H Có cạnh khơng thuộc bao trùm kiểm tra dần cạnh Cạnh 3, Vậy thay , , , , , (có trọng số 6) cạnh B 3 (có trọng số 3) Bây T là: C 2 D E 10 F G H Tiếp tục đến cạnh : Tạo chu trình DEBA, chu trình số lớn Vậy giữ nguyên T Cạnh : có trọng số lớn chu trình DFGD giữ nguyên T Cạnh : giữ nguyên T Cạnh : giữ nguyên T Cạnh : có trọng số nhỏ trọng số cạnh Ta : Thêm vào T tạo chu trình ADBA gồm cạnh có trọng số 3, A thay , , T trở thành: A B 3 D F E G C 10 H có trọng chu trình BCHEB, Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây Cuối cùng, cạnh 48 : có trọng số nhỏ trọng số GHCBADG, thay Ta tìm đƣợc MST G là: chu trình A B 3 D F E G C 10 H Giải thuật PRIM Cho G đồ thị có trọng số liên thơng Giải thuật Prim xây dựng đồ thị T G nhƣ sau : Chọn tuỳ ý đỉnh G đặt vào T Nếu đỉnh G nằm T dừng Nếu khơng, tìm cạnh có trọng số nhỏ nối đỉnh T với đỉnh T: Thêm cạnh vào T Trở bƣớc Ta chứng minh giải thuật Prim cho ta MST đồ thị G Giả sử G có n đỉnh Tk (0≤ k ≤n -1) đồ thị gồm cạnh k = đỉnh nhận đƣợc thực bƣớc lần thứ k Xét mệnh đề (Ak): Các mệnh Tk nằm MST Ta chứng minh (An-1) Dùng quy nạp (A0) hiển nhiên Giả sử (Ak) (0 ≤ k ≤ n – 1) Gọi T* MST chứa Tk cạnh ek+1 = (v Tk w Tk) cạnh thêm vào Tk để Tk+1 Nếu ek+1 T* (Ak+1) Xét trƣờng hợp ek+1 T*.Vì T* liên thơng nên có đƣờng T* nối v với w Dễ thấy đƣờng phải chứa cạnh với v’ Tk w’ Tk Theo điều kiện chọn cạnh ek+1 giải thuật Prim thì: c(ek+1) ≤ c( ) theo tính chất MST thì: c(ek+1) ≥ c( ) Suy ra: c(ek+1) = c( ) Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 49 Bây T*, thay cạnh 1MST chứa Tk+1 Vậy (Ak+1) ek+1, ta nhận đƣợc T**, hiển nhiên T** Ví dụ: Xét đồ thị A A 10 A 10 A A A A A 11 A A 12 A A 10 A từ đỉnh A, ta xây dựng dần MST đồ thị Áp dụng giải thuật Prim, bắt đầu A A A A A A A 10 A (T1) 10 A A 11 A A A3 A A 12 A (T3) (T2) A A A A A A A (T4) A 8 A 4 (T5) 10 (T6) Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 50 Giải thuật Kruskal Cho G = (V, E) đồ thị có trọng số liên thơng A Giải thuật Kruskal xây dựng 10 A đồ thị T G nhƣ sau: T = (V, ) Nếu T liên thơng dừng Nếu khơng, chọn cạnh có trọng số nhỏ không T cho thêm cạnh vào T khơng tạo chu trình Đặt cạnh vào T Trở bƣớc Ta chứng minh giải thuật Kruskal cho ta MST đồ thị đồ thị G Chỉ cần chứng minh: a) Bƣớc khả thi b) Khi giải thuật kết thúc đồ thị T MST G Chứng minh: a) Đặt A={cạnh e T/thêm e vào T khơng tạo chu trình} Ta cần chứng minh T khơng liên thơng A ≠ Vì T khơng liên thơng nên phải có đỉnh u, v không nằm thành phần với T Vì G liên thơng nên có đƣờng nối u với v, đƣờng phải chứa cạnh e = với u’ nằm thành phần với u Vậy e T thêm cạnh e vào T khơng tạo chu trình Nói cách khác A ≠ b) Ta gọi T0 đồ thị nhận đƣợc giải thuật Kruskal kết thúc Hiển nhiên T bao trùm G Lấy cạnh e T0 Trên chu trình tạo e với cạnh T0, xét cạnh a Xét lần thực bƣớc giải thuật để chọn đƣợc cạnh a Với ký hiệu tập hợp A nhƣ trên, nhận xét T0 huỷ cạnh a thêm cạnh e T0 cây, e A Theo điều kiện chọn cạnh a giải thuật Kruskal c(a) ≤ c(e) Vậy e có trọng số lớn chu trình tạo e với cạnh T0 Suy T0 MST G 4 5 Phần 2: Lý thuyết đồ thị – Chƣơng 3: Cây 51 Áp dụng giải thuật Kruskal, ta xây dựng dần MST đồ thị trên: 1 (1) (3) (2) 4 (4) (5) 4 3 (6) Phần 2: Lý thuyết đồ thị – Chƣơng 4: Bài toán đƣờng ngắn 52 Chƣơng BÀI TOÁN VỀ CON ĐƢỜNG NGẮN NHẤT I Giới thiệu toán Cho đơn đồ thị có hƣớng liên thơng có trọng số G = (V, E), trọng số cạnh đƣợc giả sử ≥ đƣợc xem nhƣ chiều dài cạnh Bài tốn đặt tìm đƣờng ngắn nối đỉnh cho trƣớc đồ thị Xét đỉnh u, v V Nếu có cạnh e = E nối u với v ta đặt: c(u, v) = c(e) = chiều dài cạnh e Nếu khơng có cạnh nối u với v ta đặt c(u, v) = Lƣu ý c(u, v) = với u V Đặt c*(u, v) = chiều dài đƣờng ngắn (gồm cạnh) nối u với v Nhận xét rằng: C*(u, u) < có chu trình G u C*(u, u) = u V G khơng có chu trình II Giải thuật DIJKSTRA Bƣớc 1: Đặt L = {v0}, (v0) = Với v V – {v0} Đặt (v) = c(v0, v) (v) = v0 Bƣớc 2: Nếu đỉnh G thuộc L dừng Bƣớc 3: Nếu không, chọn v L cho (v) nhỏ Đặt v* = v Đƣa thêm v* cạnh vào L Bƣớc 4: Với w V\L, (w) > (v*) + c(v*, w) đặt (w) = (v*) + c(v*, w) (w) = v* Trở bƣớc Định lý: Đặt (v) *(v) trị số (v) giải thuật Dijkstra dừng Thì đƣờng ngắn từ v0 đến w có chiều dài *(w) đƣợc xác định hàm *: đỉnh trƣớc đỉnh v đƣờng ngắn *(v) Chứng minh: Hiển nhiên giải thuật luôn dừng Trƣớc hết nhận xét với đỉnh w V thời điểm thực giải thuật ta ln có: c*(v0, w) ≤ (w) c*(v0, w) ≤ *(w) Giả sử thứ tự chọn đỉnh đặt vào L v0, v1, …, Phần 2: Lý thuyết đồ thị – Chƣơng 4: Bài toán đƣờng ngắn 53 Ta chứng minh *(vi) ≤ *(vi+1), i Ở vòng lặp thứ i (chọn đỉnh vi đặt vào L) vi+1 L nên: *(vi) = i(vi) ≤ i(vi+1) (i hàm vòng lặp thứ i) Ở vịng lặp thứ i = ta có: *(vi+1) = i+1(vi+1) = Do *(vi) ≤ *(vi+1) Nhƣ đỉnh v đƣợc chọn đặt vào L trƣớc w thì: *(v) ≤ *(w) Bây giả sử có đỉnh w cho c*(v0, w) < *(w) Gọi v0w1…wpw đƣờng ngắn nối v0 với w, c*(wp, w) giả sử c*(v0, w1) = *(w) i = 1, …, p Ta có: *(wp) ≤ *(wp) + c*(wp, w) = c*(v0, wp) + c*(wp, w) = c*(v0, w) < *(w) Vậy đỉnh wp đƣợc chọn đặt vào L trƣớc đỉnh w Ở thời điểm chọn wp đặt vào L thì: c*(v0, wp) = *(wp) c(v0, w) = c*(v0, wp) + c*(wp) = *(wp) + c(wp, w) ≥ (w) ≥ *(w) Vô lý Lƣu ý: Để tìm đƣờng ngắn nối đỉnh v0 với đỉnh w, ta áp dụng giải thuật Dijkstra với điều kiện dừng thay đổi nhƣ sau: Nếu w L giải thuật dừng Giải thuật Dijkstra áp dụng đƣợc cho đồ thị vơ hƣớng Ví dụ: Xét đồ thị B A D C F E G H Phần 2: Lý thuyết đồ thị – Chƣơng 4: Bài toán đƣờng ngắn 54 Dùng giải thuật Difkstra để tìm đƣờng ngắn nối A đến đỉnh khác A B C D E F G H L L A A A A A A A Chọn đƣợc đỉnh F đặt vào L ta có bảng sau: A B C D E L L F G H L A A F A A L L L 4 A B F B A F L 4 6 A B F B A F C F L L L 4 6 A B F B A F C 4 6 4 6 4 6 4 6 L A B C D E F G H L L L L L L L 4 6 A B F B A F C G H L L L A B C D E G H L F A L L L A B C D E F A Cứ tiếp tục nhƣ trên, ta có lần lƣợt: A B C D E F G H 0 5 Phần 2: Lý thuyết đồ thị – Chƣơng 4: Bài toán đƣờng ngắn A B C D E F G H L L L L L L L L 4 6 A B F B A F C A B C D E F G H L L L L L L L L L 4 6 A B F B A F C 0 55 4 6 4 6 Giải thuật chấm dứt bảng lập đƣợc sau cho ta đƣờng ngắn nối A đến đỉnh khác Chẳng hạn đƣờng ngắn nối A đến H ABCH chiều dài đƣờng ngắn Khi giải thuật Dijkstra kết thúc, ta nhận đƣợc bao trùm L G đƣờng ngắn nối v0 đến đỉnh khác đƣờng L nối v0 với đỉnh Ta gọi L bao trùm Dijkstra gốc v0 G Tài liệu tham khảo: [1] Toán rời rạc – GS Nguyễn Hữu Anh – NXB Giáo dục [2] Lý thuyết đồ thị - PTS Nguyễn Cam, PTS Chu Đức Khánh – NXB Trẻ [3] Đề cƣơng giảng mơn Tốn rời rạc lý thuyết đồ thị – Trƣờng Cao đẳng Kinh tế - Kỹ thuật Vinatex Tp Hồ Chí Minh ... Nguyễn Hữu Anh – NXB Giáo dục [2] Lý thuyết đồ thị - PTS Nguyễn Cam, PTS Chu Đức Khánh – NXB Trẻ [3] Đề cƣơng giảng môn Toán rời rạc lý thuyết đồ thị – Trƣờng Cao đẳng Kinh tế - Kỹ thuật Vinatex Tp.. . logic - Cơ lý thuyết đồ thị; Biểu diễn đồ thị; Đồ thị Euler Đồ thị Hamilton; Cây nhị phân; Bài toán đƣờng ngắn - Phân tích đƣợc sở lý thuyết giải tốn Tài liệu tham khảo: [1] Toán rời rạc – GS... liệu giảng dạy Toán rời rạc lý thuyết đồ thị đƣợc dùng làm tài liệu học tập cho sinh viên ngành Công nghệ thơng tin, đƣợc trình bày theo chƣơng trình mơn học đƣợc xây dựng Tài liệu giảng dạy giúp