1. Trang chủ
  2. » Tất cả

Giáo trình Cấu trúc dữ liệu

140 1 0

Đ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 140
Dung lượng 726,5 KB

Nội dung

GIÁO TRÌNH CẤU TRÚC DỮ LIỆU Giáo trình Cấu trúc liệu LỜI NÓI ĐẦU Cấu trúc liệu Giải thuật mơn học đóng vai trị quan trọng trình đào tạo kỹ sư, cử nhân ngành Khoa học máy tính Cơng nghệ thơng tin Cuốn giáo trình nghiên cứu hình thành dựa sở mục tiêu đào tạo đề cương chi tiết môn học Cấu trúc liệu Giải thuật Hội đồng nghiên cứu khoa học, tổ Tin học Khoa Kỹ thuật trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương xây dựng Cuốn giáo trình trình bày vấn đề có nhất, thiết yếu hai khái niệm DỮ LIỆU GIẢI THUẬT, tảng quan trọng cho muốn nghiên cứu lĩnh vực tin học Nội dung sách gồm chương * Chương 1: MỘT SỐ KHÁI NIỆM: trình bày số khái niệm thuật tốn: Ký hiệu lớn phương pháp phân tích, đánh giá truật tốn; cấu trúc liệu: Các kiểu liệu trừu tượng phép tốn kiểu liệu Ở trình bày hệ kiểu cấu trúc Dữ liệu ngơn ngữ lập trình Pascal * Chương 2: GIẢI THUẬT ĐỆ QUY: trình bày đệ quy, số thuật tốn ứng dụng đệ quy * Chương 3: CÁC THUẬT TOÁN SẮP XẾP VÀ TÌM KIẾM: trình bày nội dung, giải thuật số thuật tốn xếp, tìm kiếm bản, hay gặp So sánh, đánh giá, nhận xét ưu nhược điểm loại thuật toán * Chương 4: DANH SÁCH LIÊN KẾT: trình bày mơ hình liệu kiểu Danh sách, cấu trúc liệu cài đặt danh sách, phép toán danh sách Trong hai cấu trúc đặc biệt STACK QUEUE nghiên cứu kỹ * Chương 5: CÂY: trình bày cấu trúc liệu Cây: Biểu diễn với phép tốn cây, Cây nhị phân đặc biệt ý Đọc xong sách người đọc cung cấp đầy đủ khái niệm, thuật toán từ đến nâng cao, phù hợp cho Giảng viên HS - SV ngành Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu Công nghệ Tin học nghiên cứu học tập Tồn chương, mục có ví dụ, hình vẽ minh hoạ cụ thể Cuối chương có phần tóm tắt lại ý chính, ví dụ ứng dụng … tập (Lý thuyết thực hành) để bạn đọc đúc rút nội dung, củng cố kiến thức chương Do tính đặc thù ngơn ngữ lập trình Pascal nên tồn ví dụ, tập giáo trình viết ngơn ngữ lập trình này, người đọc cần biết sử dụng ngôn ngữ Pascal ngồi khơng địi hỏi kiến thức chun mơn khác Chúng tơi có nhiều cố gắng việc trình bày tinh giản khối lượng kiến thức đồ sộ, cố gắng đặt vấn đề giải vấn đề, trình bày khái niệm thật Logic, tự nhiên, sử dụng ngơn từ sáng, ví dụ sát với thực tế dễ hiểu, dễ áp dụng, tập có tính khả thi cao khơng khó…để giúp bạn đọc dễ dàng nghiên cứu, học tập Tuy sách chắn không tránh khỏi thiếu sót, vấn đề cần bổ xung, vấn đề cần lược bỏ, Chúng chân thành mong nhận ý kiến đóng góp, phê bình độc giả để sách hồn chỉnh Thư góp ý xin gửi địa chỉ: phamhuy_ktkt@yahoo.com Tôi xin chân thành cảm ơn Thầy chuyên gia Trịnh Nhật Tiến (Trưởng khoa Công nghệ thông tin trường ĐH Công nghệ Hà Nội) thầy giáo tổ môn Tin học, khoa Kỹ thuật trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương đọc thảo góp nhiều ý kiến nội dung để tơi hồn thành tài liệu Hải Dương, tháng năm 2005 Tác giả: Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu PHẠM TRỌNG HUY Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu Chương 1: MỘT SỐ KHÁI NIỆM 1.1 Khái niệm thuật toán (Giải thuật) 1.1.1 Khái niệm Thuật toán dãy hữu hạn quy tắc ( thị, mệnh lệnh) mơ tả xác q trình tính tốn Theo với liệu vào cho kết ( Yêu cầu toán ) Các đặc trưng Thuật toán đơn định: * Tính đơn định: Thực bước thuật tốn với liệu vào cho kết nghĩa bước thuật toán, thao tác phải rõ ràng, không gây nên nhập nhằng, lộn xộn, đa nghĩa * Tính dừng: Thuật tốn phải dừng cho kết sau số hữu hạn bước * Tính đúng: Cho kết phù hợp yêu cầu toán với liệu vào đắn * Tính phổ dụng: Thuật tốn phải giải lớp rộng tốn * Tính khả thi: Thuật tốn phải máy tính thực khoảng thời gian điều kiện ( nhớ ) cho phép Để mơ tả thuật tốn sử dụng nhiều phương pháp khác nhau, tốn đơn giản phải mơ tả Thuật tốn cách tường minh đầy đủ, toán lớn mà có thuật tốn chuẩn, quen thuộc ta mơ tả tổng thể, chỗ biết thích bỏ qua Khi ta tập trung giải phần trọng điểm tránh việc làm cho mơ tả Thuật tốn rắc rối phức tạp 1.1.2 Các bước phân tích tốn Bước việc phân tích thuật toán xác định đặc trưng liệu dùng làm liệu nhập thuật toán định phân tích thích Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu hợp Về mặt lý tưởng, muốn với phân bố tùy ý cho liệu nhập, có phân bố tương ứng thời gian hoạt động thuật tốn Chúng ta khơng thể đạt tới điều lý tưởng cho thuật tốn nào, quan tâm đến cách cố gắng chứng minh thời gian chạy luôn nhỏ “chặn trên” bất chấp liệu nhập cố gắng tính thời gian chạy trung bình cho liệu nhập “ngẫu nhiên” Bước thứ hai phân tích thuật tốn nhận thao tác trừu tượng thuật toán để tách biệt phân tích với cài đặt Ví dụ, tách biệt nghiên cứu có phép so sánh thuật toán xếp khỏi xác định cần micro giây máy tính cụ thể; yếu tố thứ xác định tính chất thuật tốn, yếu tố thứ hai lại xác định tính chất máy tính Sự tách biệt cho phép so sánh thuật toán cách độc lập với cài đặt cụ thể hay độc lập với máy tính cụ thể Bước thứ ba q trình phân tích thuật tốn phân tích mặt tốn học, với mục đích tìm giá trị trung bình trường hợp xấu cho đại lượng Chúng ta khơng gặp khó khăn tìm chặn cho thời gian chạy chương trình, vấn đề phải tìm chặn tốt nhất, tức thời gian chạy chương trình gặp liệu nhập trường hợp xấu Trường hợp trung bình thơng thường địi hỏi phân tích tốn học tinh vi trường hợp xấu Mỗi hoàn thành q trình phân tích thuật tốn dựa vào đại lượng bản, thời gian kết hợp với đại lượng xác định rõ ta có biểu thức để tính thời gian chạy Nói chung, tính thuật tốn thường phân tích mức độ vơ xác, bị giới hạn tính khơng chắn máy tính hay khó khăn việc xác định tính chất tốn học vài đại lượng toán học trừu tượng Tuy nhiên, thay phân tích cách chi tiết thường ước lượng để tránh sa vào chi tiết 1.1.3 Phân tích Thuật tốn: Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu Hầu hết toán có nhiều thuật tốn khác để giải chúng Như vậy, làm để chọn Thuật toán tốt nhất? Đây lĩnh vực quan tâm nghiên cứu nhiều khoa học máy tính Chúng ta khảo sát kết nghiên cứu mô tả tính thuật tốn so sánh thuật toán đồng thời khảo sát hướng dẫn tổng quát phân tích thuật tốn Khi nói đến hiệu thuật tốn, người ta thường quan tâm đến chi phí cần dùng để thực Chi phí thể qua việc sử dụng tài nguyên nhớ, thời gian sử dụng CPU, … Ta đánh giá thuật tốn phương pháp thực nghiệm thơng qua việc cài đặt thuật toán chọn liệu thử nghiệm Thống kê thông số nhận chạy liệu ta có đánh giá thuật Thời gian chạy tốn Trung ình Xấub ms ms ms Tốt ms ms A B C D E F G Dữ liệu vào Tuy nhiên, phương pháp thực nghiệm có số nhược điểm sau khiến khó có khả áp dụng thực tế: Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu  Do phải cài đặt ngơn ngữ lập trình cụ thể nên thuật tốn chịu hạn chế ngơn ngữ lập trình  Hiệu thuật tốn bị ảnh hưởng trình độ người cài đặt  Việc chọn liệu thử nghiệm đặc trưng cho tất tập liệu vào thuật tốn khó khăn tốn nhiều chi phí  Các số liệu thu nhận phụ thuộc nhiều vào phần cứng mà thuật toán thử nghiệm Điều khiến cho việc so sánh thuật tốn khó khăn chúng thử nghiệm máy tính khác Vì lý trên, người ta tìm kiếm phương pháp đánh giá thuật tốn hình thức hơn, phụ thuộc mơi trường phần cứng Một phương pháp phương pháp đánh giá thuật toán theo hướng xấp xỉ tiệm cận qua khái niệm toán học O lớn →O(); o nhỏ → o(); Ω(); ≡() Thông thường vấn đề mà giải có “kích thước” tự nhiên (thường số lượng liệu xử lý) mà gọi N Chúng ta muốn mô tả tài nguyên cần dùng (thông thường thời gian cần thiết để giải vấn đề) hàm số theo N Chúng ta quan tâm đến trường hợp trung bình, tức thời gian cần thiết để xử lý liệu nhập thông thường T(n), quan tâm đến trường hợp xấu nhất, tương ứng với thời gian cần thiết liệu rơi vào trường hợp xấu có Việc xác định chi phí trường hợp trung bình thường quan tâm nhiều đại diện cho đa số trường hợp sử dụng thuật toán Tuy nhiên, việc xác định chi phí trung bình lại gặp nhiều khó khăn Vì vậy, nhiều trường hợp, người ta xác định chi phí trường hợp xấu (chặn trên) thay cho việc xác định chi phí trường hợp trung bình Hơn nữa, số tốn, việc xác định chi phí trường hợp xấu quan trọng Ví dụ, tốn hàng khơng, phẫu thuật, … Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu Như ý trên, hầu hết thuật toán có tham số N, thơng thường số lượng phần tử liệu xử lý mà ảnh hưởng nhiều tới thời gian chạy Tham số N bậc đa thức, kích thước tập tin xếp hay tìm kiếm, số nút đồ thị, v.v… Thơng thường để đánh giá thuật tốn người ta dựa hai tiêu chuẩn sau: Tiêu chuẩn Độ đơn giản, dễ hiểu, dễ cài đặt ( viết chương trình ) Tiêu chuẩn Sử dụng tiết kiệm tài nguyên hệ thống với thời gian ngắn Tuỳ trường hợp mà hai tiêu chuẩn quan tâm, chẳng hạn viết chương trình để sử dụng số lần, thời gian để viết chương trình với thuật tốn theo tiêu chuẩn lại nhiều thuật toán khác đơn giản ngắn gọn tiêu chuẩn trọng, ngược lại chương trình đợc sử dụng nhiều lần ( chương trình ) nhiều người sử dụng tiêu chuẩn lại quan trọng Một ví dụ điển hình với tốn cổ Tháp Hà nội sau: Có cọc A, B,C lúc đầu cọc A có m đĩa lồng vào theo thứ tự đĩa bé trên, yêu cầu phải chuyển toàn số đĩa từ cọc A sang cọc B xếp theo trật tự đĩa bé Ở cọc C đóng vai trị cọc trung gian q trình chuyển đĩa, đĩa cọc C tuân theo quy tắc đĩa bé A C B Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương Giáo trình Cấu trúc liệu 10 Hình minh hoạ toán Tháp Hà Nội Để chuyển m đĩa từ cọc A sang cọc B ta thực thuật toán, chuyển m -1 đĩa sang cột C, sau chuyển đĩa lớn từ cột A sang cột B, thuật toán thực đệ quy đĩa cuối Như ta thấy m=1 cần lần chuyển, m=2 cần lần chuyển, m=3 cần lần chuyển quy nạp ta với m ta cần m-1 lần chuyển Vậy m lớn thời gian để thực thuật tốn khơng thể Giả sử m = 30 số lần chuyển 107374824 lần chuyển 01 giây cần chuyển khoảng 1243 ngày liên tục, thuật tốn bất khả thi Hầu hết tất thuật tốn giáo trình có thời gian chạy tiệm cận tới hàm sau: a Hằng số: Hầu hết thị chương trình thực lần hay nhiều vài lần Nếu tất thị chương trình có tính chất nói thời gian chạy số Điều hiển nhiên điều mà ta phấn đấu để đạt việc thiết kế thuật toán b LogN: Khi thời gian chạy chương trình logarit tức thời gian chạy chương trình tiến chậm N lớn dần Thời gian chạy thuộc loại xuất chương trình mà giải tốn lớn cách chuyển thành toán nhỏ hơn, cách cắt bớt kích thước số Với mục đích chúng ta, thời gian chạy có xem nhỏ số “lớn“ Cơ số logarit làm thay đổi số khơng nhiều: Khi N 1000 logN số 10, 10 số 2; N triệu, logN nhân gấp N nhân đôi, logN tăng lên thêm số c N: Khi thời gian chạy chương trình tuyến tính, nói chung trường hợp mà số lượng nhỏ xử lý làm cho phần tử liệu nhập Khi N triệu thời gian chạy cỡ Khi N nhân gấp đơi Khoa KỸ THUẬT_ Trường Cao đẳng Kinh tế - Kỹ thuật Hải Dương ... Dương Giáo trình Cấu trúc liệu 20 dựng kiểu liệu sử dụng mảng ghi Mục tiêu việc nghiên cứu cấu trúc liệu tìm phương cách thích hợp để tổ chức, liên kết liệu, hình thành kiểu liệu có cấu trúc từ... Hải Dương Giáo trình Cấu trúc liệu 13 cách tổ chức thơng tin khác hiệu không thực Cách tổ chức thông tin bước xây dựng Cấu trúc liệu 1.2.1- Vai trò cấu trúc liệu thuật tốn, chương trình: Giải... đánh giá truật toán; cấu trúc liệu: Các kiểu liệu trừu tượng phép toán kiểu liệu Ở trình bày hệ kiểu cấu trúc Dữ liệu ngơn ngữ lập trình Pascal * Chương 2: GIẢI THUẬT ĐỆ QUY: trình bày đệ quy, số

Ngày đăng: 05/12/2016, 20:58

w