SlideShare a Scribd company logo
1
Algorithms
2
Mục đích bài học
 Tìm hiểu cơ bản về thuật toán
 Thuật toán
 Định nghĩa
 Thiết kế
 Quan hệ với cấu trúc dữ liệu v.v…
3
GIẢI THUẬT
 Nền tảng của giải thuật
 Các loại giải thuật
 Đánh giá giải thuật
Copyright@ by SOFTECH DANANG 4
NỀN TẢNG CỦA GIẢI THUẬT
 Giải thuật là gì?
 Giải thuật và cấu trúc dữ liệu
Copyright@ by SOFTECH DANANG 5
GIẢI THUẬT LÀ GÌ
 Định nghĩa giải thuật
 Giải thuật là tập hợp hữu hạn các luật rõ ràng
có thể thực hiện trong một thời gian hữu hạn
để giải quyết vấn đề nào đó (Japanese
Industrial Standard JIS)
 Giải thuật và chương trình
Copyright@ by SOFTECH DANANG 6
GIẢI THUẬT LÀ GÌ
 Định nghĩa giải thuật
 Giải thuật và chương trình
 Giải thuật và chương trình là 2 mặt của vấn đề
 Chương trình là sự mô tả dữ liệu và giải thuật trong
một ngôn ngữ lập trình nhờ đó máy tính có thể thực
hiện được nhiệm vụ nào đó
 Chương trình được phân loại thành
 Lập trình thủ tục (VD: COBOL, Pascal, C, ... )
 Lập trình hàm (LISP)
 Lập trình logic (Prolog)
 Lập trình hướng đối tượng (C++, Java, Basic.NET)
Copyright@ by SOFTECH DANANG 7
GIẢI THUẬT & CẤU TRÚC DỮ LIỆU
 Cấu trúc dữ liệu
 Cấu trúc dữ liệu cơ bản
 Cấu trúc dữ liệu có cấu trúc
 Cấu trúc dữ liệu trừu tượng
 Quan hệ giữa giải thuật và cấu trúc dữ
liệu
Copyright@ by SOFTECH DANANG 8
GIẢI THUẬT & CẤU TRÚC DỮ LIỆU
 Cấu trúc dữ liệu
 Quan hệ giữa giải thuật và cấu trúc dữ
liệu
 Mỗi giải thuật để xử lý luôn cần một cấu
trúc dữ liệu thích hợp
 Xử lý xâu
 Xử lý file
 Xử lý danh sách
Copyright@ by SOFTECH DANANG 9
Sơ đồ khối (Flowcharts)
 Sơ đồ là cách sử dụng các hình vẽ để thể
hiện thứ tự thực hiện của các phép toán
để đi đến giải pháp.
 Mục đích của sơ đồ khối:
 Dễ hiểu hơn việc mô tả bằng ngôn ngữ tự
nhiên
 Dễ kiểm tra lại và sửa lỗi
 Cung cấp tư liệu để làm tài liệu chương
trình
 Dễ dàng cho việc thảo luận
Copyright@ by SOFTECH DANANG 10
Các ký hiệu trong sơ đồ khối
Bắt đầu hoặc kết thúc
Khối tính toán
Khối nhập xuất
Khối quyết định và rẽ nhánh
Kết nối giữa 2 chương trình
Dòng chương trình
n n
Copyright@ by SOFTECH DANANG 11
Các ký hiệu trong sơ đồ khối (tt)
Chương trình con
Khối xuất
Khối gán
Khối lặp
Copyright@ by SOFTECH DANANG 12
Flowcharts (Ví dụ)
Tính tổng 2 số
Cộng
Start
Đọc 2 số
Hiển thi tổng
Stop
Copyright@ by SOFTECH DANANG 13
Rẽ nhánh (Ví dụ)
Kiểm tra số chẵn, số lẽ
Chia cho 2
Số dư=0?
Đúng
Sai
Start
Đọc 1 số
Hiễn thị số
lẽ
Hiễn thi số chẵn
Stop
Copyright@ by SOFTECH DANANG 14
Cấu trúc rẽ nhánh
(ii)
(i)
?
Compute Compute Compute
?
Copyright@ by SOFTECH DANANG 15
Vòng lặp
Điều kiện
Tính toán
No
Yes
Copyright@ by SOFTECH DANANG 16
Lặp (Ví dụ)
Tính tổng chi tiêu hàng tháng của năm
tot_exp – Tổng chi tiêu
no_mon – Số tháng
Yes
Yes
Start
No
no_mon=12
Cộng exp vào tot_exp
Đọc exp
Stop
no_mon = no_mon + 1
Hiển thị tot_exp
tot_exp = 0
no_mon = 0
Copyright@ by SOFTECH DANANG 17
CÁC LOẠI GIẢI THUẬT
 Giải thuật tìm kiếm
 Giải thuật sắp xếp
 Giải thuật đệ quy
 Xử lý xâu ký tự
 Xử lý file
 Đồ hoạ
 Đồ thị
Copyright@ by SOFTECH DANANG 18
GIẢI THUẬT TÌM KIẾM
 Tìm kiếm tuần tự
 Tìm kiếm vét cạn
 Là cách tìm kiếm đơn giản nhất, bằng việc so sách
giá trị cần tìm từ đầu đến cuối danh sách
 Trong trường hợp xấu nhất có 2xN lần so sánh
 Tìm kiếm kiểu lính gác
 Trong phương pháp này giá trị dữ liệu cần tìm
được đặt ở cuối danh sách, do đó sẽ giảm số lần
so sánh
 Trong trường hợp xấu nhất có N+1 lần so sánh
 Tìm kiếm nhị phân
Copyright@ by SOFTECH DANANG 19
Copyright@ by SOFTECH DANANG 20
GIẢI THUẬT TÌM KIẾM
 Tìm kiếm tuần tự
 Tìm kiếm nhị phân
 Trong thuật toán này các phần tử phải được
sắp xếp theo chiều tăng hoặc giảm
 Số lần so sánh trung bình = [log2 N]
 Số lần so sánh lớn nhất = [log2 N]+1
Copyright@ by SOFTECH DANANG 21
TÌM
KIẾM
NHỊ
PHÂN
Copyright@ by SOFTECH DANANG 22
Bài tập
 Trang 87, Quyển 3, Q1->Q5
 Thực hiện bài tập được giao
Copyright@ by SOFTECH DANANG 23
GIẢI THUẬT SẮP XẾP
 Sắp xếp nổi bọt (Bubble)
 Sắp xếp chọn (Selection)
 Sắp xếp chèn (Insertion)
 Sắp xếp sàng lọc (Shaker)
 Sắp xếp khung (Shell)
 Sắp xếp nhanh (Quick)
 Sắp xếp trộn (Merge)
Copyright@ by SOFTECH DANANG 24
PHƯƠNG PHÁP SẮP XẾP NỔI BỌT
 Giải thuật
 Thực hiện so sánh từng cặp phần tử liên tiếp,
