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

Phương pháp nghiên cứu khoa học Giải quyết ỨNG DỤNG CÁC NGUYÊN TẮC SÁNG TẠO KHOA HỌC TRÊ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 (1.16 MB, 50 trang )

Hoàng Nguyên Khang - CH1301092


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN




BÀI TIỂU LUẬN MÔN HỌC
PHƯƠNG PHÁP LUẬN SÁNG TẠO KHOA HỌC
ĐỀ TÀI:
ỨNG DỤNG CÁC NGUYÊN TẮC SÁNG TẠO
KHOA HỌC TRÊN THUẬT TOÁN





GVHD : GS.TSKH Hoàng Văn Kiếm
Học Viên: Hoàng Nguyên Khang –CH1301092

Lớp : CH08


Tphcm,10-05-2014
LỜI NÓI ĐẦU

Như Lê-Nin từng nói:”học, học nữa, học mãi” – có lẽ sự học là một quá trình lâu
dài và gắn liền với mỗi con người. Xung quanh chúng ta còn rất nhiều điều cần tìm hiểu,
còn nhiều thứ đang đợi ta khám phá. Những phát minh, sáng chế của con người đã thay


đổi rất lớn cách sống, cách sinh hoạt của con người. Tất cả những thứ đó đều từ nghiên
cứu khoa học, sáng tạo của bộ óc con người mà ra. Nghiên cứu khoa học thật sự quan
trọng và cần thiết, nó thúc đẩy nền văn minh của con người.
Chắc không ít người trong chúng ta đã từng cầm trên tay quyên sách “thế giới
phẳng ”(The World is flat) của tác giả Thomas Friedman . Quyển sách khẳng định chúng
ta đang sống trong một kỷ nguyên mới , kỷ nguyên mà con người có thể xích lại gần nhau
hơn, kỷ nguyên thông tin. Công nghệ thông tin là một nghành đang trực tiếp ảnh hưởng
đến đời sống của mỗi người chúng ta.
Như vậy việc nghiên cứu khoa học trong lĩnh vực Công nghệ thông tin là một việc
làm hết sức cần thiết và có ý nghĩa to lớn. Với những nghiên cứu đi đôi với ứng dụng tốt
sẽ làm nên những thay đổi cho cuộc sống của con người, đẩy mạnh và bắt kịp quá trình
thông tin hóa đang diễn ra hiện nay của thế giới.
Môn học “Phương pháp luận sáng tạo khoa học” thực sự có ý nghĩa và cần thiết.
Đây là môn học mang lại những định hướng cần thiết và quan trong cho học viên khi còn
đang nghiên cứu cũng như làm luận văn tốt nghiệp. Dựa vào các nguyên tắc và mũ tư duy
sẽ giúp cho mỗi học viên khi đứng trước một vấn đề nghiên cứu sẽ nhanh chóng tìm ra
được giải pháp để giải quyết vấn đề.
Bài tiểu luận này cá nhân tôi viết nhằm tổng kết, đúc rút cũng như thực hành việc
nghiên cứu dựa trên những lý thuyết được giảng giải trên lớp. Qua đây xin gửi lời cảm ơn
chân thành đến GS.TSKH Hoàng Văn Kiếm đã tận tình dạy bảo và hướng dẫn tôi làm
bài luận này.
Nội dung bài luận ngoài việc tham khảo tài liệu, nội dung hoàn toàn mang quan điểm
của cá nhân, viết theo văn phong cá nhân. Do đó sẽ không thể tránh khỏi những sai sót.
Rất mong thầy và các bạn thông cảm!

Học viên thực hiện
Hoàng Nguyên Khang






MỤC LỤC
Chương I 1
NGHIÊN CỨU KHOA HỌC – NHỮNG KHÁI NIỆM MỞ ĐẦU 1
1. Phân loại theo chức năng nghiên cứu : 1
2. Phân loại theo tính chất của sản phẩm nghiên cứu : 1
Chương II 4
LÀM THẾ NÀO ĐỂ NGHIÊN CỨU KHOA HỌC ĐẠT HIỆU QUẢ 4
1. Trình tự các bước cần tiến hành trong nghiên cứu khoa học 4
2. Các khó khăn thường gặp phải và cách khắc phục 6
3. Những điều nên và không nên làm trong nghiên cứu khoa học 8
Chương III 12
VẤN ĐỀ NGHIÊN CỨU KHOA HỌC CỦA CÁ NHÂN 12
1. Giới thiệu 12
2. Các bước giải quyết một vấn đề bài toán và áp dụng nguyên lý 12
3. Khái quát về các thuật toán, thuật giải, cấu trúc dữ liệu 13
3.1. Phương pháp trực tiếp 13
3.2. Phương pháp thử sai 21
3. 3 Phương pháp Heuristic 26
3.4 Phương pháp trí tuệ nhân tạo 32
Chương IV 46
KẾT LUẬN 46
TÀI LIỆU THAM KHẢO 47

Hoàng Nguyên Khang - CH1301092


1
May 9, 2014


Chương I
NGHIÊN CỨU KHOA HỌC – NHỮNG KHÁI NIỆM MỞ ĐẦU

Nghiên cứu khoa học là một hoạt động xã hội, hướng vào việc tìm kiếm những điều
mà khoa học chưa biết hoặc là phát hiện bản chất sư vật, phát triển nhận thức khoa học về
thế giới hoặc là sáng tạo phương pháp mới và phương tiện kỹ thuật mới để cải tạo thế
giới.
Có nhiều cách phân loại nghiên cứu khoa học. Ở đây ta đề cập đến phân loại theo
chức năng nghiên cứu và theo tính chất của sản phẩm tri thức khoa học thu được nhờ kết
quả nghiên cứu.
1. Phân loại theo chức năng nghiên cứu :
 Nghiên cứu mô tả, là những nghiên cứu nhằm đưa ra một hệ thống tri thức về
nhân dạng sư vật, giúp con người phân biệt được sự khác nhau, về bản chất giữa sự
vật này với sự vật khác. Nội dung mô tả có thể bao gồm mô tả hình thái, động thái,
tương tác; mô tả định tính tức là các đặc trưng về chất của sự vật; mô tả định lượng
nhằm chỉ rõ các đặc trưng về lượng của sự vật.
 Nghiên cứu giải thích, là những nghiên cứu nhằm làm rõ nguyên nhân dẫn đến
sự hình thành và quy luật chi phối quá trình vận động của sự vật. Nội dung của giải
thích có thể bao gồm giải thích nguồn gốc; động thái; cấu tr1uc; tương tác; hậu quả;
quy luật chung chi phối quá trình vận động của sự vật.
 Nghiên cứu dự báo, là những nhiên cứu nhằm nhận dạng trạng thái của sự vật
trong tương lai. Mọi dự báo đều phải chấp nhận những sai lệch, kể cả trong nghiên
cứu tự nhiên và xã hội. Sự sai lệch trong kết quả dự báo có thể do nhiều nguyên
nhân : sai lêch khách quan trong kết quả quan sát: sai lệch do những luận cứ bị biến
dạng trong sự tác động của các sự khác; mội trường cũng luôn có thể biến động, …
 Nghiên cứu sáng tạo, là nghiên cứu nhằm làm ra một sự vật mới chưa từng tồn
tại. Khoa học không bao giờ dừng lại ở mô tả và dự báo mà luôn hướng vào sự sáng
tạo các giải pháp cải tạo thế giới.
2. Phân loại theo tính chất của sản phẩm nghiên cứu :

Theo tính chất của sản phẩm, nghiên cúu được phân loại thành nghiên cứu cơ bản,
nghiên cứu ứng dụng và ghiên cứu triển khai.
Hoàng Nguyên Khang - CH1301092


2
May 9, 2014

Nghiên cứu cơ bản (Fundamental research) là những nghiên cứu nhằmphát hiện
thuộc tính, cấu trúc, động thái các sự vật, tương tác trong nội bộ sự vật và mối liên hệ
giữa sư vật với các sư vật khác. Sản phẩm nghiên cứu cơ bản có thể là các khám phá,
phát hiện, phát minh, dẫn đến viêc hình thành một hệ thống lý thuyết có giá trị tổng
quát, ảnh hưởng đến một hoặc nhiều lĩng vực khoa học, chẳng hạn Newton phát minh
định luật hấp dẫn vũ trụ; Marx phát hiện quy luật giá trị thặng dư. Nghiên cứu cơ bản
được phân thành hai loại : nghiên cứu cơ bản thuần túy và nghiên cứu cơ bản định
hướng.
 Nghiên cứu cơ bản thuần túy, cò được gọi là nghiên cứu cơ bản tự do hoặc
nghiên cứu cơ bản không định hướng, là những nghiên cứu về bản chất sự vật để
nâng cao nhận thức, chưa có hoặc chưa bàn đến ý nghĩa ứng dụng.
 Nghiên cứu cơ bản định hướng, là những nghiên cứu cơ bản đã dự kiến
trước mục đích ứng dụng. các hoạt động điều tra cơ bản tài nguyên, kinh tế, xã
hội, … đều có thể xem là nghiên cứu cơ bản định hướng. Nghiên cứu cơ bản định
hướng được phân chia thành nghiên cứu nền tảng (background research) và nghiên
cứu chuyên đề (thematic research).
 Nghiên cứu nền tảng, là những nghiên cứu về quy luật tổng thể của một hệ
thống sự vật. Hoạt động điều tra cơ bản tài nguyên và các điều kiện thiên nhiên
như địa chất, nghiên cứu đại dương, khí quyển, khí tượng; điều tra cơ bản về kinh
tế, xã hội đều thuộc loại nghiên cứu nền tảng.
 Nghiên cứu chuyên đề, là nghiên cứu về một hiên tượng đặc biệt của sự vật,
ví dụ trạng thái plasma của sự vật, bức xạ vũ trụ, gien di truyền. Nghiên cứu

chuyên đề vừa dẫn đến hình thành những cơ sở lý thuyết, mà còn dẫn đến những
ứng dụng có ý nghĩa thực tiễn.

Nghiên cứu ứng dụng (Applied research) : là sự vận dụng quy luật được phát hiện
từ nghiên cứu cơ bản để giải thích một sự vật, tạo ra những nguyên lý mới về các giải
pháp và áp dụng chúng vào sản xúât và đời sống. Giải pháp được hiểu theo nghĩa rộng
có thể là một giải pháp về công nghệ, về vật liệu, về tổ chức và quản lý. Một số giải
pháp công nghệ có thể trở thành sáng chế. Kết quả nghiên cứu ứng dụng thì chưa ứng
dụng được, để có thể đưa kết quả nghiên cứu ứng dụng vào sử dụng thì còn phải tiến
hành một loại hình nghiên cứu khác có tên gọi lả triển khai.

Nghiên cứu triển khai (Development research) : còn gọi là nghiên cứu triển khai
thực nghiệm hay triển khai thực nghiệm kỹ thuật, là sự vận dụng các quy luật (thu
được từ nghiên cứu cơ bản) và các nguyên lý (thu được từ nghiên cứu ứng dụng) để
đưa ra các hình mẫu với những tham số khả thi về kỹ thuật. Kết quả nghiên cứu triển
khai thì chưa triển khai được: sản phẩm của triển khai chỉ mới là những hình mẫu khả
thi về kỹ thuật, nghĩa là không còn rủi ro về mặt kỹ thuật, để áp dụng được còn
phảitiến hành nghiên cứu những tính khả thi khác như khả thi tài chính, khả thi kinh
Hoàng Nguyên Khang - CH1301092


3
May 9, 2014

tế, khả thi môi trường, khả thi xã hội. Hoạt động triển khai bao triển khai trong phòng
thí nghiệm và triển khai bán đại trà.
 Triển khai trong phòng thí nghiệm : là loại hình triển khai nhằm khẳng định
kết quả sao cho ra được sản phẩm, chưa quan tâm đến quy mô áp dụng. trong
những nghiên cứu về công nghệ, loại hình này được thực hiện trong các phòng
thí nghiệm, labô công nghệ, nhà kính. Trên một quy mô lớn hơn, hoạt động triển

khai cũng được tiến hành trong các xưởng thực nghiệm thuộc viện hoặc xí
nghiệp sản xuất.
 Triển khai bán đại trà : trong các nghiên cứu thuộc lĩnh vực khoa học kỹ
thuật và khoa học công nghệ là một dạng triển khai nhằm kiểm chứng giả thuyết
về hình mẫu trên một quy mô nhất định, thường là quy mô áp dụng bán đại trà,
hay quy mô bán công nghiệp.
Khái niệm triển khai được áp dụng cả trong nghiên cứu khoa học kỹ thuật và xã
hội; trong các nghiên cứu về khoa học kỹ thuật, hoạt động triển khai được áp dụng khi
chế tạo một mẫu công nghệ mới hoặc sản phẩm mới; trong các nghiên cứu khoa học xã
hội có thể lấy ví dụ về thử nghiệm một phương pháp giảng dạy ở các lớp thí điểm; chỉ
đạo thí điểm một mô hình quản lý mới tại một cơ sở được lựa chọn.
Toàn bộ các loại hình nghiên cứu và mối liên hệ giữa các loại hình nghiên cứu được
trình bày trong sơ đồ bên dưới. Sự phân chia loại hình nghiên cứu như trên đây được áp
dụng phổ biến trên thế giới. Phân chia là để nhận thức rõ bản chất của nghiên cứu khoa
học, để có cơ sở lập kế hoạch nghiên cứu, cụ thể hóa các cam kết trong hợp đồng nghiên
cứu giữa các đối tác. Tuy nhiên trên thực tế, trong một đề tài có thể tồn tại cả ba loại hình
nghiên cứu, hoặc tồn tại hai trong ba loại hình nghiên cứu.









Hoàng Nguyên Khang - CH1301092


4

May 9, 2014

Chương II
LÀM THẾ NÀO ĐỂ NGHIÊN CỨU KHOA HỌC ĐẠT HIỆU QUẢ

1. Trình tự các bước cần tiến hành trong nghiên cứu khoa học

Rất nhiều nghiên cứu viên gặp khó khăn trong giai đoạn đầu nghiên cứu vì không
biết làm gì trước, làm gì sau. Do vậy họ thường bố trí công việc nghiên cứu lôn xộn,
không có tổ chức. Điều này trái ngược hoàn toàn với yêu cầu của nghiên cứu khoa
học là phải được tổ chức một cách khoa học, bài bản. Dẫu rằng tùy từng nghiên cứu
cụ thể mà sẽ có các bước tiến hành cụ thể, nhưng tác giả cho rằng người nghiên cứu
nên tiến hành một số bước bắt buộc theo trình tự thể hiện trên hình :



Bước 1: Mô tả các khó khăn trên thực tế

Trong thực tế khi gặp khó khăn thì lúc đó mới cần tiến hành nghiên cứu khoa học
với mục đích là giải quyết các khó khăn đó. Vậy có thể nói việc mô tả các khó
khăn đang gặp phải chính là sự mở đầu cho một nghiên cứu. Có rất nhiều nghiên
Hoàng Nguyên Khang - CH1301092


5
May 9, 2014

cứu không chỉ ra được các khó khăn hiệu hữu vì vậy tác giả không biết được tại
sao những nghiên cứu này lại được tiến hành và nhằm mục đích gì.


Bước 2: Tổng quan về các nghiên cứu liên quan

Đây là thời gian tìm hiểu xem vấn đề dự định nghiên cứu đã và đang được nghiên
cứu bởi các học giả khác chưa, ở mức độ nào qua đó có thể học những điều hay và
tránh được việc lặp lại trong nghiên cứu trước. Tuy nhiên tác giả thấy có rất nhiều
nghiên cứu viên không tìm hiểu về các nghiên cứu đã thực hiện mà bắt tay vào
nghiên cứu ngay, dẫn đến việc không có một cái nhìn tổng quan về cần nghiên
cứu.

Bước 3: Xác định mục tiêu nghiên cứu

Mục tiêu nghiên cứu là những dự định đặt ra để giải quyết được các khó khăn đã
chỉ ra ở bước 1. Nghiên cứu viên phải luôn bám theo các mục tiêu đã đề ra trong
suốt quá trình và phải hoàn thành chúng trước khi nghiên cứu được khép lại. Các
nghiên cứu hiện nay thường thể hiện rất rõ ràng phần này

Bước 4: Phương pháp nghiên cứu

Đây là phần chỉ ra hướng nghiên cứu mà nghiên cứu viên muốn tiến hành để đạt
được mục tiêu đề ra trong bước 3. Thông thường, các phương pháp thu thập dữ
liệu hay thí nghiệm và phân tích chúng phải được thể hiện rõ. Ngoài ra, các giả
thuyết và phạm vi nghiên cứu, kinh phí và thời gian cần thiết, các đề xuất dự định,
… cũng cần phải được chỉ ra một cách rõ ràng.

Bước 5: Dữ liệu thực tế hoặc giả định cụ thể

Dữ liệu là phần rất quan trọng trong nghiên cứu khoa học. Chúng có thể được thu
thập qua quá trình điều tra tại hiện trường hoặc là dữ liệu giả định thu được từ thí
nghiệm, mô phỏng. Những dữ liệu này có thể chỉ ra những phát triển của thực tế
trong quá khứ và hiện tại, qua đó có thể dự đoán tương lai, so sánh với lý

thuyết,… Thông thường, giai đoạn thu thập dữ liệu tiêu tốn rất nhiều thời gian và
tiền bạc của người nghiên cứu và sự chính xác của dữ liệu sẽ ảnh hưởng lớn đến
kết quả cuối cùng của nghiên cứu.

Bước 6: Phân tích dữ liệu hoặc chạy chương trình

Đến đây nghiên cứu khoa học sẽ có 2 hướng đi. Một là phân tích các dữ liệu thu
thập được để có các kết luận cho những điều đã và đang xẩy ra trong thực tế, từ đó
có các đề xuất cho tương lai. Một cách khác là lập ra các chương trình máy tính để
mô phỏng, tính toán lý thuyết dựa vào hoặc so sánh với các dữ liệu thực tế. Phần
Hoàng Nguyên Khang - CH1301092


6
May 9, 2014

này thường liên quan tới các chuyên môn sâu nên chỉ có những người có cùng lĩnh
vực nghiên cứu mới hiểu và quan tâm đến, còn độc giả thông thường nói chung
không chú ý đến.

Bước 7: Phát hiện hoặc đề xuất cái mới

Thường mỗi nghiên cứu khoa học sẽ tiến đến kết thúc sau khi một vài phát hiện
hoặc đề xuất mới được đưa ra. Những điều mới này chính là kết quả cuối cùng của
nghiên cứu có thể áp dụng làm cho thực tế hiện tại và tương lai tốt hơn và phải
thỏa mãn được các mục tiêu nghiên cứu đề ra trong bước 3. Nhiều nghiên cứu
không thể hiện rõ phần này sẽ gây khó hiểu cho người đọc. Tác giả đề nghị phần
này phải tách ra riêng biệt, không nên gộp vào phần phân tích dữ liệu hoặc phần
kết luận.


Bước 8: Kết luận

Đây là phần cuối cùng và được độc giả chú ý đến trước tiên để xem kết quả của
nghiên cứu rồi sau đó mới đến các phần khác nếu có quan tâm. Từ “kết luận” cũng
đã thể hiện rõ ý nghĩa của nó. Từ “kết” có nghĩa là kết thúc, tổng kết. Người
nghiên cứu phải đúc kết lại toàn bộ nghiên cứu theo một trình tự khoa học và ngắn
nhất để người đọc có thể hình dung tổng thể toàn bộ quá trình. Từ “luận” là bình
luận các kết quả thu được về thực tế nghiên cứu xem tốt hay xấu, thỏa mãn hay
chưa thỏa mãn, … . Tác giả thấy đa phần các nghiên cứu chỉ chú trọng đến phần
“kết” và chưa có phần “luận”.

Ngoài phần kết luận, các nghiên cứu nên có thêm các phần bổ trợ như đề xuất áp dụng
kết quả nghiên cứu vào thực tế, các nghiên cứu cần được tiến hành trong tương lai, những
hạn chế của nghiên cứu, … . Các phần bổ trợ này dùng để nhấn mạnh phần nghiên cứu
chính, thể hiện tính khả thi và khả năng áp dụng kết quả đạt được để củng cố / làm tốt
hơn thực tế hiện tại và tương lai.

2. Các khó khăn thường gặp phải và cách khắc phục

Thông thường, mọi nghiên cứu đều có khó khăn trong quá trình thực hiện do nhiều
nguyên nhân và người nghiên cứu phải nỗ lực giải quyết chúng để có được thành công
cuối cùng. Tác giả thống kê lại một số khó khăn điển hình trong nghiên cứu khoa học.

Mối quan hệ với thầy giáo hướng dẫn

Hoàng Nguyên Khang - CH1301092


7
May 9, 2014


Các giáo sư hướng dẫn thì mỗi người một tính, người thì khắt khe, người thì dễ dàng,
người thì chẳng để tâm đến sinh viên,… Nói chung họ là những người cá tính và nhiều
khi gây khó chịu cho sinh viên trong cuộc sống hàng ngày cũng như trong nghiên cứu.

Các giáo sư thì cũng là con người và có các tính cách khác nhau, nhưng nói chung là họ
luôn thương sinh viên, chỉ có cách dạy bảo là khác nhau thôi. Khi vượt qua được rào cản
trong các yêu cầu và tính cách của giáo sư hướng dẫn cũng chính là lúc ta đã học được
trường phái nghiên cứu của họ.

Khó khăn trong thu thập dữ liệu thực tế

Các dữ liệu thực tế trong quá khứ và hiện tại thường rất khó xin được, đặc biệt là các số
liệu nhạy cảm, có liên quan tới các cơ quan khác.

Để vượt qua khó khăn này, việc đầu tiên là phải nghĩ đến điều này ngay trong giai đoạn
thiết kế cách thu thập dữ liệu để tránh các dữ liệu không thể có được. Nghĩa là nghiên
cứu chỉ tập trung đến các dữ liệu có sẵn hoặc có thể thu thập được. Ngoài ra, nguồn dữ
liệu có sẵn không chỉ một nơi mà thường có ở nhiều nơi khác nhau. Vì vậy người nghiên
cứu cần đa dạng cách thu thập dữ liệu, tập trung vào nhiều nguồn khác nhau.

Không xác định được hướng nghiên cứu

Nhiều người nghiên cứu phải loay hoay tìm hướng nghiên cứu trong thời gian dài
hoặc phải đổi đề tài và hướng nghiên cứu sau một thời gian. Điều này làm ảnh hưởng đến
toàn bộ quá trình nghiên cứu do thời gian và nguồn lực cho phép bị giảm đi.

Trước khi bắt tay vào nghiên cứu cần phải đọc thật nhiều các nghiên cứu có sẵn về chủ
đề liên quan để có được hiểu biết tổng quan về lĩnh vực đấy. Phần phương pháp nghiên
cứu phải được chú ý đúng mức để chỉ ra các bước tuần tự thực hiện của đề tài với mục

đích đạt được mục tiêu đề ra ban đầu. Việc tham khảo, tranh luận với giáo sư hướng dẫn,
đồng nghiệp nghiên cứu, bạn bè, … cũng rất quan trọng để củng cố, chỉnh sửa hướng
nghiên cứu cho phù hợp.

Đăng báo không được chấp nhận hoặc phải đợi lâu

Nhiều nghiên cứu viên gặp rất nhiều khó khăn trong việc đăng báo để đủ tiêu chuẩn
tốt nghiệp. Thông thường yêu cầu là bài báo quốc tế cũng tương đối khó cho nhiều người
vì nhiều lý do. Bài báo của hội thảo thì dễ hơn và nhiều người dễ dàng có được.

Thường các yêu cầu đầu tiên là phải đúng chủ đề của tạp chí đấy. Trước khi gửi bài đi
đăng thì cần phải kiểm tra xem bài báo có đúng chủ đề yêu cầu không, đã có ai đăng
nghiên cứu tương tự chưa, v.v… Một lời khuyên là nên gửi bài đến tạp chí càng sớm
càng tốt vì quá trình xem xét thường mất ít nhất là 6 tháng đến 1 năm. Ngoài ra nên viết
Hoàng Nguyên Khang - CH1301092


8
May 9, 2014

bài theo các hướng khác nhau và gửi cho nhiều tạp chí vì tiêu chí lựa chọn của các tạp chí
thường khác nhau nên nếu may mắn thì sẽ được một tạp chí chấp nhận cho đăng.

Khả năng tiếng Anh kém

Người Việt nói chung khả năng tiếng Anh kém hơn các nước khác nên cũng gây ra
nhiều khó khăn trong nghiên cứu và viết báo vì hầu hết tài liệu tham khảo hoặc các hội
thảo, tạp chí đều yêu cầu tiếng Anh cả.

Nên tìm kiếm những người nói tiếng Anh gốc để giúp chỉnh sửa bài viết. Một cách

nữa là lựa chọn những đoạn viết trong các sách báo đã đăng để đưa vào bài viết của mình,
nhưng sử dụng cho hợp lý với hoàn cảnh và chủ đề nghiên cứu. Một lời khuyên nữa là
câu văn cần đơn giản vì trong nghiên cứu khoa học một đoạn viết chỉ có mục đích truyền
đi ý nghĩa nghiên cứu. Không nên để một câu văn là tập hợp của vài câu văn, nghĩa là chỉ
nên có 1 chủ ngữ - vị ngữ và không nên dài quá 3 dòng viết.


Bị áp lực, quá lo lắng, mất ngủ trong giai đoạn đầu nghiên cứu

Nhiều người nghiên cứu thường bị áp lực trong nghiên cứu và ảnh hưởng tới cuộc
sống hàng ngày như mất ngủ, lo lắng ra mặt, trầm cảm,… Những điều này nếu xảy ra
trong thời gian dài và lặp lại nhiều lần dễ gây ra các bệnh về thần kinh hoặc tâm lý.

Lời khuyên là dù có lo lắng thêm nữa thì việc nghiên cứu cũng không thể tiến triển
thêm được. Vì vậy khi có biểu hiện của áp lực nghĩa là nghiên cứu đang đi vào hướng bế
tắc. Lúc này nên dừng nghiên cứu trong một thời gian ngắn để nghỉ ngơi, chơi thể thao,
dành thời gian cho gia đình và bạn bè,… để có thể tạm thời quên đi các khó khăn hiện tại.
Khi đã vượt qua giai đoạn áp lực này thì dành thời gian kiểm tra tổng thể nghiên cứu để
xác định lại hướng đi cho đúng hơn và có thể xin ý kiến của giáo sư hướng dẫn.

3. Những điều nên và không nên làm trong nghiên cứu khoa học

Khi tiến hành nghiên cứu khoa học, việc định hướng ban đầu và chỉnh sửa hướng đi là
rất quan trọng cho thành công cuối cùng. Có nhiều điều nên làm nhưng cũng có nhiều
điều không nên làm. Tác giả đề xuất các điểm quan trọng về việc cần làm gì và không
cần làm gì.

Trung thực trong nghiên cứu

Nghiên cứu khoa học phải phản ánh trung thực và đầy đủ các kết quả, phát hiện, dẫu

rằng chúng có thể không giống với các dự định ban đầu. Việc che đậy những thiếu sót,
Hoàng Nguyên Khang - CH1301092


9
May 9, 2014

sai lầm hay sửa đổi dữ liệu, kết quả phải tuyệt đối không bao giờ được cho phép. Trích
dẫn, số liệu lấy từ các nghiên cứu khác cần phải chỉ rõ nguồn gốc để thể hiện chúng là tài
liệu tham khảo, không phải kết quả của nghiên cứu này và cũng là cách tôn trọng những
nghiên cứu trước.

Ứng xử có đạo đức trong nghiên cứu

Có những điều nếu người nghiên cứu làm hoàn toàn không phạm luật nhưng không có
tính đạo đức nghề nghiệp, vì vậy nên tránh nếu có thể. Phạm phải điều cấm này có thể vô
tội trước pháp luật, nhưng sẽ bị lên án, coi thường bởi đồng nghiệp, bạn bè và bị day dứt
lương tâm. Điều này sẽ làm ảnh hưởng tới uy tín của người nghiên cứu, thái độ nghi ngờ
và thiếu hợp tác của mọi người, dẫn đến việc gặp phải nhiều khó khăn, ảnh hưởng tới
chất lượng của các nghiên cứu sau này.




Chọn đề tài nghiên cứu hợp lý

Nên tiến hành các nghiên cứu có tính thực tiễn cao, có thể áp dụng vào thực tế để tạo
ra lợi ích cho bản thân và xã hội. Không nên tiến hành những nghiên cứu vô bổ, tốn kém
nhưng lợi ích thấp, mục đích để đánh bóng tên tuổi chứ không có ý nghĩa khoa học và
kinh tế,… Thông thường sức nghiên cứu đến mức nào thì nên tiến hành nghiên cứu ở

mức đấy mà thôi, theo kiểu “tuổi nhỏ làm việc nhỏ”, đừng tiến hành những dự án quá
tham vọng vượt quá khả năng, thời gian và nguồn tài chính cho phép. Tác giả đã thấy
nhiều người chọn đề tài mà kết quả chỉ có thể áp dụng sau 20-50 năm nữa do hạn chế về
kinh tế, xã hội và kỹ thuật. Có nghiên cứu lại đề xuất các ý tưởng mới với các yêu cầu
thực hiện tốn kém hơn nhiều lần so với giải pháp đã có hiện tại. Nhiều nghiên cứu sinh
lại thực hiện đề tài quá tham vọng, dẫn đến việc không hoàn thành đúng hạn và phải gia
hạn, tốn kém thời gian và tiền bạc.

Thời gian nghiên cứu

Hiện vẫn còn chưa rõ ràng về việc tiêu tốn thời gian thế nào là hợp lý trong nghiên
cứu khoa học. Nhiều người dành quá nhiều thời gian cho nghiên cứu do vậy phải giảm
thời gian nghỉ ngơi. Ngược lại, có nhiều người dành rất ít thời gian cho nghiên cứu.
Trước tiên, tác giả cho rằng một nghiên cứu cần phải được tiến hành liên tục và không có
nhiều gián đoạn dài để tránh tốn thời gian cho việc tái khởi động và xem xét lại các phần
đã làm. Dẫu rằng chưa có nghiên cứu chính thức nào trong nghiên cứu, nhưng có thể coi
như giống thời gian làm việc của người lao động và đã được kiểm chứng qua nhiều thời
đại. Thời gian nghiên cứu thì khoảng 8-10 tiếng 1 ngày và 5 ngày 1 tuần là hợp lý. Ngoài
ra, người nghiên cứu còn cần thời gian cho ngủ 8 tiếng, các sinh hoạt cá nhân và giải trí 8
tiếng.
Hoàng Nguyên Khang - CH1301092


10
May 9, 2014


Tránh hao phí thời gian vô ích

Quãng đời nghiên cứu rất ngắn nên tránh hao phí thời gian nghiên cứu (8 tiếng 1

ngày) vào những việc vô ích. Nhiều người tốn quá nhiều thời gian trên phòng nghiên cứu
cho các việc vô bổ như chat, xem phim, ngủ, nghe nhạc, tán chuyện, … dẫu rằng những
việc đó có thể làm vào 16 tiếng còn lại trong ngày. Một số người khác lại hay bị gián
đoạn nghiên cứu do phải ra ngoài để làm thêm, hoạt động xã hội, du lịch,… Những thời
gian vô ích đấy cần phải tránh trong thời gian 8 tiếng nghiên cứu. Cần nhớ rằng bạn là
người nghiên cứu nên mục đích đầu tiên và quan trọng nhất là nghiên cứu, các hoạt động
khác chỉ là phụ mà thôi. Ngoài ra, người nghiên cứu đã có 16 tiếng 1 ngày và 2 ngày cuối
tuần để giải quyết các hoạt động yêu cầu của bản thân và xã hội.

Công bố kết quả nghiên cứu

Các kết quả nghiên cứu cần được công bố nhiều nhất và sớm nhất có thể. Đây chính
là cách thông báo cho ra công chúng những gì đề tài nghiên cứu đã thực hiện để nhận
được các phê bình, nhận xét phục vụ cho việc hoàn thiện nghiên cứu hơn nữa. Việc công
bố rộng rãi là cách chứng minh sự trung thực, không cóp nhặt từ nghiên cứu khác hoặc
cũng là cách đóng góp trở lại cho khoa học, giúp những người đi sau có tài liệu tham
khảo và trả ơn những người đi trước mà đề tài đã tham khảo đến. Tác giả đã thấy nhiều
người nghiên cứu đã không công bố hoặc luôn cố gắng giữ bí mật kết quả do nhiều lý do.
Tuy nhiên khi nghiên cứu qua đi thì kết quả của nghiên cứu đấy đã không được áp dụng
do không ai biết đến và gây lãng phí về mặt khoa học.

Giáo sư hướng dẫn

Như đã nói ở trên thì các giáo sư mỗi người một tính cách do vậy mối quan hệ với
giáo sư không phải lúc nào cũng tốt đẹp cả. Một điều nên tránh là gây ra xung đột với
giáo sư hướng dẫn vì dẫu có kết quả thế nào thì nghiên cứu sinh sẽ vẫn là người chịu thiệt
thòi nhất. Một khi bạn đã chấp nhận giáo sư là người hướng dẫn thì bạn bắt buộc chịu sự
hướng dẫn của họ, dù đúng hay sai. Tác giả cho rằng thời gian nghiên cứu thường không
dài, trung bình khoảng 3 năm, nên sự chịu đựng là chấp nhận được. Điều quan trọng là
bạn có thể nhận ra được những điều chưa đúng để khi trở thành người nghiên cứu độc lập

bạn tránh được những sai lầm đó.

Bảo vệ kết quả nghiên cứu

Khi nghiên cứu chưa hoàn thành và chưa được công bố, người nghiên cứu nên có
những biện pháp cần thiết để bảo vệ những thông tin nhạy cảm hoặc những kết quả có thể
bị sử dụng bởi người khác. Điều này là cần thiết để tránh những điều đáng tiếc sau này có
thể dẫn đến tranh chấp không cần thiết. Ngoài ra, việc lưu giữ số liệu cần được làm theo
định kỳ và cất giữ ở ít nhất 2 nơi để tránh việc mất dữ liệu trong máy tính hoặc các bản in
Hoàng Nguyên Khang - CH1301092


11
May 9, 2014

ra. Việc xuất bản, ấn hành hay đăng báo cũng là cách tốt để đỡ mất công trong việc bảo
vệ dữ liệu hoặc các kết quả nghiên cứu.

Dịch tài liệu nước ngoài

Nhiều người nghiên cứu chỉ đơn thuần dịch tài liệu nước ngoài, sửa đổi chút ít và coi
như đấy là nghiên cứu của chính họ. Vậy câu hỏi đặt ra là đấy có phải các nghiên cứu
khoa học không hay chỉ là những sự cóp nhặt, ăn cắp của người khác? Theo tác giả thì
đấy không phải là các nghiên cứu khoa học vì những người đó không hề có nghiên cứu,
không có mục tiêu rõ ràng và cũng không giải quyết được khó khăn của thực tế. Những
bài dịch đấy chỉ có tác dụng phổ biến kiến thức và hướng vào những độc giả kém
hiểu biết hơn. Tác giả thấy ngạc nhiên là nhiều người có học hàm học vị tương đối cao
như giáo sư, phó giáo sư hay tiến sỹ lại hay làm những việc này. Những “việc nhỏ” đấy
nên để cho những người “tuổi nhỏ” làm.




















Hoàng Nguyên Khang - CH1301092


12
May 9, 2014

Chương III
VẤN ĐỀ NGHIÊN CỨU KHOA HỌC CỦA CÁ NHÂN

1. Giới thiệu
Bài luận này không có tham vọng trình bày lại tất cả các luận điểm của các thuật
toán, mà chỉ có mục đích khái quát lại các thuật toán, nguyên tắc, xen kẽ những lập luận,

nhưng ý kiển chủ quan của cá nhân về các nguyên tắc xuất hiện trong các thuật toán
đồng thời đưa ra các ví dụ cụ thể để làm sáng rõ các thuật toán này.
2. Các bước giải quyết một vấn đề bài toán và áp dụng nguyên lý
Trong bất cứ hoạt động gì của cuộc sống, kể cả học tập, làm việc đến những hoạt
động hàng ngày chúng ta luôn phải đối mặt với các vấn đề. Bạn đang lo lắng làm sao để
học kì này đạt được một suất học bổng, bạn đang lo lắng ngày mai là sinh nhật người
bạn thân, phải mua gì đây? Làm sao xin được tiền của ba mẹ để đi tham quan cùng
lớp… Như tôi khi viết bài báo cáo này cũng rất đang lo lăng: làm sao viết được bài báo
cáo thật rõ ràng, đáp ứng yêu cầu đề ra, lượng kiến thức cũng như khả năng lập luận, khả
năng viết bài được nâng cao, làm sao truyền tải được hết ý của mình đến người đọc đặc
biệt là người thầy sẽ chấm điểm môn này :D
Kỹ năng giải quyết vấn đề là một điểm mấu chốt trong nghiên cứu khoa học, để đạt được
những kết quả tốt trong quá trình nghiên cứu và học tập của mình người làm khoa học
cần rèn luyện cho mình khả năng giải quyết công việc và vấn đề.
Khi đối mặt với các vấn đề, mỗi người trong chúng ta lại có cách giải quyết riêng của
mình, tùy vào đặc tính và khả năng cá nhân, nhưng nhìn chung cách giải quyết đểu được
đưa ra dưới dạng mô hình sau:







Cần xác định A, B, các thao tác để đi từ A đến B.
 A, B không rõ ràng?
 Các điều kiện của cách
giải không minh bạch?
Chúng đa đưa ra một tiến trình để giải quyết các vấn đề nói chung như sau:
Bước 1: Xác định vấn đề - bài toán.

Bước 2: Lựa chọn phương pháp giải.
A → B
giả thiết giải pháp mục tiêu
Hoàng Nguyên Khang - CH1301092


13
May 9, 2014

Bước 3: Xây dựng thuật toán hoặc thuật giải.
Bước 4: Cài đặt chương trình.
Bước 5: Hiệu chỉnh & Thực hiện chương trình.
Bước 6: Lưu trữ, Bảo trì.

3. Khái quát về các thuật toán, thuật giải, cấu trúc dữ liệu

Trong tin học chúng ta có thể chia các phương pháp giải quyết bài toán thành hai mảng
lớn: phương pháp trực tiếp và phương pháp gián tiếp


























Chúng ta sẽ đi vào từng thuật toán và giải quyết các bài toán tin học cụ thể từ các thuật
toán này.


3.1. Phương pháp trực tiếp
PHƯƠNG PHÁP TRỰC
TIẾP
PHƯƠNG PHÁP GIÁN TIẾP
Phương
pháp trực
tiếp
Phương
pháp thử
sai
Phương pháp
Heuristic
Phương pháp

trí tuệ nhân tạo
Hoàng Nguyên Khang - CH1301092


14
May 9, 2014


Phương pháp này chủ yếu tận dụng khả năng tính toán của máy tính, giải quyết bài toán
bàng cách đưa dữ liệu vào, còn những thao tác thực thi hoàn toàn do máy tính thực hiện.

a) Chính xác

Giải phương trình bậc nhất một ẩn: y = ax+b
Phương trình trên được giải quyết theo toán học như sau:
TH1: a = 0
Nếu y = b: phương trình có vô số nghiệm
Nếu y<>b: phương trình vô nghiệm
TH2: a<>0
Phương trình có nghiệm duy nhất x = (y-b)/a
Việc giải quyết bài toán chỉ là việc thực hiện lại một cách trưc tiếp các chỉ dẫn toán
học trên
Cài đặt cụ thể: code

b) Gần đúng

Các bài toán dạng này thường là các bài toán đã biết khoảng kết quả sẵn, chúng ta
dùng một thủ thuật nào đó để đi gần đến kết quả nhất có thể.

Bài toán tìm nghiệm của phương trình f(x) trong khoảng (a;b)

 Xác định vấn đề bài toán:
Lấy f(x) = 2x^2 +3 x -2
Tìm một giá trị của x làm cho f(x) = 0;
Bài toán không yêu cầu phải tìm đầy đủ 2 nghiệm của phương trình.
Vấn đề đầu tiên là, phương trình đã cho liệu có nghiệm không?
Rõ ràng ta thấy rằng tich a*c của phương trình trên <0, do đó phương trình trên
có nghiệm.
 Phương án giải
Phương trình có nghiệm ở đâu?
Mặt khác ta lại thấy f(-1)*f(-3)<0
=>nghiệm của phương trình nằm trong khoảng [-3;1]
Tìm bằng cách nào khi đã biết nghiệm ?
Ở đây chúng ta sẽ dùng một phương pháp ước lượng ngiệm gần đúng. Tức là
chúng ta sẽ thắt chặt nghiệm từ 2 đầu đã biết trước này.

 Thuật toán:
Thuật toán được đưa ra đó là phân đôi và xét f(x) tại giá trị ở giữ này. Cụ thể:
B1: xác định đoạn [a;b] chứa nghiệm
B2: xét f(c) với c=(a+b)/2
 F(c) = 0 => nghiệm là c; đến B3
Hoàng Nguyên Khang - CH1301092


15
May 9, 2014

 F( c ) >0 => nghiệm nằm trong [c;b]; gán a = c; quay lại B2
 F(c) <0 => nghiệm nằm trong [a;c]; gán b =c; quay lại B2
B3: nghiệm là c


 cài
đặt: code
























c) Đệ quy

Đệ quy là một trong những thủ thuật nổi tiếng nhất trong tin học thuật toán.
Chúng ta chắc đã đôi lần “chạm chán ” với bài toán tháp Hà Nội hay tìm giai thừa,

dãy Fibonaci, chúng đều được giải dưới dạng đệ quy.
Bài toán giai thừa:
long GT(int n) {

// finished condition
if(n==0||n==1)
return 1;
// recursion
Hoàng Nguyên Khang - CH1301092


16
May 9, 2014

return n*GT(n-1);
}

Chúng ta hãy bàn luận một chút về bản chất của đệ quy.
Mỗi thuật toán đệ quy mô hình chung đều có 2 phần: phần điều kiện dừng và phần
đệ quy. Như ví dụ về tính giai thừa phía trên phần điều kiện dừng chính là khi
tham số đầu vào là 1 hoặc 0. Còn phần để quy là n*GT(n-1).
Bản chất về cấu trúc của thuật toán đệ quy là stack hóa. Sau mỗi lần thực hiện
hàm, kết quả lại được lưu vào trong stack.Quá trình thực hiện stack với hàm
GT(3):












Đệ quy được chia làm các loại sau:đệ quy đuôi, đệ quy rẽ nhánh, đệ quy hỗ tương.


 Đệ quy đuôi: là dạng đệ quy mà trong một cấp đệ quy, chỉ có một lời gọi đệ
quy duy nhất xuống cấp thấp. (ví dụ về hàm tính giai thừa phía trên)
 Đệ quy nhánh: là dạng đệ quy mà trong suốt quá trình thực hiện hàm đệ quy,
lời gọi đệ quy được thực hiện nhiều hơn một lần.

Một ví dụ điển hình là bài toán tháp Hà Nội:

Bài toán: Bài toán tháp Hà Nội (tiếng Anh gọi là Tower of Hanoi hay Towers of
Hanoi) xuất phát từ trò chơi đố Tháp Hà Nội.

Mục đích của bài toán là thực hiện được yêu cầu của trò chơi. Dạng bài toán thông
dụng nhất là: "Người chơi được cho ba cái cọc và một số đĩa có kích thước khác
nhau có thể cho vào các cọc này. Ban đầu sắp xếp các đĩa theo trật tự kích thước
vào một cọc sao cho đĩa nhỏ nhất nằm trên cùng, tức là tạo ra một dạng hình nón.
Người chơi phải di chuyển toàn bộ số đĩa sang một cọc khác, tuân theo các quy tắc
sau:
+ một lần chỉ được di chuyển một đĩa
+ một đĩa chỉ có thể được đặt lên một đĩa lớn hơn (không nhất thiết hai đĩa này
phải có kích thước liền kề, tức là đĩa nhỏ nhất có thể nằm trên đĩa lớn nhất)".


…. .…




…. .



GT(2)


…. .…

GT(2)
GT(1)
Hoàng Nguyên Khang - CH1301092


17
May 9, 2014









Phân tích phương án giải:


Với trường hợp 2 đĩa,giả sử 3 cột lần lượt là A,B,C;Với A là cột chứa các đĩa theo
thứ tự nhỏ đến lớn; ta chỉ cần chuyển: 1. đĩa trên cùng qua B, 2.dĩa còn lại qua C;
3. Đĩa từ B qua C là đã thỏa mãn yêu cầu bài toán.

Trường hợp 3 đĩa:
1. AB
2. AC
3. BC
4. AB
5. CA
6. CB
7. AB


Trường hợp 4 đĩa:

1. AB
2. AC
3. BC
4. AB
5. CA
6. CB
7. AB
Hoàng Nguyên Khang - CH1301092


18
May 9, 2014

8. AC

9. BC
10. BA
11. CA
12. BC
13. AB
14. AC
15. BC


Có một quy luật nào đó trong sự vận chuyển đĩa chăng? Có sự đệ quy nào ở đây
?
Hãy nhìn số bước làm việc: với n = a và n = b; b-a = 1 thì số bước cần thực hiện
luôn có dạng: f(n)
Thì f(b) = f(a)*2+1;Có quy luật trên là do với n= b ta phải 2 lần công việc của n =
a cộng thêm một lần vận chuyển đĩa nữa.

Thuật toán:
Việc vận chuyển như trên phụ thuộc vào 2 yếu tố: vai trò của các cột di chuyển và
số lượng đĩa được di chuyển. Thuật toán được nêu ra để thực hiện việc vần chuyển
này đó là(với n đĩa ban đầu : A – nguồn, B-Trung gian, C - đích)
B1: vận chuyển n-1 đĩa từ nguồn A qua B
B2: vận chuyển đĩa còn lại qua C
B3: vận chuyển n-1 đĩa từ B qua C

Sự đệ quy sẽ suất hiện trong B1 và B3 khi này n đã giảm đi 1 đơn vị. Cùng với sự
đệ quy này là sự thay đổi vai trò của các cột: ở B1 cột A là nguồn, cột B là đích, C
là trung gian; ở B2 : B- là nguồn, C là đích, A là trung gian.
Trong bài toán này chúng ta dã sử dụng đệ quy trong 2 nhánh B1 và B3.
Cài đặt: code
 Đệ quy hỗ tương: là dạng đệ quy mà trong đó có sự gọi quay vòng như A gọi

B, B gọi C rồi C gọi lại A.

d) Quy hoạch động

Trong nghành Khoa học máy tính và toán học người ta sử dụng phương pháp
quy hoạch đông(dynamic programming) để giải quyết các vấn đề phức tạp bằng
cách chia nhỏ vấn đề phức tạp đó thành các vấn đề đơn giản hơn.
Chúng ta vừa tiếp cận một số phương pháp giải toán : tính trực tiếp chính xác, gần
đúng và đệ quy. Các phương pháp đó chỉ có thể giải quyết các bài toán mang tính
chất đơn giản, gần gũi với khả năng tính toán của con người. Để giải quyết các vấn
đề phức tạp hơn, có sự biến thiên các giá trị trong một vùng xác định người ta sử
dụng đến quy hoạch động.
Hoàng Nguyên Khang - CH1301092


19
May 9, 2014


Phương pháp quy hoạch động có thể được khái quát bởi hình ảnh sau:



















Hướng tiếp cận của quy hoạch động có thể là bottm-top hoặc top-down,trong đó 2
tính chất của nó luôn được đảm bảo: tối ưu hóa các cấu trúc con thành
phần(optimal substructure) và giải quyết các vấn đề con theo hướng từng bước,
bước này dựa vào các bước trước đó(overlapping subproblems)

Chúng ta hãy xet bài toán về dãy Fibonaci quen thuộc.Bài toán này được giải bằng
đệ quy như sau:
int Fib(int n) {

if(n==1||n==0) {
return 1;
}else {
return Fib(n-1)+Fib(n-2);
}
}
Giả sử n nhập vào là 5 sự đệ quy được miêu tả như sau:
1.Fib(5);
2.Fib(4)+Fib(3);
3.Fib(3)+Fib(2) +Fib(2)+Fib(1);
4.Fib(2)+Fib(1)+Fib(1)+Fib(0)+ Fib(1)+Fib(0)+Fib(1);
5.Fib(1)+Fib(0)+ Fib(1)+Fib(1)+Fib(0)+ Fib(1)+Fib(0)+Fib(1);


BOTTOM-TOP
OVERLAPPING -
SUBPROBLEMS
TOP-DOWN
OPTIMAL
SUBSTRUCTURE
Hoàng Nguyên Khang - CH1301092


20
May 9, 2014

Ta dễ dàng nhận thấy là (ví dụ) Fib(3) được tính đến 2 lần! Có cách nào để chỉ
tính Fib(3) một lần thôi không ?

Chúng ta đều biết ưu điểm của đệ quy là diễn đạt dễ dàng và cài đặt dễ dàng. Tuy
nhiên nó có nhược điểm rất lớn đó là sử dụng stack để lưu vết các bước trước đó.
Điều này đôi khi làm cho đệ quy trở thành một phương pháp sử dụng tài nguyên
quá nhiêu, đặc biệt trong trường hợp đệ quy với đầu vào có giá trị lớn.

Thay vì việc dùng đệ quy chúng ta có thể sử dụng quy hoạch động. Sau đây là 2
hướng tiếp cận bài toán trên sử dụng quy hoạch động:

 Tiếp cận top-down:
Hàm này giải quyết bài toán bằng việc tính số fibonaci thứ n.
Ta có một mảng các chỉ mục (mảng m) chỉ đến các giá trị tương ứng của dãy
fibonaci với 2 giá trị mặc định m[0] = m[1]=1;ta muốn lấy giá trị của số thứ n .Nội
dung thuật toán ta làm như sau:

B1:gán m[1]=m[0]=1

B2:kiểm tra m[n] sẽ có 2 trường hợp xảy ra:
Tồn tại số fibonaci tại m[n] đến bước 4
Không tồn tại số fibonaci tại m[n] đến bước 3
B3: tính số Fibonaci theo công thức quy nạp: Fib(n) = Fib(n-1)+Fib(n-2)
B4:trả về giá trị của số Fibonaci thứ n. Kết thúc.

 Tiếp cận bottom –top:
Cách này sự dụng cách tính trực tiếp, thuật toán như sau:

B1: nhận vào số fibonaci thứ n
B2: Gán f1=f2=1;
Lặp i 2n-1
newF =previousF+currenceF;
previousF=currenceF;
currenceF =newF;
B3.Trả về giá trị của số fibonaci thứ n currenceF

Cài đặt: code (xem file)
Cái nào là optiminal substructure cái nào là overlapping subproblems ?
Phân tích tính tối ưu về cấu trúc con(optimal substructure):

Trong 3 thuật toán để giải bài toán nêu trên chúng ta đều thấy vấn đề được chia
nhỏ dần thành các vấn đề nhỏ hơn, và giải quyết. Vấn đề nhỏ nhất được chia là khi
n=1 và n=0.
Hoàng Nguyên Khang - CH1301092


21
May 9, 2014


Chúng ta hãy để ý đến cấu trúc chia nhỏ này, rõ ràng đối với quy hoạch động các
cấu trúc được tối ưu tốt nhất, tài nguyên được đảm bảo sử dụng ít nhất có thể.

Phân tích về giải quyết các vấn đề từng bước, bước hiện tại dựa vào các bước
trước (overlapping subproblems):

Rõ ràng từ các vấn đề cơ bản (f1=f0=1), chúng ta sử dụng để giải quyết các vấn đề
lớn hơn. Từ các vấn đề vừa giải quyết chúng ta lại sử dụng để giải quyết các vấn
đề tiếp theo.

3.2. Phương pháp thử sai

a) Vét cạn/duyệt toàn bộ
Vét cạn toàn bộ là một phương pháp được sử dụng cho những bài toán có không
gian tìm kiếm nhỏ. Chúng ta hãy xét một ví dụ sau:
Cho 100 con Trâu ăn 100 bó cỏ. Trâu đứng ăn 5, Trâu nằm ăn 3, Trâu già 3 con
một bó. Tìm số Trâu mỗi loại.

Đây là một bài toán đố vui, việc của chúng ta là đi tinh số lượng của mỗi loại
Trâu: Trâu đứng, Trâu nằm và Trâu già. Bài toán được mô phỏng dưới cách nhìn
của toán học, với không gian tìm kiếm định rõ:

i+j+k = 100 (1)
5i+3j+k/3 = 100 (2)

Với: 0<= i <= 20 (*)
0<= j <=33 (**)
0<= k <= 100 && k mod 3 = 0 (***)

Bài toán đã được mô hình dưới dạng hệ phương trình bậc nhất 3 ẩn số, với miền

tìm kiếm được giới hạn.
Để giải quyết bài toán này trên máy tính chúng ta sử dụng thuật
toán vét cạn toàn bộ như sau:
B1: 0<= i <= 20 làm công việc sau:
Timduocnghiem = false;
B1.1: 0<= j<= 33 làm công việc sau:
B1.1.1 0<=k <= 100 và k chia hết cho 3 làm công việc sau:

Kiểm tra biểu thức : i+j+k = 100 (1)
5i+3j+k/3 = 100 (2)

Hoàng Nguyên Khang - CH1301092


22
May 9, 2014

Nếu biểu thức đúng thì gán Timduocnghiem = true.Thoái khỏi vòng lặp3
Ngược lại tiếp tục lặp
Kiểm tra Timduocnghiem = true thì thoat khỏi vòng lặp 2
Ngược lại tiếp tục lặp
Kiểm tra Timduocnghiem = true . In ra nghiệm và thoát khỏi vòng lặp 1
Ngược lại tiếp tục lặp

Hàm cài đặt:


Nguyên lý vét cạn được mô hình hóa dưới dạng toán học như sau:
Gọi D(Domain) là không gian của vấn đề - bài toán (hay tập tất cả trường hợp,
khả năng có thể xảy ra của bài toán)

D = tập hợp tất cả các bộ (x1,x2,x3,…,xn)
Trong đó:
x1 thuộc D1
x2 thuộc D2

xn thuộc Dn

Và Di là các tập hợp hữu hạn có số phần tử là mi.
Gọi quy tắc xác định lời giải là một ánh xạ f:
f: D {True,False}

×