1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 2 - ThS. Tô Oai Hùng

40 26 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 40
Dung lượng 320,17 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Các vấn đề cơ sở của khoa học máy tính - Chương 2: Giải thuật trình bày các nội dung: Định nghĩa giải thuật, ví dụ về giải thuật, đặc tả giải thuật, phân tích giải thuật, giải thuật là công nghệ, mô hình hình thức tính toán. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Ch ương 2:

GIẢI THUẬT

Trang 2

Nội Dung

1 Định nghĩa giải thuật

2 Ví dụ về giải thuật

3 Đặc tả giải thuật

4 Phân tích giải thuật

5 Giải thuật là công nghệ

6 Mô hình hình thức tính toán

2

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 3

Định Nghĩa Giải Thuật

Định nghĩa giải thuật: Giải thuật là cách thức

để giải quyết một tập các vấn đề

Thuật ngữ “giải thuật” cũng áp dụng cho bất

kỳ cách thức nào để giải quyết một vấn đề

cụ thể Cho ví dụ, các bước để thay phanh

xe cũng được gọi là giải thuật

Ví dụ: Tìm ước số chung lớn nhất

Trong toán học, một giải thuật nổi tiếng và hữu dụng là giải thuật Euclid để tìm ước số chung lớn nhất (GCD) của hai số nguyên Ông đã đưa ra giải thuật này vào khoảng 300 năm trước công nguyên

Không có giải thuật Euclid, chúng ta tìm

3

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 4

Ví Dụ Về Giải Thuật

GCD(372, 84) như thế nào? Phải phân tích hai số nguyên thành các thừa số nguyên tố

và tìm thừa số chung lớn nhất

Nếu các số nguyên này lớn, việc phân tích

thành các thừa số trở nên khó khăn và tốn nhiều thời gian Euclid đã tìm ra giải thuật một cách có hệ thống và nhanh chóng giảm kích thước của vấn đề, bằng cách thay giá trị ban đầu của hai số nguyên với giá trị nhỏ hơn cho đến khi một trong hai số bằng 0 Lúc này, GCD của hai số chính là giá trị của

Trang 6

Ví Dụ Về Giải Thuật

Như vậy, giải thuật là một chuỗi các phép

toán thao tác trên tập giá trị nhập và sinh ra kết quả trong khoảng thời gian hữu hạn Trong ví dụ trên, tập giá trị nhập là 2 số nguyên Kết quả là ước số chung lớn nhất của hai số đó

Có nhiều cách để giải quyết một lớp các vấn

đề Câu hỏi đặt ra là giải thuật nào tốt nhất? Thông thường, các nhà khoa học máy tính

sử dụng các kỹ thuật để phân tích, đánh giá

và so sánh hiệu quả giữa các giải thuật

6

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 7

Đặc Tả Giải Thuật

Đặc tả giải thuật (representing algorithm):

Trong ngành khoa học máy tính, giải thuật thường được đặc tả bằng mã giả

(pseudocode) Mã giả đủ để cho một ngôn ngữ lập trình có thể thể hiện các tác vụ mà máy tính phải thực hiện trong giải thuật

Mã giả cũng độc lập với bất kỳ ngôn ngữ lập trình nào Nó thể hiện chi tiết cú pháp và làm cho người lập trình dễ dàng đặc tả các thao tác cốt lõi của một giải thuật

Không có một mẫu chuẩn nào cho mã giả Các nhà khoa học máy tính sử dụng mã giả của riêng mình để đặc tả một giải thuật Ví dụ sau là một kiểu mã giả đặc tả giải thuật GCD:

7

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 8

Để minh hoạ thế nào là hiệu quả khác nhau

giữa các giải thuật, chúng ta sẽ thảo luận

về sự đa dạng của các giải thuật mà các nhà khoa học máy tính đã đưa ra để giải quyết các vấn đề phổ biến trong tính toán

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

8

Trang 9

Đặc Tả Giải Thuật

Tìm kiếm tuần tự (sequential search): Giả sử

chúng ta có danh sách của các sinh viên trong một lớp học, yêu cầu là hãy tìm tên của sinh viên Debbie Drawe Giải thuật tìm kiếm tuần tự chỉ đơn giản là so sánh mỗi tên trong danh sách với tên cần tìm Quá trình tìm kiếm kết thúc khi tên được tìm thấy hoặc khi giải thuật đã tìm hết tất cả các tên trong danh sách

Sau đây là mã giả của giải thuật tìm kiếm tuần tự:

9

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 10

Đặc Tả Giải Thuật

Sequential_Search(listNames, name) length ← length of listNames

matchFound ← false

index ← 1

while matchFound = false