nếu thứ tự sai thì đổi chỗ
 Thực hiện từ đầu đến cuối ta sẽ có phần tử
lớn nhất ở cuối danh sách
 Lặp lại các bước trên sẽ được danh sách đã
sắp xếp
 Độ phức tạp tính toán O(n2)
 4,6,3,5,8,1
 4,6,3,5,8,1
 4,3,6,5,8,1
 4,3,5,6,8,1
 4,3,5,6,1,8
 3,4,5,6,1,8
 3,4,5,1,6,8
 3,4,1,5,6,8
 3,1,4,5,6,8  1,3,4,5,6,8
Copyright@ by SOFTECH DANANG 25
Copyright@ by SOFTECH DANANG 26
Copyright@ by SOFTECH DANANG 27
Bài tập
 Viết thuật toán để sắp xếp một mảng
gồm 50 số ngẫu nhiên theo thứ tự tăng
dần theo phương pháp nổi bọt.
Copyright@ by SOFTECH DANANG 28
PHƯƠNG PHÁP SẮP XẾP CHỌN
 Giải thuật
 Thực hiện tìm vị trí phần tử nhỏ nhất trong
danh sách sau đó đổi chỗ với vị trí đầu tiên
 Lặp lại các bước trên với phần còn lại của
danh sách sẽ có danh sách được sắp xếp
 Độ phức tạp tính toán O(n2)
 4,6,3,5,8,1
 1,4,6,3,5,8
 1,3,4,6,5,8
 1,3,4,6,5,8
 1,3,4,5,6,8
 1,3,4,5,6,8
Copyright@ by SOFTECH DANANG 29
Copyright@ by SOFTECH DANANG 30
Copyright@ by SOFTECH DANANG 31
PHƯƠNG PHÁP SẮP XẾP CHÈN
 Giải thuật
 Phần tử chưa được sắp xếp được điền vào vị
trí thích hợp trong dãy đã được sắp xếp
 Phương pháp này rất thích hợp để sắp xếp
danh sách đã được sắp xếp 1 phần
 Độ phức tạp tính toán O(n2)
Copyright@ by SOFTECH DANANG 32
Copyright@ by SOFTECH DANANG 33
PHƯƠNG PHÁP SẮP XẾP SÀNG LỌC
(Shaker sort method)
 Giải thuật
 Phương pháp này tương tự phương pháp nổi
bọt.
 So sánh các cặp phần tử liên tiếp từ phải sang
trái để tìm ra phần tử lớn nhất, ta không lặp
lại mà so sánh lại từ trái sang phải để tìm
phần tử nhỏ nhất
 Độ phức tạp tính toán O(n2)
Copyright@ by SOFTECH DANANG 34
PHƯƠNG
PHÁP
SẮP
XẾP
SÀNG
LỌC
End
Number of elements ->j
1->E
J->S
1->W
Loop 1
E>=S
E->J
Loop 2
i=S
TBL(i):TBL(i+1)
TBL(i) -> SAVE
TBL(i+1)->TBL(i)
SAVE->TBL(i+1)
i+1->i
Loop 2
1
W->s
S->i
Loop 3
i=E
i->W
TBL(i-1):TBL(i)
TBL(i) -> SAVE
TBL(i-1)->TBL(i)
SAVE->TBL(i-1)
i-1->i
1
Loop 3
Loop 1
W->E
Start
<=
Copyright@ by SOFTECH DANANG 35
PHƯƠNG PHÁP SẮP XẾP KHUNG
(Shell sort method)
 Giải thuật
 Phương pháp này là mở rộng/cải tiến của
phương pháp sắp xếp chèn
 So sánh các cặp phần tử cách nhau một
khoảng nhất định và tiến hành đổi chỗ. Quá
trình này được lặp lại với khoảng cách từ lớn
đến nhỏ (Thông thường là [n/2], [n/4],··· 1).
Khi khoảng cách là 1 tiếp tục thực hiện với
thuật toán chèn.
 Độ phức tạp tính toán O(n3/2)
Copyright@ by SOFTECH DANANG 36
PHƯƠNG PHÁP SẮP XẾP KHUNG
Copyright@ by SOFTECH DANANG 37
PHƯƠNG
PHÁP
SẮP
XẾP
KHUNG
End
Number of elements ->N
N ->GAP
Loop 1
GAP<1
1 -> m
Loop 2
m>GAP
1
j -GAP->j
TBL(j)>TBL(j + GAP)
TBL(j) -> SAVE
TBL(j+ GAP)->TBL(j)
SAVE->TBL(j-GAP)
h+ GAP->h
1
Loop 4
Loop 1
Start
(Gap Calculation) ->GAP
m +GAP ->h
Loop 3
h > N
H-GAP ->j
Loop 4
j < 1
Loop 3
m + 1 -> m
Loop 2
Copyright@ by SOFTECH DANANG 38
PHƯƠNG PHÁP SẮP XẾP NHANH
 Giải thuật
 Một giá trị chốt được chọn, các phần tử nhỏ hơn chốt
sẽ chuyển sang phải chốt, phần tử lớn hơn chốt sẽ
chuyển sang trái chốt. Sau quá trình này danh sách
được chia làm 2 phần
 Lặp lại quá trình này với 2 phần của danh sách cho
tới khi số phần tử của mỗi phần là 1 sẽ thu được
danh sách đã sắp xếp
 Phương pháp này được gọi là pp chia để trị
 Độ phức tạp tính toán
 Trung bình O(nlogn)
 Trường hợp xấu nhất là O(n2)
 Trong trường hợp thực hiện song song là O(logn)
Copyright@ by SOFTECH DANANG 39
Copyright@ by SOFTECH DANANG 40
PHƯƠNG PHÁP SẮP XẾP TRỘN
 Giải thuật
 Các phần tử được chia làm 2 phần, việc sắp
xếp sẽ thực hiện trên từng phần. Các phần
sau khi sắp xếp được trộn lại với nhau để
được một danh sách đã sắp xếp
 Độ phức tạp tính toán O(nlogn)
Copyright@ by SOFTECH DANANG 41
PHƯƠNG PHÁP SẮP XẾP TRỘN
Copyright@ by SOFTECH DANANG 42
1-> S
-> S
S:N
=
[(S+N)/2]->H
Copyright@ by SOFTECH DANANG 43
Bài tập
 Trang 87, Quyển 3, Q1->Q11
 Bài tập đã cho
44
THUẬT TOÁN ĐỆ QUY
 Hàm đệ quy là hàm gọi đến chính nó
 Thuật toán thiết kế cho hàm đệ quy gọi là
thuật toán đệ quy
 Ví dụ: Sắp xếp nhanh, sắp xếp trộn là các
thuật toán đệ quy
Copyright@ by SOFTECH DANANG 45
XỬ LÝ XÂU KÝ TỰ
 Tìm kiếm xâu ký tự
 Thuật toán tìm kiếm đơn giản
 Thuật toán tìm kiếm Boyer-Moore
 Nén xâu ký tự
