SlideShare uma empresa Scribd logo
1 de 58
BÀI 1: GIẢI THUẬT VÀ
CẤU TRÚC DỮ LIỆU
Đỗ Thị Thu Trang - Khoa CNTT
Trường Đại học SPKT Hưng Yên
2
Nội dung
 Mở đầu
 Mối quan hệ giữa cấu trúc dữ liệu và giải thuật
 Một số phương pháp biểu diễn thuật toán
 Các bước cơ bản để giải quyết bài toán
3
Nội dung
 Mở đầu
 Mối quan hệ giữa cấu trúc dữ liệu và giải thuật
 Một số phương pháp biểu diễn thuật toán
 Các bước cơ bản để giải quyết bài toán
4
Khái niệm dữ liệu
 Tại sao sử dụng máy tính để xử lý dữ liệu?
 Nhanh hơn, chính xác hơn
 Giải quyết nhiều bài toán đòi hỏi khối lượng tính toán cực
lớn, hoặc những bài toán phức tạp với khối lượng dữ liệu
lớn.
 Phương pháp?
 Nhờ vào các thuật toán hiệu quả, thông minh Chi phí thấp
 Nhờ vào sự nâng cấp cấu hình máy Chi phí cao
5
Khái niệm dữ liệu
 Trong tin học: Dữ liệu để biểu diễn các thông tin cần
thiết cho bài toán.
 Các dữ liệu máy tính gồm: Dữ liệu đầu vào, dữ liệu
trung gian, dữ liệu đầu ra.
6
Cấu trúc dữ liệu là gì?
7
Một số ví dụ về Cấu trúc
8
Khái niệm Cấu trúc dữ liệu
 Cấu trúc dữ liệu (data structure) là một phương thức
cụ thể để lưu trữ và tổ chức dữ liệu trong máy tính
nhằm việc xử lý dữ liệu hiệu quả.
9
Các kiểu cấu trúc dữ liệu
 Dữ liệu không có cấu trúc (kiểu dữ liệu đơn hay còn
gọi là kiểu dữ liệu cơ sở):
 Mỗi đối tượng dữ liệu là một phần tử đơn lẻ
 Ví dụ: int, double, char…
 Dữ liệu có cấu trúc:
 Được cấu thành bởi các phần tử dữ liệu cơ sở
 Ví dụ: Mảng(array), chuỗi (string), danh sách (list), đối
tượng (object).
10
Kiểu dữ liệu cơ sở
 Ví dụ: một số kiểu dữ liệu cơ sở trong C#
Kiểu dữ liệu
Kích thước
(bytes)
Mô tả
bool 1 Giá trị logic true/ false
int 4
Số nguyên có dấu có giá trị
từ -2.147.483.647 đến 2.147.483.647
double 8
Kiểu dấu chấm động có giá trị dao động
từ 1,7E-308 đến 1,7E+308,
với 15,16 chữ số có nghĩa
char 2 Ký tự Unicode
11
Kiểu dữ liệu có cấu trúc
 Kiểu chuỗi ký tự:
 Ví dụ: chuỗi ký tự “BOOKS”
12
Kiểu dữ liệu có cấu trúc
 Kiểu mảng (array):
 Ví dụ: mảng 1 chiều
 Ví dụ: mảng 2 chiều
13
Ví dụ cấu trúc dữ liệu
 Việc tổ chức CTDL để lưu trữ dữ liệu phục vụ chương trình
máy tính có ý nghĩa rất quan trọng:
 Ví dụ: cho 1 bảng thông tin như sau:
 Nếu gộp các dữ liệu trên cùng 1 cột thành cùng 1 cấu trúc thì ta có 4
mảng:
14
Ví dụ cấu trúc dữ liệu
 Nếu gộp các dữ liệu trên cùng 1 hàng thành một cấu trúc ta có cấu trúc bản
ghi (toàn bộ bảng là 1 mảng các bản ghi) như sau (cấu trúc kiểu file):
15
Ví dụ cấu trúc dữ liệu
 Nếu tổ chức dưới dạng đối tượng (object) sẽ có 3 đối tượng
16
Tiêu chuẩn của cấu trúc dữ liệu
 Một CTDL tốt phải thỏa mãn:
 Phản ánh đúng thực tế
 Phù hợp với các thao tác trên đó
 Tiết kiệm tài nguyên hệ thống
17
Khái niệm giải thuật
 Là tập hữu hạn có thứ tự các bước tác động lên dữ liệu
nào đó để sau một số hữu hạn lần thực hiện sẽ cho ta
kết quả.
18
Đặc trưng của giải thuật
 Có dữ liệu Đầu vào (Input)
 Có dữ liệu kết quả Đầu ra (Output)
 Tính Chính xác (Precision): Các bước của giải thuật
được mô tả chính xác.
 Tính Hữu hạn (Finiteness): Giải thuật phải đưa được
đầu ra sau một số hữu hạn bước với mọi đầu vào.
19
Đặc trưng của giải thuật
 Tính Đơn trị (Uniqueness): Các kết quả trung gian
của từng bước thực hiện giải thuật được xác định một
cách đơn trị và chỉ phụ thuộc đầu vào và các kết quả
của các bước trước.
 Tính Tổng quát (Generality): Giải thuật có thể áp
dụng để giải mọi bài toán có dạng đã cho.
20
Nội dung
 Mở đầu
 Mối quan hệ giữa cấu trúc dữ liệu và giải thuật
 Một số phương pháp biểu diễn thuật toán
 Các bước cơ bản để giải quyết bài toán
21
Vai trò của cấu trúc dữ liệu
 CTDL đóng vai trò quan trọng trong việc kết hợp
thuật toán (còn gọi là thuật giải hay giải thuật) để đưa
ra cách giải quyết bài toán.
 CTDL hỗ trợ cho các thuật toán thao tác trên đối
tượng được hiệu quả hơn.
22
Mối liên hệ giữa CTDL & GT
 Giải thuật = phép xử lý
 Đối tượng của giải thuật chính là dữ liệu được tổ chức
thành các cấu trúc.
 CTDL & GT gắn chặt với nhau
Cấu trúc dữ liệu + Giải thuật = Chương trình
 Nếu thay đổi cấu trúc dữ liệu thì giải thuật cũng sẽ
thay đổi theo.
23
Ví dụ minh họa
 Ví dụ quản lý danh bạ
điện thoại
 Dữ liệu gồm:
 Họ và tên
 Số điện thoại
 Yêu cầu xây dựng
chương trình tìm số
điện thoại theo họ tên.
Họ và tên Số ĐT
Nguyễn Văn Bình 098123456
Đỗ Thu Trang 091557799
Trần Bình An 090333999
Quách Thái Hùng 093886868
24
Ví dụ minh họa
 Nếu danh bạ không có tổ chức thì giải thuật là tìm tuần tự từ
đầu đến cuối.
 Nếu danh bạ (Họ và tên) tổ chức theo thứ tự alphabet thì có
thể tìm kiếm theo giải thuật tìm kiếm nhị phân  thời gian
tìm kiếm nhanh hơn
Danh bạ chưa sắp xếp Danh bạ đã sắp xếp
Họ và tên Số ĐT
Nguyễn Văn Bình 098123456
Đỗ Thu Trang 091557799
Trần Bình An 090333999
Họ và tên Số ĐT
Trần Bình An 090333999
Nguyễn Văn Bình 098123456
Đỗ Thu Trang 091557799
Ví dụ minh họa
 Xây dựng chương trình quản lý điểm thi của 3 sv với 4
môn học như sau:
25
 Lựa chọn cách tổ chức dữ liệu để quản lý điểm các
môn học cho từng sinh viên.
Ví dụ minh họa
 Phương án 1: Sử dụng mảng 1 chiều
 Khai báo một mảng Result như sau:
 Khi đó trong mảng Result các phần tử được lưu trữ như sau:
26
Ví dụ minh họa
 Phương án 1: Sử dụng mảng 1 chiều
 Để truy xuất điểm số môn j của sinh viên i (là phần tử tại
(dòng i, cột j) trong bảng ban đầu) tương ứng với công thức
xác định chỉ số trong mảng Result:
Bảng điểm(dòng i, cột j) - result[((i-1)*số cột) + j]
 Ngược lại, với một phần tử bất kỳ trong mảng, muốn biết đó
là điểm số của sinh viên nào, môn gì, dùng công thức:
result[ i ] bảngđiểm (dòng((i / số cột) +1), cột (i % số cột) )
27
Ví dụ minh họa
 Phương án 1: Sử dụng mảng 1 chiều
void XuatDiem() //Xuất điểm số của tất cả sinh viên {
const int so_mon = 4;
int sv,mon;
for (int i=0; i<12; i++)
{ sv = i/so_mon;
mon = i % so_mon;
Console.WriteLine(“ Điểm môn ” + mon +” của sinh
viên “ + sv + “ là: “ + result[i];
}
}
28
Ví dụ minh họa
 Phương án 2: Sử dụng mảng 2 chiều
 Khai báo mảng 2 chiều có kích thước 3 dòng* 4 cột:
int[,] result = new int[3,4]{{ 7, 9, 5, 2},{ 5, 0, 9, 4},{ 6, 3, 7, 4 }};
29
Cột 0 Cột 1 Cột 2 Cột 3
Dòng 0 result[0][0]=7 result[0][1]=9 result[0][2]=5 result[0][3] =2
Dòng 1 result[1][0]=5 result[1][1]=0 result[1][2]=9 result[1][3]= 4
Dòng 2 result[2][0]=6 result[2][1]=3 result[2][2]=7 result[2][3]= 4
Ví dụ minh họa
 Phương án 2: Sử dụng mảng 2 chiều
 Để truy xuất điểm số môn j của sinh viên i - là phần tử
nằm ở vị trí (dòng i, cột j) trong mảng:
bảngđiểm(dòng i,cột j)  result[ i, j]
30
Ví dụ minh họa
 Phương án 2: Sử dụng mảng 2 chiều
