1. Trang chủ
  2. » Công Nghệ Thông Tin

cấu trúc dữ liệu và thuật giải

609 863 1

Đ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 609
Dung lượng 2,71 MB

Nội dung

1 _______________________________________________________________________ CÊu tróc d÷ liÖu vµ thuËt gi¶i - NguyÔn §×nh Hãa, ViÖn CNTT - §HQG HN Ch−¬ng 1: C¸c kh¸i niÖm c¬ b¶n vÒ kiÓu d÷ liÖu trõu t−îng vµ thuËt gi¶i 2 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 1. Trừu tợng hoá dữ liệu 1.1 Các bớc trừu tợng hoá Từ dữ liệu thực tế đến dữ liệu của chơng trình máy tính 1- Dữ liệu thực tế (Data reality): dữ liệu thô, thông tin đầu vào. 2- Trừu tợng hoá dữ liệu (Data Abstraction) 3- Phân tích quan hệ (Data relatedness). 4- Biểu diễn mô hình dữ liệu (Data Representation) 5- Mã hoá (Data encoding) Ví dụ: bài toán tìm đờng đi (ngắn nhất) từ ngã t Sở đến Hồ Hoàn Kiếm (Hà Nội). - Dữ liệu thực tế: bản đồ đờng phố Hà Nội, điểm đầu A (ngã t Sở), điểm đích B (hồ Hoàn Kiếm). 3 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN Mô hình hóa Trừu tợng hoá dữ liệu: Bản đồ đờng phố -> đồ thị. Biểu diễn mô hình dữ liệu Biểu diễn một đồ thị: Vẽ ra giấy: tiện cho con ngời, máy tính không thể đọc và hiểu đợc. Biểu diễn đồ thị trong chơng trình máy tính: -ma trận kề -danh sách kề. là các cấu trúc dữ liệu khác nhau để biểu diễn đồ thị. Mã hóa dữ liệu 4 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 1.2 Mô hình dữ liệu - Kiểu dữ liệu trừu tợng Mô hình dữ liệu Là kết quả trừu tợng hoá : -loại bỏ các chi tiết không cần thiết, -chỉ giữ lại các nét đặc trng bản chất, liên quan đến bài toán. Các mô hình dữ liệu cơ bản Mô hình tập hợp : cơ sở nhất, là nền tảng cho mọi mô hình khác, đơn giản nhất, giữa các đối tợng cha xét một quan hệ nào. Mô hình danh sách = mô hình dữ liệu tuyến tính: giữa các đối tợng có mối quan hệ là trình tự đứng trớc, đứng sau. Mô hình dữ liệu cây phân cấp : -Khái quát từ : tổ chức của một doanh nghiệp, một đơn vị hành chính, -Cấp trên (cha) chứa/quản lý nhiều cấp dới (con) 5 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN -phi tuyến một phía : cha -> nhiều con mô hình dữ liệu phi tuyến. Mô hình đồ thị : mối quan hệ đa chiều, phi tuyến cả hai phía (so với mô hình cây hay mô hình danh sách). Kiểu dữ liệu trừu tợng Mô hình dữ liệu là khái quát, trừu tợng hoá ở mức cao nhất. Các kiểu dữ liệu trừu tợng (abstract data type) dẫn xuất từ mô hình chung ; có thêm đặc điểm riêng. Mô hình tập hợp : Kiểu tự điển và kiểu bảng -kiểu tự điển (dictionary) = kiểu tập hợp có thứ tự (sorted set) -kiểu bảng (table) : các đối tợng thuộc kiểu không có thứ tự hoặc thứ tự đó không có ý nghĩa đối với bài toán. 6 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN Ví dụ kiểu bảng: -tìm kiếm một mẫu dấu vân tay trong tập hợp dấu vân tay -tìm thẻ tín dụng có nằm trong số thẻ bị đánh cắp hay không. Mô hình danh sách : Kiểu ngăn xếp và kiểu hàng đợi -kiểu danh sách FIFO (first in first out) = kiểu dữ liệu trừu tợng hàng đợi (queue). -kiểu danh sách LIFO (last in first out) = kiểu dữ liệu trừu tợng ngăn xếp (stack). Mô hình cây : Các kiểu cây : -cây nhị phân, - cây nhiều nhánh, - cây nhị phân thứ tự bộ phận (heap), - cây nhị phân tìm kiếm, 7 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN - cây AVL - cây đỏ-đen Kiểu dữ liệu trừu tợng là khái quát hóa của kiểu dữ liệu - miền giá trị của kiểu. - Các phép toán có thể thực hiện (với các dữ liệu đó). - Nhiều phép toán thực sự là một thủ tục xử lí phức tạp. Thiết kế các kiểu dữ liệu trừu tợng : - Tạo ra một bộ các công cụ có hiệu năng tốt để giải quyết một cách có hiệu quả các loại bài toán khác nhau gặp trong thực tế. 8 _______________________________________________________________________ CÊu tróc d÷ liÖu vµ thuËt gi¶i - NguyÔn §×nh Hãa, ViÖn CNTT - §HQG HN 1.3 CÊu tróc d÷ liÖu - biÓu diÔn kiÓu d÷ liÖu trõu t−îng Kh¸i niÖm cÊu tróc d÷ liÖu CÊu tróc d÷ liÖu lµ c¸i thÓ hiÖn cô thÓ cña mét kiÓu d÷ liÖu. VÝ dô vÒ cÊu tróc d÷ liÖu §Ó biÓu diÔn mét danh s¸ch cã thÓ sö dông c¸c c¸ch ‘cÊu tróc d÷ liÖu’ kh¸c nhau. - Dïng mét m¶ng -> cÊu tróc danh s¸ch m¶ng. - Mãc nèi qua con trá -> cÊu tróc danh s¸ch mãc nèi. 9 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 1.4 Tại sao cần nghiên cứu cấu trúc dữ liệu và kiểu dữ liệu trừu tợng Lợi ích của trừu tợng hoá dữ liệu - sử dụng lại nh các mô đun làm sẵn, giải các bài toán khác cùng loại. - tách rời việc xây dựng cấu trúc dữ liệu với thiết kế chơng trình cần sử dụng chúng. Ngời xây dựng cấu trúc dữ liệu, triển khai các phép toán độc lập với ngời sử dụng, miễn là đúng nh đặc tả. - che giấu thông tin, ngời sử dụng các kiểu dữ liệu làm sẵn không cần biết nó đợc triển khai cụ thể ra sao. - để chậm lại về sau phần triển khai cụ thể. Các yêu cầu khi xây dựng kiểu dữ liệu và cấu trúc dữ liệu phải cân nhắc giữa các mặt đối lập để có lựa chọn thiết kế tốt nhất, hợp lý nhất. - Vừa đủ về chức năng: xu hớng tối đa >< xu hớng tối thiểu (các chức năng làm sẵn). - Khái quát đúng mức : khái quát cao >< cụ thể cao (= khái quát thấp) 10 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN -> linh hoạt cao >< dễ sử dụng, sẵn dùng ngay. - Hiệu quả cao : tiết kiệm chi phí về thời gian xử lí và không gian bộ nhớ. 2. Thuật giải 2.1 Các khái niệm cơ bản Thuật giải là gì Thuật giải hay thuật toán (Algorithm) là một khái niệm cơ sở nôm na: là một dãy hữu hạn các quy tắc, thao tác, phép toán để giải quyết một vấn đề. 5 đặc trng (theo Knuth). 1- Xác định rõ dữ liệu đầu vào. [...]... thớc của bài toán = kích thớc của dữ liệu đầu vào là số nguyên dơng n = tổng số mục dữ liệu đầu vào Thuật giải (thủ tục) P để giải bài toán có kích thớc n sẽ cần tổng cộng CP(n) các phép toán sơ cấp CP(n) là một hàm của tham số n là tính hiệu quả của thuật giải P là độ phức tạp (complexity) của thuật giải P 14 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT... det(M) a) Thuật toán đệ quy: khai triển định thức theo hàng (cột) n.(n-1).(n-2) 1 = n! phép tính nhân mất nhiều năm để tính định thức cấp 100 !!! b) Thuật toán khử Gauss-Jordan: Đa ma trận về dạng đờng chéo 12 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN n3 phép tính 3 Đánh giá hiệu quả cấu trúc dữ liệu và thuật giải bằng phơng pháp giải tích... một thuật giải "tốt" hai tiêu chí: 1 - Đơn giản, dễ hiểu, dễ lập trình; 2 - Cho lời giải nhanh, dùng ít tài nguyên máy tính Tiêu chuẩn 2 chính là tính hiệu quả của cấu trúc dữ liệu và thuật giải Tại sao cần xây dựng thuật giải hiệu quả Tốc độ máy tính ngày càng nhanh Liệu việc cải tiến thuật giải để giảm bớt đi một số phép toán có ý nghĩa gì không ? Ví dụ minh họa tầm quan trọng của một thuật giải. .. thuật giải - liệt kê lần lợt các bớc, dùng ngôn ngữ tự nhiên thông thờng: mập mờ, hiểu sai - sơ đồ khối = lu đồ (flow chart) - ngôn ngữ lập trình: chính xác nhất Nhng che lấp mất ý tởng chính của thuật giải -> Tựa ngôn ngữ lập trình = mã giả (pseudo code) Tính hiệu quả của thuật giải Giải một bài toán, có nhiều thuật giải khác nhau 11 _ Cấu trúc dữ liệu và thuật giải. .. cost) aveCostP là thớc đo để so sánh đánh giá các thuật giải 26 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN Chơng 2: Sắp xếp 1 Các khái niệm cơ bản 1.1 Bài toán sắp xếp Sắp xếp là một bài toán cơ sở trong xử lí thông tin hai loại 27 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 1-... trên hay chi phí tối đa (worst-case measure, worst-case cost) - Trờng hợp dữ liệu vào là ngẫu nhiên bất kì (ta cần cái này !) Phân tích dới đây ! 25 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN Ước lợng trung bình (kỳ vọng) thời gian thực hiện thuật giải dữ liệu đầu vào là ngẫu nhiên CP(n) là đại lợng ngẫu nhiên kì vọng của CP(n) ? kí hiệu... to n do p (p*x/i) S S+p endfor return S Tổng số phép toán CP2(n) = O(n) 24 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 3.4 Các ớc lợng chi phí thời gian thực hiện thuật giải Vấn đề hình trạng dữ liệu đầu vào hình trạng dữ liệu -> bài toán dễ / khó ! bài toán sắp xếp một dãy số -nếu dãy đã có sẵn thứ tự mong muốn -> dễ -dãy bất kì -> khó... _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN O(g) là lớp các hàm có bậc lớn không quá g: O(g) = { f M : c, n0 sao cho f(n) c.g(n) n no }, Các đơn vị đo tốc độ tăng Cố gắng ớc lợng g(n) sao cho sát với CP(n) nhất Các hàm sau hay đợc sử dụng: 16 _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT... _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN Hình 1.1: Bảng các vô cùng lớn thờng dùng Minh họa tốc độ tăng Log n 0 1 2 3 4 5 n 1 2 4 8 16 32 n.log n 0 2 8 24 64 160 n2 1 4 16 64 256 1024 n3 1 8 64 512 4096 32768 2n 2 4 16 256 65536 4,294,967,296 Các kí hiệu tiệm cận khác Để đơn giản, xét giới hạn (nếu có) 18 _ Cấu trúc dữ liệu và thuật giải. .. _ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN Bớc 0 1 2 3 4 5 6 7 44 06 06 06 06 06 06 06 55 44 12 12 12 12 12 12 12 55 44 18 18 18 18 18 42 12 55 44 42 42 42 42 94 42 18 55 44 44 44 44 18 94 42 42 55 55 55 55 06 18 94 67 67 67 67 67 67 67 67 94 94 94 94 94 2.2 Thủ tục sắp xếp nối bọt Thủ tục Bubblesort(a) 32 _ Cấu trúc dữ liệu và thuật giải . _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 1.4 Tại sao cần nghiên cứu cấu trúc dữ liệu và kiểu dữ liệu trừu tợng Lợi ích của trừu tợng hoá dữ liệu - sử. Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 1. Trừu tợng hoá dữ liệu 1.1 Các bớc trừu tợng hoá Từ dữ liệu thực tế đến dữ liệu của chơng trình máy tính 1- Dữ liệu. _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn Đình Hóa, Viện CNTT - ĐHQG HN 20 _______________________________________________________________________ Cấu trúc dữ liệu và thuật giải - Nguyễn

Ngày đăng: 15/05/2015, 09:43

TỪ KHÓA LIÊN QUAN

w