1. Trang chủ
  2. » Thể loại khác

Slide bài giảng Toán rời rạc 2 – Ngô Xuân Bách

28 266 4

Đ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 909,2 KB

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 Nội dung Đồ thị Euler Đồ thị Hamilton   http://www.ptit.edu.vn 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) http://www.ptit.edu.vn Khái niệm đồ thị Euler, đồ thị nửa Euler Ví dụ  (Phương ND, 2013) http://www.ptit.edu.vn Đ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) http://www.ptit.edu.vn 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 𝑢 http://www.ptit.edu.vn 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) http://www.ptit.edu.vn 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) http://www.ptit.edu.vn 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 ; } http://www.ptit.edu.vn Kiểm nghiệm thuật tố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 http://www.ptit.edu.vn 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 𝑠 ≠ 𝑢, 𝑠 ≠ 𝑣 lại có 𝑑𝑒𝑔+ (𝑠) = 𝑑𝑒𝑔− (𝑠) http://www.ptit.edu.vn 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 http://www.ptit.edu.vn 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 http://www.ptit.edu.vn 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 tố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 𝑑𝑒𝑔+ (𝑢) − 𝑑𝑒𝑔− (𝑢) = http://www.ptit.edu.vn 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 http://www.ptit.edu.vn Nội dung   Đồ thị Euler Đồ thị Hamilton 19 http://www.ptit.edu.vn 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 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 http://www.ptit.edu.vn 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 http://www.ptit.edu.vn Thuật tốn tìm chu trình Hamilton (1/3)  Thuật toá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 http://www.ptit.edu.vn Thuật tốn tìm chu trình Hamilton (2/3)  Thuật tố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 http://www.ptit.edu.vn 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 http://www.ptit.edu.vn Kiểm nghiệm thuật tốn (1/2)  Áp dụng thuật tốn tìm chu trình Hamilton cho đồ thị vơ hướng 25 http://www.ptit.edu.vn Kiểm nghiệm thuật toán (2/2) Cây tìm kiếm chu trình Hamilton 1 4 26 3 5 4 1 5 3 http://www.ptit.edu.vn 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 toán cách kiểm nghiệm thuật tốn Viết chương trình cài đặt thuật tốn cho phép thực máy tính 27 http://www.ptit.edu.vn Bài tập  Làm số tập giáo trình 28 http://www.ptit.edu.vn ... 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: 23/11/2017, 18:28

TỪ KHÓA LIÊN QUAN