Module 7: Thuật toán

Câu hỏi và bài tập

1. Thuật toán là gì? Cho ví dụ.

3. Cho tam giác ABC có góc vuông A và cho biết cạnh a và góc B. Hãy viết thuật toán để tính góc C, cạnh b và cạnh c.

4. Trình bày tính chất xác định của thuật toán và nêu rõ nghĩa của tính chất này.

5*.Hãy phát biểu thuật toán để giải bài toán sau: "Có một số quả táo. Dùng cân hai đĩa (không có quả cân) để xác định quả táo nặng nhất"

6. Xác định input và output cho các thuật toán sau đây:

a) Rút gọn một phân số.

b) Kiểm tra xem ba số cho trước a, b và c có thể là độ dài ba cạnh của một tam giác hay không?

c) Tính trung bình cộng của hai số.

d) Dùng một cốc phụ để tráo nước ở hai cốc cho trước.

e) Tìm chu vi và diện tích của hình tròn có bán kính cho trước.

7. Chỉ dùng phép cộng, viết thuật toán để từ số tự nhiên n, tính số n2

 

Câu hỏi trắc nghiệm

Thời gian: Không giới hạn


Hướng dẫn:Chọn phương án trả lời tốt nhất cho các câu hỏi sau:

 
 
 
 
 
 
 
 
 
Câu 1
 

Có người đề xuất cách giải bài toán sau "Vừa gà vừa chó; bó lại cho tròn;  Có N con; M chân. Hỏi có mấy gà mấy chó?" như sau:

Bước 1. Lấy số chó giả định là 1

Bước 2. Nhân số chó với 4 để tìm số chân chó

Bước 3. Lấy M trừ đi chân chó để tìm số chân gà

Bước 4. Chia số chân gà cho 2 để tìm số gà

Bước 5. Kiểm tra tổng số gà + số chó nếu bằng N thì dừng và đó là kết quả. Nếu không thực hiện bước 6

Bước 6. Tăng số chó lên 1 và chuyển tới bước 2

Khẳng định nào đúng

 
Quá trình mô tả trên là một thuật tóan
Quá trình trên không phải là một thuật tóan vì mặc dù xác định và dừng nhưng thử hết mọi khả năng thì không đáng gọi là giải thuật.
Không xác định được tính xác định và tính dừng vì còn phụ thuộc vào M và N mà ta chưa biết
Quá trình trên đúng là một giải thuật nhưng chưa đầy đủ vì cần thêm các buớc xử lý những trường hợp M, N chưa thích hợp
 
Câu 2
 

Có người đề xuất cách giải bài toán cổ "Trăm trâu trăm bó cỏ. Trâu đứng ăn 5; trâu nằm ăn 3; trâu gia 3 con ăn 1. Hỏi mỗi loại trâu có bao nhiêu con ?" như sau:

Lần lượt thử số trâu đứng từ 0 đến 20 (vì không thể có quá 20 trâu đứng); với mỗi số đã chọn nhân với 5 tìm số cỏ đã bị ăn.

Với mỗi số trâu đứng đã chọn thử với số trâu nằm từ 0 đến 33 . Với mỗi số trâu nằm tính tổng số cỏ mà cả trâu đứng và trâu nằm đã ăn.

Với mỗi số trâu đứng và trâu nằm đã chọn, lấy 100 trừ đi số trâu đứng và trâu nằm để tìm số trâu già. Lấy 100 trừ đi số cỏ mà trâu đứng và trâu nằm đã ăn để tìm số cỏ còn lại sau đó kiểm tra số trâu già có gấp 3 số cỏ còn lại. Nếu đúng tuyên bố nghiệm

Nếu không tìm được bộ 3 số trâu đứng, trâu nằm, trâu già thoả mãn thì tuyên bố vô nghiệm

 
Quá trình mô tả trên là một giải thuật
Quá trình trên không phải là một giải thuật vì vi phạm tính xác định và tính dừng
Quá trình trên không phải là một giải thuật vì vi phạm tính xác định
Quá trình trên không phải là một giải thuật vì vi phạm tính dừng
Quá trình trên không phải là một giải thuật vì mặc dù xác định và dừng nhưng thử hết mọi khả năng thì không đáng gọi là giải thuật.
 
Câu 3
 

Xét các cách tìm USCLN của hai số tự nhiên m và n qua các giải thuật sau đây

 

Cách 1.

 Chỉ dẫn 1: Phân tích m và n thành các thừa số nguyên tố

 Chỉ dẫn 2: Tính tích của các uớc số chung với số mũ nhỏ nhất

 

B. Cách 2

 Chỉ dẫn 1: Nếu m = n thì USCLN(m,n) lấy là m. Nếu không thực hiện chỉ dẫn 2

 Chỉ dẫn 2: Nếu m > n thì bớt m một lượng n và quay lại thực hiện chỉ dẫn 1. Nếu không thực hiện chỉ dẫn 3

 Chỉ dẫn 3:  Bớt n một lượng m và quay lại thực hiện chỉ dẫn 1

 

C. Cách 3

 Chỉ dẫn 1: Nếu m = n thì USCLN(m,n) lấy là m. Nếu không thực hiện chỉ dẫn 2

 Chỉ dẫn 2: Nếu n > m thì tráo đổi giá trị m và n và thực hiện chỉ dẫn 3

 Chỉ dẫn 3:  Thay m bởi số dư của phép chia m cho n sau đó quay lại thực hiện chỉ dẫn 1

Nếu tính độ phức tạp tính toán của giải thuật là số phép tính số học phải thực hiện thì giải thuật nào tốt nhất

 
cách 1
cách 2
cách 3
D. không cách nào tốt hơn cách nào vì còn phụ thuộc vào trường hợp cụ thể
 
Câu 4
 

Có một giải thuật được mô tả như sau

Cho 2 số tự nhiên m và n, ta tính số x theo quy trình sau

Bước 1. Cho x = 0

Bước 2. Kiểm tra m chẵn hay lẻ, nếu m chẵn thì thực hiện chỉ dẫn 3 nguợc lại thực hiện chỉ dẫn 5

Bước 3. Nếu m > 0 thì thực hiện chỉ dẫn 4 ngược lại dừng quá trình tính toán.

Bước 4. Gấp đôi x và giảm m đi 2 lần  sau đó quay về bước 2

Bước 5. Tăng x lên một lượng là n, giảm m đi 1 và quay lại bước 2

Cho biết giải thuật này tính gì
 
m%n
m+ 2n
m.n
Không có quy luật gì đặc biệt
 
Câu 5
 

Thực hiện giải thuật sau và cho biết kết quả là gì

Cho số tự nhiên m, tính n theo quá trình sau

Bước 1. Cho n = 1, cho i = 1

Bước 2  Nếu m > 1 thì thực hiện bước 3. Nếu m = 1 thì dừng tính toán

Bước 3 giảm m đi 1 và tăng i thêm 2 đơn vị sau đó tăng n thêm i đơn vị. Quay  trở lại bước 2.

Quá trình này tính:

 
m2
2m
Không có quy luật gì đặc biệt
 
Câu 6
 

Có n gói hàng đáng lẽ phải nặng như nhau nhưng có một gói sai quy cách nhẹ hơn các gói khác. Một sinh viên đã viết giải thuật sau để tìm gói hàng này bằng cách dùng cân đĩa theo nguyên lý thăng bằng.

Bước 0. Lấy một cái rổ bỏ tất cả hàng vào

Bước 1. Nếu rổ chỉ có 1 gói thì đó chính là gói hàng khuyết. Dừng quá trình tìm. Nếu  không thực hiện bước 2

Bước 2. Chia số hàng trong rổ thành 3 đống 1,2,3 trong đó đống 1 và đóng 2 có số lượng bằng nhau rồi làm tiếp bước 3.

Bước 3. Đặt lên cân đĩa hai nhóm 1 và 2. Nếu cân thăng bằng thì bỏ nhóm này đi và để vào rổ đống hàng thứ 3. Nếu cân không thăng bằng thì bỏ đống nhẹ hơn vào rổ rồi quay về bước 1.

 
Giải thuật sai, cần sửa như sau: Bỏ bước 1 và thay trong bước 3 câu "quay về bước 1" bằng"quay về bước 2"
Giải thuật này sai và cần sửa bước 2 như sau: "Chia số hàng trong rổ thành 3 đống 1,2,3 có số lượng gói là m, m và n sao cho n chỉ hơn kém m tối đa là 1 điều này luôn luôn làm được"
Giải thuật này sai và cần sửa bước 3 như sau "Chọn gói nhẹ hơn bỏ vào rổ rối quay lại bước 2
Bỏ đi bước 0 vì không cần thiết
Giải thuật này đúng . Không cần phải sửa
 
Câu 7
 

Tính dừng của thuật toán được hiểu là

 
Sau một số hữu hạn bước tính toán thì phải gặp yêu câu dừng đối với mọi dữ liệu nằm trong phạm vi được quy định của thuật toán
Không thể kéo dài mãi tiến trình tính toán
Thuật toán phải quy định những điều kiện để đảm bảo tính toán phải dừng sau một số hữu hạng bước
 
Câu 8
  Tính xác định của thuật toán có nghĩa là:
 
Mục đích của thuật toán được xác định
Sau khi hoàn thành một bước (một chỉ dẫn), bước thực hiện tiếp theo hoàn toàn xác định
Không thể thực hiện thuật toán 2 lần mà nhận được hai output khác nhau
 
Câu 9
 

Tính phổ dụng của thuật toán là:

 
Một thuật toán có thể thực hiện bởi bất kỳ ai
Một thuật toán có thể thực hiện trong bất kỳ điều kiện gì
Một thuật toán có thể ứng dụng cho nhiều input cùng loại
Một thuật toán có thể cho nhiều output tương ứng với nhiều input
 

Câu 10:   

 

Xác đinh Input của bài toán tìm tất cả các số nguyên tố nhỏ hơn một số cho trước

 

Không có input
Số cho trước
Điều kiện là Nguyên tố

Câu 11:  

 

Trong một trường học đã có cơ sở dữ liệu (hồ sơ trên máy tính) của tất cả học sinh trong trường. Bài toán in ra danh sách học sinh của lớp x nào đó có input là gì

 

Danh sách học sinh của cả trường
Tên của lớp X
Cả A và B
Cả A và B đều sai

Câu 12:   

 

 Một người viết chương trình chơi cờ vua. Bài toán chơi cờ có input là

 

Nước đi của người chơi
Nước đi của cả người chơi và máy chơi
Nước đi của người chơi và thời gian đi từng nước của người chơi
Nước đi của người chơi, thời gian đi từng nước của người chơi và thời gian chơi của máy đối với từng nước đi của nó

Câu 13:  

 

 Một người viết chương trình chơi cờ vua. Bài toán chơi cờ có output là

 

Nước đi của máy
Nước đi của máy và thời gian đi tương ứng với mỗi nước của máy
Nước đi của máy và của người chơi
Nước đi của máy và của người chơi kèm theo thời gian của mỗi nước đi

Câu 14:   

 

Tính khả thi của thuật toán được hiểu là

 

Có thể thực hiện được trong điều kiện có máy tính rất mạnh
Có thể thực hiện được nếu không khó
Có thể thực hiện được

Câu 15:   

 

Có một phương pháp tính gọi là Monter-Carlo để tính dựa vào các đặc trưng xác xuất, người ta phải chế ra các số ngẫu nhiên. Mỗi khi yêu cầu, máy tính lại đưa ra một con số không dự đoán được trước. Có thể nói rằng bài toán đưa ra một số ngẫu nhiên có thuật toán vi phạm tính xác định không?

 

Không

Câu 16:   

 

Cho một số x và một dãy l các số a1, a2…ai… ak được xếp theo chiều tăng dần. Ta thi hành thụât toán xác định x có ở trong dãy không và nếu có thì ở vị trí nào

Bước 1: cho  m=1, i= 1 và n=k

Bước 2: Lấy  i =  [(m+n)/2]   (hàm phần nguyên) sau đó kiểm tra x= ai, nếu đúng chuyển tới bước 5,  nếu sai thực hiện  bước 3

Bước 3: Nếu x < ai, thay m bằng i và quay lại bước 2, nếu không thực hiện bước 4

Bước 4: Thay n bằng  i và quay lại bước 2

Bước 5: Tuyên bố x là phần tử thứ i

Khẳng định nào sai

 

Thuật toán này không xác định được trường hợp khi x không có mặt trong dãy
Thuật toán luôn luôn dừng
Cho dù có giả thíêt chắc chắn x có mặt trong dãy nhưng nếu xếp dãy số theo thứ tự giảm dần thì thuật toán cũng sai
Thuật toán sẽ không có giá trị nếu dãy ai không được sắp theo thứ tự tăng dần

Câu 17:   

 

Cho thuật toán sau

Bước 1. Cho S = 1, i = 1, u = 1, x

Bước 2. Tính  U:= U.x/i;   S := S + U; i:=i+1  (các phép tính thực hiện đúng theo thứ tự)

Bước 3. Nếu i <100 quay lại bước 2, nếu không chuyển xuống bước 4

Bước 4. Lấy output S

Thuật toán này tính gì

 

Tính sin x theo khai triển Taylor đến số hạng thứ 100
Tính sin x theo khai triển Taylor đến số hạng thứ 99
Tính ex theo khai triển Taylor đến số hạng thứ 100
Tính ex theo khai triển Taylor đến số hạng thứ 99

Câu 18:   

 

Cho thuật toán sau

Bước 1. Cho S = 0, i = 1, u = 1, x

Bước 2. Tính   S := S + U; U:= -U.x2/((i+1)(i+2));  i:=i+2

Bước 3. Nếu i <100 quay lại bước 2, nếu không chuyển xuống bước 4

Bước 4. Lấy output S

Thuật toán này tính gì 

 

Tính sin x theo khai triển Taylor đến số hạng thứ 50

Tính sin x theo khai triển Taylor đến số hạng thứ 49

Tính ex theo khai triển Taylor đến số hạng thứ 50

Tính ex theo khai triển Taylor đến số hạng thứ 49