AND index <= length {

if listNames[index] = name then matchFound ← true

Trang 11

Phân Tích Giải Thuật

Phân tích giải thuật (analyzing algorithm):

Nếu chúng ta biết chiều dài của mỗi câu lệnh

và có bao nhiêu tên trong danh sách, chúng

ta có thể tính được thời gian để thực thi giải thuật

Tuy nhiên, thường thì chúng ta không biết giải thuật giải quyết vấn đề trong bao lâu và thời gian cần giải quyết vấn đề sẽ thay đổi theo độ lớn của vấn đề

Giải thuật tìm kiếm tuần tự sẽ cần thời gian

lâu hơn nếu số lần so sánh nhiều hơn Những lệnh khác của giải thuật chỉ thực thi 1 lần, nhưng những lệnh trong vòng lặp sẽ

11

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 12

Phân Tích Giải Thuật

thực thi nhiều lần miễn là điều kiện lặp còn đúng

Nếu tên cần tìm cần tìm nằm giữa danh sách

thì giải thuật sẽ chỉ tìm một nửa danh sách Nhưng nếu tên cần tìm ở cuối hoặc không có trong danh sách thì giải thuật sẽ phải tìm tất

cả các tên trong danh sách

Thời gian thực thi của giải thuật tìm kiếm

tuần tự sẽ tăng tỷ lệ theo kích thước của danh sách

Chúng ta nói rằng “bậc tăng” của giải thuật tìm kiếm tuần tự là n, ký hiệu là T(n) Chúng

ta cũng nói rằng một giải thuật mà bậc tăng của nó giới hạn trong một yếu tố không đổi

12

Các Vấn Đề Cơ Sở của KHMT ThS GVC Tô Oai Hùng

Trang 13

Phân Tích Giải Thuật

nào đó có theta của n, ký hiệu Θ(n)

Lưu ý: T(n) là hàm theta của g(n): T(n) =

Trang 14

Phân Tích Giải Thuật

Trang 15

Phân Tích Giải Thuật

Để phân tích thời gian thực thi của giải thuật

sắp xếp bằng phương pháp chèn trực tiếp, đầu tiên chúng ta lưu ý là thời gian thực thi

tỷ lệ với số phần tử cần sắp xếp n Ngoài ra, mỗi phần tử đang xét phải được so sánh một hay nhiều lần với các phần tử đã được sắp Trong trường hợp tốt nhất, danh sách cần sắp xếp đã có thứ tự rồi, khi này mỗi phần tử chỉ so sánh một lần, vì thế trường hợp tốt nhất của giải thuật là Θ(n)

Trong trường hợp xấu nhất, danh sách cần sắp xếp có thứ tự ngược, khi này mỗi phần

tử đang xét sẽ so sánh với tất cả phần tử đã

15

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 16

Phân Tích Giải Thuật

được sắp Phần tử thứ 2 so sánh với phần

tử đầu, phần tử thứ 3 so sánh với phần tử thứ 2 và phần tử đầu, … Ví dụ danh sách có

Trong trường hợp trung bình, mỗi phần tử đang xét sẽ so sánh với một nửa phần tử đã 16

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 17

Phân Tích Giải Thuật

được sắp Vì vậy, thời gian thực thi của giải thuật trong trường hợp này cũng là T(n) =

Θ(n 2 )

3. Sắp xếp bằng phương pháp trộn (merge sort) - thời gian thực thi T(n) = Θ(n log2 n) : merge(listA, listB)

index ← 1

while listA is not empty

AND listB is not empty

Trang 18

Phân Tích Giải Thuật

Trang 19

Phân Tích Giải Thuật

Trong hàm merge(), các phần tử được di chuyển từ một trong hai danh sách ban đầu

là listA và listB vào danh sách kết quả sortedList Trong đó, tổng số phần tử di chuyển bằng với tổng số phần tử của hai danh sách ban đầu Vì vậy, thời gian thực thi của hàm merge() là Θ(nA + n B ) , với nA + n B

là tổng số phần tử của hai danh sách

Giải thuật sắp xếp bằng phương pháp trộn

sẽ sử dụng hàm merge() ở trên để trộn hai danh sách có thứ tự thành danh sách mới cũng có thứ tự:

19

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 20

Phân Tích Giải Thuật

merge_sort(numList)

length ← length of numList

if length > 1

listA ← first half of numList

listB ← second half of numList

resultA ← merge_sort(listA)

resultB ← merge_sort(listB)

sortedList ← merge(resultA,

resultB) return sortedList

Trang 21

Phân Tích Giải Thuật

Bài tập tại lớp: Hãy lấy ví dụ thực thi giải thuật sắp xếp trộn bằng lời gọi hàm merge_sort() với danh sách sau: numList

= {1, 6, 4, 2}

Tổng thời gian thực thi T(n) của giải thuật

sắp xếp trộn gồm thời gian gọi đệ qui của hai nửa danh sách và thời gian kết hợp (trộn) các kết quả:

Trang 22

Phân Tích Giải Thuật

Từ công thức trên, chúng ta xây dựng hệ

thức truy hồi sau:

Giải hệ thức truy hồi trên, viết lại:

Trang 23

Phân Tích Giải Thuật

Ở bước thứ i, ta có:

T(n) = in + 2 i T(n/2 i )

Quá trình tiếp tục cho đến khi gặp T(1) Tức

là n/2 i = 1 → n = 2 i → i = log 2 n Khi này:

Trang 24

Phân Tích Giải Thuật

4. Tìm kiếm nhị phân (binary search) - thời gian

thực thi T(n) = Θ(log2 n) :

Trước đây, chúng ta đã xét giải thuật tìm

kiếm tuần tự, độ phức tạp của nó là Θ(n) Nếu danh sách tìm kiếm đã có thứ tự, sử dụng giải thuật tìm kiếm nhị phân sẽ hiệu quả hơn

Thời gian tìm kiếm của giải thuật tìm kiếm

nhị phân là log2 n Nếu danh sách có 1.000.000 phần tử thì số lần tìm kiếm không quá 20 lần, trong khi giải thuật tìm kiếm tuần

tự có số lần tìm kiếm trung bình là 500.000 lần

24

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 25

Phân Tích Giải Thuật

Sau đây là mã giả của giải thuật tìm kiếm nhị phân:

Trang 26

Phân Tích Giải Thuật

Do đó, thời gian thực thi của giải thuật này là T(n) = Θ(log 2 n)

26

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 27

Giải Thuật Là Công Nghệ

Nhiều người cho rằng tốc độ phần cứng máy

tính như là sự đo lường về kỹ thuật Nhưng các giải thuật đã xét trước đây và hiệu quả thực thi của nó, cho thấy rằng một giải thuật tốt trên máy tính chậm hơn là một giải thuật chậm trên máy tính nhanh

Giả sử chúng ta cần sắp thứ tự 1.000.000

(10 6 ) phần tử Hoặc là chúng ta chọn máy tính đang sử dụng với giải thuật sắp xếp trộn hoặc là mua máy tính mới nhanh hơn 10 lần nhưng sử dụng giải thuật sắp xếp chèn

Giải thuật chèn trên máy tính mới sẽ cần

27

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 28

Giải Thuật Là Công Nghệ

(10 6 ) 2 chu kỳ, trong khi giải thuật trộn cần

10 6 (log 2 10 6 ) = 10 6 (20) = 20.000.000 chu kỳ Nếu cần 20 giây để thực thi giải thuật trộn trên máy tính cũ thì sẽ cần đến 27 giờ để thực thi giải thuật chèn trên máy tính mới

28

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 29

Mô Hình Hình Thức Tính Toán

Lý thuyết máy tính được cải tiến bởi mô hình hình thức tính toán bằng toán học

Mô hình có tính thuyết phục nhất được đưa

ra vào năm 1936 bởi nhà toán học người Anh

- Alan Turing

Khái niệm toán học của mô hình tính toán Turing được gọi là máy Turing (Turing machine) hay TM

Một máy Turing thường được mô tả như là

một máy đọc dải băng (tape):

- Dải băng được chia thành các ô chứa các

hiệu (symbol) và các khoảng trống (blank) và có thể dài vô hạn 29

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 30

Mô Hình Hình Thức Tính Toán

- Máy sẽ đọc một ký hiệu ở mỗi thời điểm,

ký hiệu được đặt phía dưới “đầu đọc/ghi” của máy

- Máy cũng có thể xoá ký hiệu, ghi ký hiệu mới và có thể di chuyển đầu đọc/ghi một ô sang trái hay sang phải trên dải băng (hoặc dải băng di chuyển)

- Tại mỗi thời điểm, máy luôn ở một trong một số trạng thái hữu hạn, khi đọc một ký hiệu có thể làm cho trạng thái của máy thay đổi

- Một trạng thái đặc biệt là trạng thái dừng

(halting state), đây là trạng thái kết thúc

30

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 31

Mô Hình Hình Thức Tính Toán

- Khi máy bắt đầu, trạng thái của nó là 1, lúc này máy sẽ ở bên cực trái của dải băng và dải băng sẽ được mở rộng vô hạn về bên phải

Một máy Turing cụ thể sẽ có một tập các

lệnh Mỗi lệnh gồm một bộ 5 giá trị:

1 Trạng thái hiện tại

2 Ký hiệu hiện tại đang đọc

3 Ký hiệu để thay thế ký hiệu hiện tại

4 Trạng thái kế tiếp

5 Hướng để di chuyển đầu đọc (Right

(phải), Left (trái), Stationary (đứng yên))

31

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 32

Lệnh thứ nhất: nếu ký hiệu đang đọc là 0,

thay nó bằng 1 và chuyển sang phải dải băng

Lệnh thứ hai: nếu ký hiệu đang đọc là 1, thay

nó bằng 0 và chuyển sang phải dải băng

Lệnh thứ ba: nếu ký hiệu đang đọc là trống,

dừng máy không di chuyển

32

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 33

Mô Hình Hình Thức Tính Toán

Giả sử dải băng dùng cho máy Turing ở trên

chứa các ký hiệu sau:

1 1 0 1 0 1 0 0 Δ Δ Δ

Bắt đầu ở trạng thái 1, máy ở cực trái của dải

băng, máy đọc ký hiệu 1 Lệnh 2 được sử dụng, làm cho 1 được thay bằng 0, máy vẫn

ở trạng thái 1 và di chuyển 1 ô sang phải dải băng

Kế đến, máy đọc ký hiệu 1 kế tiếp Lệnh 2

được sử dụng lần nữa, vì thế ký hiệu 1 thứ hai được thay bằng 0, máy vẫn ở trạng thái 1

và di chuyển sang phải

Khi máy đọc ký hiệu 0, lệnh 1 được sử dụng, 33

Trang 34

lấy bù 2 (two's complement) của số nhị phân

Phép toán này thường được máy tính sử dụng để thực hiện trừ nhị phân

Trước đây, trên những máy cộng cơ học,

34

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 35

14 là 85, sau đó cộng thêm 1 là 86 Lấy 86 +

17 = 103, bỏ giá trị nhớ 1 bên trái nhất còn lại là 3

Để thực hiện trừ nhị phân, lấy bù 2 số trừ và

cộng với số bị trừ Cho ví dụ để tính 5 – 2, lấy bù hai số 2 và cộng với số 5 Giả sử dùng

3 bit để biểu diễn giá trị nhị phân của 5 và 2:

35

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 36

1011 3 (bỏ bit nhớ 1 bên trái nhất)

Sau đây là các lệnh của máy Turing để lấy bù

Trang 37

Lệnh 3 thực thi khi máy Turing đã lấy bù 1 tất

cả các bit và gặp ký tự trống bên cuối phải của dải băng Khi lệnh này thực thi, máy sẽ đến trạng thái 2 và di chuyển sang trái

Trong trạng thái 2, nếu máy gặp bit 0, lệnh 4

sẽ làm cho 0 được thay bằng 1, máy sẽ đến trạng thái 3 và di chuyển sang phải

37

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 38

Mô Hình Hình Thức Tính Toán

Khi máy ở trạng thái 3, lệnh 6 và lệnh 7 làm cho máy di chuyển sang phải mà không thay đổi nội dung dải băng Khi máy gặp ký tự trống bên phải lần nữa, lệnh 8 sẽ làm cho máy dừng

Trong trạng thái 2, nếu máy gặp bit 1, lệnh 5

sẽ làm cho 1 được thay bằng 0, máy vẫn ở trạng thái 2 và di chuyển tiếp sang trái cho đến khi gặp bit 0, khi này lệnh 4 được thực thi như đã mô tả ở trên

Ví dụ số nhị phân là 010, máy Turing sẽ tạo các nội dung như sau trên dải băng khi nó thực thi:

38

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 39

Mô Hình Hình Thức Tính Toán

0 1 0 Δ Δ nội dung ban đầu

1 0 1 Δ Δ lấy bù 1 hoàn tất

1 0 0 Δ Δ sau khi thực thi lệnh 5

1 1 0 Δ Δ sau khi thực thi lệnh 4

1 1 0 Δ Δ dừng sau khi thực thi lệnh 8

Máy Turing thực hiện trên nhiều giá trị nhập nhưng không phải tất cả Giả sử nội dung của dải băng ban đầu đều là 0:

0 0 0 Δ Δ nội dung ban đầu

Sau khi thực hiện lấy bù 1, tất cả các bit 0 thành 1:

1 1 1 Δ Δ

39

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Trang 40

Mô Hình Hình Thức Tính Toán

Khi này lệnh 5 được thực thi để tìm các bit 1

và thay bằng 0 Trong trường hợp này, không bao giờ máy gặp bit 0 để làm cho lệnh

4 thực thi và đưa máy vào trạng thái 3 để máy di chuyển vào cuối dải bằng và kết thúc thích hợp

40

Các v ấn Đề CSKH Của Máy Tính Th.S GVC Tô Oai Hùng

Ngày đăng: 09/05/2021, 18:20

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm