Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 94 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
94
Dung lượng
1,45 MB
Nội dung
8/4/2020 BÀI GIẢNG ĐIỆN TỬ HP:CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Số TC: Bộ môn: Tin học Cấu trúc liệu giải thuật Giới thiệu học phần Số tín chỉ: (36,9) Mục tiêu: Cung cấp: ▪ Một số khái niệm giải thuật cấu trúc liệu; vai trò cấu trúc liệu giải thuật (CTDL GT) hệ thống thông tin (HTTT); Một số cấu trúc liệu bao gồm: Mảng (Array), Danh sách (List), Danh sách liên kết (Linked List), Ngăn xếp (Stack) Hàng đợi (Queue), Cây (Tree) Cấu trúc liệu giải thuật 8/4/2020 Giới thiệu học phần Nội dung chính: Chương 1: Các khái niệm CTDL & GT (6t) Chương 2: Mảng danh sách (12t) Chương 3: Cây (12t) Chương 4: Một số giải thuật xếp tìm kiếm (15t) Cấu trúc liệu giải thuật Tài liệu tham khảo ❖Đỗ Xuân Lôi, Cấu trúc liệu giải thuật, NXB ĐHQGHN, 2008 ❖Nguyễn ĐÌnh Hóa, Cấu trúc liệu giải thuật, 2008, NXB ĐHQGHN ❖Lê Minh Hoàng, Bài giảng chuyên đề ❖https://www.tutorialspoint.com/data_structures_algorit hms/ ❖https://www.ereading.club/bookreader.php/138793/Advanced_C.pdf Cấu trúc liệu giải thuật 8/4/2020 Chương Các khái niệm CTDL & GT 1.1 Cấu trúc liệu 1.2 Giải thuật Cấu trúc liệu giải thuật 1.1 Cấu trúc liệu (Data Structures) 1.1.1 Khái niệm chung 1.1.2 Các vấn đề liên quan 1.1.3 Một số cấu trúc liệu Cấu trúc liệu giải thuật 8/4/2020 1.1.1 Khái niệm chung ❖Mục tiêu tin học? ❖Dữ liệu gì? →Kiểu liệu ? (kiểu sở/ kiểu có cấu trúc phức tạp) ❖Khái niệm chung: CTDL cách thể tổ chức liệu máy tính cho sử dụng cách có hiệu ❖Khái niệm khác: CTDL liệu phức hợp, gồm nhiều thành phần liệu, thành phần liệu sở CTDL xây dựng Các thành phần liệu tạo nên CTDL liên kết với theo cách Cấu trúc liệu giải thuật 1.1.2 Các vấn đề liên quan Tầm quan trọng việc lựa chọn CTDL ▪ Tổ chức liệu : dl vào/ra/trung gian ▪ Xây dựng giải thuật →Các cách cài đặt khác →Thực thao tác thuận lợi/khơngthuận lợi →CTDL thay đổi → Thuật tốn thay đổi Cấu trúc liệu giải thuật 8/4/2020 1.1.2 Các vấn đề liên quan Các tiêu chuẩn lựa chọn CTDL ▪ CTDL phải biểu diễn đầy đủ thơng tin tốn (in/out) → phản ánh thực tế ▪ Cài đặt máy tính ngơn ngữ lập trình sử dụng ▪ Phù hợp với thao tác thuật toán (đặc biệt thao tác sử dụng nhiều) → phát triển thuật toán đơn giản đạt hiệu ▪ Tiết kiệm tài nguyên Cấu trúc liệu giải thuật 1.1.3 Một số cấu trúc liệu ❖Mảng (array) ❖Bản ghi (record)/cấu trúc (struct) ❖Tập hợp (set) ❖Tệp (file) ❖Xâu (string) ❖….(bảng băm, danh sách liên kết) Cấu trúc liệu giải thuật 10 8/4/2020 1.2 Giải thuật (Algorithm) 1.2.1 Khái niệm chung 1.2.2 Ngôn ngữ diễn đạt giải thuật 1.2.3 Thiết kế phân tích giải thuật 1.2.4 Giải thuật đệ quy Cấu trúc liệu giải thuật 11 1.2.1 Khái niệm chung ❖Thuật toán dãy hữu hạn bước xếp theo trật tự xác định, bước mơ tả xác phép tốn hành động cần thực hiện, để giải vấn đề ❖Thuật toán dãy hữu hạn thao tác, xếp theo trật tự xác định, sau thực hiện, từ Input ta nhận Output cần tìm Cấu trúc liệu giải thuật 12 8/4/2020 1.2.1 Khái niệm chung ❖Các tính chất (đặc trưng) thuật toán: ▪ ▪ ▪ ▪ ▪ ▪ ▪ Tính Tính Tính Tính Tính Tính Tính vào (input) (output) đơn định (xác định / đơn nghĩa) đắn dừng (tính kết thúc / tính đóng) phổ dụng khả thi/hiệu Cấu trúc liệu giải thuật 13 1.2.2 Ngôn ngữ diễn đạt giải thuật ❖Cách liệt kê: liệt kê bước cần thực ❖Sơ đồ khối: sử dụng hình khối oval, chữ nhật, hình thoi mũi tên,… ❖Ngơn ngữ lập trình: dùng ký hiệu quy tắc ngơn ngữ lập trình Cấu trúc liệu giải thuật 14 8/4/2020 1.2.2 Ngơn ngữ diễn đạt giải thuật Ví dụ: - Input:N nguyên dương, dãy a 1, , an - Output : Tìm Max dãy cho Ý tưởng: ❖Giả thiết Max = a1 Với i, > Max thay giá trị Max= Cấu trúc liệu giải thuật 15 1.2.2 Ngôn ngữ diễn đạt giải thuật ❖Cách liệt kê Bước Nhập N dãy a1, , an Bước Đặt Max = a1, i = 2; Bước Nếu i > N đến Bước 5; Bước 4.1 N ếu > Max Max = 4.2 Đặt i=i+1 quay B.3; Bước Đưa Max kết thúc Cấu trúc liệu giải thuật 16 8/4/2020 1.2.2 Ngôn ngữ diễn đạt giải thuật Bắt đầu Nhập N, a1,a2, …an Max=a1,i=2 i=i+1 i>N Max= ai>Max Xuất Max Kết thúc Cấu trúc liệu giải thuật 17 1.2.2 Ngôn ngữ diễn đạt giải thuật ❖Dùng ngôn ngữ lập trình int max(int *x,int n) //hàm tìm max { int result; result=x[0]; for (int i=1;i A[pivot]) j:= j-1; if i j Return j Cấu trúc liệu giải thuật 159 4.2.1 Sắp xếp nhanh (Quick Sort) ❖Sắp xếp nhanh chỗ không ổn định ❖Thời gian thực giải thuật ▪ Trường hợp tổng quát • T(0) = T(1) = c • Pha phân đoạn thực việc duyệt danh sách ban đầu lần → Thời gian thực O(n) • Trong giải thuật xuất lời gọi đệ qui: Giả sử sau phân đoạn, phần tử chốt vị trí p thì: T(n) = T(p-1) + T(n-p) + O(n) + O(1) Cấu trúc liệu giải thuật 160 80 8/4/2020 4.2.1 Sắp xếp nhanh (Quick Sort) ▪ Trường hợp xấu nhất: • Cơng thức đệ qui: T(n) = T(n-1) + O(n) + O(1) • Độ phức tạp giải thuật xếp nhanh O(n2) A vốn chốt chọn nút nhỏ ▪ Trường hợp hoàn hảo: • Phân đoạn cân T(n) = T(n/2) + n • Độ phức tạp trung bình giải thuật O(nlog2n) Cấu trúc liệu giải thuật 161 4.2.2 Sắp xếp vun đống (Heap Sort) ❖ Cấu trúc Đống: ▪ Đống nhị phân có hai tính chất • Là nhị phân hồn chỉnh • Có thứ tự : nút gắn với giá trị số tự nhiên, cho giá trị nút cha lớn giá trị nút (Max Heap) Cấu trúc liệu giải thuật 162 81 8/4/2020 4.2.2 Sắp xếp vun đống (Heap Sort) ▪ Đống lưu trữ máy tính dạng vector lưu trữ Cấu trúc liệu giải thuật 163 4.2.2 Sắp xếp vun đống (Heap Sort) ▪ Phép tạo đống • Dãy số cần coi dãy phần tử nhị phân hoàn chỉnh lưu trữ – Dãy số A: {31, 54, 21, 11, 79, 47, 28, 87, 69, 65, 51} – Vector lưu trữ Cấu trúc liệu giải thuật 164 82 8/4/2020 4.2.2 Sắp xếp vun đống (Heap Sort) ▪ Cây nhị phân hoàn chỉnh tương ứng Cấu trúc liệu giải thuật 165 4.2.2 Sắp xếp vun đống (Heap Sort) ▪ Hai thao tác cần thực • Khơi phục tính chất đống nhánh có gốc nút thứ i hai đống • Xây dựng đống tương đương với nhị phân hoàn chỉnh chưa phải đống – Với có gốc từ n / 2 xuống đến 1, khơi phục tính chất đống với Cấu trúc liệu giải thuật 166 83 8/4/2020 4.2.2 Sắp xếp vun đống (Heap Sort) Thực phép xử lý với nhị phân nút gốc có thứ tự Khơi phục tính chất đống cho Cấu trúc liệu giải thuật 167 4.2.2 Sắp xếp vun đống (Heap Sort) Procedure BUILD-HEAP(i,n) {Tạo đống có gốc nút có thứ tự i n nút ban đầu} VAL:= V[i]; {lưu giá trị nút gốc xét} j := 2*i; { j số thứ tự trái nút i} while j A[k] tìm nửa sau mảng cho Cấu trúc liệu giải thuật 185 4.3.3 Tìm kiếm nhị phân Function BINARY-SEARCH(A,l, r, key) If (l> r) return -1; m = (l+r) /2 ; If (A[m] = key ) then return m ; Else if (A[m] > key) then return BINARY-SEARCH(A,l,m-1,key); Else return BINARY-SEARCH(A, m+1, r, key); Cấu trúc liệu giải thuật 186 93 8/4/2020 4.3.3 Tìm kiếm nhị phân Function BINARY-SEARCH(A,n,key) l:=1 ; r := n ; { l, r số phần tử đầu phần tử cuối mảng tìm kiếm đó} while l A[m] then l:= m+1 else return m; end; { Khơng tìm thấy } return -1; Cấu trúc liệu giải thuật 187 4.3.4 Đánh giá ❖ Tìm kiếm dựa vào quan hệ giá trị phần tử mảng để định hướng trình tìm kiếm, áp dụng với dãy có thứ tự ❖ Tìm kiếm nhị phân tìm kiếm nhanh tìm kiếm ❖ Tuy nhiên áp dụng thuật giải nhị phân cần phải quan tâm đến chi phí cho việc xếp mảng Vì mảng thứ tự tìm kiếm nhị phân Cấu trúc liệu giải thuật 188 94 ... ❖https://www.ereading.club/bookreader.php/138793/Advanced_C.pdf Cấu trúc liệu giải thuật 8/4/2020 Chương Các khái niệm CTDL & GT 1.1 Cấu trúc liệu 1.2 Giải thuật Cấu trúc liệu giải thuật 1.1 Cấu trúc liệu (Data Structures) 1.1.1... Chương 4: Một số giải thuật xếp tìm kiếm (15t) Cấu trúc liệu giải thuật Tài liệu tham khảo ❖Đỗ Xuân Lôi, Cấu trúc liệu giải thuật, NXB ĐHQGHN, 2008 ❖Nguyễn ĐÌnh Hóa, Cấu trúc liệu giải thuật, 2008,... vấn đề liên quan 1.1.3 Một số cấu trúc liệu Cấu trúc liệu giải thuật 8/4/2020 1.1.1 Khái niệm chung ❖Mục tiêu tin học? ? ?Dữ liệu gì? →Kiểu liệu ? (kiểu sở/ kiểu có cấu trúc phức tạp) ❖Khái niệm chung: