1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Phân tích và Thiết kế giải thuật nâng cao: Phần 1 PGS.TS. Trần Cao Đệ

79 1,6K 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 79
Dung lượng 5,04 MB

Nội dung

Phân tích & Thiết kế Giải thuật nâng cao Advanced Algorithm Analysis and Design Bài giảng cho Thạc sĩ Ngành HTTT PGS TS TRẦN CAO ĐỆ Đại Học Cần Thơ 2014 Phần 1: KT phân tích thiết kế giải thuật PGS TS TRẦN CAO ĐỆ Đại Học Cần Thơ 2014 Chương 1: KỸ THUẬT PHÂN TÍCH GIẢI THUẬT PGS TS TRẦN CAO ĐỆ Đại Học Cần Thơ 2014 Thuật toán  Giải thuật / Thuật toán (algorithm) – –  Xuất phát từ nhà toán học Arập Al-Khowarizmi (khoảng năm 825) Giải thuật dãy hữu hạn bước, bước mơ tả xác phép toán, hành động cần thực ta lời giải tốn  Ví dụ thuật tốn Euclid   – – – – – Input: m, n nguyên dương Output: g (ước chung lớn m n) Thuật tốn : Bước 1: Tìm r, phần dư m cho n Bước 2:   Nếu r = 0, g:=n dừng lại Ngược lại (r≠0) ,thì m:=n; n:=r quay lại bước Tính chất thuật toán   Input: Mỗi thuật toán có tập giá trị đầu vào (có thể rỗng) Output: Mỗi thuật tốn có tập liệu đầu (output), tương ứng với input   Tính xác: Thuật tốn phải tạo giá trị đầu xác tương ứng với giá trị đầu vào Trong điều kiện hai xử lý thực thuật toán phải cho kết  Tính hữu hạn: Với liệu vào (hợp lệ), thuật toán phải dừng lại sau số hữu hạn bước thực  Tính khả thi: Các phép tốn có mặt thuật tốn phải đủ đơn giản, thực lượng thời gian hữu hạn (có thể thực người với giấy, bút khoảng thời gian hữu hạn)  Tính xác định: bước thuật toán phải xác định (các thao tác phải rõ ràng, không gây nên nhập nhằng) Tính tổng quát: phải áp dụng cho lớp tốn Vấn đề giải & khơng giải  Một tốn: – Có nhiều thuật toán giải  Giải  Lựa chọn thuật tốn – Khơng tồn thuật tốn để giải  gọi vấn đề không giải (bằng thuật tốn)  Vd: KHƠNG CĨ Thuật tốn thắng cho người thứ hai cờ ca rơ – KHƠNG CĨ Thuật tốn xem máy Turing có dừng lại sau n bước hay không – Vấn đề chứng minh thuật tốn  Tiếp cận khoa học – Tính đắn thuật toán   –  So sánh thuật tốn: phân tích độ phức tạp thời gian Tiếp cận thực hành – – Thuật toán đắn, xác Thuật tốn dừng Thuật tốn đơn giản, dễ hiểu, dễ cài đặt (dễ viết chương trình) Thuật tốn sử dụng tiết kiệm nguồn tài nguyên máy tính, đặc biệt chạy nhanh Thời gian thực chương trình  Tiếp cận 1: tính số giây, phút, giờ, ngày cần thiết để chạy chương trình – Khơng xác:   – Không khả thi   Phụ thuộc tốc độ máy Phụ thuộc vào tập liệu vào: có input chạy nhanh, có input chạy chậm Chỉ thực số input Không biến thiên thời gian theo độ dài input  Tiếp cận 2: theo số phép toán mà chương trình phải thực – Phép tốn   – – Số phép +,-,*,/,=; Số thị máy tính) Độc lập tốc độ máy Vẫn phụ thuộc vào đặc tính input    Trường hợp xấu Trường hợp tốt Trường hợp ngẫu nhiên Độ phức tạp thời gian giải thuật  Độ phức tạp thời gian giải thuật hàm theo kích thước input, T(n)  So sánh độ phức tạp thời gian: so sánh theo tỷ suất tăng hàm thời gian  Kí hiệu Θ: tiệm cận xấp xỉ Θ(g(n)) = {f(n)/ ∃c1,c2,n0 >0 : ∀n>n0 , ≤ c1g(n) ≤ f(n) ≤ c2g(n) } Ta viết: f(n)= Θ(g(n)) thay cho f(n) ∈ Θ(g(n))  Kí hiệu O: tiệm cận O(g(n)) = {f(n)/ ∃c,n0>0: ∀n>n0, ≤ f(n) ≤ cg(n) } Ta viết: f(n)= O(g(n)) thay cho f(n) ∈ O(g(n))  Kí hiệu Ω: tiệm cận Ω (g(n)) = {f(n)/ ∃c,n0>0: ∀n>n0, ≤ cg(n) ≤ f(n)} Ta viết: f(n)= Ω (g(n)) thay cho f(n) ∈ Ω (g(n)) Ví dụ     10 f(n)= 3n3 + 2n2 f(n)= Θ(n3) f(n)= Ω(n3) f(n)= O(n3) X-play X X X O O X-play O-play X-play X X X X O O X X X X O O B X O X X X O O E X O X X X O X O I A X C X X X X O O O X X O D X O F X O X X O X O X O X X X O X O G J X X H O X O X O X X X O X O X O K X thắng Vét cạn để định trị X X-play Max Max(-1;1)=1 -∞ X X O O Max(- ∞;1)=1 A Max(0;1)=1 Min(0;1)=0 Min(0;-1)= -1 O-play Min X X X X O O X-play Max -∞ ∞ B X X X X O O E Max(-∞;0)=0 ∞ X X X X O O O F -∞ X X O X O D X O X X O X O G -∞ X X H O X O X O -1 Max(-∞;0)=0 O-play Min X Min(0; ∞)=0 Min(0;∞)= X O X X X O O C X O X X X O X O I Max(-∞; 1)=1 X O X X X O X O J X X X O X O X O K Giải thuật quay lui (vét cạn) để định trị float Search(NodeType n, ModeType mode) { NodeType C; float value; if (is_leaf(n)) return Payoff(n); if (mode == MAX) value = -∞; else value = ∞; for (với C n) if (mode == MAX) value = max(value, Search(C, MIN)); else value = min(value, Search(C, MAX)); return value; } 67 Cắt Alpha – beta Vp ≥ Vq MAX MIN MIN MAX 68 Vp ≤ Vq X thắng Cắt Alpha – beta X X-play Max Max(0;1)=1 -∞ X X O O Max(- ∞;1)=1 A Max(0;1)=1 Min(0;1)=0 O-play Min X X X X O O X-play Max -∞ ∞ B X X X X O O E Max(-∞;0)=0 ∞ X X X X O O O F -∞ X X O X O D X O X X O X O G X X H O X O X O -1 Max(-∞;0)=0 O-play Min X Min(0; ∞)=0 Min(0;∞)= X O X X X O O C X O X X X O X O I X O X X X O X O J X X X O X O X O K Giải thuật cắt alpha-beta 70 float cat_tia(NodeType Q, ModeType mode, float Vp) { NodeType C; float Vq; if (is_leaf(Q)) return Payoff(Q); if (mode == MAX) Vq = -∞; else Vq = ∞; C= trái Q; While (C Q) { if (mode == MAX) { Vq = max(Vq, Cat_tia(C, MIN, Vq)); if (Vp= Vq) return Vq; //cắt } return Vq; } Phân nhánh tính cận Branch and bound  Giải toán tối ưu – –  Vét cạn: lâu Greedy: khơng cho kết tối ưu Phân nhánh tính cận – Phân nhánh Chia toán thành số tốn  Cây tìm kiếm định  71  Giải toán tối ưu – –  Vét cạn: lâu Greedy: không cho kết tối ưu Phân nhánh tính cận – Phân nhánh Chia toán thành số toán  Cây tìm kiếm định   Xét tốn TSP Ví dụ  Phân nhánh  Tính cận  Bài tốn tìm Min  tính cận  Cận dưới: • đỉnh: chọn hai cạnh có độ dài nhỏ • Cận = tổng độ dài tất cạnh chọn chia cho  Ví dụ:  72 cận nút D (ab+ac+ba+be+ca+cb+de+d c+eb+ed)/2 = 41/2 = 20.5 Lời giải tạm thời Lời giải tạm thời Lời giải tạm thời Bài toán ba lơ branch and bound  Bài tốn tìm max  Xét theo thứ tự giảm đơn giá  Nút gốc: trạng thái ban đầu ba lô – –  Tổng giá trị chọn TGT = Cận nút gốc CT = W * Ðơn giá lớn Nút con: khả chọn đồ vật – TGT = TGT (của nút cha) + số đồ vật chọn * giá trị vật – W = W (của nút cha) - số đồ vật chọn * trọng lượng vật – CT = TGT + W * Ðơn giá vật xét Kĩ thuật tìm kiếm địa phương Local search  Giải tốn tìm lời giải tối ưu: – – – 75 Xuất phát từ phương án biến đổi lên phương án hành  phương án tốt Lặp lại không cịn cải thiện phương án  Bài toán cây phủ tối thiểu  – – – Cho G = (V,E) đồ thị vơ hướng liên thơng Tìm phủ G mà tổng độ dài cạnh nhỏ Kĩ thuật tìm kiếm địa phương   – Phương án ban đầu phủ Xét tất cạnh G theo thứ tăng dần độ dài Phép biến đổi (địa phương):   Chọn cạnh có độ dài nhỏ tập cạnh chưa sử dụng để thêm vào Loại khỏi chu trình cạnh có độ dài lớn Ví dụ Cây xuất phát với giá 20 Tập hợp cạnh theo thứ tự từ nhỏ đến lớn: ad, ab, be, bc, ac, cd, bd, de, ae ce Thêm cạnh ad = 2, bỏ cạnh cd = Cây có giá 17 Thêm cạnh ab = 3, bỏ cạnh bc = Thêm cạnh be = 3, bỏ cạnh ae = Cây có giá 16 Cây có giá là 12.  Bài toán đường người giao hàng    Xuất phát từ chu trình Bỏ hai cạnh có độ dài lớn khơng kề nhau, nối đỉnh lại với cho tạo chu trình đủ Tiếp tục trình khơng cịn cải thiện phương án Phương án ban đầu, giá 25 Bỏ ae cd, nối a với d e với c chu trình ( a b c e d a) giá = 23 Bỏ ce ab nối a với c b với e chu trình (a c b e d a) giá = 19 Tài liệu tham khảo   R Sedgewick, Algorithms in Java, Addision-Wesley, 2004 Chapter  R Sedgewick, Algorithms , 1987  Goodrich, Tamassia, Algorithm Design, 2002  78 Aho, A V , J E Hopcroft, J D Ullman Data Structure and Algorihtms, 1983 www.codeproject.com Hết phần .. .Phần 1: KT phân tích thiết kế giải thuật PGS TS TRẦN CAO ĐỆ Đại Học Cần Thơ 2 014 Chương 1: KỸ THUẬT PHÂN TÍCH GIẢI THUẬT PGS TS TRẦN CAO ĐỆ Đại Học Cần Thơ 2 014 Thuật toán  Giải thuật / Thuật. .. 8 12 0 0 0 5 10 12 0 0 0 10 12 0 0 10 12 13 48 F[5,V] = Max{F[4,(V – x5 *1) ] + x5 *1} k=5 g5 =1 v5 =1   V k X[5, V]=V /1 x5 =0 V /1 0 0 0 4 8 12 0 0 0 5 10 12 0 0 0 10 12 0 0 10 12 13 0 1 10 12 13 ... F[k, V ] V k 44 k =1 g1=3   V k 0 v1=4 F [1, V] = X [1, V] * 0 0 4 4 45 X [1, 0]=0/3=0 X [1, 1] =1/ 3=0 F [1, 0]=X [1, 0] * 4=0*4=04=0*4=0 F [1, 1]=X [1, 1] * X [1, V]=V/3 8 8 12 F[2,V] = Max{F [1, (V - x2*4)] + x2*5}

Ngày đăng: 17/04/2015, 15:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN