1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình toán rời rạc 2

28 1 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 0,98 MB

Nội dung

Học viện Cơng nghệ Bưu Viễn thơng Khoa Cơng nghệ thơng tin Tốn rời rạc Đồ thị Euler Đồ thị Hamilton Ngô Xuân Bách CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Đồ thị Euler Đồ thị Hamilton   CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Khái niệm ví dụ Định nghĩa  o o o o Chu trình đơn đồ thị 𝐺 qua tất cạnh gọi chu trình Euler Đường đơn đồ thị G qua tất cạnh gọi đường Euler Đồ thị gọi đồ thị Euler có chu trình Euler Đồ thị gọi đồ thị nửa Euler có đường Euler Ví dụ  (Phương ND, 2013) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Khái niệm đồ thị Euler, đồ thị nửa Euler Ví dụ  (Phương ND, 2013) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Điều kiện cần đủ để đồ thị Euler Với đồ thị vô hướng  o Đồ thị vô hướng liên thông 𝐺 =< 𝑉, 𝐸 > đồ thị Euler đỉnh 𝐺 có bậc chẵn Với đồ thị có hướng  o Đồ thị có hướng liên thơng yếu 𝐺 =< 𝑉, 𝐸 > đồ thị Euler tất đỉnh có bán bậc bán bậc vào (điều làm cho đồ thị liên thông mạnh) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Chứng minh đồ thị Euler Với đồ thị vô hướng  o Kiểm tra đồ thị có liên thơng hay khơng?  o Kiểm tra 𝐷𝐹𝑆(𝑢) = 𝑉 𝐵𝐹𝑆(𝑢) = 𝑉? Kiểm tra bậc đỉnh có phải số chẵn hay không?  Với ma trận kề, tổng phần tử hàng 𝑢 (cột 𝑢) bậc đỉnh 𝑢 Với đồ thị có hướng  o Kiểm tra đồ thị có liên thơng yếu hay không?   o Kiểm tra tất đỉnh có thỏa mãn bán bậc bán bậc vào hay không?  Kiểm tra đồ thị vô hướng tương ứng liên thông, Kiểm tra tồn đỉnh 𝑢 ∈ 𝑉 để 𝐷𝐹𝑆(𝑢) = 𝑉 𝐵𝐹𝑆 𝑢 = 𝑉? Với ma trận kề, bán bậc đỉnh 𝑢 𝑑𝑒𝑔+ (𝑢) số số hàng 𝑢, bán bậc vào đỉnh 𝑢 𝑑𝑒𝑔− (𝑢) số số cột 𝑢 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Bài tập Cho đồ thị vô hướng 𝐺 biểu diễn dạng ma trận kề hình bên Chứng minh 𝐺 đồ thị Euler  (Phương ND, 2013) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Bài tập Cho đồ thị có hướng 𝐺 biểu diễn dạng ma trận kề hình bên Chứng minh 𝐺 đồ thị Euler  (Phương ND, 2013) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật tốn tìm chu trình Euler Euler-Cycle(𝑢){ Bước 1: Khởi tạo 𝑠𝑡𝑎𝑐𝑘 = ∅; //khởi tạo 𝑠𝑡𝑎𝑐𝑘 ∅ 𝐶𝐸 = ∅; //khởi tạo mảng 𝐶𝐸 ∅ p𝑢𝑠ℎ(𝑠𝑡𝑎𝑐𝑘, 𝑢); //đưa đỉnh 𝑢 vào ngăn xếp Bước 2: Lặp while(𝑠𝑡𝑎𝑐𝑘 ≠ ∅){ 𝑠 = 𝒈𝒆𝒕(𝑠𝑡𝑎𝑐𝑘); //lấy đỉnh đầu ngăn xếp if(𝐾𝑒(𝑠) ≠ ∅){ 𝑡=; p𝑢𝑠ℎ(𝑠𝑡𝑎𝑐𝑘, 𝑡); //đưa đỉnh 𝑡 vào ngăn xếp 𝐸 = 𝐸\*(𝑠, 𝑡)+; //loại bỏ cạnh (𝑠, 𝑡) } else{ 𝑠 = p𝑜𝑝(𝑠𝑡𝑎𝑐𝑘); //loại bỏ s khỏi ngăn xếp 𝑠 ⇒ 𝐶𝐸; //đưa s sang 𝐶𝐸 } } Bước 3: Trả lại kết ; } CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật toán (1/3)  Áp dụng thuật tốn tìm chu trình Euler cho đồ thị vô hướng biểu diễn ma trận kề hình bên 10 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Chứng minh đồ thị nửa Euler  Với đồ thị vô hướng o Chứng tỏ đồ thị cho liên thông  o Có đỉnh bậc lẻ   Sử dụng hai thủ tục 𝐷𝐹𝑆(𝑢) 𝐵𝐹𝑆(𝑢) Sử dụng tính chất phương pháp biểu diễn đồ thị để tìm bậc đỉnh Với đồ thị có hướng o Chứng tỏ đồ thị cho liên thông yếu  o o 14 Sử dụng hai thủ tục 𝐷𝐹𝑆(𝑢) 𝐵𝐹𝑆(𝑢) Có hai đỉnh 𝑢, 𝑣 ∈ 𝑉 thỏa mãn 𝑑𝑒𝑔+ (𝑢) − 𝑑𝑒𝑔− (𝑢) = 𝑑𝑒𝑔− (𝑣) − 𝑑𝑒𝑔+ (𝑣) = Các đỉnh 𝑠 ≠ 𝑢, 𝑠 ≠ 𝑣 cịn lại có 𝑑𝑒𝑔+ (𝑠) = 𝑑𝑒𝑔− (𝑠) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Bài tập  Cho đồ thị vô hướng 𝐺 =< 𝑉, 𝐸 > biểu diễn ma trận kề hình bênh Chứng minh 𝐺 đồ thị nửa Euler? (Phương ND, 2013) 15 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Bài tập  Cho đồ thị có hướng 𝐺 =< 𝑉, 𝐸 > biểu diễn ma trận kề hình bênh Chứng minh 𝐺 đồ thị nửa Euler? (Phương ND, 2013) 16 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật tốn tìm đường Euler  Thuật tốn tìm đường Euler gần giống hệt thuật tốn tìm chu trình Euler  Tìm chu trình Euler o  Đầu vào thuật tốn đỉnh 𝑢 ∈ 𝑉 Tìm đường Euler o Đồ thị vơ hướng  o Đồ thị có hướng  17 Đầu vào thuật toán đỉnh 𝑢 ∈ 𝑉 có bậc lẻ (trường hợp có bậc lẻ dùng đỉnh bất kỳ) Đầu vào thuật toán đỉnh 𝑢 ∈ 𝑉 thỏa mãn 𝑑𝑒𝑔+ (𝑢) − 𝑑𝑒𝑔− (𝑢) = CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật tốn  Áp dụng thuật tốn tìm đường Euler cho đồ thị vô hướng, nửa Euler sau? 18 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Nội dung   Đồ thị Euler Đồ thị Hamilton 19 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Khái niệm ví dụ  Định nghĩa o o o o  Đường qua tất đỉnh đồ thị, đỉnh lần gọi đường Hamilton Chu trình bắt đầu đỉnh 𝑣 đó, qua tất đỉnh cịn lại đỉnh lần, sau quay trở lại 𝑣, gọi chu trình Hamilton Đồ thị gọi đồ thị Hamilton có chu trình Hamilton Đồ thị gọi đồ thị nửa Hamilton có đường Hamilton Ví dụ 20 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Tiêu chuẩn nhận biết đồ thị Hamilton?  Cho đến nay, chưa tìm tiêu chuẩn để nhận biết đồ thị có phải đồ thị Hamilton hay khơng  Cho đến nay, chưa có thuật tốn hiệu để kiểm tra đồ thị có phải đồ thị Hamilton hay không 21 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật tốn tìm chu trình Hamilton (1/3)  Thuật tốn liệt kê tất chu trình Hamilton bắt đầu đỉnh thứ 𝑘 Hamilton(int k){ for( 𝑦 ∈ 𝐾𝑒(𝑋,𝑘 − 1-)){ if((𝑘 == 𝑛 + 1) && (𝑦 == 𝑣0)) Ghinhan(𝑋,1-, 𝑋,2-, … , 𝑋,𝑛-, 𝑣0 ); else if(𝑐ℎ𝑢𝑎𝑥𝑒𝑡 𝑦 == 𝒕𝒓𝒖𝒆){ 𝑋 𝑘 = 𝑦; 𝑐ℎ𝑢𝑎𝑥𝑒𝑡 𝑦 = 𝒇𝒂𝒍𝒔𝒆; Hamilton(𝑘 + 1); 𝑐ℎ𝑢𝑎𝑥𝑒𝑡 𝑦 = 𝒕𝒓𝒖𝒆; } } } 22 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật tốn tìm chu trình Hamilton (2/3)  Thuật toán liệt kê tất chu trình Hamilton bắt đầu đỉnh thứ 𝑘 Hamilton(int k){ for( 𝑦 ∈ 𝐾𝑒(𝑋,𝑘 − 1-)){ Bản chất if((𝑘 == 𝑛 + 1) && (𝑦 == 𝑣0)) duyệt toàn Ghinhan(𝑋,1-, 𝑋,2-, … , 𝑋,𝑛-, 𝑣0 ); dùng Quay lui else if(𝑐ℎ𝑢𝑎𝑥𝑒𝑡 𝑦 == 𝒕𝒓𝒖𝒆){ !!! 𝑋 𝑘 = 𝑦; 𝑐ℎ𝑢𝑎𝑥𝑒𝑡 𝑦 = 𝒇𝒂𝒍𝒔𝒆; Hamilton(𝑘 + 1); 𝑐ℎ𝑢𝑎𝑥𝑒𝑡 𝑦 = 𝒕𝒓𝒖𝒆; } } } 23 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật tốn tìm chu trình Hamilton (3/3)  Khi đó, việc liệt kê chu trình Hamilton thực sau Hamilton-Cycle(𝑣0 ){ //Khởi tạo đỉnh chưa xét for(𝑣 ∈ 𝑉) 𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑣- = 𝒕𝒓𝒖𝒆; 𝑋 = 𝑣0 ; //𝑣0 đỉnh đồ thị 𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑣0 - = 𝒇𝒂𝒍𝒔𝒆; //Đánh dấu 𝑣0 xét Hamilton(2); //Gọi thủ tục duyệt } 24 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật toán (1/2)  Áp dụng thuật toán tìm chu trình Hamilton cho đồ thị vơ hướng 25 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật tốn (2/2) Cây tìm kiếm chu trình Hamilton 1 4 26 3 5 4 1 CuuDuongThanCong.com 5 2 1 http://www.ptit.edu.vn https://fb.com/tailieudientucntt Tóm tắt      Khái niệm đường Euler, chu trình Euler, đồ thị nửa Euler, đồ thị Euler Điều kiện cách chứng minh đồ thị Euler, nửa Euler Khái niệm đường Hamilton, chu trình Hamilton, đồ thị nửa Hamilton, đồ thị Hamilton Nắm thuật tốn cách kiểm nghiệm thuật tốn Viết chương trình cài đặt thuật toán cho phép thực máy tính 27 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Bài tập  Làm số tập giáo trình 28 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt ... 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,7,6 1 ,2, 3,4,7 ∅ 18 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,7 1,6 1 ,2, 3,4,7,5 ∅ 19 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8 1,6,7 1 ,2, 3,4,7,5 ,2 ∅ 20 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9 1,6,7 1 ,2, 3,4,7,5 ,2, 6 ∅ 21 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10... 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10 1,6,7 1 ,2, 3,4,7,5 ,2, 6,1 ∅ 22 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10,8 1,6,7 10 1 ,2, 3,4,7,5 ,2, 6 23 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10 1,6,7,8 11 1 ,2, 3,4,7,5 ,2, 6,5 24 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10,11... thuật toán (3/3) Bước Trạng thái Stack CE 27 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10,11, 12, 9,13 1,6,7,8 28 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10,11, 12, 9,13, 12 1,6,7,8 29 1 ,2, 3,4,7,5 ,2, 6,5,3,11,4,8,9,10,11, 12, 9,13, 12, 10

Ngày đăng: 01/12/2022, 10:56

w