Copyright@ by SOFTECH DANANG 46
TÌM KIẾM ĐƠN GIẢN
 Văn bản được so sánh từng ký tự, khi ký tự
đầu tiên trong chuỗi tìm kiếm được phát hiện
các ký tự còn lại trong chuỗi tiếp tục được so
sánh
 Giá trị trả về là vị trí phát hiện xâu
Copyright@ by SOFTECH DANANG 47
Start
1 ->j
a-b+1 ->E
“off” ->SW
Loop 1
J>E or SW=“ON”
1->k
K>b
Loop 2
k>b or TBL(j+k-1) # S(k)
K+1 ->k
Loop 2
“on” -> SW J+1 ->j
The value of j
is printed
Loop 1
End
F
T
Copyright@ by SOFTECH DANANG 48
TÌM KIẾM BOYER-MOORE
 Thuật toán Boyer-Moore thực hiện nhanh hơn
nhờ việc quét nhanh chuỗi tìm kiếm
 So sánh phần tử cuối xâu tìm kiếm với mẫu
 Nếu không tìm thấy phần tử trong xâu mẫu, điểm tìm
kiếm sẽ được di chuyển đi chiều dài của xâu mẫu
Copyright@ by SOFTECH DANANG 49
TÌM KIẾM BOYER-MOORE (tiếp)
 Nếu ptử này trùng với vị trí nào đó của xâu mẫu
 Di chuyển vị trí tìm kiếm tới vị trí sao cho nó sẽ là vị trí
cuối cùng của xâu mẫu (nếu thoả mãn)
 Thực hiện quá trình tìm kiếm tiếp tục như trường hợp
trên
 Bài 1. Vẽ ra các bước tìm chuỗi ký tự
IT2 trong xâu sau:
EAUTK9IT2CNTT2021 bằng thuật
toán Boyer – Moore.
Copyright@ by SOFTECH DANANG 50
Z= E A U T K 9 I T 2 C N T T 2 0 2 1
I T 2
I T 2
Z[6:9] = I T 2 (sau 2 phép so
sánh)
Z[6:9]
E A U T K 9 I T 2 C N T T 2 0 2 1
I T 2
I T 2
Copyright@ by SOFTECH DANANG 51
Copyright@ by SOFTECH DANANG 52
NÉN XÂU KÝ TỰ
 Nén xâu ký tự bằng cách thay thế các ký tự,
hay khoảng trắng liên tiếp bởi số ký tự đó
Copyright@ by SOFTECH DANANG 53
XỬ LÝ FILE
 File được xử lý theo từng bản ghi một
 Các bước xử lý file cơ bản gồm có
 Bước chuẩn bị: mở file, xoá biến đếm, ...
 Bước xử lý chính: đọc file, soạn thảo, tính
toán, ...
 Bước kết thúc: đóng file, ..
Copyright@ by SOFTECH DANANG 54
Thuật toán về xử lý File
 Xử lý file riêng lẽ
 Xử lý từ nhiều File
Copyright@ by SOFTECH DANANG 55
Xử lý File riêng
Ví dụ liệt kê các bảng ghi
Copyright@ by SOFTECH DANANG 56
Ví
dụ
liệt
kê
các
bảng
ghi
1
1
Copyright@ by SOFTECH DANANG 57
Xử lý trên nhiều File
Trộn File
 Tạo ra 1 file mới được sắp xếp từ 2 file đã sắp xếp.
 Kết hợp dựa trên các khóa giống nhau
Ví dụ: Tạo ra file bán hàng tổng hợp từ các file của chi nhánh
Copyright@ by SOFTECH DANANG 58
Xử lý trên nhiều File
Trộn File
Copyright@ by SOFTECH DANANG 59
End
Copyright@ by SOFTECH DANANG 60
Bài tập
 Bài tập từ trang 16-> trang 19 phần
Algorithms –Ex
 Câu 1 đề năm 1999
Copyright@ by SOFTECH DANANG 61
ĐỒ HOẠ
 Một hình dạng là tập hợp các điểm. Các thuật
toán đồ hoạ nhằm mục đích có thể tính toán
nhanh vị trí các điểm này
 Thuật toán vẽ đường thẳng
 Trong thuật toán vẽ đường thẳng chỉ thực hiện với
phép cộng và phép trừ
 Thuật toán vẽ đường tròn
 Trong thuật toán vẽ đường tròn các tính toán đa
giác phức tạp cũng không được sử dụng
Copyright@ by SOFTECH DANANG 62
Copyright@ by SOFTECH DANANG 63
Copyright@ by SOFTECH DANANG 64
ĐỒ THỊ
 Đồ thị được tạo bởi các cung nối 1 hay nhiều
điểm
 Tuỳ thuộc vào vấn đề cần giải quyết mà sử
dụng: đồ thị vô hướng hoặc đồ thị có hướng
 Bài toán tìm đường đi ngắn nhất
Copyright@ by SOFTECH DANANG 65
TÌM ĐƯỜNG ĐI NGẮN NHẤT
 Đồ thị có trọng số
 Trọng số của đồ thị là khoảng cách giữa 2 điểm, đường đi ngắn
nhất là đường có tổng trọng số là nhỏ nhất
 Đồ thị không có trọng số
 Khoảng cách giữa 2 điểm được coi là 1, đường đi ngắn nhất là
đường có số điểm qua ít nhất
Copyright@ by SOFTECH DANANG 66
TÌM ĐƯỜNG ĐI NGẮN NHẤT
 Các giải thuật
 Thuật toán tìm kiếm theo chiều sâu
 Chọn con đường nào đó có thể tới đích
 Sử dụng ngăn xếp
 Thuật toán tìm kiếm theo chiều rộng
 Tìm tất cả các con đường có thể tới đích
 Sử dụng hàng đợi
 Thuật toán Dijkstra
Copyright@ by SOFTECH DANANG 67
THUẬT TOÁN DIJKSTRA
 Các bước
1. Khoảng cách từ nút xuất phát tới nút tiếp theo được
tính. Nút được chọn là nút có khoảng cách ngắn
nhất (nút X)
2. Trong số các nút tiếp theo của X và các nút trước
đó, nút được chọn là nút có khoảng cách ngắn nhất
3. Lặp lại bước 2 cho tới khi tới đích
4. Do tính toán khoảng cách đến từng nút, con đường
ngắn nhất được xác định
Copyright@ by SOFTECH DANANG 68
THUẬT TOÁN DIJKSTRA
Copyright@ by SOFTECH DANANG 69
Bài tập
 Bài tập 1 năm 2000
 Bài 1. Tìm
đường đi ngắn
nhất từ đỉnh 1
đến 5. Tính tổng
độ dài đường đi.
 Bài 2. Tìm
đường đi ngắn
nhất từ đỉnh a
đến f. Tính tổng
độ dài đường đi.
Copyright@ by SOFTECH DANANG 70
Copyright@ by SOFTECH DANANG 71
ĐÁNH GIÁ GIẢI THUẬT
 Đánh giá độ phức tạp máy tính
 Đánh giá độ tin cậy
 Đánh giá sự trình bày
