TIỂU LUẬN MÔN HỌC GIẢI THUẬT NÂNG CAO

23 631 0
TIỂU LUẬN MÔN HỌC GIẢI THUẬT NÂNG CAO

Đ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

TIỂU LUẬN MÔN HỌC GIẢI THUẬT NÂNG CAO Quy hoạch động là lớp các bài toán mà quyết định ở bước thứ i phụ thuộc vào quyết định ở các bước đã xử lí trước hoặc sau đó. 1.Quy hoạch động 2 1.1. Nguyên lí quy hoạch động 2 1.2. Các giai đoạn của quy hoạch động 2 1.3. Phương pháp quy hoạch động 3 2. Chia để trị 9 2.1. Nguyên lí chia để trị 9 2.2. Sơ đồ chung: 9 2.3. Thuật toán β: 9 2.4 Sơ đồ thuật toán chia để trị: 10 2.5 Bài toán ví dụ 11 2.5.1 Thuật toán Qsort 11 2.5.2 Bài toán tháp Hà Nội 11 2.5.3 Bài toán tạo lịch thi đấu Tennis: 12 3.Phương pháp tham lam 13 3.1. Nguyên lí tham lam 13 3.2. Mô hình 13 3.3.Thuật toán 14 4. Máy Turing 19

ĐẠI HỌC DUY TÂN TIỂU LUẬN MÔN HỌC GIẢI THUẬT NÂNG CAO Giảng viên: PGS TS NGUYỄN XUÂN HUY Học viên : LÊ VĂN TỊNH ĐỒN SINH CƠNG HỒNG QUANG VŨ Lớp : K7MCS Đà Nẵng, 5/2014 Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS MỤC LỤC Lê Văn Tịnh - Đoàn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 1.Quy hoạch động 1.1 Nguyên lí quy hoạch động Quy hoạch động lớp toán mà định bước thứ i phụ thuộc vào định bước xử lí trước sau Để giải tốn quy hoạch động, ta theo sơ đồ sau đây:  Lập hệ thức: Lập hệ thức biểu diễn tương quan định bước xử lí với bước xử lí trước Khi có hệ thức tương quan xây dựng thuật giải, nhiên hệ thức thường biểu thức đệ quy, dễ gây tượng tràn miền nhớ ta tổ chức chương trình trực tiếp đệ quy  Tổ chức liệu chương trình: Tổ chức liệu cho đạt yêu cầu sau: • Dữ liệu tính tốn dần theo bước • Dữ liệu lưu trữ để giảm lượng tính tốn lặp lại • Kích thước miền9 nhớ dành cho lưu trữ liệu nhỏ tốt, kiểu liệu chọn phù hợp, nên chọn đơn giản dễ truy cập  Làm tốt: Làm tốt thuật toán cách thu gọn hệ thức giảm kích thước miền nhớ Thường tìm cách dùng mảng chiều thay cho mảng hai chiều giá trị dòng (hoặc cột) mảng hai chiều phụ thuộc dòng (hoặc cột) kề trước.Trong số trường hợp thay mảng hai chiều với giá trị phần tử nhận giá trị 0, mảng hai chiều cách dùng kỹ thuật quản lý bit 1.2 Các giai đoạn quy hoạch động  Phân rã: Chia toán cần giải thành toán nhỏ có dạng với tốn ban đầu cho tốn kích thước nhỏ giải cách trực tiếp Bài tốn xuất phát coi tốn có kích thước lớn  Giải toán ghi nhận lời giải: Lưu trữ lời giải toán vào bảng để sử dụng lại nhiều lần khơng phải giải lặp lại tốn Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS  Tổng hợp lời giải: Lần lượt từ lời giải toán kích thước nhỏ xây dựng lời giải tốn kích thước lớn hơn, thu lời giải toán xuất phát (là tốn có kích thước lớn nhất) 1.3 Phương pháp quy hoạch động Phương pháp quy hoạch động gồm bước: Bước 1: Chia nhỏ toán Lập vector P có thành phần x1, x2, xn Mỗi vector P ứng với toán toán Ban đầu ta xây dựng P với thành phần Bước 2: Lập hệ thức quy hoạch động Xây dựng hàm f(P) hàm tối ưu vector P (hay hàm tối ưu cho toán con): f(P) = g(f(P1), f(P2), , f(Pn)) G hàm Max, Min tổng tùy thuộc vào yêu cầu tốn tìm Max, Min hay tính tổng P gọi vector cha P1, P2, P3, , Pn gọi vector Bước 3: Kiểm tra Nếu không xây dựng hàm f thêm tiếp bỏ thành phần vector P quay lại bước Nếu làm tiếp bước Bước 4: Tối ưu hóa hệ thức P: Tối ưu vector P cách xét thành phần x vector Chọn vector P tốt P1, P2, P3, , Pn khác thành phần x cho đưa P tốt vào thay P1, P2, P3, , Pn hàm g mà không làm thay đổi giá trị hàm g đơn giản thành phần x vector P Bước 5: Chọn kiểu quy hoạch động Kiểu 1: Nếu thành phần vector P1 ≤ hay ≥ thành phần vector cha P ta dùng vịng lặp for lồng để cài đặt Kiểu 2: Nếu vector P vector P1 ln có mối quan hệ cha chiều ta dùng phương pháp đệ quy có nhớ để cài đặt Kiểu 3: Nếu vector P vector P1 ln có mối quan hệ cha hai chiều không rõ đâu vector cha, đâu vector cịn phụ Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS thuộc vào tốn ta dùng phương pháp repeat … until để cài đặt Bước 6: Tối ưu hóa nhớ (chỉ dùng cho cài đặt kiểu 1) vector P: Đơn giản vector P cách xét thành phần x Nếu f(P(…, x, )) = g(f(P1(…, x1, )), f(P2( , x2, )), , f(Pn( , xn, ))) x-x1, x-x2, , x-xn ≤ T ta cần đưa vòng lặp x lên bỏ x khỏi vector P lưu T+1 vector P 1.4 tốn ví dụ : 1.4.1Bài tốn Chia thưởng Cần chia hết m phần thưởng cho n học sinh theo thứ tự từ giỏi trở xuống cho bạn khơng nhận phần thưởng bạn xếp sau =j tổng số phần tử hai nhóm, ta có: Chia(i, j) = Chia(i, j - 1) + Chia(i - j, j) Tổng hợp lại ta có: Điều kiện Chia(i, j) i: số phần thưởng j: số học sinh j=0 Chia(i, j) = i = and j 0 Chia(i, j) = Chia(i, i) i= j Chia(i, j – 1) + Chia(i – j, j) học sinh) Chia(i, j) = Chia(i, j) = (Các tính chất hàm Chia(i, j),Chia i phần thưởng cho j 1.4.2 xâu đối xứng Palindrome Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS Dãy kí tự s gọi đối xứng (palindrome) phần tử cách đầu cuối giống Cho dãy s tạo n kí tự gồm chữ hoa thường phân biệt chữ số Hãy cho biết cần xố từ s kí tự để thu dãy đối xứng Giả thiết sau xoá bớt số kí tự từ s kí tự cịn lại tự động xích lại sát Thí dụ, với dãy s gồm kí tự, s = 'baeadbadb' cần xố kí tự, chẳng hạn, kí tự thứ 5, 7, thu dãy đối xứng chiều dài baeab: baeadbadb baeab Dĩ nhiên có nhiều cách xố Thí dụ, xố kí tự thứ 2, 3, từ dãy s để thu dãy đối xứng khác bdadb với chiều dài 5: baeadbadb bdadb Thực hiện: Gọi dãy liệu vào s Ta tìm chiều dài dãy đối xứng v dài trích từ s Khi số kí tự cần xố từ s t = length(s) - length(v) Dãy hiểu dãy thu từ s cách xoá số phần tử s Thí dụ với dãy s = baeadbadb dãy đối xứng dài s baeab bdadb,… Các dãy có chiều dài Lập hệ thức: tốn Gọi p(i, j) chiều dài dãy dài thu giải với liệu vào đoạn s[i j] Khi p(1, n) chiều dài dãy đối xứng dài dãy n kí tự s[1 n] số kí tự cần loại bỏ khỏi dãy s[1 n] n-p(1,n) Ta liệt kê số tính chất quan trọng hàm hai biến p(i, j) Ta có: quy ước đặt - Nếu i > j, tức số đầu trái lớn số đầu phải, ta p(i, j) = nên - Nếu i = j p(i, i) = dãy khảo sát chứa kí tự đối xứng đầu dãy đối đơn vị ứng - Nếu i < j s[i] = s[j] p(i, j) = p(i + 1, j – 1) + Vì hai kí tự cuối dãy s[i,j] giống nên cần xác định chiều dài xứng dài đoạn s[i + 1, j – 1] cộng thêm với hai kí tự đầu cuối dãy s[i j] - Nếu i < j s[i] ≠ s[j], tức hai kí tự đầu cuối dãy khác ta khảo sát hai dãy s[i (j – 1)] s[(i + Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 1) j] để lấy làm kết quả: Mà muốn chiều dài dãy đối xứng dài hai dãy p(i,j) = max(p(i,j-1),p(i+1,j)) Vấn đề đặt cần tính p(1, n) tính p(1, n) ta phải tính p(i, j) với i, j = n 1.4.3 toán cắm hoa Cần cắm hết k bó hoa khác vào n lọ xếp thẳng hàng cho bó hoa có số hiệu nhỏ đặt trước bó hoa có số hiệu lớn Với bó hoa i ta biết giá trị thẩm mĩ cắm bó hoa vào lọ j v[i, j] Yêu cầu: Xác định phương án cắm hoa cho tổng giá trị thẩm mĩ lớn Dữ liệu vào ghi tệp văn HOA.INP: - Dòng hai trị k n - Từ dòng thứ hai trở giá trị v[i, j] khoảng 10, với i = k j = n; d/c Điều cho thấy việc sử dụng thuật tốn β để giải tốn đặt cách chia thành tốn có kích thước ngày nhỏ đến thu tốn kích thước n0 < 4.d/c thu hiệu cao 2.4 Sơ đồ thuật toán chia để trị: procedure Divide_and_Conquer(n); begin if n ≤ n0 then Giải toán cách trực tiếp; else begin Chia toán thành r tốn có kích thước n/k; for (mỗi tốn r toán con) Divide_and_Conquer(n/k); Tổng hợp lời giải r toán để thu lời giải tốn; 2.5 Bài tốn ví dụ 2.5.1 Thuật toán Q-sort Bài toán: giảm Cho dãy X = {X1, X1, , Xn}, xếp dãy theo chiều khơng Ý tưởng : ta tìm cách chia đơi dãy ban đầu cách chọn phần tử chốt (pivot) Từ dãy ban đầu, tất phần tử nhỏ phần tử chốt đưa bên trái dãy, tất phần tử lớn phần tử chốt Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 12 đưa bên phải dãy Sau bước ta có phần tử chốt đứng vị trí Dãy ban đầu phân chia làm hai dãy nằm hai bên chốt Tiếp tục phân chia dãy theo cách tương tự đến dãy có độ dài Có thể lựa chọn phần tử chốt nằm đầu, cuối hay dãy Ở ta lựa chọn phần tử chốt nằm gần dãy Giải thuật : Sắp xếp đoạn X[L], ,X[R] với điều kiện L < R - Bước 1: pirot = (L+R) div 2, key=X[pirot] - Bước 2: i=L+1, j=R - Bước 3: * Nếu X[i] < key i=i+1; * Nếu X[j] > key j=j-1; - Bước 4: Nếu i>j đổi chổ X[i] với X[j], quay Bước X[j] - Bước 5: Lặp lại từ Bước đến Bước với đoạn X[L], ,X[j-1] đến X[R], dừng tất đoạn có độ dài 2.5.2 Bài toán tháp Hà Nội Để minh họa rõ cho kỹ thuật xét ví dụ quen thuộc tốn ″Tháp Hà Nội″ Giả sử có cọc A, B, C Ban đầu A đặt số đĩa với thứ tự nhỏ to hình vẽ Yêu cầu tốn chuyển tồn số đĩa sang cọc B, trình chuyển phép sử dụng đĩa C, lần chuyển 01 đĩa bảo đảm nguyên tắc đĩa nhỏ nằm đĩa to suốt trình chuyển Ta thử vận dụng tư thuật toán ″Chia để Trị″ toán Tháp Hà Nội Bài toán chuyển N đĩa từ A sang B chia thành tốn nhỏ với kích thước N-1 sau: Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 13 Giải thuật : B1: Chuyển N-1 đĩa từ A sang C B2: Chuyển đĩa thứ N từ A sang B B3: chuyển N-1 đĩa từ C sang B Chú ý thực toán.phần chuyển N-1 đĩa từ C sang B ta dùng lại hồn tồn thuật tốn (a) với vị trí thay đổi A C tất nhiên bỏ qua có mặt đĩa thứ N A hay B Với cách tư vậy, việc mơ thuật tốn tương đối khó phải gọi đệ qui đến cách làm thật dễ hiểu cho phép áp dụng cho nhiều lớp toán khác 2.5.3 Bài toán tạo lịch thi đấu Tennis: Giả sử cần lập lịch thi đấu Tennis cho n = k vận động viên (VĐV) Mỗi vận động viên phải thi đấu với n-1 vận động viên khác, ngày thi đấu trận Như n-1 số ngày thi đấu tối thiểu phải có Chúng ta cần lập lịch thi đấu cách thiết lập ma trận có n hàng, n-1 cột Giá trị số vị trí (i,j) (hàng i, cột j) vận động viên cần thi đấu với vận động viên i ngày thứ j Sử dụng kỹ thuật Chia để Trị, lập lịch thi đấu cho nửa (n/2) số vận động viên Bằng việc sử dụng lời gọi đệ qui đưa tốn trường hợp có VĐV Chúng ta minh họa trường hợp n=8 Lịch thi đấu cho người danh sách chiếm nửa trái ma trận (4 hàng, cột) Phần nửa trái (4 hàng, cột) ma trận lịch thi đấu VĐV lại (từ đến 8) Phần thu từ nửa trái cách cộng vào phần tử tương ứng ma trận Để điền nốt phần lại ma trận cần xác định lịch thi đấu VĐV với số thấp (≤n/2) với VĐV với số cao (≥n/2) Để làm việc xếp VĐV từ đến n/2 đấu với VĐV số cao vào ngày Các ngày lại thu từ ngày cách hốn vị vịng quanh VĐV với số thứ tự cao Quá trình điền số mơ tả hình Các bạn tổng quát trình cho trường hợp tổng quát n=2k Lê Văn Tịnh - Đồn Sinh Cơng – Hoàng Quang Vũ - Lớp: K7MCS 14 3.Phương pháp tham lam 3.1 Nguyên lí tham lam Phương pháp tham lam kĩ thuật thiết kếthường dùng để giải toán tối ưu Phương pháp tiến hành nhiều bước Tại bước, theo chọn lựa (xác định hàm chọn), sẽtìm lời giải tối ưu cho toán nhỏ tương ứng Lời giải toán bổ sung dần bước từ lời giải toán Các lời giải phương pháp tham lam thường chấp nhận theo điều kiện đó, chưa tối ưu.Cho trước tập a gồm n đối tượng, ta cần phải chọn tập s a Với tập s chọn thỏa mãn yêu cầu toán, ta gọi nghiệm chấp nhận Một hàm mục tiêu gán nghiệm chấp nhận với giá trị.Nghiệm tối ưu nghiệm chấp nhận mà hàm mục tiêu đạt giá trịnhỏ (lớn nhất).Đặc trưng tham lam phương pháp thể bởi: bước việc xử lý sẽtuân theo chọn lựa trước, khơng kể đến tình trạng khơng tốt xảy 3.2 Mơ hình Chọn s từ tập a Tính chất tham lam thuật toán định hướng hàm chọn Khởi động: s = rỗng Trong a khác rỗng Chọn phần tửtối ưu a gán vào x : x = chọn(a); Cập nhật đối tượng đểchọn: a = a-{x}; Nếu s∪{x} thỏa mãn yêu cầu tốn cập nhật lời giải: s = s {x}; 3.3.Thuật toán Input: output: lời giải s a[1 n] Greedy(a,n) { s = rỗng; while(a ≠rỗng) { a = a-{x}; if(s ∪{x} chấp nhận được) Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 15 s = s∪{x}; } return s; } 3.4 Bài tốn ví dụ 3.4 tốn Xếp việc Có N cơng việc cần thực máy tính, việc địi hỏi máy Với việc ta biết thời hạn phải nộp kết thực sau hồn thành việc tiền thưởng thu nộp kết trước thời điểm quy định Chỉ có máy tính tay, lập lịch thực đủ N công việc máy tính cho tổng số tiền thưởng thu lớn thời gian hoạt động máy nhỏ Giả thiết máy khởi động vào đầu ca, thời điểm t = tắt máy sau hoàn thành đủ N công việc Dữ liệu vào: tệp văn viec.inp: - Dòng số N - N dòng tiếp theo: việc mô tả hai số tự nhiên, số thứ thời hạn giao nộp, số thứ hai tiền thưởng Các số cách dấu cách Thí dụ: Ýviec.inp Cho biết có việc với thông tin sau: nghĩa: - 4Việc thứ phải nộp không muộn thời điểm (giờ) với tiền thưởng 15 (ngàn đồng); 15 - 3Việc thứ hai phải nộp không muộn thời điểm (giờ) với tiền 10 100 thưởng 10 (ngàn đồng); 27 - 1Việc thứ ba phải nộp không muộn thời điểm (giờ) với tiền thưởng 100 (ngàn đồng); - Việc thứ tư phải nộp không muộn thời điểm (giờ) với tiền thưởng 27 (ngàn đồng) Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 16 Dữ liệu ra: tệp văn viec.out: - N dòng đầu tiên, dòng thứ t ghi số tự nhiên i cho biết việc thứ i làm t - Dòng cuối ghi tổng số tiền thu Với thí dụ trên, tệp viec.out sau: Ý nghĩa: - Giờ thứ thực việc nộp hạn nên thưởng 27; viec.out - 4Giờ thứ thực việc nộp trước hạn nên thưởng 10; - 3Giờ thứ thực việc nộp trước hạn nên thưởng 100; - 137 thứ thực việc 1; Giờ - Tổng tiền thưởng thu hoàn thành hạn ba việc 4, là: 27 + 10 + 100 = 137 Thuật toán Ta ưu tiên cho việc có tiền thưởng cao, ta việc giảm dần theo tiền thưởng Với việc k ta biết thời hạn giao nộp việc h = t[k] Ta xét trục thời gian b Nếu h trục bận việc khác ta tìm từ thời điểm h trở trước thời điểm thực việc k Nếu tìm thời điểm m vậy, ta đánh dấu mã số việc trục thời gian b, b[m]:= k Sau xếp việc xong, trục thời gian cịn thời điểm rỗi, ta dồn việc xếp phía trước nhằm thu lịch làm việc trù mật, tức khơng có trống Cuối ta xếp tiếp việc trước xét khơng xếp Đây việc phải làm nộp hạn nên khơng có tiền thưởng Với thí dụ cho, N = 4, thời hạn giao nộp t = (1, 3, 5, 1) tiền thưởng a = (15, 10, 100, 27) ta tính tốn sau: - Khởi trị: trục thời gian với thời điểm ứng với Tmax = thờ điểm muôn phải nộp kết quả, Tmax = max { thời hạn giao nộp }, b = (0, 0, 0, 0,0) - Chọn việc có tiền thưởng lớn 100 Xếp việc với thời hạn t[3] = vào h: h[5] = Ta thu h = (0, 0, 0, 0, 3) - Chọn tiếp việc có tiền thưởng 27 Xếp việc với thời hạn t[4] = vào h: h[1] = Ta thu h = (4, 0, 0, 0, 3) - Chọn tiếp việc có tiền thưởng 15 Xếp việc với thời hạn t[1] = vào h: Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 17 Khơng xếp từ thời điểm trở trước trục thời gian h[1 1] kín Ta thu h = (4, 0, 0, 0, 3) - Chọn nốt việc có tiền thưởng 10 Xếp việc với thời hạn t[2] = vào h: h[3] = - Ta thu h = (4, 0, 2, 0, 3) - Dồn việc trục thời gian h, ta thu h = (4, 2, 3, 0, 0) - Xếp nốt việc phải làm mà thưởng, ta thu h = (4, 2, 3, 1) - Ca làm việc kéo dài N = - Nếu không muốn giảm mảng tiền thưởng a theo dẫn ta song song a id mơ tả chương trình.Trong chương trình ta sử dụng mảng id với hai mục đích: id[i] = v > cho biết việc v đứng thứ i dãy giảm theo giá trị tiền thưởng việc v chưa xếp id[i] = v < cho biết việc v xếp xong lần duyệt 3.4.2 Bài toán bao trùm ngắn Cho đồ thị liên thông G vô hướng bao gồm n đỉnh, mã số từ đến n, m cạnh nối hai đỉnh với Mỗi cạnh có chiều dài cho trước Tính liên thơng đồ thị cho biết với hai đỉnh cho trước tuỳ ý ta ln tìm cạnh gối đầu để từ đỉnh đến đỉnh Hãy phần P đồ thị thoả tính chất sau: (i) P chứa tất đỉnh G; (ii) P chứa số cạnh G; (iii) P đồ thị liên thông; (iv) Tổng chiều dài cạnh P ngắn Bài tốn có nhiều ứng dụng thực tiễn Một số ứng dụng mơ tả thơng qua thí dụ sau: Có n máy tính nối với thành mạng cáp quang loại dây ruyền tin đắt tiền Trong mạng này, hai máy tính liên lạc với trực tiếp thông qua vài máy trung gian Ta gọi tính chất tính liên thơng mạng máy tính Hãy bỏ bớt số dây nối để n máy tính liên thông với Mạng tối thiểu thu bao trùm ngắn mạng ban đầu Dữ liệu vào: tệp văn tên DOTHI.INP cách, biểu - Dòng ghi hai số tự nhiên n m cách qua dấu thị số đỉnh (n) số cạnh (m) đồ thị Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 18 giá trị x y có chiều - Mỗi dòng thứ i = 1, 2, , m số m dòng ghi ba d cách qua dấu cách với ý nghĩa cạnh (x, y) đồ thị dài d Dữ liệu ra: tệp văn tên DOTHI.OUT bao gồm: - Danh sách cạnh chọn - Dòng cuối ghi tổng chiều dài tìm Thuật tốn Ta dùng thuật giải Kruskal với kĩ thuật sau Duyệt cạnh từ chiều dài nhỏ đến lớn Cạnh chọn cạnh khơng tạo thành chu trình ghép vào đồ thị kết Ý nghĩa: Đồ thị có DOTHI.I đỉnh 17 cạnh NP Cạnh (1, 2) dài 8, 17 Ý nghĩa: DOTHI Cây bao trùm ngắn OUT đồ thị cạnh (1, dài 4, 3) cạnh (1, dài 6, , 4) 1là (chiều dài cạnh cạnh (7, dài đơn 8) vị 7hai chấm): Tcho gồm đỉnh cạnh 4được ghi sau dấu 2cạnh (1, 5): 1cạnh (4, 8): 3cạnh (7, 8): 1cạnh (2, 3): 3 cạnh 14 (1, 6): 7cạnh (3, 8): 3 7cạnh (1, 3): 5 Tổng chiều dài cạnh chọn là: 14 6 8 78 Lê Văn Tịnh - Đồn Sinh Cơng – Hồng Quang Vũ - Lớp: K7MCS 19 Lưu ý đồ thị kết thu bước trung gian khơng liên thông mà bao gồm nhiều mảnh liên thông (cây con) Loại đồ thị gọi rừng Kết cuối liên thơng tạo thành từ n - cạnh Ta vận dụng tổ chức find-union cho tập đỉnh rời để quản lí tập đỉnh chọn nhằm phát chu trình Cạnh (x, y) ghép vào đồ thị trung gian tạo thành chu trình đỉnh x y nằm đồ thị (rừng) trung gian Như đồ thị trung gian quản lí tập tập đỉnh n đồ thị ban đầu Tập có phần tử đại diện gốc tương ứng Phần tử chọn theo mã số nhỏ Các đỉnh lại trỏ đến gốc Dễ thấy bao trùm ln ln có n đỉnh n - cạnh Máy Turing 4.1 Khái niệm máy Turing : dựa ý tưởng người thực thủ tục rõ ràng cách thay đổi nội dụng băng giấy vô hạn, mà phân thành vng chứa tập hữu hạn ký hiệu Người cần nhớ tập trạng thái hữu hạn thủ tục trình bày nhiều bước dạng “Nếu trạng thái bạn 42 ký hiệu mà bạn thấy ‘0’ thay ‘1’, di chuyển ký hiệu sang phải, thừa nhận trạng thái 17 trạng thái bạn” Trong số mơ hình, đầu đọc (head) di chuyển dọc theo băng tĩnh (Stationary tape) Chỉ thị để thực (q1) bên đầu đọc Trong mơ hình này, băng trống tất ô Các ô vuông tô đậm, gồm ô quét qua đầu đọc, ô vuông đánh dấu 1, 1, B biểu tượng đầu đọc, tạo thành trạng thái hệ thống Một cách rõ ràng hơn, hình dung máy Turing bao gồm thành phần sau: • Một băng (TAPE), hay cịn gọi nhớ vơ hạn, dạng băng gồm nhiều ơ, kéo dài vơ hạn phía phải Mỗi băng chứa ký hiệu thuộc chữ, gọi chữ băng (mà phần chữ vào, dùng cho xâu vào); • Một đầu đọc (HEAD) di chuyển băng, thời điểm nhìn vào băng; • Một tập hữu hạn trạng thái, có phân biệt trạng thái đầu tập hợp trạng thái thừa nhận; • Một hàm dịch chuyển chứa tập hữu hạn thị cho phép với trạng thái máy ký hiệu đọc ô đối diện với đầu đọc, máy thực bước sau: o Chuyển trạng thái o In ký hiệu băng ô duyệt (nghĩa thay ký hiệu đọc băng ký hiệu đó) o Dịch chuyển đầu đọc - viết (sang trái (L), sang phải (R) đứng yên(∅)) q Đầu đọc Băng Trạ ng thá i a1 a1 … … a1 B B Hình Các phận máy Turing 3.2.ví dụ Thiết kế máy Turing chấp nhận ngôn ngữ L = { 0n1n | n ≥ 1} Khởi đầu, máy Turing chứa 0n1n bên trái băng sau vơ hạn khoảng trống Blank Máy Turing lặp lại trình sau: - M thay bên trái X chuyển sang phải tới trái nhất, máy Turing thay Y dịch chuyển bên trái gặp X phải chuyển sang phải ô (tới trái nhất) tiếp tục lặp chu trình - Nếu dịch chuyển sang phải để tìm mà máy Turing gặp Blank máy Turing dừng khơng chấp nhận input Tương tự, máy Turing thay hết X kiểm tra cịn băng máy Turing dừng không chấp nhận input - Máy Turing chấp nhận input khơng cịn ký hiệu băng Đặt máy Turing M = < Q, Γ , b, ∑ , δ , q0, F> với thành phần : Q = {q0, q1, q2, q3, q4}; ∑= {0, 1}; Γ = {0, 1, X, Y, B} F = {q4} Ta hình dung trạng thái câu lệnh nhóm câu lệnh chương trình Trạng thái q0 trạng thái khởi đầu làm cho ký hiệu bên trái thay X Trạng thái q dùng để tiến sang phải bỏ qua số Y để tìm bên trái Nếu M tìm thấy thay Y vào trạng thái q Trạng thái q2 đưa M tiến sang trái X vào trạng thái q 0, dịch chuyển sang phải để tới bên trái tiếp tục chu trình Khi M tiến sang phải trạng thái q1, B X tìm thấy trước input bị loại bỏ (khơng chấp nhận) có chứa nhiều ký hiệu input khơng có dạng *1* Trạng thái q0 cịn có vai trị khác Nếu trạng thái q2 tìm thấy X bên phải sau Y số xét hết, trạng thái bắt đầu chu trình q khơng tìm thấy ký hiệu để thay thành X mà gặp Y máy Turing vào trạng thái q duyệt qua Y để kiểm tra có hay khơng có ký hiệu lại Nếu theo sau Y B, nghĩa băng nhập khơng cịn ký hiệu máy Turing vào q4 (trạng thái kết thúc) để chấp nhận input Ngược lại input bị loại bỏ Ta có hàm chuyển δ cho bảng sau : δ Ký hiệu Trạng thái X Y B q0 (q1, X, R) - - (q3, Y, R) - q1 (q1, 0, R) (q2, Y, L) - (q1, Y, R) - q2 (q2, 0, L) - (q0, X, R) (q2, Y, L) - q3 - - - (q3, Y, R) (q4, B, ∅) q4 - - - - - Các phép chuyển trạng thái máy Turing M xâu 0011: q00011 -> Xq1011 -> X0q111 -> X q20Y1 -> q2X0Y1 -> Xq00Y1 -> XXq1Y1 -> XXYq11 -> XXq2YY -> Xq2XYY -> XXq0YY -> XXq0YY -> XXYq3Y -> XXYYq3 -> XXYYq ... sử có thuật tốn α để giải tốn kích thước liệu vào n với thời gian bị chặn cn2 (c: số) Xét thuật giải β để giải tốn cách: - Bước 1: Chia toán cần giải thành tốn với kích thước n/2 - Bước 2: Giải. .. pháp thiết kế giải thuật bao gồm thao tác:  Chia: toán độc lập  Trị:  Tổng hợp: đặt từ lời giải Chia toán cần giải thành loạt Đòi hỏi việc giải toán thu Thực việc xây dựng lời giải toán toán... hợp lời giải toán S1, S2, S3, thành lời giải tốn S Để phân tích độ phức tạp thuật tốn sử dụng cơng thứ đệ quy Vấn đề đặt cần giải toán độc lập cách nào? Đó vấn đề trung tâm toán 2.3 Thuật toán

Ngày đăng: 22/12/2014, 08:24

Từ khóa liên quan

Mục lục

  • 1.Quy hoạch động

    • 1.1. Nguyên lí quy hoạch động

    • 1.2. Các giai đoạn của quy hoạch động

    • 1.3. Phương pháp quy hoạch động

    • 2. Chia để trị

      • 2.1. Nguyên lí chia để trị

      • 2.2. Sơ đồ chung:

      • 2.3. Thuật toán β:

      • 2.4 Sơ đồ thuật toán chia để trị:

      • 2.5 Bài toán ví dụ

        • 2.5.1 Thuật toán Q-sort

        • 2.5.2 Bài toán tháp Hà Nội

        • 2.5.3 Bài toán tạo lịch thi đấu Tennis:

        • 3.Phương pháp tham lam

          • 3.1. Nguyên lí tham lam

          • 3.2. Mô hình

          • 3.3.Thuật toán

          • 4. Máy Turing

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan