Tải bản đầy đủ (.ppt) (212 trang)

nâng cao năng lực dạy học 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 (4.93 MB, 212 trang )

1
1
Nâng cao năng lực
Nâng cao năng lực
dạy học Thuật toán
dạy học Thuật toán
Nguyễn Thế Dũng
Nguyễn Thế Dũng
Khoa Tin học – ĐHSP Huế.
Khoa Tin học – ĐHSP Huế.
/> />2
2
Nội dung
Nội dung
Chủ đề 1: Giới thiệu về thuật toán
Chủ đề 2: Phân tích tính hiệu quả của thuật toán
Chủ đề 3: Phương pháp “tham lam”
Chủ đề 4: Phương pháp “chia để trị”
Chủ đề 5: Phương pháp qui hoạch động
Chủ đề 6: Thuật toán trên đồ thị
Chủ đề 7: Phương pháp xác suất
Chủ đề 8: Về độ phức tạp tính toán
3
3
Tài liệu tham khảo
Tài liệu tham khảo
1. Nâng cao năng lực dạy học thuật toán – Nguyễn Đức Nhuận –
Nguyễn Thế Dũng.
2. Giải thuật và lập trình – Lê Minh Hoàng.
4
4


Tài liệu tham khảo
Tài liệu tham khảo
3. Thuật Toán – Nguyễn Xuân Huy.
4. Một số vấn đề chọn lọc trong Tin học -
Nguyễn Xuân My và một số tác giả.
5. Lý thuyết độ phức tạp tính toán - Phan Đình Diệu.
6. Trí tuệ nhân tạo – Hoàng Lan Giao – ĐHKH Huế.
7. Slide này có tham khảo slide Phân tích – thiết kế thuật toán –
Phan Hà Hạnh Dương – ĐHQG Hà Nội
Một số khó khăn trong dạy học lập trình
Một số khó khăn trong dạy học lập trình

Học sinh khó hiểu.

Chuyển sang lập trình rất khó khăn.

Sự khác nhau giữa lập trình và thuật toán.

Cái nhìn về thuật toán chưa khái quát.

Phân lớp, đánh giá thuật toán…

Nói chung dạy và học thuật
toán là khó, đòi hỏi đam mê!!!.

Vì sao??? Làm sao???

Kinh nghiệm giảng dạy bồi dưỡng.

Quan điểm nhận xét về chương trình, nội dung liên quan đến thuật

toán.

Trao đổi 1 bài dạy về lập trình cụ thể.

7
7
Chủ đề 1: Giới thiệu về thuật toán
Chủ đề 1: Giới thiệu về thuật toán
I.
Khái niệm thuật toán
II.
Một số ví dụ
III.
Đánh giá thuật toán trong trường hợp xấu nhất và theo trung
bình
IV.
Về thuật toán hiệu quả
V.
Một số bài toán cụ thể
VI.
Cấu trúc dữ liệu
8
8
Khái niệm về thuật toán
Khái niệm về thuật toán
Thuật toán:
Dữ kiện vào
K
ế
t


q
u


r
a
Quá trình tính toán
Một dãy các bước tính toán
Một dãy số
D
ã
y

s


đ
ư

c

s

p

x
ế
p
Thuật toán sắp xếp


Một định nghĩa bài bản về thuật toán xin xem thêm trong các giáo
trình “Automat và ngôn ngữ hình thức”.

Có liên quan đến Máy tính điện tử logic – máy Turing, tính giải
được của bài toán và lý thuyết hàm đệ qui.
10
10
Đánh giá thuật toán
Đánh giá thuật toán
Giải quyết một bài toán.
Vấn đề:
Có nhiều thuật toán. Chọn thuật toán nào ?
Mô hình hóa
Lập chương trình
Viết thuật toán
11
11
Phương pháp đánh giá
Phương pháp đánh giá
Phương pháp thực nghiệm: Lập trình, và thử trên các ví dụ xem thuật
toán nào nhanh.
Phương pháp lý thuyết: Tính toán thời gian, bộ nhớ, … cần thiết của
mỗi thuât toán dựa theo độ lớn của dữ liệu vào.
Ưu điểm: - không phụ thuộc ngôn ngữ lập trình, loại máy tính
- Biết được tính hiệu quả của thuật toán đối với các dữ
liệu có kích thước lớn.
12
12
Đánh giá thuật toán trong trường

