HC VIN NG N HNG KHOA H THNG

  • Slides: 24
Download presentation
HỌC VIỆN NG N HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ CẤU TRÚC

HỌC VIỆN NG N HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CHƯƠNG 1: GIỚI THIỆU CHUNG Hà Nội – 2015

Nội Dung Chương Trình TUẦN NỘI DUNG 1 Giới thiệu chung 2 Phân tích

Nội Dung Chương Trình TUẦN NỘI DUNG 1 Giới thiệu chung 2 Phân tích thuật toán 3 Sắp xếp I 4 Sắp xếp II 5 Danh sách liên kết 6 Ngăn xếp 7 Hàng đợi 8 Cây 9 Cây tìm kiếm nhị phân 10 Cây AVL 11 Bảng băm 12 Đồ Thị I 13 Đồ Thị II 14 Ôn tập

Tài Liệu Tham Khảo v Đỗ Xuân Lôi, Cấu trúc dữ liệu và giải

Tài Liệu Tham Khảo v Đỗ Xuân Lôi, Cấu trúc dữ liệu và giải thuật , Nxb Đại học Quốc gia Hà Nội, 2009. v Mark Allen Weiss, Data structures and algorithm analysis in C, pdf on web v Bài soạn của giảng viên. v Các tài liệu điện tử/ website.

Đánh giá học phần v Kiểm tra/ thi giữa kỳ: 40% v Thi cuối

Đánh giá học phần v Kiểm tra/ thi giữa kỳ: 40% v Thi cuối kỳ : 60% v Tổng điểm: 10 điểm.

CHƯƠNG 1 MỘT SỐ KHÁI NIỆM CƠ BẢN VỀ CTDL VÀ GIẢI THUẬT

CHƯƠNG 1 MỘT SỐ KHÁI NIỆM CƠ BẢN VỀ CTDL VÀ GIẢI THUẬT

Các khái niệm v. Môn học giới thiệu § Các cấu trúc dữ liệu

Các khái niệm v. Môn học giới thiệu § Các cấu trúc dữ liệu cơ bản § Các giải thuật điển hình trên các cấu trúc dữ liệu đó v. Cấu trúc dữ liệu là một kết hợp nhiều thành phần dữ liệu khác nhau thành một thực thể thống nhất để thể hiện một kiểu dữ liệu

Các tiêu chuẩn của CTDL v Phải biểu diễn đầy đủ thông tin. v

Các tiêu chuẩn của CTDL v Phải biểu diễn đầy đủ thông tin. v Phải phù hợp với các thao tác trên đó. v Phù hợp với điều kiện cho phép của NNLT. v Tiết kiệm tài nguyên hệ thống.

Vai Trò Của Cấu Trúc Dữ Liệu v Cấu trúc dữ liệu đóng vai

Vai Trò Của Cấu Trúc Dữ Liệu v Cấu trúc dữ liệu đóng vai trò quan trọng trong việc kết hợp và đưa ra cách giải quyết bài toán. v CTDL hỗ trợ cho các thuật toán thao tác trên đối tượng được hiệu quả hơn

Các kiểu cấu trúc dữ liệu cơ bản v Bản ghi (struct) v Danh

Các kiểu cấu trúc dữ liệu cơ bản v Bản ghi (struct) v Danh sách (array) v Danh sách liên kết (list) v Cây (tree) v Bảng băm (hash table)

Thuật toán v Thuật toán: Một dãy hữu hạn các chỉ thị có thể

Thuật toán v Thuật toán: Một dãy hữu hạn các chỉ thị có thể thi hành để đạt mục tiêu đề ra nào đó. v Ví dụ: Thuật toán tính tổng tất cả các số nguyên dương nhỏ hơn n gồm các bước sau: Bước 1: S=0, i=1; Bước 2: nếu i<n thì s=s+i; Ngược lại: qua bước 4; Bước 3: i=i+1; Quay lại bước 2; Bước 4: Tổng cần tìm là S.

Các Tiêu Chuẩn Của Thuật Toán v Xác định rõ dữ liệu đầu vào

Các Tiêu Chuẩn Của Thuật Toán v Xác định rõ dữ liệu đầu vào v Xác định rõ kết quả đầu ra v Tính xác định: cùng một dữ liệu đầu vào thì cùng đưa đến một kết quả đầu ra v Tính khả thi: đơn giản, làm được, thời gian hữu hạn v Tính dừng: sau một số bước hữu hạn thực hiện sẽ phải kết thúc

Sự Cần Thiết Của Thuật Toán v Tại sao sử dụng máy tính để

Sự Cần Thiết Của Thuật Toán v Tại sao sử dụng máy tính để xử lý dữ liệu? § Nhanh hơn. § Nhiều hơn. § Giải quyết những bài toán mà con người không thể hoàn thành được. v Làm sao đạt được những mục tiêu đó? § Nhờ vào sự tiến bộ của kỹ thuật: tăng cấu hình máy § Nhờ vào các thuật toán hiệu quả: thông minh và chi phí thấp “Một máy tính siêu hạng vẫn không thể cứu vãn một thuật toán tồi!”

Biễu Diễn Thuật Toán v Dạng ngôn ngữ tự nhiên v Dạng lưu đồ

Biễu Diễn Thuật Toán v Dạng ngôn ngữ tự nhiên v Dạng lưu đồ (sơ đồ khối) v Dạng mã giả v Ngôn ngữ lập trình

Biểu Diễn Bằng Ngôn Ngữ Tự Nhiên v NN tự nhiên thông qua các

Biểu Diễn Bằng Ngôn Ngữ Tự Nhiên v NN tự nhiên thông qua các bước được tuần tự liệt kê để biễu diễn thuật toán. v Ưu điểm: § Đơn giản, không cần kiến thức về về cách biểu diễn (mã giả, lưu đồ, . . . ) v Nhược điểm: § Dài dòng, không cấu trúc. § Đôi lúc khó hiểu, không diễn đạt được thuật toán.

Lưu Đồ v Là hệ thống các nút, cung hình dạng khác nhau thể

Lưu Đồ v Là hệ thống các nút, cung hình dạng khác nhau thể hiện các chức năng khác nhau. A A Thực hiện A Gọi hàm A Đúng B Begin Vào / Ra dữ liệu End Sai Điều kiện rẻ nhánh B Nút bắt đầu / kết thúc chương trình

Biểu Diễn Bằng Lưu Đồ amax = a 0 Bắt đầu Tìm phần tử

Biểu Diễn Bằng Lưu Đồ amax = a 0 Bắt đầu Tìm phần tử lớn nhất trong mảng i= 1 i<n S amax là lớn nhất Đ amax < ai S i = i+1 Đ amax =ai Kết thúc

Biểu Diễn Bằng Mã Giả v Ngôn ngữ tựa ngôn ngữ lập trình: §

Biểu Diễn Bằng Mã Giả v Ngôn ngữ tựa ngôn ngữ lập trình: § Dùng cấu trúc chuẩn hóa, chẳng hạn tựa Pascal, C. § Dùng các ký hiệu toán học, biến, hàm. v Ưu điểm: § Đỡ cồng kềnh hơn lưu đồ khối. v Nhược điểm: § Không trực quan bằng lưu đồ khối.

Biểu Diễn Bằng Mã Giả v. Một số quy ước 1. Các biểu thức

Biểu Diễn Bằng Mã Giả v. Một số quy ước 1. Các biểu thức toán học 2. Lệnh gán: “=” (A B) 3. So sánh: “==”, “!=” 4. Khai báo hàm (thuật toán) Thuật toán <tên TT> (<tham số>) Input: <dữ liệu vào> Output: <dữ liệu ra> <Các câu lệnh> End

Biểu Diễn Bằng Mã Giả 5. Các cấu trúc: Cấu trúc chọn: if …

Biểu Diễn Bằng Mã Giả 5. Các cấu trúc: Cấu trúc chọn: if … then … [else …] Vòng lặp: while … do do … while (…) for … do … 6. Một số câu lệnh khác: Trả giá trị về: return [giá trị] Lời gọi hàm: <Tên>(tham số)

Biểu Diễn Bằng Mã Giả v Ví dụ: Tìm phần tử lớn nhất trong

Biểu Diễn Bằng Mã Giả v Ví dụ: Tìm phần tử lớn nhất trong mảng một chiều. amax=a 0; i=1; while (i<n) if (amax<ai) amax = ai; i++; end while;

Biểu Diễn Bằng Ngôn Ngữ Lập Trình v Dùng ngôn ngữ máy tính (C,

Biểu Diễn Bằng Ngôn Ngữ Lập Trình v Dùng ngôn ngữ máy tính (C, Pascal, . . . ) để diễn tả thuật toán, CTDL thành câu lệnh. v Kỹ năng lập trình đòi hỏi cần học tập và thực hành (nhiều). v Dùng phương pháp tinh chế từng bước để chuyển hoá bài toán sang mã chương trình cụ thể.

Cách học: v Nhớ giải thuật (mã giả) v Dùng NNLT cụ thể để

Cách học: v Nhớ giải thuật (mã giả) v Dùng NNLT cụ thể để minh chứng

Quan hệ giữa giải thuật và cấu trúc DL v Niklaus Wirth: CTDL +

Quan hệ giữa giải thuật và cấu trúc DL v Niklaus Wirth: CTDL + Thuật toán = Chương trình Data structures + Algorithms = Program v Cần nghiên cứu về thuật toán và CTDL! § Cấu trúc dữ liệu cụ thể: chọn giải thuật § Giải thuật cụ thể: chọn cấu trúc dữ liệu

Vị trí CTDL trong tin học v Thiết kế chương trình § § Đặc

Vị trí CTDL trong tin học v Thiết kế chương trình § § Đặc tả vấn đề Thiết kế cấu trúc dữ liệu và giải thuật Cài đặt (C++, Java…) Thử nghiệm và sửa lỗi