1. Trang chủ >
  2. Giáo án - Bài giảng >
  3. Cao đẳng - Đại học >

Biễu diễn thuật toán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (113.58 KB, 14 trang )


ngôn ngữ lập trình (tựa ngôn ngữ lập trình hay còn gọi là giả mã). Trong phần này chúng

ta xem xét kỹ hai ngôn ngữ thường được dùng là sơ đồ khối và giả mã.

2.1. Sơ đồ khối

Sơ đồ khối là một ngôn ngữ dùng để biểu diễn thuật toán. Sơ đồ khối là một công

cụ giúp cho người lập trình có được một cách xem xét sự làm việc của thuật toán khá chi

tiết và cu thể. Sơ đồ khối được quy ước bao gồm các nút là hình elip, chữ nhật hoặc hình

thoi được nối với nhau bởi các đường chỉ hướng chuyển động trong sơ đồ.

Băt đầu

Kết thúc

-



Hai loại nút giới hạn Bắt đầu và Kết thúc thường có hình dạng elip;

Nút chỉ các thao tác, công việc có dạng hình chữ nhật;



i=i+1

- Nút chỉ các điều kiệnBắt

cóđầu

dạng hình thoi: Trong các đường nối với nút điều kiện

này có hai đường đi ra ứng với hai trường hợp điều kiện đúng hoặc điều kiện sai:

- Các đường nối các nút với nhau.

Nhập n, A[1…n]



max:= A(1)

i:=2



True

ĐK



S

False

Ví dụ, sơ đồ khối sau đây

mô tả thuật toán tìm giá trị lớn nhất trong mảng số A có

i<=n

n phần tử.

Đ

S

Max < A(i)



max:= A(i)



i := i + 1



6



In giá trị max



Kết thúc



Đ



2.2. Giả mã

a) Cấu trúc tuần tự: Liệt kê các công việc, các thao tác theo thứ tự. Để hỗ trợ cho việc

theo dõi được thuận tiện cũng có thể thêm số thứ tự.

b) Cấu trúc rẽ nhánh:

 If (điều kiện) Then (công việc);

 If (điều kiện) Then (công việc 1) Else (Công việc 2);

c) Cấu trúc lặp:











For (biến):= (giá trị đầu) to (giá trị cuối) do (công việc);

For (biến):= (giá trị đầu) downto (giá trị cuối) do (công việc);

While (điều kiện) do (công việc);

Repeat

- (công việc 1);

- (công việc 2);

- .....

- (công việc k);

Until (điều kiện);



2.3. Một số thuật toán quy hoạch động

- Bài toán nhân ma trận.

7



- Tìm đường đi ngắn nhất.

- Dãy con dài nhất.



Phần II: BÀI TOÁN TÌM KIẾM

1. Định nghĩa Bài toán tìm kiếm

Bài toán tìm kiếm là: Tìm kiếm một phương án, đáp án theo yêu cầu đầu vào.

VD:



- Cho một danh sách xác định vị trí xuất hiện của một phần tử trong danh sách.

- Tìm kiếm giải pháp lựa chọn để đạt giá trị cực đại trong bài toán cái túi.



Bài toán xảy ra trong hai tình huống:

- Dữ liệu xuất hiện được coi là ngẫu nhiên.

- Dữ liệu thỏa mãn một số ràng buộc nhất định.

2. Phân loại

-Tìm kiếm tuần tự

- Tìm kiếm nhị phân

- Tìm kiếm dựa trên quy hoạch

.......

3. Đánh giá hiệu quả của thuật toán

Tính hiệu quả của thuật toán thông thường được đo bởi thời gian (thời gian được

sử dụng để tính bằng máy hoặc bằng phương pháp thủ công) – độ phức tạp thời gian, khi

các giá trị đầu vào có kích thước xác định. Tính hiệu quả của thuật toán cũng được xem

xét theo thước đo dung lượng bộ nhớ đã sử dụng để tính toán khi kích thước đầu vào đã

xác định – độ phức tạp không gian.

Độ phức tạp không gian gắn liền với việc xem xét các cấu trúc dữ liệu đặc biệt

được dùng để thể hiện thuật toán.

Độ phức tạp thời gian của một thuật toán thường được biểu diễn thông qua số

phép toán trong khi thực hiện thuật toán khi các giá trị dữ liệu đầu vào có kích thước xác

định.

4. Giải thuật tìm kiếm

Bài toán

8



Giả sử R là mảng gồm n bản ghi, bản ghi thứ k có một khóa X(k), với k=1,2...,n. Hãy

tìm bản ghi có khóa bằng (hoặc bé hơn, lớn hơn) giá trị b cho trước.

Giá trị b được gọi là khóa tìm kiếm hay đối trị tìm kiếm. Bài toán được gọi là giải

xong nếu như tìm được bản ghi thứ k nào đó mà X(k) = b hoặc khẳng định được rằng

không có bản ghi nào thỏa mãn điều kiện đặt ra, tức là X(k) b với mọi k=1,2,...,n.

4.1.Tìm kiếm tuần tự (Sequential Searching)

Ý tưởng

Bắt đầu từ bản ghi thứ nhất (k=1), lần lượt so sánh khóa tìm kiếm b với khóa tương

ứng của các bản ghi trong mảng, cho tới khi hoặc là tìm được bản ghi thỏa mãn điều kiện

hoặc là hết mảng mà không thấy.

Thuật toán

Input: Mảng X[1..n], giá trị b

Output: Chỉ số k [1..n] mà tại đó X(k)=b hoặc 0 nếu X(k) b với k [1..n]

Function TKTT (X: mảng; b: Khóa tìm kiếm): Chỉ số;

Begin

k:=1;

While (X(k) b & (k



n) do k:=k+1;



If k=n+1 then TKTT:=0 else TKTT:=k;

End;

Đánh giá thuật toán

Trong trường hợp xấu nhất ta cần 2n phép so sánh. Tuy nhiên nếu ta thực hiện một

cải tiến nhỏ như sau:

Input: Mảng X[1..n+1], giá trị b

Output: Chỉ số k [1..n] mà tại đó X(k)=b hoặc 0 nếu X(k) b với k [1..n]

Function TKTT (X: mảng; b: Khóa tìm kiếm): Chỉ số;

Begin

9



Xem Thêm
Tải bản đầy đủ (.doc) (14 trang)

×