Copyright@ by SOFTECH DANANG 72
ĐỘ PHỨC TẠP MÁY TÍNH
 Độ phức tạp về thời gian
 Thời gian lớn nhất cần thiết để xử lý dữ liệu
 Thông thường thời gian được tính trong trường hợp
xấu nhất, tuy nhiên cũng có thể tính theo thời gian
trung bình
 Độ phức tạp về không gian
 Không gian bộ nhớ lớn nhất để xử lý dữ liệu
 Kích thước dữ liệu bị giới hạn bởi phần cứng, phần
mềm
Performance testing
Copyright@ by SOFTECH DANANG 73
ĐỘ TIN CẬY Unit testing
 Tin cậy từng phần -> Grey box testing
 Hàm hay đoạn chương trình có thoả mãn yêu
cầu hay không
 Tin cậy kết thúc -> Black box testing
 Chương trình có kết thúc sau hữu hạn các
bước hay không
 Tin cậy toàn bộ -> White box testing
 Toàn bộ thuật toán có thoả mãn yêu cầu hay
không
Copyright@ by SOFTECH DANANG 74
SỰ TRÌNH BÀY
-> Convention/Performance
 Sự trình bày đánh giá sự công phu
trong trình bày thuật toán
 Giải thuật được trình bày đơn giản, dễ hiểu
 Tăng tốc độ nghiên cứu thuật toán
Embedded: Nhúng các Soft vào thiết bị Tiểu
vi/Siêu vi.
Copyright@ by SOFTECH DANANG 75
Cách thiết kế thuật toán
 Có một số phương pháp thiết kế thuật
toán như sau:
 Phương pháp chia để trị
 Phương pháp thuật toán tham lam
 Phương pháp giảm bật
Copyright@ by SOFTECH DANANG 76
Phương pháp chia để trị *
 Chia bài toán cần giải quyết thành
những bài toán nhỏ hơn
 Tìm cách giải quyết những bài toán nhỏ
đó
 Một vài bài toán nhỏ nếu cần được gộp
lại để thành bài toán lớn hơn
 Thực hiện lại bước 2,3 cho đến khi tìm
được lời giải của cả bài.
 Giải thuật sắp xếp dãy số tăng dần:
 Tìm ra Min hoặc tìm ra Max của dãy số. <-
Thuật toán tìm Min or Max.
 Đưa Min về vị trí đầu của dãy số/Max đưa
về cuối: Đổi chỗ vị trí đầu tiên với Min/vị trí
cuối dãy với Max <- Thuật toán đổi chỗ 2
phần tử của dãy số (Swap).
 Lặp lại 2 bước trên đến khi dãy được sắp
xếp. <- Giới hạn lặp theo độ dài của dãy
số.
Copyright@ by SOFTECH DANANG 77
 Giải thuật cho bài toán cộng 2 phân số:
 Tìm mẫu số chung nhỏ nhất. <- Tìm bội
chung nhỏ nhất của 2 số <- Tìm ước
chung lớn nhất của 2 số
 Thực hiện cộng…
Copyright@ by SOFTECH DANANG 78
Copyright@ by SOFTECH DANANG 79
Phương pháp tham lam
 Đây là phương pháp dùng để tìm ra
cách giải tối ưu cho bài toán.
 Kết quả bài toán tuỳ thuộc vào từng
trường hợp cụ thể
Copyright@ by SOFTECH DANANG 80
Phương pháp giảm bậc
 Biến đổi bài toán từ độ phức tạp cao
hơn thành bài toán có độ phức tạp thấp
hơn.
Copyright@ by SOFTECH DANANG 81
Bài tập
 Trang 90, quyển 3 Q12
 Các bài tập về thuật toán

More Related Content

PPTX
BaiGiang12_SapXep_DSA_UET_VNU_HN_VN.pptx
PPTX
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
PDF
Bai3 timkiemsapxep
PDF
Bai3 timkiem sapxep
PPT
Chuong 2
PDF
Chuong01 - Cau Truc du lieu va giai thuat
PDF
Ctdl lab07-cac thuat-toan_sap_xep
PDF
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
BaiGiang12_SapXep_DSA_UET_VNU_HN_VN.pptx
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
Bai3 timkiemsapxep
Bai3 timkiem sapxep
Chuong 2
Chuong01 - Cau Truc du lieu va giai thuat
Ctdl lab07-cac thuat-toan_sap_xep
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT

Similar to 1. Algorithms_ Giải thuật.ppt (20)

