Bài giảng Cấu trúc dữ liệu và giải thuật: Khái niệm cơ bản
lượt xem 1
download
Nội dung chính của chương này cung cấp cho người học nhái niệm cơ bản về thuật toán như: Thuật toán là gì? Tính chất của thuật toán, chứng minh thuật toán đúng, biểu diễn thuật toán. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Khái niệm cơ bản
- 1/10/2011 Phần I – Giới thiệu về Thuật toán Chương 1.1 KHÁI NIỆM CƠ BẢN Nội dung 1.1 Thuật toán là gì ? • Thuật toán: • 1.1. Thuật toán là gì? • thủ tục để thực hiện một nhiệm vụ cụ thể • 1.2 Tính chất của thuật toán • ý tưởng nằm sau các chương trình máy tính. • Thuật toán phải giải quyết bài toán tổng quát, và được định • 1.2 .1 Tính chính xác nghĩa rõ ràng. • 1.2.2 Tính hiệu quả • Một thuật toán giải bài toán đặt ra là một thủ tục xác định bao • 1.3 Chứng minh thuật toán đúng gồm một dãy hữu hạn các bước cần thực hiện để thu được đầu ra cho một đầu vào cho trước của bài toán. • 1.4 Biểu diễn thuật toán Đầu vào Đầu ra Các bước thực hiện 1
- 1/10/2011 1.1 Thuật toán là gì ? 1.2.1 Tính chính xác Bài toán: sắp xếp • Thuật toán phải cho đầu ra mong muốn ứng với bất cứ đầu • Đầu vào: một dãy gồm n khóa a1 , a2 ,.., an vào hợp lệ nào của bài toán. • Đầu ra: một hoán vị có thứ tự của các khóa đầu vào trong đó • Tính chính xác không phải lúc nào cũng dễ thấy! a '1 a '2 .. a 'n VD. Bài toán chọn lịch xem phim • Đầu vào: Một tập L gồm thời gian chiếu trong ngày của n bộ Trường hợp cụ thể của bài toán phim • {14, 45, 68, 24, 54, 34} • Đầu ra: Tập con của L chứa số bộ phim lớn nhất có thể xem • {Mike, Bob, Sally, Jill, Jan} (không được chồng nhau về thời gian) Sherlock holmes Up in the air One P1 • Chúng ta chỉ quan tâm đến các thuật toán chính xác và hiệu Avatar Up Madagasca 2 quả, và dễ cài đặt P2 Angel and demon Alice in the wonderland P3 1.2.1 Tính chính xác 1.2.1 Tính chính xác • Thuật toán 1. Chọn bộ phim sớm nhất trong L mà không trùng • Thuật toán 3. Duyệt toàn bộ: duyệt 2n tập con của n bộ phim với các bộ phim đã chọn trước đó. Lặp lại cho đến khi không trong L. Chọn ra tập con nào có số lượng phần tử lớn nhất. thể chọn thêm. Đảm bảo thu được kết quả tối ưu Thuật toán chạy rất chậm, vd n =20 thì số tập con là 220 • Thuật toán 4. Thuật toán tối ưu: sắp xếp các lịch chiếu phim • Thuật toán 2. Chọn bộ phim có thời gian chiếu ngắn nhất theo thứ tự không giảm thời gian kết thúc. Lần lượt xem xét trong L mà không trùng với các bộ phim đã chọn trước. Lặp lại các phim trong danh sách đã sắp xếp, bổ sung vào danh sách cho đến khi không chọn thêm được. xem bộ phim đang xét nếu nó không chồng lên các bộ phim đã có trong danh sách xem. • Có những bài toán mà không tồn tại thuật toán chính xác để giải! 2
- 1/10/2011 1.2.1 Tính chính xác 1.2.2 Tính hiệu quả • Phân biệt giữa thuật toán chính xác và không chính xác: đưa “Tại sao không chỉ sử dụng mỗi siêu máy tính? ” ra một ví dụ thuật toán mà thuật toán cho kết quả sai (phản ví dụ). • Siêu máy tính chỉ cho người giàu và những người quá ngốc để có thể thiết kế một thuật toán hiệu quả! • Chứng minh tính đúng đắn của thuật toán: khó khăn hơn nhiều. • Thuật toán nhanh hơn chạy trên các máy tính chậm hơn sẽ thắng trong trường hợp dữ liệu đầu vào đủ lớn. • Bài tập. Tìm các phản ví dụ cho các thuật toán giải bài toán hành trình du lịch tối ưu. Bài toán cái túi Chọn đồ vật có giá trị cao trước • Đầu vào: n đồ vật, mỗi đồ vật i có một trọng lượng wi và một • Sắp xếp các đồ vật theo thứ tự giảm về giá trị. giá trị ci. Một cái túi có thể chứa các đồ vật với trọng lượng tối • Lần lượt xét các đồ theo thứ tự này, cho đồ vật đang xét vào đa là b túi nếu nó còn có thể chứa thêm được • Đầu ra: Cách chất các đồ vật vào túi sao cho trọng lượng tối đa không vượt quá b, và tổng giá trị các đồ vật trong túi là lớn nhất. ∑ → • Xây dựng thuật toán chất các đồ vào túi ? 3
- 1/10/2011 Chọn đồ vật trọng lượng nhỏ trước Chọn đồ vật theo tỉ lệ ci/wi • Sắp xếp các đồ vật theo thứ tự tăng trọng lượng • Sắp xếp các đồ vật theo thứ tự giảm của tỉ lệ giá trị/ trọng • Lần lượt xét các đồ vật theo thứ tự này, chọn đồ vật đang xét lượng vào túi nếu nó vẫn có thể chứa thêm … • Lần lượt xét các đồ vật theo thứ tự này, chọn đồ vật đang xét vào túi nếu nó vẫn có thể chứa thêm Tìm phản ví dụ ? 1.3 Chứng minh tính đúng đắn Chứng minh thuật toán sai bằng • Thuật toán được định nghĩa đệ quy: Thuật toán được định cách chỉ ra một phản ví dụ nghĩa lại bằng chính nó (với kích thước bài toán nhỏ hơn) • Tìm trong các trường hợp dữ liệu 1 ế 0 nhỏ ! 1 ! ế 0 • Các ví dụ mà sát với các tiêu chuẩn lựa chọn của thuật toán • Chứng minh tính đúng đắn của thuật toán đệ quy bằng phương pháp quy nạp • Các ví dụ của các trường hợp cực trị (lớn nhất, nhỏ nhất …) 1 Không tìm được phản ví dụ không có nghĩa thuật toán là đúng! 2 4
- 1/10/2011 1.4 Biểu diễn thuật toán • Cần biểu diễn các bước thực hiện tuần tự của thuật toán một cách cụ thể. • Biểu diễn bằng: Ngôn ngữ tự nhiên Tính dễ dàng • Tính chính xác • Giả ngôn ngữ (pseudocode) • Lưu đồ • Ngôn ngữ lập trình cụ thể (C/C++, java,…) 5
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 175 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 81 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 59 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 160 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 51 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn