Tải bản đầy đủ (.pdf) (10 trang)

Tài liệu CÁC PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN TRÊN MÁY TÍNH pdf

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 (258.95 KB, 10 trang )

03/04/2008
1
CÁC PHƯƠNG PHÁP
GIẢI QUYẾT BÀI TOÁN
TRÊN MÁY TÍNH
Phạm Thế Bảo
Khoa Toán – Tin học
Trường Đại học Khoa học Tự nhiên Tp.HCM
Phân lọai
1
Ph

iế
1
.
Ph
ương p

ptrựct
iế
p
2. Phương pháp gián tiếphoặc tìm kiếmlờigiải
Phạm Thế Bảo
03/04/2008
2
Phương pháp trựctiếp
• Xác định trựctiếp đượclờigiải qua mộtthủ tục tính toán
(công thức, hệ thức, định luật, …) hoặc qua các bướccăn
bản để có đượclờigiải.
Việ
iải


ết

đề

á
tí h
hỉ

th

lậ
tì h

Việ
cg
iải
quy
ết
v

n
đề
t
r
ê
nm
á
y

n

h
c
hỉ

th
ao

c
lậ
p
t
r
ì
n
h
hay là sự chuyển đổilờigiảitừ ngôn ngữ tự nhiên sang
ngôn ngữ máy tính Æ kỹ thuậtlập trình trên máy tính.
• Có ba loạicơ bản:
o Lọai thứ nhất, dùng để biểudiễn cho các bài toán đãcólờigiải
chính xác bằng một công thứctoánhọcnàođó.
ví dụ: tính tổngnsố nguyên dương.



(1)
1 2
2
nn
n
+

++ + =
o Loạith

hai,
b
i

udi

n cho các
b
ài toán có công thứcgiảig

n đúng
(công thức tính sin, cos, giảiphương trình siêu việt, …).
ví dụ:giảiphương trình bậc2
o Loạicuối cùng, biểudiễn các lờigiải không tường minh bằng kỹ
thuật đệ quy.
Phạm Thế Bảo
Chuyển đổidữ liệu bài toán thành dữ liệuchương trình
Nguyên lý 1: Dữ liệucủabàitoánsẽđượcbiểudiễnlạidướidạng
các biếncủachương trình thông qua các quy tắcxácđịnh của

ngôn ngữ lập trình cụ th

1. Biến-phương tiệnbiểidiễndữ liệucủachương trình
2. Thay đổi giá trị củabiến-lệnh gán
3. Kiểudữ liệu
4. Hằng số
5

Cấu
trúc
một
chương
trình
5
.
Cấu
trúc
một
chương
trình
Phạm Thế Bảo
03/04/2008
3
Chuyển đổi quá trình tính toán của bài toán
thành các cấutrúccủachương trình
• Nguyên lý 2 (Định lý Bohn-Jacopini): Mọi quá trình tính
toá
n
đềucóthể mô tả và thựchiệndựatrên
b
acấutrúcc
ơ
bản: tuầntự,rẽ nhánh và lặp.
1. Cấutrúctuầntự
2. Cấutrúcrẽ nhánh
1. Rẽ nhánh có điềukiện: if (condition)
• rẽ nhánh đơn: if ()
• rẽ nhánh đôi: if () else

2.
Rẽ
nhiều
nhánh
: case
2.
Rẽ
nhiều
nhánh
:

case
3. Rẽ nhánh không có điềukiện: LABEL và GOTO
3. Cấutrúclặp:
1. Lặpxácđịnh
2. Lặp không xác định
Phạm Thế Bảo
Phân chia bài toán ban đầu thành những
bài toán nhỏ hơn
• Nguyên lý 3: Mọibàitoánlớn đềucóthể giải quyếtbằng
cách
phân
chia
thành
những
bài
toán
nhỏ
hơn
cách

phân
chia
thành
những
bài
toán
nhỏ
hơn
1. Thủ tụcvàhàm-phương pháp phân chia chương trình thành
những chương trình con.
2. Biếncụcbộ và biếntoàncục
3. Tham số -dữ liệu đầuvào/đầuracủahàm
Phạm Thế Bảo
03/04/2008
4
Biểudiễn tính toán không tường minh bằng đệ quy
• Nguyên lý 4: quá trình đệ quy trong máy tính không đơngiản
như
các
biểu
thức
quy
nạp
trong
toán
học
như
các
biểu
thức

quy
nạp
trong
toán
học
• Xem phầntrước.
Phạm Thế Bảo
Phương pháp gián tiếp
• Đượcsử dụng khi chưatìmralờigiải chính
á


đề
x
á
cc

av

n
đề
.
• Đây là cách tiếpcậnchủ yếucủaloàingười
từ xưa đếnnay.
• Lờigiảitrựctiếpbaogiờ cũng tốthơn, nhưng
không
phải
lúc
nào
cũng


không
phải
lúc
nào
cũng

Phạm Thế Bảo
03/04/2008
5
Phân lọai phương pháp gián tiếp
1. Phương pháp thử -sai

1. Thử -saihệ th

ng
2. Thử - sai phân lớp
3. Thử -saingẫu nhiên
2. Phương pháp Heuristic
3
Phương
pháp
trí
tuệ
nhân
tạo
3
.
Phương
pháp

trí
tuệ
nhân
tạo
Phạm Thế Bảo
Phương pháp thử -sai
Thomas Edison – phát biểu cách tìm một cây kim trong một
đống rơm: “trong khi chưa nghĩ ra đượcmột cách thậthay
thì cứ việc rút từng cọng rơmchođến khi rút đượccây
kim”.
Phương pháp này dự trên 3 nguyên lý:
1. Nguyên lý vét cạn(duyệttoànbộ): liệtkêtấtcả các trường hợp
xảy ra và xem xét chúng.
Ví dụ:liệtkêtấtcả số nguyên tố từ m đếnn.
2. Nguyên lý ngẫu nhiên: dựatrênviệcthử mộtsố khả năng được
chọnmột cách ngẫu nhiên trong tậpkhả năng (thường rấtlớn,
nếuápdụng nguyên lý toàn bộ sẽ tốnnhiềuthờigian).Khả
năng
tìm
lời
giải
đúng
(
hoặc
gần
đúng
)
sẽ
phụ
thuộc

vào
chiến
năng
tìm
lời
giải
đúng
(
hoặc
gần
đúng
)
sẽ
phụ
thuộc
vào
chiến
lượcchọnngẫu nhiên và mộtsốđiềukiệncụ thể.
Ví dụ:kiểmtrachấtlượng trong quá trình sảnxuấtcủamột đoàn kiểmtra.
Một lô hàng có 1000 thùng, chọnngẫu nhiên 10 thùng, mỗi thùng có
24 sảnphNm, chọnngẫu nhiên 5 sảnphNm,
Phạm Thế Bảo
03/04/2008
6
N guyên lý được phát triên thành phương pháp Monté-Carlos.
Càng ngày nguyên lý ngẫu nhiên càng phát triểnmạnh mẽ,
trong sốđócómộtphương pháp nổibậtlàphươn gpháp
Genetic
.
3. N guyên lý mê cung: nguyên lý này đượcápdụng khi chúng ta

khô
biết
hí h
á
"
hì h
d
"

lời
iải
à
hải
â
khô
ng
biết
c

n
h
x
á
c
"

n
h
d
ạng

"
c

a
lời
g
iải
,m
à
p
hải
x
â
y
dựng lờigiảidần qua từng bước, giống như tìm đượcrakhỏi
mê cung.
Phạm Thế Bảo
Thử sai - hệ thống
1. N guyên lý vét cạntoànbộ:muốn tìm cây kim trong đống
rơm, hãy lầnlượt rút từng cọng rơm đến khi rút đượccây
kim.
Thuậtgiải: gọi D là không gian bài toán (tậptấtcả khả năng
xảyra),D={(x
1
,x
2
, ,x
n
)/x
i

∈D
i
vớiD
i
là tậphữuhạncóm
i
phầntử}.
gọi f: D {true, false} là quy tắcxácđịnh lờigiải.
Ví dụ:một đàn gà và mộtbầy chó có tổng cộng N chân, đàn

đông
hơn
bầy
chó
M
con
Hỏi

bao
nhiêu


chó
?

đông
hơn
bầy
chó
M

con
.
Hỏi

bao
nhiêu


chó
?
Phạm Thế Bảo
03/04/2008
7
2. N guyên lý mắtlưới: lướibắtcáchỉ bắt đượcnhững con cá có
kích thướclớnhơnkíchthướcmắtlưới.
Ví dụ:
Tìm nghiệmphương trình trong một đoạn
Khử nhiễu trong ảnh
3. N guyên lý mê cung: Muốn thóat khỏimêcungthìphảibiết
quay lui và biết đánh dấunhững nơi đã đi qua.
Ví dụ:
Tìm đường đingắnnhất
Phạm Thế Bảo
Thử - sai phân lớp
1. N guyên lý chung về giảm độ phứctạpcủathử - sai: thu hẹp
tập
trường
hợp
trước


trong
khi
duyệt
,
đồng
thời
đơn
giản
tập
trường
hợp
trước

trong
khi
duyệt
,
đồng
thời
đơn
giản
hóa tối đa điềukiệnchấpnhậnmộttrường hợp.
2. Quy tắc:
1. đơngiản điềukiện: tránh tính lại trong vòng lặpvàthừakế kếtquả
tính toán củabướctrước: tổ hợpchỉnh hợp, heap sort,
2. Kỹ thuậtcầm canh: mã đituần,
• số âm đầutiêntrongmảng: điềukiện while(x[i]>0&&i<=n) do có bao nhiêu so
áh
?
iế

l i
[
1
]
1
hil ( [
i
]
0
)
d
s
á
n
h
?
v
iết
l

i
: a
[
n+
1
]
=-
1
;w
hil

e
(
x
[
i
]
>
0
)
d
o
3. N guyên lý thu gọn không gian tìm kiếm: loạibỏ những
trường hợphoặc nhóm trường hợpchắcchắn không dẫn đến
lờigiải.
Phạm Thế Bảo
03/04/2008
8
• Quy tắc rút gọn:
1. Dựatrênđánh giá toàn cục: tìm điềukiện để rút gọntậpkhả năng đề
cử trong mộtbướcxâydựng một thành phần.
Ví dụ: tìm tổ hợpchặpncủak.
2. Dựatrênđánh giá cụcbộ:xâydựng phép kiểmtrađơngiản để nhanh
chóng
loại
bỏ
được
các
khả
năng
cho

thành
phần
x[
i
]

không
phải
chóng
loại
bỏ
được
các
khả
năng
cho
thành
phần
x[
i
]

không
phải
xây dựng toàn bộ n-i thành phầncònlạicủalờigiải.
Ví dụ:chosáusố tự nhiên A={1,7,2,9,3,5}. Tìm dãy con củaAsao
cho tổng các phầntử trong dãy con bằng 8.
4. N guyên lý đánh giá nhánh cận: nhánh có chứaquả phảinặng
hơntrọng lượng củaquả.
Ví dụ: bài toán ngườidulịch.

5. Quay lui không dùng đệ quy
6. Phương pháp sinh lờigiải
Phạm Thế Bảo
Phương pháp Heuristic
• Trong nhiều bài toán dùng phương pháp thử -sai
sẽ
dẫn
đến
số
lượng
thử
quá
lớn
không
chấp
sẽ
dẫn
đến
số
lượng
thử
quá
lớn
không
chấp
nhận được.
• Heuristic chính là ướclượng về khả năng dẫn đến
lờigiảicủamộttrạng thái: phương pháp vét cạn
nhưng có thêm tri thức đikèm,tối ưucụcbộ,
nguyên lý hướng đích, nguyên lý sắpthứ tự,



dụ
:

dụ
:

Mộtembébị lạc đường về nhà, em nhớ nhà mình cao
nhất trong khu vực, em sẽ tìm đến tòa nhà cao nhất
trong vùng em thấy, rồilạitiếptục ,
Giảiphương trình bậc2,đoán nghiệmtheoVi-ét
Phạm Thế Bảo
03/04/2008
9
Tìm kiếm theo chiều sâu và chiềurộng
• Là thử - sai theo nguyên lý mê cung hay
hí h

thử
i
kết
h
lầ
c

n
h

thử

-sa
i
kết
h
ợp
lầ
nngược.
• N gượcvớitìmkiếmtheochiềusâu,tìmkiếm
theo chiềurộng mang hình ảnh củavếtdầu
loang.
Phạm Thế Bảo
GiảithuậtA
*
Phương pháp trí tuệ nhân tạo
• "Dạy" máy tính để có "trí thông minh" như
ời
bắt
h ớ
khả
ă
"
l ậ
"

con ngư
ời
bắt
c
h
ư


c
khả
n
ă
ng
"
suy
l
u

n
"
c

a
con người.
ví dụ: bài toán đong nước, có 3 bình A, B, và
C có dung tích 5, 8, và 13 lít. Làm sao đong
được
11
lít
nước
trong
bình
C?
Bình
C
ban
được

11
lít
nước
trong
bình
C?
Bình
C
ban
đầu đầynước.
Phạm Thế Bảo
03/04/2008
10
Mộtsố phương pháp chuyểngiaotri
thức
1. Biểudiễntri thức
2. Hệ chuyên gia
3. Máy học
Phạm Thế Bảo

×