PPT
Chap1 new (tran dai's conflicted copy 2013 04-02)
PPT
ThiếT Kế Và đáNh Giá ThuậT ToáN
PDF
Chuong1
PDF
Cac van de co so kh may tinh
PPT
Gioi Thieu
PDF
bài giảng về kĩ thuật đệ quy trong ngôn ngữ c++
PDF
ĐỆ QUY_aaaaaaaaaaaaaaaaaaaaaaaaNoCopy.pdf
PDF
Tuan1_GioiThieu.pdf
PPT
Ctdl 01 t_quan
PPT
Bai 1 tong quan ve ctdl&amp;gt
PPT
3_Chiavatri.pptdfasfasffafasdfasfasffaasd
PPTX
Giao an tin hoc 11
PPT
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
PPT
Thuat Toan
PPT
Thuat Toan 2
PPT
Chuong 2 phan tich cac thuat toan sap xep va tim kiem
PPT
Chap2 new
PPT
Chap2 new (tran dai's conflicted copy 2013 04-02)
PPT
Gt de quy
PPT
Gt de quy_2
Chap1 new (tran dai's conflicted copy 2013 04-02)
ThiếT Kế Và đáNh Giá ThuậT ToáN
Chuong1
Cac van de co so kh may tinh
Gioi Thieu
bài giảng về kĩ thuật đệ quy trong ngôn ngữ c++
ĐỆ QUY_aaaaaaaaaaaaaaaaaaaaaaaaNoCopy.pdf
Tuan1_GioiThieu.pdf
Ctdl 01 t_quan
Bai 1 tong quan ve ctdl&amp;gt
3_Chiavatri.pptdfasfasffafasdfasfasffaasd
Giao an tin hoc 11
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Thuat Toan
Thuat Toan 2
Chuong 2 phan tich cac thuat toan sap xep va tim kiem
Chap2 new
Chap2 new (tran dai's conflicted copy 2013 04-02)
Gt de quy
Gt de quy_2
Ad

Recently uploaded (20)

PPT
SINH 8 TUYẾN YÊN TUYẾN GIÁP CÂU TẠO VÀ CHỨC NĂNG
PDF
TeétOrganicChemistryFromVietNamVeryHardd
PPTX
Bai 44 Thuyet dong hoc phan tu chat khi Cau tao chat .pptx
PDF
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 CẢ NĂM THEO FORM THI MỚI BGD - CÓ ÔN TẬP + ...
PDF
BÁO CÁO THỰC TẬP KỸ SƯ 2 ĐỀ TÀI TÌM HIỂU QUY TRÌNH CÔNG NGHỆ SẢN XUẤT BÁNH SN...
PDF
12894-44864-1-CE-1037-1038_Văn bản của bài báo.pdf
DOCX
6.CQ_KT_Ke toan tai chinh 2_Pham Thi Phuong Thao.docx
PDF
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CẢ NĂM THEO FORM THI MỚI BGD - CÓ ÔN TẬP + ...
PDF
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 12 CẢ NĂM THEO FORM THI MỚI BGD - CÓ ÔN TẬP + ...
PDF
bo-trac-nghiem-toan-11 dành cho cả năm học
PPTX
SLIDE BV CHÍNH THỨC LATSKH - note.pptx
DOCX
Set menu 3 món rất hay và hiện đại dành cho người
PDF
100-Mon-Ngon-Christine-Ha.pdfnfeifefefefef
PPTX
Flashcard giải pháp đơn giản – trực quan – hiệu quả, giúp học từ vựng theo t...
PDF
BÀI TẬP TEST FOR UNIT TIẾNG ANH LỚP 8 GLOBAL SUCCESS CẢ NĂM THEO TỪNG ĐƠN VỊ ...
PPTX
Bài 6 Du an bua an ket noi yeu thuong.pptx
DOCX
Ôn tập văn học phương đông thi giữa kì ..
DOCX
Chủ nghĩa xã hội khoa học - Đề Cương Cuối Kỳ.docx
PDF
BỘ TÀI LIỆU CHINH PHỤC ĐỈNH CAO TIẾNG ANH NĂM 2026 CHUYÊN ĐỀ ÔN HỌC SINH GIỎI...
PPTX
17. ĐẠI CƯƠNG GÃY XƯƠNG bệnh học ngoại.pptx
SINH 8 TUYẾN YÊN TUYẾN GIÁP CÂU TẠO VÀ CHỨC NĂNG
TeétOrganicChemistryFromVietNamVeryHardd
Bai 44 Thuyet dong hoc phan tu chat khi Cau tao chat .pptx
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 CẢ NĂM THEO FORM THI MỚI BGD - CÓ ÔN TẬP + ...
BÁO CÁO THỰC TẬP KỸ SƯ 2 ĐỀ TÀI TÌM HIỂU QUY TRÌNH CÔNG NGHỆ SẢN XUẤT BÁNH SN...
12894-44864-1-CE-1037-1038_Văn bản của bài báo.pdf
6.CQ_KT_Ke toan tai chinh 2_Pham Thi Phuong Thao.docx
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CẢ NĂM THEO FORM THI MỚI BGD - CÓ ÔN TẬP + ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 12 CẢ NĂM THEO FORM THI MỚI BGD - CÓ ÔN TẬP + ...
bo-trac-nghiem-toan-11 dành cho cả năm học
SLIDE BV CHÍNH THỨC LATSKH - note.pptx
Set menu 3 món rất hay và hiện đại dành cho người
100-Mon-Ngon-Christine-Ha.pdfnfeifefefefef
Flashcard giải pháp đơn giản – trực quan – hiệu quả, giúp học từ vựng theo t...
BÀI TẬP TEST FOR UNIT TIẾNG ANH LỚP 8 GLOBAL SUCCESS CẢ NĂM THEO TỪNG ĐƠN VỊ ...
Bài 6 Du an bua an ket noi yeu thuong.pptx
Ôn tập văn học phương đông thi giữa kì ..
Chủ nghĩa xã hội khoa học - Đề Cương Cuối Kỳ.docx
BỘ TÀI LIỆU CHINH PHỤC ĐỈNH CAO TIẾNG ANH NĂM 2026 CHUYÊN ĐỀ ÔN HỌC SINH GIỎI...
17. ĐẠI CƯƠNG GÃY XƯƠNG bệnh học ngoại.pptx
Ad

1. Algorithms_ Giải thuật.ppt

  • 2. 2 Mục đích bài học  Tìm hiểu cơ bản về thuật toán  Thuật toán  Định nghĩa  Thiết kế  Quan hệ với cấu trúc dữ liệu v.v…
  • 3. 3 GIẢI THUẬT  Nền tảng của giải thuật  Các loại giải thuật  Đánh giá giải thuật
  • 4. Copyright@ by SOFTECH DANANG 4 NỀN TẢNG CỦA GIẢI THUẬT  Giải thuật là gì?  Giải thuật và cấu trúc dữ liệu
  • 5. Copyright@ by SOFTECH DANANG 5 GIẢI THUẬT LÀ GÌ  Định nghĩa giải thuật  Giải thuật là tập hợp hữu hạn các luật rõ ràng có thể thực hiện trong một thời gian hữu hạn để giải quyết vấn đề nào đó (Japanese Industrial Standard JIS)  Giải thuật và chương trình
  • 6. Copyright@ by SOFTECH DANANG 6 GIẢI THUẬT LÀ GÌ  Định nghĩa giải thuật  Giải thuật và chương trình  Giải thuật và chương trình là 2 mặt của vấn đề  Chương trình là sự mô tả dữ liệu và giải thuật trong một ngôn ngữ lập trình nhờ đó máy tính có thể thực hiện được nhiệm vụ nào đó  Chương trình được phân loại thành  Lập trình thủ tục (VD: COBOL, Pascal, C, ... )  Lập trình hàm (LISP)  Lập trình logic (Prolog)  Lập trình hướng đối tượng (C++, Java, Basic.NET)
  • 7. Copyright@ by SOFTECH DANANG 7 GIẢI THUẬT & CẤU TRÚC DỮ LIỆU  Cấu trúc dữ liệu  Cấu trúc dữ liệu cơ bản  Cấu trúc dữ liệu có cấu trúc  Cấu trúc dữ liệu trừu tượng  Quan hệ giữa giải thuật và cấu trúc dữ liệu
  • 8. Copyright@ by SOFTECH DANANG 8 GIẢI THUẬT & CẤU TRÚC DỮ LIỆU  Cấu trúc dữ liệu  Quan hệ giữa giải thuật và cấu trúc dữ liệu  Mỗi giải thuật để xử lý luôn cần một cấu trúc dữ liệu thích hợp  Xử lý xâu  Xử lý file  Xử lý danh sách
  • 9. Copyright@ by SOFTECH DANANG 9 Sơ đồ khối (Flowcharts)  Sơ đồ là cách sử dụng các hình vẽ để thể hiện thứ tự thực hiện của các phép toán để đi đến giải pháp.  Mục đích của sơ đồ khối:  Dễ hiểu hơn việc mô tả bằng ngôn ngữ tự nhiên  Dễ kiểm tra lại và sửa lỗi  Cung cấp tư liệu để làm tài liệu chương trình  Dễ dàng cho việc thảo luận
  • 10. Copyright@ by SOFTECH DANANG 10 Các ký hiệu trong sơ đồ khối Bắt đầu hoặc kết thúc Khối tính toán Khối nhập xuất Khối quyết định và rẽ nhánh Kết nối giữa 2 chương trình Dòng chương trình n n
  • 11. Copyright@ by SOFTECH DANANG 11 Các ký hiệu trong sơ đồ khối (tt) Chương trình con Khối xuất Khối gán Khối lặp
  • 12. Copyright@ by SOFTECH DANANG 12 Flowcharts (Ví dụ) Tính tổng 2 số Cộng Start Đọc 2 số Hiển thi tổng Stop
  • 13. Copyright@ by SOFTECH DANANG 13 Rẽ nhánh (Ví dụ) Kiểm tra số chẵn, số lẽ Chia cho 2 Số dư=0? Đúng Sai Start Đọc 1 số Hiễn thị số lẽ Hiễn thi số chẵn Stop
  • 14. Copyright@ by SOFTECH DANANG 14 Cấu trúc rẽ nhánh (ii) (i) ? Compute Compute Compute ?
  • 15. Copyright@ by SOFTECH DANANG 15 Vòng lặp Điều kiện Tính toán No Yes
  • 16. Copyright@ by SOFTECH DANANG 16 Lặp (Ví dụ) Tính tổng chi tiêu hàng tháng của năm tot_exp – Tổng chi tiêu no_mon – Số tháng Yes Yes Start No no_mon=12 Cộng exp vào tot_exp Đọc exp Stop no_mon = no_mon + 1 Hiển thị tot_exp tot_exp = 0 no_mon = 0
  • 17. Copyright@ by SOFTECH DANANG 17 CÁC LOẠI GIẢI THUẬT  Giải thuật tìm kiếm  Giải thuật sắp xếp  Giải thuật đệ quy  Xử lý xâu ký tự  Xử lý file  Đồ hoạ  Đồ thị
  • 18. Copyright@ by SOFTECH DANANG 18 GIẢI THUẬT TÌM KIẾM  Tìm kiếm tuần tự  Tìm kiếm vét cạn  Là cách tìm kiếm đơn giản nhất, bằng việc so sách giá trị cần tìm từ đầu đến cuối danh sách  Trong trường hợp xấu nhất có 2xN lần so sánh  Tìm kiếm kiểu lính gác  Trong phương pháp này giá trị dữ liệu cần tìm được đặt ở cuối danh sách, do đó sẽ giảm số lần so sánh  Trong trường hợp xấu nhất có N+1 lần so sánh  Tìm kiếm nhị phân
  • 20. Copyright@ by SOFTECH DANANG 20 GIẢI THUẬT TÌM KIẾM  Tìm kiếm tuần tự  Tìm kiếm nhị phân  Trong thuật toán này các phần tử phải được sắp xếp theo chiều tăng hoặc giảm  Số lần so sánh trung bình = [log2 N]  Số lần so sánh lớn nhất = [log2 N]+1
  • 21. Copyright@ by SOFTECH DANANG 21 TÌM KIẾM NHỊ PHÂN
  • 22. Copyright@ by SOFTECH DANANG 22 Bài tập  Trang 87, Quyển 3, Q1->Q5  Thực hiện bài tập được giao
  • 23. Copyright@ by SOFTECH DANANG 23 GIẢI THUẬT SẮP XẾP  Sắp xếp nổi bọt (Bubble)  Sắp xếp chọn (Selection)  Sắp xếp chèn (Insertion)  Sắp xếp sàng lọc (Shaker)  Sắp xếp khung (Shell)  Sắp xếp nhanh (Quick)  Sắp xếp trộn (Merge)
  • 24. Copyright@ by SOFTECH DANANG 24 PHƯƠNG PHÁP SẮP XẾP NỔI BỌT  Giải thuật  Thực hiện so sánh từng cặp phần tử liên tiếp, nếu thứ tự sai thì đổi chỗ  Thực hiện từ đầu đến cuối ta sẽ có phần tử lớn nhất ở cuối danh sách  Lặp lại các bước trên sẽ được danh sách đã sắp xếp  Độ phức tạp tính toán O(n2)
  • 25.  4,6,3,5,8,1  4,6,3,5,8,1  4,3,6,5,8,1  4,3,5,6,8,1  4,3,5,6,1,8  3,4,5,6,1,8  3,4,5,1,6,8  3,4,1,5,6,8  3,1,4,5,6,8  1,3,4,5,6,8 Copyright@ by SOFTECH DANANG 25
  • 27. Copyright@ by SOFTECH DANANG 27 Bài tập  Viết thuật toán để sắp xếp một mảng gồm 50 số ngẫu nhiên theo thứ tự tăng dần theo phương pháp nổi bọt.
  • 28. Copyright@ by SOFTECH DANANG 28 PHƯƠNG PHÁP SẮP XẾP CHỌN  Giải thuật  Thực hiện tìm vị trí phần tử nhỏ nhất trong danh sách sau đó đổi chỗ với vị trí đầu tiên  Lặp lại các bước trên với phần còn lại của danh sách sẽ có danh sách được sắp xếp  Độ phức tạp tính toán O(n2)
  • 29.  4,6,3,5,8,1  1,4,6,3,5,8  1,3,4,6,5,8  1,3,4,6,5,8  1,3,4,5,6,8  1,3,4,5,6,8 Copyright@ by SOFTECH DANANG 29
  • 31. Copyright@ by SOFTECH DANANG 31 PHƯƠNG PHÁP SẮP XẾP CHÈN  Giải thuật  Phần tử chưa được sắp xếp được điền vào vị trí thích hợp trong dãy đã được sắp xếp  Phương pháp này rất thích hợp để sắp xếp danh sách đã được sắp xếp 1 phần  Độ phức tạp tính toán O(n2)
  • 33. Copyright@ by SOFTECH DANANG 33 PHƯƠNG PHÁP SẮP XẾP SÀNG LỌC (Shaker sort method)  Giải thuật  Phương pháp này tương tự phương pháp nổi bọt.  So sánh các cặp phần tử liên tiếp từ phải sang trái để tìm ra phần tử lớn nhất, ta không lặp lại mà so sánh lại từ trái sang phải để tìm phần tử nhỏ nhất  Độ phức tạp tính toán O(n2)
  • 34. Copyright@ by SOFTECH DANANG 34 PHƯƠNG PHÁP SẮP XẾP SÀNG LỌC End Number of elements ->j 1->E J->S 1->W Loop 1 E>=S E->J Loop 2 i=S TBL(i):TBL(i+1) TBL(i) -> SAVE TBL(i+1)->TBL(i) SAVE->TBL(i+1) i+1->i Loop 2 1 W->s S->i Loop 3 i=E i->W TBL(i-1):TBL(i) TBL(i) -> SAVE TBL(i-1)->TBL(i) SAVE->TBL(i-1) i-1->i 1 Loop 3 Loop 1 W->E Start <=
  • 35. Copyright@ by SOFTECH DANANG 35 PHƯƠNG PHÁP SẮP XẾP KHUNG (Shell sort method)  Giải thuật  Phương pháp này là mở rộng/cải tiến của phương pháp sắp xếp chèn  So sánh các cặp phần tử cách nhau một khoảng nhất định và tiến hành đổi chỗ. Quá trình này được lặp lại với khoảng cách từ lớn đến nhỏ (Thông thường là [n/2], [n/4],··· 1). Khi khoảng cách là 1 tiếp tục thực hiện với thuật toán chèn.  Độ phức tạp tính toán O(n3/2)
  • 36. Copyright@ by SOFTECH DANANG 36 PHƯƠNG PHÁP SẮP XẾP KHUNG
  • 37. Copyright@ by SOFTECH DANANG 37 PHƯƠNG PHÁP SẮP XẾP KHUNG End Number of elements ->N N ->GAP Loop 1 GAP<1 1 -> m Loop 2 m>GAP 1 j -GAP->j TBL(j)>TBL(j + GAP) TBL(j) -> SAVE TBL(j+ GAP)->TBL(j) SAVE->TBL(j-GAP) h+ GAP->h 1 Loop 4 Loop 1 Start (Gap Calculation) ->GAP m +GAP ->h Loop 3 h > N H-GAP ->j Loop 4 j < 1 Loop 3 m + 1 -> m Loop 2
  • 38. Copyright@ by SOFTECH DANANG 38 PHƯƠNG PHÁP SẮP XẾP NHANH  Giải thuật  Một giá trị chốt được chọn, các phần tử nhỏ hơn chốt sẽ chuyển sang phải chốt, phần tử lớn hơn chốt sẽ chuyển sang trái chốt. Sau quá trình này danh sách được chia làm 2 phần  Lặp lại quá trình này với 2 phần của danh sách cho tới khi số phần tử của mỗi phần là 1 sẽ thu được danh sách đã sắp xếp  Phương pháp này được gọi là pp chia để trị  Độ phức tạp tính toán  Trung bình O(nlogn)  Trường hợp xấu nhất là O(n2)  Trong trường hợp thực hiện song song là O(logn)
  • 40. Copyright@ by SOFTECH DANANG 40 PHƯƠNG PHÁP SẮP XẾP TRỘN  Giải thuật  Các phần tử được chia làm 2 phần, việc sắp xếp sẽ thực hiện trên từng phần. Các phần sau khi sắp xếp được trộn lại với nhau để được một danh sách đã sắp xếp  Độ phức tạp tính toán O(nlogn)
  • 41. Copyright@ by SOFTECH DANANG 41 PHƯƠNG PHÁP SẮP XẾP TRỘN
  • 42. Copyright@ by SOFTECH DANANG 42 1-> S -> S S:N = [(S+N)/2]->H
  • 43. Copyright@ by SOFTECH DANANG 43 Bài tập  Trang 87, Quyển 3, Q1->Q11  Bài tập đã cho
  • 44. 44 THUẬT TOÁN ĐỆ QUY  Hàm đệ quy là hàm gọi đến chính nó  Thuật toán thiết kế cho hàm đệ quy gọi là thuật toán đệ quy  Ví dụ: Sắp xếp nhanh, sắp xếp trộn là các thuật toán đệ quy
  • 45. Copyright@ by SOFTECH DANANG 45 XỬ LÝ XÂU KÝ TỰ  Tìm kiếm xâu ký tự  Thuật toán tìm kiếm đơn giản  Thuật toán tìm kiếm Boyer-Moore  Nén xâu ký tự
  • 46. Copyright@ by SOFTECH DANANG 46 TÌM KIẾM ĐƠN GIẢN  Văn bản được so sánh từng ký tự, khi ký tự đầu tiên trong chuỗi tìm kiếm được phát hiện các ký tự còn lại trong chuỗi tiếp tục được so sánh  Giá trị trả về là vị trí phát hiện xâu
  • 47. Copyright@ by SOFTECH DANANG 47 Start 1 ->j a-b+1 ->E “off” ->SW Loop 1 J>E or SW=“ON” 1->k K>b Loop 2 k>b or TBL(j+k-1) # S(k) K+1 ->k Loop 2 “on” -> SW J+1 ->j The value of j is printed Loop 1 End F T
  • 48. Copyright@ by SOFTECH DANANG 48 TÌM KIẾM BOYER-MOORE  Thuật toán Boyer-Moore thực hiện nhanh hơn nhờ việc quét nhanh chuỗi tìm kiếm  So sánh phần tử cuối xâu tìm kiếm với mẫu  Nếu không tìm thấy phần tử trong xâu mẫu, điểm tìm kiếm sẽ được di chuyển đi chiều dài của xâu mẫu
  • 49. Copyright@ by SOFTECH DANANG 49 TÌM KIẾM BOYER-MOORE (tiếp)  Nếu ptử này trùng với vị trí nào đó của xâu mẫu  Di chuyển vị trí tìm kiếm tới vị trí sao cho nó sẽ là vị trí cuối cùng của xâu mẫu (nếu thoả mãn)  Thực hiện quá trình tìm kiếm tiếp tục như trường hợp trên
  • 50.  Bài 1. Vẽ ra các bước tìm chuỗi ký tự IT2 trong xâu sau: EAUTK9IT2CNTT2021 bằng thuật toán Boyer – Moore. Copyright@ by SOFTECH DANANG 50
  • 51. Z= E A U T K 9 I T 2 C N T T 2 0 2 1 I T 2 I T 2 Z[6:9] = I T 2 (sau 2 phép so sánh) Z[6:9] E A U T K 9 I T 2 C N T T 2 0 2 1 I T 2 I T 2 Copyright@ by SOFTECH DANANG 51
  • 52. Copyright@ by SOFTECH DANANG 52 NÉN XÂU KÝ TỰ  Nén xâu ký tự bằng cách thay thế các ký tự, hay khoảng trắng liên tiếp bởi số ký tự đó
  • 53. Copyright@ by SOFTECH DANANG 53 XỬ LÝ FILE  File được xử lý theo từng bản ghi một  Các bước xử lý file cơ bản gồm có  Bước chuẩn bị: mở file, xoá biến đếm, ...  Bước xử lý chính: đọc file, soạn thảo, tính toán, ...  Bước kết thúc: đóng file, ..
  • 54. Copyright@ by SOFTECH DANANG 54 Thuật toán về xử lý File  Xử lý file riêng lẽ  Xử lý từ nhiều File
  • 55. Copyright@ by SOFTECH DANANG 55 Xử lý File riêng Ví dụ liệt kê các bảng ghi
  • 56. Copyright@ by SOFTECH DANANG 56 Ví dụ liệt kê các bảng ghi 1 1
  • 57. Copyright@ by SOFTECH DANANG 57 Xử lý trên nhiều File Trộn File  Tạo ra 1 file mới được sắp xếp từ 2 file đã sắp xếp.  Kết hợp dựa trên các khóa giống nhau Ví dụ: Tạo ra file bán hàng tổng hợp từ các file của chi nhánh
  • 58. Copyright@ by SOFTECH DANANG 58 Xử lý trên nhiều File Trộn File
  • 59. Copyright@ by SOFTECH DANANG 59 End
  • 60. Copyright@ by SOFTECH DANANG 60 Bài tập  Bài tập từ trang 16-> trang 19 phần Algorithms –Ex  Câu 1 đề năm 1999
  • 61. Copyright@ by SOFTECH DANANG 61 ĐỒ HOẠ  Một hình dạng là tập hợp các điểm. Các thuật toán đồ hoạ nhằm mục đích có thể tính toán nhanh vị trí các điểm này  Thuật toán vẽ đường thẳng  Trong thuật toán vẽ đường thẳng chỉ thực hiện với phép cộng và phép trừ  Thuật toán vẽ đường tròn  Trong thuật toán vẽ đường tròn các tính toán đa giác phức tạp cũng không được sử dụng
  • 64. Copyright@ by SOFTECH DANANG 64 ĐỒ THỊ  Đồ thị được tạo bởi các cung nối 1 hay nhiều điểm  Tuỳ thuộc vào vấn đề cần giải quyết mà sử dụng: đồ thị vô hướng hoặc đồ thị có hướng  Bài toán tìm đường đi ngắn nhất
  • 65. Copyright@ by SOFTECH DANANG 65 TÌM ĐƯỜNG ĐI NGẮN NHẤT  Đồ thị có trọng số  Trọng số của đồ thị là khoảng cách giữa 2 điểm, đường đi ngắn nhất là đường có tổng trọng số là nhỏ nhất  Đồ thị không có trọng số  Khoảng cách giữa 2 điểm được coi là 1, đường đi ngắn nhất là đường có số điểm qua ít nhất
  • 66. Copyright@ by SOFTECH DANANG 66 TÌM ĐƯỜNG ĐI NGẮN NHẤT  Các giải thuật  Thuật toán tìm kiếm theo chiều sâu  Chọn con đường nào đó có thể tới đích  Sử dụng ngăn xếp  Thuật toán tìm kiếm theo chiều rộng  Tìm tất cả các con đường có thể tới đích  Sử dụng hàng đợi  Thuật toán Dijkstra
  • 67. Copyright@ by SOFTECH DANANG 67 THUẬT TOÁN DIJKSTRA  Các bước 1. Khoảng cách từ nút xuất phát tới nút tiếp theo được tính. Nút được chọn là nút có khoảng cách ngắn nhất (nút X) 2. Trong số các nút tiếp theo của X và các nút trước đó, nút được chọn là nút có khoảng cách ngắn nhất 3. Lặp lại bước 2 cho tới khi tới đích 4. Do tính toán khoảng cách đến từng nút, con đường ngắn nhất được xác định
  • 68. Copyright@ by SOFTECH DANANG 68 THUẬT TOÁN DIJKSTRA
  • 69. Copyright@ by SOFTECH DANANG 69 Bài tập  Bài tập 1 năm 2000
  • 70.  Bài 1. Tìm đường đi ngắn nhất từ đỉnh 1 đến 5. Tính tổng độ dài đường đi.  Bài 2. Tìm đường đi ngắn nhất từ đỉnh a đến f. Tính tổng độ dài đường đi. Copyright@ by SOFTECH DANANG 70
  • 71. Copyright@ by SOFTECH DANANG 71 ĐÁNH GIÁ GIẢI THUẬT  Đánh giá độ phức tạp máy tính  Đánh giá độ tin cậy  Đánh giá sự trình bày
  • 72. Copyright@ by SOFTECH DANANG 72 ĐỘ PHỨC TẠP MÁY TÍNH  Độ phức tạp về thời gian  Thời gian lớn nhất cần thiết để xử lý dữ liệu  Thông thường thời gian được tính trong trường hợp xấu nhất, tuy nhiên cũng có thể tính theo thời gian trung bình  Độ phức tạp về không gian  Không gian bộ nhớ lớn nhất để xử lý dữ liệu  Kích thước dữ liệu bị giới hạn bởi phần cứng, phần mềm Performance testing
  • 73. Copyright@ by SOFTECH DANANG 73 ĐỘ TIN CẬY Unit testing  Tin cậy từng phần -> Grey box testing  Hàm hay đoạn chương trình có thoả mãn yêu cầu hay không  Tin cậy kết thúc -> Black box testing  Chương trình có kết thúc sau hữu hạn các bước hay không  Tin cậy toàn bộ -> White box testing  Toàn bộ thuật toán có thoả mãn yêu cầu hay không
  • 74. Copyright@ by SOFTECH DANANG 74 SỰ TRÌNH BÀY -> Convention/Performance  Sự trình bày đánh giá sự công phu trong trình bày thuật toán  Giải thuật được trình bày đơn giản, dễ hiểu  Tăng tốc độ nghiên cứu thuật toán Embedded: Nhúng các Soft vào thiết bị Tiểu vi/Siêu vi.
  • 75. Copyright@ by SOFTECH DANANG 75 Cách thiết kế thuật toán  Có một số phương pháp thiết kế thuật toán như sau:  Phương pháp chia để trị  Phương pháp thuật toán tham lam  Phương pháp giảm bật
  • 76. Copyright@ by SOFTECH DANANG 76 Phương pháp chia để trị *  Chia bài toán cần giải quyết thành những bài toán nhỏ hơn  Tìm cách giải quyết những bài toán nhỏ đó  Một vài bài toán nhỏ nếu cần được gộp lại để thành bài toán lớn hơn  Thực hiện lại bước 2,3 cho đến khi tìm được lời giải của cả bài.
  • 77.  Giải thuật sắp xếp dãy số tăng dần:  Tìm ra Min hoặc tìm ra Max của dãy số. <- Thuật toán tìm Min or Max.  Đưa Min về vị trí đầu của dãy số/Max đưa về cuối: Đổi chỗ vị trí đầu tiên với Min/vị trí cuối dãy với Max <- Thuật toán đổi chỗ 2 phần tử của dãy số (Swap).  Lặp lại 2 bước trên đến khi dãy được sắp xếp. <- Giới hạn lặp theo độ dài của dãy số. Copyright@ by SOFTECH DANANG 77
  • 78.  Giải thuật cho bài toán cộng 2 phân số:  Tìm mẫu số chung nhỏ nhất. <- Tìm bội chung nhỏ nhất của 2 số <- Tìm ước chung lớn nhất của 2 số  Thực hiện cộng… Copyright@ by SOFTECH DANANG 78
  • 79. Copyright@ by SOFTECH DANANG 79 Phương pháp tham lam  Đây là phương pháp dùng để tìm ra cách giải tối ưu cho bài toán.  Kết quả bài toán tuỳ thuộc vào từng trường hợp cụ thể
  • 80. Copyright@ by SOFTECH DANANG 80 Phương pháp giảm bậc  Biến đổi bài toán từ độ phức tạp cao hơn thành bài toán có độ phức tạp thấp hơn.
  • 81. Copyright@ by SOFTECH DANANG 81 Bài tập  Trang 90, quyển 3 Q12  Các bài tập về thuật toán