void XuatDiem() //Xuất điểm số của tất cả sinh viên
{
int so_mon = 4, so_sv =3;
for ( int i=0; i<so_sv; i++)
for ( int j=0; j<so_mon; j++)
Console.WriteLine("Điểm môn ” + j +” của sv” +
i+” là: "+ result[i, j]);
}
31
Ví dụ minh họa
 Nhận xét:
 Phương án 2 cung cấp một cấu trúc lưu trữ phù hợp với dữ
liệu thực tế hơn phương án 1.
 Do vậy giải thuật xử lý trên cấu trúc dữ liệu của phương án
2 cũng đơn giản, tự nhiên hơn.
32
33
Nội dung
 Mở đầu
 Mối quan hệ giữa cấu trúc dữ liệu và giải thuật
 Một số phương pháp biểu diễn thuật toán
 Các bước cơ bản để giải quyết bài toán
34
Phương pháp biểu diễn thuật toán
 Ngôn ngữ thuật toán là ngôn ngữ dùng để miêu tả
thuật toán.
 Thông thường ngôn ngữ thuật toán bao gồm ba loại:
 Ngôn ngữ tự nhiên;
 Ngôn ngữ lập trình;
 Sơ đồ khối.
35
Ngôn ngữ tự nhiên
 Liệt kê tuần tự các bước bằng ngôn ngữ tự nhiên để
biểu diễn thuật toán.
 Ưu điểm:
 Đơn giản, không cần kiến thức về cách biểu diễn (mã giả,
lưu đồ,…)
 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.
36
Ví dụ minh họa
 Giải phương trình bậc hai ax2 + bx +c = 0.
 Mô tả thuật toán:
 Bước 1: Nhập các hệ số a,b,c.
 Bước 2: Kiểm tra xem các hệ số a có khác 0 hay không?
 Nếu a=0 quay lại thực hiện bước 1.
 Bước 3: Tính biểu thức = b2 – 4*a*c.
 Bước 4: Nếu  <0 thông báo phương trình vô nghiệm và
chuyển sang bước 8.
37
Ví dụ minh họa

38
Mã giả (pseudocode)
 Ngôn ngữ tựa ngôn ngữ lập trình:
 Dùng cấu trúc chuẩn hóa, ví dụ; Python, Pascal, C.
 Dùng các ký hiệu toán học, biến, hàm.
 Ưu điểm
 Ngắn gọn hơn
 Nhược điểm
 Phải biết về ngôn ngữ lập trình
 Không trực quan
39
Ví dụ minh họa

40
Sơ đồ khối
 Là phương pháp mô tả thuật toán sử dụng sơ đồ các
hình khối trên mặt phẳng thể hiện các bước của thuật
toán.
 Ưu điểm là rất trực giác và dễ bao quát.
41
Sơ đồ khối
42
Ví dụ minh họa
43
Bài tập áp dụng
 Bài toán: Cho 3 số nguyên a,b,c. Mô tả giải thuật tìm
số lớn nhất trong 3 số đã cho.
 Đưa ra các cách giải bài toán này
 So sánh giữa các cách giải bài toán này với các đặc
trưng của giải thuật
44
Bài tập áp dụng
 Một vài nhận xét:
 Giải thuật có tính chính xác: các bước của giải thuật có
được mô tả chính xác, rõ ràng ko?
 Giải thuật có tính duy nhất: với đầu vào đã xác định, kết
quả tại mỗi bước của giải thuật được xác định duy nhất ko?
 Giải thuật có tính hữu hạn: giải thuật kết thúc sau một số
bước hữu hạn và đưa ra lời giải của bài toán ko?
 Giải thuật có tính tổng quát: giải thuật có thể áp dụng cho
các bài toán có dạng tương tự ko?
45
Nội dung
 Mở đầu
 Mối quan hệ giữa cấu trúc dữ liệu và giải thuật
 Một số phương pháp biểu diễn thuật toán
 Các bước cơ bản để giải quyết bài toán
46
Bước 1: Xác định bài toán
 Việc xác định bài toán tức là phải xác định xem ta phải giải
quyết vấn đề gì? Với giả thiết nào đã cho và lời giải cần phải
đạt những yêu cầu gì?
 Khác với bài toán thuần tuý toán học, bài toán tin học ứng
dụng không chỉ cần xác định rõ giả thiết, kết luận mà còn cần
xác định yêu cầu về lời giải.
 Ví dụ 3.1, 3.2 trong sách T14
47
Bước 2: Tìm CTDL biểu diễn bài toán
 Khi giải một bài toán, ta cần phải định nghĩa tập hợp
dữ liệu để biểu diễn tình trạng cụ thể.
 Việc lựa chọn này tuỳ thuộc vào vấn đề cần giải quyết
và những thao tác sẽ tiến hành trên dữ liệu vào.
 Có những thuật toán chỉ thích ứng với 1 cách tổ chức
dữ liệu nhất định, với những cách tổ chức dữ liệu khác
thì sẽ kém hiệu quả hoặc không thể thực hiện được.
 Vì vậy nên bước xây dựng cấu trúc dữ liệu không thể
tách rời bước tìm kiếm thuật toán giải quyết vấn đề.
48
Bước 2: Tìm CTDL biểu diễn bài toán
 Các tiêu chuẩn khi lựa chọn cấu trúc dữ liệu:
 Phải biểu diễn được đầy đủ các thông tin nhập và xuất của
bài toán;
 Phải phù hợp với các thao tác của thuật toán mà được lựa
chọn để giải quyết bài toán;
 Phải cài đặt được trên máy tính với ngôn ngữ lập trình đang
sử dụng.
49
Bước 3: Xác định thuật toán
 Thuật toán là một hệ thống chặt chẽ và rõ ràng các
quy tắc nhằm xác định một dãy thao tác trên cấu trúc
dữ liệu.
 Sao cho: Với một bộ dữ liệu vào, sau một số hữu hạn
bước thực hiện các thao tác đã chỉ ra, ta đạt được mục
tiêu đã định.
50
Bước 3: Xác định thuật toán
 Các đặc trưng của thuật toán:
 Tính đơn nghĩa:
 Ở mỗi bước của thuật toán, các thao tác phải rõ ràng, không gây sự
nhập nhằng, lộn xộn, tuỳ tiện, đa nghĩa.
 Phân biệt Tính đơn nghĩa và Tính đơn định. (Sách T15)
 Tính dừng:
 Thuật toán không được rơi vào quá trình vô hạn, phải dừng lại và
cho kết quả sau một số hữu hạn bước.
 Tính đúng:
 Sau khi thực hiện tất cả các bước của thuật toán theo đúng quá trình
đã tạo, ta phải được kết quả mong muốn với mọi bộ dữ liệu đầu vào.
 Kết quả đó được kiểm chứng bằng yêu cầu bài toán.
51
Bước 3: Xác định thuật toán
 Các đặc trưng của thuật toán:
 Tính phổ dụng:
 Thuật toán phải dễ sửa đổi để thích ứng được với bất kỳ bài toán
nào trong một lớp các bài toán và có thể làm việc trên các dữ liệu
khác nhau.
 Tính khả thi:
 Kích thước phải đủ nhỏ
 Thuật toán phải chuyển được thành chương trình
 Thuật toán phải được máy tính thực hiện trong thời gian cho phép,
điều này khác với lời giải toán (Chỉ cần chứng minh là kết thúc sau
hữu hạn bước)
52
Bước 4: Lập trình
 Kỹ thuật lập trình tốt thể hiện ở kỹ năng viết chương
trình, khả năng gỡ rối và thao tác nhanh.
 Các bước theo phương pháp tinh chế từng bước
(Stepwise refinement):
 Ban đầu, chương trình được thể hiện bằng ngôn ngữ tự nhiên, thể hiện
thuật toán với các bước tổng thể, mỗi bước nêu lên một công việc phải
thực hiện.
 Một công việc đơn giản hoặc là một đoạn chương trình đã được học
thuộc thì tiến hành viết mã lệnh bằng ngôn ngữ lập trình.
 Một công việc phức tạp thì lại chia ra thành những công việc nhỏ hơn
để lại tiếp tục với những công việc nhỏ hơn đó.
53
Bước 4: Lập trình
 Đồng thời phải đưa ra những biểu diễn dữ liệu, cùng
với sự tinh chế các công việc, dữ liệu cũng được tinh
chế dần, có cấu trúc hơn, thể hiện rõ hơn mối liên hệ
giữa các dữ liệu.
 Phương pháp tinh chế từng bước là một thể hiện của
tư duy giải quyết vấn đề từ trên xuống, giúp cho người
lập trình có được một định hướng thể hiện trong
phong cách viết chương trình
54
Bước 5: Kiểm thử
 Chạy thử và tìm lỗi: 3 loại lỗi
 Lỗi cú pháp: Lỗi này hay gặp nhất nhưng lại dễ sửa nhất, chỉ
cần nắm vững ngôn ngữ lập trình là đủ.
 Lỗi cài đặt: Việc cài đặt thể hiện không đúng thuật toán đã
định, đối với lỗi này thì phải xem lại tổng thể chương trình,
kết hợp với các chức năng gỡ rối để sửa lại cho đúng
 Lỗi thuật toán: Lỗi này ít gặp nhất nhưng nguy hiểm nhất,
nếu nhẹ thì phải điều chỉnh lại thuật toán, nếu nặng thì có
khi phải loại bỏ hoàn toàn thuật toán sai và làm lại từ đầu.
55
Bước 5: Kiểm thử
 Xây dựng các bộ test case
 Nhằm kiểm tra tính đúng đắn của chương trình
56
Bước 6: Tối ưu chương trình
 Một chương trình đã chạy đúng không có nghĩa là
việc lập trình đã xong, cần phải sửa đổi lại để chương
trình có thể chạy nhanh hơn, hiệu quả hơn.
 Các tiêu chuẩn xét tính tối ưu:
 Tính tin cậy
 Tính uyển chuyển
 Tính trong sáng
 Tính hữu hiệu
Tài liệu tham khảo
57
• https://www.slideshare.net/tuoitrecomvn/slide-1-23854290
Thank you for your attention!
Q & A

Mais conteúdo relacionado

Mais procurados

Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...MasterCode.vn
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++nataliej4
 
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTBài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTMasterCode.vn
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm nataliej4
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinSlide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinLang Codon
 
docx.vn - Xay dung website ban quan ao online
docx.vn - Xay dung website ban quan ao onlinedocx.vn - Xay dung website ban quan ao online
docx.vn - Xay dung website ban quan ao onlineVi Thái
 
Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)lieu_lamlam
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu sốHao Truong
 
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & DesignTiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & DesignPopping Khiem - Funky Dance Crew PTIT
 

Mais procurados (20)

Hệ mật mã Mekle-Hellman
Hệ mật mã Mekle-HellmanHệ mật mã Mekle-Hellman
Hệ mật mã Mekle-Hellman
 
Qua trinh qua do
Qua trinh qua doQua trinh qua do
Qua trinh qua do
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
 
Aaaa
AaaaAaaa
Aaaa
 
Đề tài: Mạch điều khiển thiết bị bằng Android qua Bluetooth, HAY
Đề tài: Mạch điều khiển thiết bị bằng Android qua Bluetooth, HAYĐề tài: Mạch điều khiển thiết bị bằng Android qua Bluetooth, HAY
Đề tài: Mạch điều khiển thiết bị bằng Android qua Bluetooth, HAY
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++
 
Chuong 05 flip flop
Chuong 05 flip flopChuong 05 flip flop
Chuong 05 flip flop
 
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTBài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
 
Hệ thống thông tin
Hệ thống thông tinHệ thống thông tin
Hệ thống thông tin
 
Dien tu so
Dien tu soDien tu so
Dien tu so
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm
 
Bài tập HTML/CSS
Bài tập HTML/CSSBài tập HTML/CSS
Bài tập HTML/CSS
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinSlide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tin
 
docx.vn - Xay dung website ban quan ao online
docx.vn - Xay dung website ban quan ao onlinedocx.vn - Xay dung website ban quan ao online
docx.vn - Xay dung website ban quan ao online
 
Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)
 
Chuong6 hoạt động ngắt
Chuong6 hoạt động ngắtChuong6 hoạt động ngắt
Chuong6 hoạt động ngắt
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu số
 
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & DesignTiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
 
String c++
String c++String c++
String c++
 
Truyền số liệu và mạng máy tính
Truyền số liệu và mạng máy tínhTruyền số liệu và mạng máy tính
Truyền số liệu và mạng máy tính
 

Semelhante a Bai 1 tong quan ve ctdl&amp;gt

Ctdl c1-tong quan
Ctdl c1-tong quanCtdl c1-tong quan
Ctdl c1-tong quanhiep0109
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Hồ Lợi
 
Ctdl 01 t_quan
Ctdl 01 t_quanCtdl 01 t_quan
Ctdl 01 t_quanLê Giang
 
CTDL&GT_01
CTDL&GT_01CTDL&GT_01
CTDL&GT_01kikihoho
 
kịch bản dạy học tin học 10 bai4
kịch bản dạy học tin học 10 bai4kịch bản dạy học tin học 10 bai4
kịch bản dạy học tin học 10 bai4Dang Nguyen
 
Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01
Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01
Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01Lã Văn Hải
 
Bài tập CTDL và GT 13
Bài tập CTDL và GT 13Bài tập CTDL và GT 13
Bài tập CTDL và GT 13Hồ Lợi
 
Chuong1 phan tichvathietkegiaithuat
Chuong1 phan tichvathietkegiaithuatChuong1 phan tichvathietkegiaithuat
Chuong1 phan tichvathietkegiaithuatQuoc Nguyen
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhHồ Lợi
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toanHữu Duy Duy
 
De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7Levin Duong
 
Chuong 1. tong quan
Chuong 1. tong quanChuong 1. tong quan
Chuong 1. tong quanVũ Nam
 
Dự đoán liên kết trong đồ thị tri thức
Dự đoán liên kết trong đồ thị tri thứcDự đoán liên kết trong đồ thị tri thức
Dự đoán liên kết trong đồ thị tri thứcThanh Minh Hoang
 
Luận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khối
Luận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khốiLuận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khối
Luận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khốihttps://www.facebook.com/garmentspace
 
Gioi Thieu
Gioi ThieuGioi Thieu
Gioi Thieugiang
 

Semelhante a Bai 1 tong quan ve ctdl&amp;gt (20)

Ctdl c1-tong quan
Ctdl c1-tong quanCtdl c1-tong quan
Ctdl c1-tong quan
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1
 
Ctdl 01 t_quan
Ctdl 01 t_quanCtdl 01 t_quan
Ctdl 01 t_quan
 
SLIDE CAU TRUC DL_GT.pptx
SLIDE CAU TRUC DL_GT.pptxSLIDE CAU TRUC DL_GT.pptx
SLIDE CAU TRUC DL_GT.pptx
 
CTDL&GT_01
CTDL&GT_01CTDL&GT_01
CTDL&GT_01
 
kịch bản dạy học tin học 10 bai4
kịch bản dạy học tin học 10 bai4kịch bản dạy học tin học 10 bai4
kịch bản dạy học tin học 10 bai4
 
Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01
Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01
Kichbandayhoctinhoc10 bai4-140615131551-phpapp01-140618033132-phpapp01
 
Bài tập CTDL và GT 13
Bài tập CTDL và GT 13Bài tập CTDL và GT 13
Bài tập CTDL và GT 13
 
Thdc 06
Thdc 06Thdc 06
Thdc 06
 
Chuong1 phan tichvathietkegiaithuat
Chuong1 phan tichvathietkegiaithuatChuong1 phan tichvathietkegiaithuat
Chuong1 phan tichvathietkegiaithuat
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
Giaotrinhbaitapkythuatlaptrinh
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toan
 
De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7
 
Chuong 1. tong quan
Chuong 1. tong quanChuong 1. tong quan
Chuong 1. tong quan
 
Luận văn: Hệ thống đại số máy tính xử lý biểu thức toán học, 9đ
Luận văn: Hệ thống đại số máy tính xử lý biểu thức toán học, 9đLuận văn: Hệ thống đại số máy tính xử lý biểu thức toán học, 9đ
Luận văn: Hệ thống đại số máy tính xử lý biểu thức toán học, 9đ
 
Dự đoán liên kết trong đồ thị tri thức
Dự đoán liên kết trong đồ thị tri thứcDự đoán liên kết trong đồ thị tri thức
Dự đoán liên kết trong đồ thị tri thức
 
Luận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khối
Luận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khốiLuận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khối
Luận án tiến sĩ toán học các phụ thuộc logic trong mô hình dữ liệu dạng khối
 
Đề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAYĐề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAY
 
Gioi Thieu
Gioi ThieuGioi Thieu
Gioi Thieu
 
Thuat Toan
Thuat ToanThuat Toan
Thuat Toan
 

Bai 1 tong quan ve ctdl&amp;gt

  • 1. BÀI 1: GIẢI THUẬT VÀ CẤU TRÚC DỮ LIỆU Đỗ Thị Thu Trang - Khoa CNTT Trường Đại học SPKT Hưng Yên
  • 2. 2 Nội dung  Mở đầu  Mối quan hệ giữa cấu trúc dữ liệu và giải thuật  Một số phương pháp biểu diễn thuật toán  Các bước cơ bản để giải quyết bài toán
  • 3. 3 Nội dung  Mở đầu  Mối quan hệ giữa cấu trúc dữ liệu và giải thuật  Một số phương pháp biểu diễn thuật toán  Các bước cơ bản để giải quyết bài toán
  • 4. 4 Khái niệm dữ liệu  Tại sao sử dụng máy tính để xử lý dữ liệu?  Nhanh hơn, chính xác hơn  Giải quyết nhiều bài toán đòi hỏi khối lượng tính toán cực lớn, hoặc những bài toán phức tạp với khối lượng dữ liệu lớn.  Phương pháp?  Nhờ vào các thuật toán hiệu quả, thông minh Chi phí thấp  Nhờ vào sự nâng cấp cấu hình máy Chi phí cao
  • 5. 5 Khái niệm dữ liệu  Trong tin học: Dữ liệu để biểu diễn các thông tin cần thiết cho bài toán.  Các dữ liệu máy tính gồm: Dữ liệu đầu vào, dữ liệu trung gian, dữ liệu đầu ra.
  • 6. 6 Cấu trúc dữ liệu là gì?
  • 7. 7 Một số ví dụ về Cấu trúc
  • 8. 8 Khái niệm Cấu trúc dữ liệu  Cấu trúc dữ liệu (data structure) là một phương thức cụ thể để lưu trữ và tổ chức dữ liệu trong máy tính nhằm việc xử lý dữ liệu hiệu quả.
  • 9. 9 Các kiểu cấu trúc dữ liệu  Dữ liệu không có cấu trúc (kiểu dữ liệu đơn hay còn gọi là kiểu dữ liệu cơ sở):  Mỗi đối tượng dữ liệu là một phần tử đơn lẻ  Ví dụ: int, double, char…  Dữ liệu có cấu trúc:  Được cấu thành bởi các phần tử dữ liệu cơ sở  Ví dụ: Mảng(array), chuỗi (string), danh sách (list), đối tượng (object).
  • 10. 10 Kiểu dữ liệu cơ sở  Ví dụ: một số kiểu dữ liệu cơ sở trong C# Kiểu dữ liệu Kích thước (bytes) Mô tả bool 1 Giá trị logic true/ false int 4 Số nguyên có dấu có giá trị từ -2.147.483.647 đến 2.147.483.647 double 8 Kiểu dấu chấm động có giá trị dao động từ 1,7E-308 đến 1,7E+308, với 15,16 chữ số có nghĩa char 2 Ký tự Unicode
  • 11. 11 Kiểu dữ liệu có cấu trúc  Kiểu chuỗi ký tự:  Ví dụ: chuỗi ký tự “BOOKS”
  • 12. 12 Kiểu dữ liệu có cấu trúc  Kiểu mảng (array):  Ví dụ: mảng 1 chiều  Ví dụ: mảng 2 chiều
  • 13. 13 Ví dụ cấu trúc dữ liệu  Việc tổ chức CTDL để lưu trữ dữ liệu phục vụ chương trình máy tính có ý nghĩa rất quan trọng:  Ví dụ: cho 1 bảng thông tin như sau:  Nếu gộp các dữ liệu trên cùng 1 cột thành cùng 1 cấu trúc thì ta có 4 mảng:
  • 14. 14 Ví dụ cấu trúc dữ liệu  Nếu gộp các dữ liệu trên cùng 1 hàng thành một cấu trúc ta có cấu trúc bản ghi (toàn bộ bảng là 1 mảng các bản ghi) như sau (cấu trúc kiểu file):
  • 15. 15 Ví dụ cấu trúc dữ liệu  Nếu tổ chức dưới dạng đối tượng (object) sẽ có 3 đối tượng
  • 16. 16 Tiêu chuẩn của cấu trúc dữ liệu  Một CTDL tốt phải thỏa mãn:  Phản ánh đúng thực tế  Phù hợp với các thao tác trên đó  Tiết kiệm tài nguyên hệ thống
  • 17. 17 Khái niệm giải thuật  Là tập hữu hạn có thứ tự các bước tác động lên dữ liệu nào đó để sau một số hữu hạn lần thực hiện sẽ cho ta kết quả.
  • 18. 18 Đặc trưng của giải thuật  Có dữ liệu Đầu vào (Input)  Có dữ liệu kết quả Đầu ra (Output)  Tính Chính xác (Precision): Các bước của giải thuật được mô tả chính xác.  Tính Hữu hạn (Finiteness): Giải thuật phải đưa được đầu ra sau một số hữu hạn bước với mọi đầu vào.
  • 19. 19 Đặc trưng của giải thuật  Tính Đơn trị (Uniqueness): Các kết quả trung gian của từng bước thực hiện giải thuật được xác định một cách đơn trị và chỉ phụ thuộc đầu vào và các kết quả của các bước trước.  Tính Tổng quát (Generality): Giải thuật có thể áp dụng để giải mọi bài toán có dạng đã cho.
  • 20. 20 Nội dung  Mở đầu  Mối quan hệ giữa cấu trúc dữ liệu và giải thuật  Một số phương pháp biểu diễn thuật toán  Các bước cơ bản để giải quyết bài toán
  • 21. 21 Vai trò của cấu trúc dữ liệu  CTDL đóng vai trò quan trọng trong việc kết hợp thuật toán (còn gọi là thuật giải hay giải thuật) để đưa ra cách giải quyết bài toán.  CTDL hỗ trợ cho các thuật toán thao tác trên đối tượng được hiệu quả hơn.
  • 22. 22 Mối liên hệ giữa CTDL & GT  Giải thuật = phép xử lý  Đối tượng của giải thuật chính là dữ liệu được tổ chức thành các cấu trúc.  CTDL & GT gắn chặt với nhau Cấu trúc dữ liệu + Giải thuật = Chương trình  Nếu thay đổi cấu trúc dữ liệu thì giải thuật cũng sẽ thay đổi theo.
  • 23. 23 Ví dụ minh họa  Ví dụ quản lý danh bạ điện thoại  Dữ liệu gồm:  Họ và tên  Số điện thoại  Yêu cầu xây dựng chương trình tìm số điện thoại theo họ tên. Họ và tên Số ĐT Nguyễn Văn Bình 098123456 Đỗ Thu Trang 091557799 Trần Bình An 090333999 Quách Thái Hùng 093886868
  • 24. 24 Ví dụ minh họa  Nếu danh bạ không có tổ chức thì giải thuật là tìm tuần tự từ đầu đến cuối.  Nếu danh bạ (Họ và tên) tổ chức theo thứ tự alphabet thì có thể tìm kiếm theo giải thuật tìm kiếm nhị phân  thời gian tìm kiếm nhanh hơn Danh bạ chưa sắp xếp Danh bạ đã sắp xếp Họ và tên Số ĐT Nguyễn Văn Bình 098123456 Đỗ Thu Trang 091557799 Trần Bình An 090333999 Họ và tên Số ĐT Trần Bình An 090333999 Nguyễn Văn Bình 098123456 Đỗ Thu Trang 091557799
  • 25. Ví dụ minh họa  Xây dựng chương trình quản lý điểm thi của 3 sv với 4 môn học như sau: 25  Lựa chọn cách tổ chức dữ liệu để quản lý điểm các môn học cho từng sinh viên.
  • 26. Ví dụ minh họa  Phương án 1: Sử dụng mảng 1 chiều  Khai báo một mảng Result như sau:  Khi đó trong mảng Result các phần tử được lưu trữ như sau: 26
  • 27. Ví dụ minh họa  Phương án 1: Sử dụng mảng 1 chiều  Để truy xuất điểm số môn j của sinh viên i (là phần tử tại (dòng i, cột j) trong bảng ban đầu) tương ứng với công thức xác định chỉ số trong mảng Result: Bảng điểm(dòng i, cột j) - result[((i-1)*số cột) + j]  Ngược lại, với một phần tử bất kỳ trong mảng, muốn biết đó là điểm số của sinh viên nào, môn gì, dùng công thức: result[ i ] bảngđiểm (dòng((i / số cột) +1), cột (i % số cột) ) 27
  • 28. Ví dụ minh họa  Phương án 1: Sử dụng mảng 1 chiều void XuatDiem() //Xuất điểm số của tất cả sinh viên { const int so_mon = 4; int sv,mon; for (int i=0; i<12; i++) { sv = i/so_mon; mon = i % so_mon; Console.WriteLine(“ Điểm môn ” + mon +” của sinh viên “ + sv + “ là: “ + result[i]; } } 28
  • 29. Ví dụ minh họa  Phương án 2: Sử dụng mảng 2 chiều  Khai báo mảng 2 chiều có kích thước 3 dòng* 4 cột: int[,] result = new int[3,4]{{ 7, 9, 5, 2},{ 5, 0, 9, 4},{ 6, 3, 7, 4 }}; 29 Cột 0 Cột 1 Cột 2 Cột 3 Dòng 0 result[0][0]=7 result[0][1]=9 result[0][2]=5 result[0][3] =2 Dòng 1 result[1][0]=5 result[1][1]=0 result[1][2]=9 result[1][3]= 4 Dòng 2 result[2][0]=6 result[2][1]=3 result[2][2]=7 result[2][3]= 4
  • 30. Ví dụ minh họa  Phương án 2: Sử dụng mảng 2 chiều  Để truy xuất điểm số môn j của sinh viên i - là phần tử nằm ở vị trí (dòng i, cột j) trong mảng: bảngđiểm(dòng i,cột j)  result[ i, j] 30
  • 31. Ví dụ minh họa  Phương án 2: Sử dụng mảng 2 chiều void XuatDiem() //Xuất điểm số của tất cả sinh viên { int so_mon = 4, so_sv =3; for ( int i=0; i<so_sv; i++) for ( int j=0; j<so_mon; j++) Console.WriteLine("Điểm môn ” + j +” của sv” + i+” là: "+ result[i, j]); } 31
  • 32. Ví dụ minh họa  Nhận xét:  Phương án 2 cung cấp một cấu trúc lưu trữ phù hợp với dữ liệu thực tế hơn phương án 1.  Do vậy giải thuật xử lý trên cấu trúc dữ liệu của phương án 2 cũng đơn giản, tự nhiên hơn. 32
  • 33. 33 Nội dung  Mở đầu  Mối quan hệ giữa cấu trúc dữ liệu và giải thuật  Một số phương pháp biểu diễn thuật toán  Các bước cơ bản để giải quyết bài toán
  • 34. 34 Phương pháp biểu diễn thuật toán  Ngôn ngữ thuật toán là ngôn ngữ dùng để miêu tả thuật toán.  Thông thường ngôn ngữ thuật toán bao gồm ba loại:  Ngôn ngữ tự nhiên;  Ngôn ngữ lập trình;  Sơ đồ khối.
  • 35. 35 Ngôn ngữ tự nhiên  Liệt kê tuần tự các bước bằng ngôn ngữ tự nhiên để biểu diễn thuật toán.  Ưu điểm:  Đơn giản, không cần kiến thức về cách biểu diễn (mã giả, lưu đồ,…)  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.
  • 36. 36 Ví dụ minh họa  Giải phương trình bậc hai ax2 + bx +c = 0.  Mô tả thuật toán:  Bước 1: Nhập các hệ số a,b,c.  Bước 2: Kiểm tra xem các hệ số a có khác 0 hay không?  Nếu a=0 quay lại thực hiện bước 1.  Bước 3: Tính biểu thức = b2 – 4*a*c.  Bước 4: Nếu  <0 thông báo phương trình vô nghiệm và chuyển sang bước 8.
  • 37. 37 Ví dụ minh họa 
  • 38. 38 Mã giả (pseudocode)  Ngôn ngữ tựa ngôn ngữ lập trình:  Dùng cấu trúc chuẩn hóa, ví dụ; Python, Pascal, C.  Dùng các ký hiệu toán học, biến, hàm.  Ưu điểm  Ngắn gọn hơn  Nhược điểm  Phải biết về ngôn ngữ lập trình  Không trực quan
  • 39. 39 Ví dụ minh họa 
  • 40. 40 Sơ đồ khối  Là phương pháp mô tả thuật toán sử dụng sơ đồ các hình khối trên mặt phẳng thể hiện các bước của thuật toán.  Ưu điểm là rất trực giác và dễ bao quát.
  • 43. 43 Bài tập áp dụng  Bài toán: Cho 3 số nguyên a,b,c. Mô tả giải thuật tìm số lớn nhất trong 3 số đã cho.  Đưa ra các cách giải bài toán này  So sánh giữa các cách giải bài toán này với các đặc trưng của giải thuật
  • 44. 44 Bài tập áp dụng  Một vài nhận xét:  Giải thuật có tính chính xác: các bước của giải thuật có được mô tả chính xác, rõ ràng ko?  Giải thuật có tính duy nhất: với đầu vào đã xác định, kết quả tại mỗi bước của giải thuật được xác định duy nhất ko?  Giải thuật có tính hữu hạn: giải thuật kết thúc sau một số bước hữu hạn và đưa ra lời giải của bài toán ko?  Giải thuật có tính tổng quát: giải thuật có thể áp dụng cho các bài toán có dạng tương tự ko?
  • 45. 45 Nội dung  Mở đầu  Mối quan hệ giữa cấu trúc dữ liệu và giải thuật  Một số phương pháp biểu diễn thuật toán  Các bước cơ bản để giải quyết bài toán
  • 46. 46 Bước 1: Xác định bài toán  Việc xác định bài toán tức là phải xác định xem ta phải giải quyết vấn đề gì? Với giả thiết nào đã cho và lời giải cần phải đạt những yêu cầu gì?  Khác với bài toán thuần tuý toán học, bài toán tin học ứng dụng không chỉ cần xác định rõ giả thiết, kết luận mà còn cần xác định yêu cầu về lời giải.  Ví dụ 3.1, 3.2 trong sách T14
  • 47. 47 Bước 2: Tìm CTDL biểu diễn bài toán  Khi giải một bài toán, ta cần phải định nghĩa tập hợp dữ liệu để biểu diễn tình trạng cụ thể.  Việc lựa chọn này tuỳ thuộc vào vấn đề cần giải quyết và những thao tác sẽ tiến hành trên dữ liệu vào.  Có những thuật toán chỉ thích ứng với 1 cách tổ chức dữ liệu nhất định, với những cách tổ chức dữ liệu khác thì sẽ kém hiệu quả hoặc không thể thực hiện được.  Vì vậy nên bước xây dựng cấu trúc dữ liệu không thể tách rời bước tìm kiếm thuật toán giải quyết vấn đề.
  • 48. 48 Bước 2: Tìm CTDL biểu diễn bài toán  Các tiêu chuẩn khi lựa chọn cấu trúc dữ liệu:  Phải biểu diễn được đầy đủ các thông tin nhập và xuất của bài toán;  Phải phù hợp với các thao tác của thuật toán mà được lựa chọn để giải quyết bài toán;  Phải cài đặt được trên máy tính với ngôn ngữ lập trình đang sử dụng.
  • 49. 49 Bước 3: Xác định thuật toán  Thuật toán là một hệ thống chặt chẽ và rõ ràng các quy tắc nhằm xác định một dãy thao tác trên cấu trúc dữ liệu.  Sao cho: Với một bộ dữ liệu vào, sau một số hữu hạn bước thực hiện các thao tác đã chỉ ra, ta đạt được mục tiêu đã định.
  • 50. 50 Bước 3: Xác định thuật toán  Các đặc trưng của thuật toán:  Tính đơn nghĩa:  Ở mỗi bước của thuật toán, các thao tác phải rõ ràng, không gây sự nhập nhằng, lộn xộn, tuỳ tiện, đa nghĩa.  Phân biệt Tính đơn nghĩa và Tính đơn định. (Sách T15)  Tính dừng:  Thuật toán không được rơi vào quá trình vô hạn, phải dừng lại và cho kết quả sau một số hữu hạn bước.  Tính đúng:  Sau khi thực hiện tất cả các bước của thuật toán theo đúng quá trình đã tạo, ta phải được kết quả mong muốn với mọi bộ dữ liệu đầu vào.  Kết quả đó được kiểm chứng bằng yêu cầu bài toán.
  • 51. 51 Bước 3: Xác định thuật toán  Các đặc trưng của thuật toán:  Tính phổ dụng:  Thuật toán phải dễ sửa đổi để thích ứng được với bất kỳ bài toán nào trong một lớp các bài toán và có thể làm việc trên các dữ liệu khác nhau.  Tính khả thi:  Kích thước phải đủ nhỏ  Thuật toán phải chuyển được thành chương trình  Thuật toán phải được máy tính thực hiện trong thời gian cho phép, điều này khác với lời giải toán (Chỉ cần chứng minh là kết thúc sau hữu hạn bước)
  • 52. 52 Bước 4: Lập trình  Kỹ thuật lập trình tốt thể hiện ở kỹ năng viết chương trình, khả năng gỡ rối và thao tác nhanh.  Các bước theo phương pháp tinh chế từng bước (Stepwise refinement):  Ban đầu, chương trình được thể hiện bằng ngôn ngữ tự nhiên, thể hiện thuật toán với các bước tổng thể, mỗi bước nêu lên một công việc phải thực hiện.  Một công việc đơn giản hoặc là một đoạn chương trình đã được học thuộc thì tiến hành viết mã lệnh bằng ngôn ngữ lập trình.  Một công việc phức tạp thì lại chia ra thành những công việc nhỏ hơn để lại tiếp tục với những công việc nhỏ hơn đó.
  • 53. 53 Bước 4: Lập trình  Đồng thời phải đưa ra những biểu diễn dữ liệu, cùng với sự tinh chế các công việc, dữ liệu cũng được tinh chế dần, có cấu trúc hơn, thể hiện rõ hơn mối liên hệ giữa các dữ liệu.  Phương pháp tinh chế từng bước là một thể hiện của tư duy giải quyết vấn đề từ trên xuống, giúp cho người lập trình có được một định hướng thể hiện trong phong cách viết chương trình
  • 54. 54 Bước 5: Kiểm thử  Chạy thử và tìm lỗi: 3 loại lỗi  Lỗi cú pháp: Lỗi này hay gặp nhất nhưng lại dễ sửa nhất, chỉ cần nắm vững ngôn ngữ lập trình là đủ.  Lỗi cài đặt: Việc cài đặt thể hiện không đúng thuật toán đã định, đối với lỗi này thì phải xem lại tổng thể chương trình, kết hợp với các chức năng gỡ rối để sửa lại cho đúng  Lỗi thuật toán: Lỗi này ít gặp nhất nhưng nguy hiểm nhất, nếu nhẹ thì phải điều chỉnh lại thuật toán, nếu nặng thì có khi phải loại bỏ hoàn toàn thuật toán sai và làm lại từ đầu.
  • 55. 55 Bước 5: Kiểm thử  Xây dựng các bộ test case  Nhằm kiểm tra tính đúng đắn của chương trình
  • 56. 56 Bước 6: Tối ưu chương trình  Một chương trình đã chạy đúng không có nghĩa là việc lập trình đã xong, cần phải sửa đổi lại để chương trình có thể chạy nhanh hơn, hiệu quả hơn.  Các tiêu chuẩn xét tính tối ưu:  Tính tin cậy  Tính uyển chuyển  Tính trong sáng  Tính hữu hiệu
  • 57. Tài liệu tham khảo 57 • https://www.slideshare.net/tuoitrecomvn/slide-1-23854290
  • 58. Thank you for your attention! Q & A