Đánh giá thuật toán trong trường
hợp xấu nhất và theo trung bình
hợp xấu nhất và theo trung bình
Ví dụ: Sắp xếp lựa chọn
Select-Sort
(A){
for i=1 to n-1 do {
index = i; x = T[i];
for j= i+1 to n do {
if T[j] < x then { index = j; x = T[j];}
}
T{index = T{i};
T{i} = x;
}
}
13
13
Ví dụ
Ví dụ
Hãy chạy thuật toán
Insertion-Sort
Merge-Sort
Đối với các bảng sau :
A = [3,1,4,1,5,9,2,6,5,3]
B = [1,2,3,4,5,6]
C = [6,5,4,3,2,1]
14
14
Thời gian chạy trong trường hợp xấu nhất: là cận trên đối với mọi dữ
liệu vào.

Thời gian chạy trung bình: thường khó phân tích và đánh giá hơn.
15
15
Ví dụ: dãy Fibonacci
Ví dụ: dãy Fibonacci
Dãy Fibonacci được định nghĩa:
F(0) = 0, F(1) = 1, và
F(n) = F(n-1) + F(n-2) với n > 1.
Tìm thuật toán tính số Fibonacci thứ n.
16
16
Thuật toán thứ nhất và thứ hai
Thuật toán thứ nhất và thứ hai
function
fib1(n){
if n < 2 then return n;
else return fib1(n-1) + fib2(n-2);
}
function
fib2(n){
a= 0; b = 1;
for k = 1 to n do {c=b; b = a+b; a=c;}
return b;
}
17
17
Thuật toán thứ ba
Thuật toán thứ ba
fonction
fib3(n){

i = 1; j = 0; k = 0; h = 1;
while n>0 do {
if (n lẻ) then { t = j*h;
j = i*h + j*k +t;
i = i*k +t;}
t = h^2;
h = 2*k*h+t;
k = k^2+t;
n = n div 2;
}
return j;
}
18
18
Ví dụ về thời gian chạy
Ví dụ về thời gian chạy
(Pascal, CDC Cyber 835)
(Pascal, CDC Cyber 835)


n
n
10
10
20
20
30
30
50
50

100
100
1000
1000
0
0
1
1
000
000
000
000
1000
1000
0000
0000
0
0
fib1
fib1
8 ms
8 ms
1 s
1 s
2 min
2 min
21
21
days
days

fib2
fib2
1/6
1/6
ms
ms
1/3
1/3
ms
ms
½ ms
½ ms
¾ ms
¾ ms
3/2
3/2
ms
ms
150
150
ms
ms
15 s
15 s
25
25
min
min
fib3
fib3

1/3
1/3
ms
ms
2/5
2/5
ms
ms
½ ms
½ ms
½ ms
½ ms
½ ms
½ ms
1 ms
1 ms
3/2
3/2
ms
ms
2 ms
2 ms
19
19
Cấu trúc dữ liệu
Cấu trúc dữ liệu
Dãy (list)
type tablist = structure{
value[1 lengthmax]: information elements;
counter: 0 lengthmax;}

type elem = structure{
value: information element;
next: * elem;}
6
7
3
1
4
20
20
Đồ thị
Đồ thị
type adjgraph = structure {
value[1 n]: information elements;
adjacent[1 n, 1 n]: booleans;}
type listgraph = array[1 n] of structure {
value: information element;
neighbours: list; }
1
2
4
3
21
21
Cây
Cây
type treenode = structure{
value: information element;
children: array[ ] of * treenodes;
}

type treenode = structure{
value: information element;
first child: * treenode;
next brother: * treenode;
}
type binarytreenode = structure{
value: information element;
left child, right child: * binarytreenode;
}
a
b c
d
e f
22
22
Tập hợp
Tập hợp
set[1 N]: integer;
fonction find(x){ } // tìm phần tử có giá trị x
procedure merge(a,b) // tìm hợp của hai tập được sắp
Đề tài tiểu luận: Xây dựng các thuật toán mô tả các thao tác cơ bản trên: dãy,
cây nhị phân.
23
23
Chủ đề
Chủ đề
2: Phân tích tính hiệu
2: Phân tích tính hiệu
quả của thuật toán
quả của thuật toán

I.
Các ký hiệu đánh giá tiệm cận
II.
Phân tích thuật toán
III.
Giải các phương trình đệ qui
IV.
Một số ví dụ
24
24
Ký hiệu O:
Ký hiệu O:
O(g(n)) = {f(n): tồn tại hằng số c và N để:
0 ≤ f(n)< c g(n) với mọi n ≥ N}
Đây là một quan hệ thứ tự: phản xứng, “phi đối xứng” và bắc cầu.
25
25
Ký hiệu
Ký hiệu
Ω
Ω


Ω(g(n)) = {f(n): tồn tại hằng số c và N để:
f(n)≥ c g(n) với mọi n ≥ N}
f(n) Є Ω (g(n)) ≈ g(n) Є O(f(n))
Đây là một quan hệ thứ tự: phản xứng, “phi đối xứng” và bắc cầu.

×