Bài giảng kỹ thuật lập trình bài 3 ths nguyễn thành trung

20 47 0
Bài giảng kỹ thuật lập trình  bài 3   ths  nguyễn thành trung

Đ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

Trịnh Thành Trung (ThS) trungtt@soict.hust.edu.vn Bài GIẢI THUẬT Các toán thực tế thường phức tạp Phải xác định o Các liệu liên quan đến toán o Các thao tác cần thiết để giải tốn Ví dụ Bài tốn Quản lý nhân viên quan Cần quản lý thông tin nào?  Thông tin nhân viên: tên, ngày sinh, số bảo hiểm xã hội, phòng ban làm việc,… Cần thực thao tác quản lý nào?  Tạo hồ sơ cho nhân viên vào làm  Cập nhật số thông tin hồ sơ  Tìm kiếm thơng tin nhân viên Ai phép thực thao tác nào? Giải thuật Các đặc trưng giải thuật  Đầu vào (Input)  Đầu (Output) tập lệnh để thực tác vụ định  Độ xác (Precision)  Hữu hạn (Finiteness)  Đơn trị (Uniqueness)  Tổng quát (Generality) Nội dung Tìm kiếm Sắp xếp Đệ quy Tìm kiếm Search Tìm kiếm Search Input ▪ Một tập phần tử liệu có cấu trúc ▪ Một khóa cần tìm Process ▪ Tìm phần tử có chứa khóa trùng với khóa cần tìm Output ▪ Vị trí phần tử có chứa khóa (nếu có) Phần tử liệu có cấu trúc khóa ▪ Phần tử liệu có cấu trúc: ▫ Dữ liệu khóa ▫ Các liệu thành phần khác ▪ Khóa: ▫ So sánh ▸ Có thể giá trị phần tử ▸ Có thể liệu thành phần phần tử ▫ Thường số ▪ Trích khóa từ phần tử liệu có cấu trúc: ▫ So sánh liệu thành phần Các giải thuật tìm kiếm Tìm kiếm ▪ Các phần tử tập đầu vào không xếp theo khóa tìm kiếm ▪ Q trình xử lý Duyệt tập đầu vào So sánh với khóa cần tìm tới tìm thấy khóa duyệt qua hết tập đầu vào mà chưa tìm thấy Tìm kiếm nhị phân ▪ Các phần tử tập đầu vào xếp theo khóa tìm kiếm ▪ Q trình xử lý So sánh khóa cần tìm với phần tử Nếu nhỏ tìm bên trái tập đầu vào Ngược lại tìm bên phải tập đầu vào Lặp lại động tác 2 Sắp xếp Sort Sắp xếp Sort ▪ Sắp thứ tự ▫ Đầu vào: tập phần tử liệu ▫ Đầu ra: danh sách có thứ tự tăng (hoặc giảm) theo khóa ▪ Phân loại ▫ Sắp thứ tự theo khóa ngồi (external sort): tập tin ▫ Sắp thứ tự theo khóa (internal sort): nhớ ▪ Giả thiết ▫ Sắp thứ tự theo khóa ▫ Sắp tăng dần Một số giải thuật xếp ▪ Insertion sort ▪ Selection sort ▪ Bubble sort ▪ Merge sort ▪ Heap sort ▪ Quick sort Một số giải thuật xếp ▪ Internal sorts ▫ Insertion sort, selection sort, bubblesort, shaker sort ▫ Quicksort, mergesort, heapsort, samplesort, shellsort ▫ Solitaire sort, red-black sort, splaysort, Dobosiewicz sort, psort, ▪ External sorts ▫ Poly-phase mergesort, cascade-merge, oscillating sort ▪ Radix sorts ▫ Distribution, MSD, LSD ▫ 3-way radix quicksort ▪ Parallel sorts ▫ Bitonic sort, Batcher even-odd sort ▫ Smooth sort, cube sort, column sort ▫ GPUsort 3 Đệ quy Recursive Mô tả đệ quy Recursive Mô tả theo cách phân tích đối tượng thành nhiều thành phần mà số thành phần có thành phần mang tính chất đối tượng mơ tả Mơ tả đối tượng thơng qua Ví dụ Mơ tả đệ quy tập số tự nhiên N  Số số tự nhiên (1-N)  Số tự nhiên số tự nhiên cộng Mô tả đệ quy cấu trúc danh sách kiểu T  Cấu trúc rỗng danh sách kiểu T  Ghép nối thành phần kiểu T (nút kiểu T) với danh sách kiểu T ta có danh sách kiểu T Mơ tả đệ quy gia phả  Gia phả người bao gồm người gia phả cha gia phả mẹ Ví dụ Tính giai thừa n   Định nghĩa không đệ quy n! n! = n * (n-1) * … * Định nghĩa đệ quy: n! = n=0 n * (n-1)! n>0 Mã C++ int factorial(int n) { if (n==0) return 1; else return (n * factorial(n - 1)); } Thực tính giai thừa factorial (3) n=3 factorial (2) … n=2 3*factorial(2) … factorial (1) n=1 2*factorial(1) … factorial (0) 1*factorial(0) n=0 … return 1; 1 Trạng thái hệ thống tính giai thừa Stack hệ thống factorial(0) factorial(1) factorial(1) factorial(1) factorial(2) factorial(2) factorial(2) factorial(2) factorial(2) factorial(3) factorial(3) factorial(3) factorial(3) factorial(3) factorial(3) factorial(3) t Thời gian hệ thống Gọi hàm Gọi hàm factorial(3) factorial(2) Trả từ Gọi hàm Gọi hàm hàm factorial(1) factorial(0) factorial(0 ) Trả từ hàm factorial(1 ) Trả từ hàm factorial(2 ) Trả từ hàm factorial(3 ) t Thành phần mô tả đệ quy ▪ Phần neo: trường hợp suy biến đối tượng ▫ Ví dụ: số tự nhiên, cấu trúc rỗng danh sách kiểu T, 0!=1, SM (a[x:x]) thao tác rỗng ▪ Phần qui nạp: mô tả đối tượng (giải thuật) thơng qua đối tượng (giải thuật) cách trực tiếp gián tiếp Ví dụ: ▫ n! = n * (n –1)! ▫ SM (a[m:n]) ≡Merge (SM (a[m:( m+n) div 2] , SM (a[(m+n) div +1 : n]) ) ... factorial(2) factorial(2) factorial (3) factorial (3) factorial (3) factorial (3) factorial (3) factorial (3) factorial (3) t Thời gian hệ thống Gọi hàm Gọi hàm factorial (3) factorial(2) Trả từ Gọi hàm Gọi... Đệ quy Recursive Mô tả đệ quy Recursive Mô tả theo cách phân tích đối tượng thành nhiều thành phần mà số thành phần có thành phần mang tính chất đối tượng mơ tả Mơ tả đối tượng thơng qua Ví dụ... liệu thành phần khác ▪ Khóa: ▫ So sánh ▸ Có thể giá trị phần tử ▸ Có thể liệu thành phần phần tử ▫ Thường số ▪ Trích khóa từ phần tử liệu có cấu trúc: ▫ So sánh liệu thành phần Các giải thuật

Ngày đăng: 19/06/2019, 10:04

Từ khóa liên quan

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

Tài liệu liên quan