Notas do Editor

  1. Tham khảo, bổ sung thêm về Tổng quan: https://www.slideshare.net/tuoitrecomvn/slide-1-23854290
  2. Khái niệm thuật toán tối ưu, thuật toán tốt nhất Khái niệm Giải thuật có từ rất lâu do một nhà toán học người Arập phát ngôn, một trong những thuật toán nổi tiếng có từ thời cổ Hylạp là thuật toán Euclid (thuật toán tìm ước số chung lớn nhất của 2 số)
  3. Khái niệm thuật toán tối ưu, thuật toán tốt nhất Khái niệm Giải thuật có từ rất lâu do một nhà toán học người Arập phát ngôn, một trong những thuật toán nổi tiếng có từ thời cổ Hylạp là thuật toán Euclid (thuật toán tìm ước số chung lớn nhất của 2 số)
  4. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  5. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  6. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  7. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  8. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  9. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  10. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  11. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  12. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  13. Khái niệm thuật toán tối ưu, thuật toán tốt nhất
  14. https://www.youtube.com/watch?v=bcuDbMRUa68&list=PLXIkQxbrdIJRdO69X4HuRdo2GNU-VWcEs
  15. Yêu cầu sinh viên làm: cố gắng sv đưa ra được 2 cách giải Cách 1: so sánh 2 cặp a>b và b>c a là số lớn nhất Cách 2: gán 1 giá trị là max, sau đó so sánh các số còn lại nếu số nào lớn hơn thì gán lại max. Đưa ra tình huống phương pháp nào có tính tổng quát hơn
  16. Đôi khi những bài toán tin học ứng dụng trong thực tế chỉ cần tìm lời giải tốt tới mức nào đó, thậm chí là tồi ở mức chấp nhận được. Bởi lời giải tốt nhất đòi hỏi quá nhiều thời gian và chi phí.
  17. Đối với một số bài toán, trước khi tổ chức dữ liệu ta phải viết một đoạn chương trình nhỏ để khảo sát xem dữ liệu cần lưu trữ lớn tới mức độ nào
  18. Ví dụ 2.3 Trang 16
  19. Ví dụ 2.3 Trang 16
  20. Ví dụ 2.3 Trang 16
  21. Ví dụ 2.3 Trang 16
  22. Ví dụ 2.3 Trang 16