PDA

View Full Version : Tại sao ai cũng muốn học thuật toán?



monkeyvu
08-12-2002, 03:43
Theo em thuật toán rất quan trọng,chúng ta cần phải biết rất nhiều về thuật toán.Nhưng em lại thấy rằng các phần mềm hiện nay đã rất mạnh và ngày càng mạnh,chẳng hạn như C++.Nó có sẵn cả hàm qsort như vậy chúng ta cần biết thuật toán quick sort làm dzì nữa?Và khi lập trình trên Win,hình như thuật toán không quan trọng lắm?Có ai cho em ý kiến dzì không?

khôngtên
08-12-2002, 19:03
Bác nói đúng và rất đúng nhưng chỉ được 0% thôi ! Heeeee ! Bác nói vậy thôi chứ như thế thì bác làm sao biết được bản chất của vấn đề ! Tôi ví dụ nhé ! Như bác biết chúng trong đồ hoạ chúng ta có hàm vẽ đường thẳng áp dụng giải thuật presamham (không biết tôi có đánh sai không !) nhưng có nhiều lập trình viên vẫn muốn tự viết các thư viện các lớp riêng cho mình và thế họ cần phải nắm vững các thuật toán về nó... ! Hay giả sử bác càn chương trình sắp sếp cho các ngôn ngữ khác khi không có sẵn thì sao ... thì "ngốp" chứ sao nữa !

hieu121081
08-12-2002, 19:07
Vì những cái này là nên tảng của lập trình.
với lại những cái người khác làm đôi khi không phù hợp với yêu cầu của từng bài toán cụ thể. do đó cần phải xây dựng lại từ đầu(Các thuật toán cơ nhất).

danceswithwolves
08-12-2002, 19:25
Bài viết được gửi bởi khôngtên
... hàm vẽ đường thẳng áp dụng giải thuật presamham (không biết tôi có đánh sai không !)

sai đó bạn ạ :D...

CrazyKing
08-12-2002, 20:26
<-------Thiển cận !
Bạn nghĩ coi !Khi ta viết một project dùng các class của MFC chẳng hạn ! Nếu như không hiểu bản chất của lập trình trên Window thì khi gặp sự cố ta sẽ rất khó giải quyết ! MFC đã hổ trợ chúng ta quá nhiều ----->Chúng ta quá chủ quan , không cần phải tìm hiểu bản chất của nó ! Nếu nói như bạn thì người học tin học như chúng ta không phải nghiên cứu gì sao ? Chúng ta sử dụng những thế mạnh của ngôn ngữ High level nhưng đồng thời phải biết bản chất của nó ----> Phải tìm hiểu chúng , so sánh chúng -> Tìm giải pháp tối ưu hơn(đó là nhiệm vụ của Programming) ! Nhiều lúc giải pháp Q.Sort lại đâu phải là giải pháp tốt cho một số yêu cầu khác ???!!!
Với tốc độ và cấu hình máy như hiện nay , vấn đề về "tốc độ" của các giải thuật không phải là yêu cầu hàng đầu.Như thời gian chi phí cho giải thuật này có bậc O(nlgn) (đối với trường hợp tốt nhất) Trường hợp trung bình thì có bậc khoảng giữa O(nlgn) và O(n2) Như vậy so với giải thuật SelectionSort thời gian thực hiện có bậc là O(n2) đâu dễ phân biệt ????
Tuy vậy chúng ta là dân tin học , chúng ta cần phải tìm hiểu về các thế mạnh yếu các thuật toán ! để từ đó chọn ra con đường có chi phí rẻ nhất !!!!........

CrazyKing
08-12-2002, 20:29
Đó là theo thiển ý của tui thôi , các bạn có thể có các cách nhìn khác nhau về dụ này !!!

danceswithwolves
09-12-2002, 08:55
khiếp, crazy thiệt rồi hay sao mà phản ứng dữ dội thế ? :). Em nó còn nhỏ mừ.

khôngtên
09-12-2002, 21:20
"Vua điên" nói không đúng đâu mà phải gọi là rất đúng ! Đã đi theo con đường lập trình viên thì không thể bỏ qua kiến thức thuật toán đấy ! Vì từ khi mới hình thành thuật toán đã, đang và sẽ là mãi mãi không thể thiếu đối với 1 lập trình viên ! Thật tế các phần mềm chương trình... tự nó đã chưa biết bao thuật toán.... !

huy9dan
10-12-2002, 09:46
Cho tại hạ nhờ một chút :
Ai có thể chỉ ra một vài trường hợp mà thuật toán Quick Sort mà có độ phức tạp là O(n2) được không ? (với n>20)
Cảm ơn nhiều

monkeyvu
10-12-2002, 20:07
Mọi anh hiểu lầm í em gòi ,đương nhiên khi ai học lập trình đều phải biết thuật toán,ngay cả khi bạn giải những bài toán thông thường nhất cũng phải biết thuật toán (chứ đâu phải chỉ có những cái như qsort dzì đó mới gọi là thuật toán đâu),tại em lập trình trên win chưa vững nên em mới hỏi vậy thôi ,í của em là khi lập trình trên Win thuật toán có thật sự quan trọng như trên Dos hay không thôi,chúng ta có cần phải đi sâu vào thuật toán như trên Dos không?
Vả lại chúng ta đâu thể bao trùm hết được,những thuật toán chẳng hạn như :vét cạn,qui hoạch động,luồng...là những thuật toán rất ư là căn bản chúng ta cần phải biết là phải gòi,nhưng khi đi sâu vào thuật toán có những thuật toán rất khó mà theo em nghĩ những trình ứng dụng trên Win không cần đến đâu.

hieuvc
11-12-2002, 10:53
Có chữ Bresenham không mà cũng hổng biết dziết. Zậy thì lòm seo mà học lập trình chớ. Hơ hơ....

khôngtên
11-12-2002, 18:52
Bác gì đó ơi ! Làm gì mà chơi tôi dữ vậy ! Vì học cái đó lâu lắm rồi mà khi đó chỉ nghe thầy giới thiệu tên tác giả thuật toán thôi làm sao bác bảo tôi nói đúng cho được ! Heeeeeeeeee

khôngtên
11-12-2002, 18:56
Nói chung trên Dos hay Win thì yêu cầu thuật toán cũng như nhau cả thôi !

monkeyvu
29-05-2003, 18:07
To huy9dan:
QS O(n2) xảy ra khi mảng đã được sắp xếp sẵn,hoặc sắp xếp theo thứ tự ngược lại.

hello01012000
31-05-2003, 15:18
Các bác cãi nhau vừa vừa ở cái thread này thôi, chuyển dùm sang cái Pointer broken down của em, cho em xin câu trả lời hộ cái đi.

tulipxanh
05-06-2003, 18:39
De cho dau oc cua bac thong minh hon day , co the giai quyet van de mot cach sac ben hon va nhuan nhuyen hon
The thoi

vql
08-06-2003, 14:52
Em chẳng hiểu gì cả,ngừơi mới học qua loa như em thì làm sao thấy cái hay của thuật toán.Ví dụ như nếu có ai đưa ra một bài toán thì quả thật là có nhiều bài giải(lập trình) khác nhau.Người chấm sẽ cho kết quả cao cho những bài có những thuật toán hay(không quan trọng là dài hay ngắn)ví dụ như sử dụng ít bộ nhớ,chạy nhanh...Hiện nay các phần mềm nâng cấp liên tục là do họ đưa ra một số thuật toán mới vào chương trình thì chương trình sẽ chạy nhanh hơn...
Nếu em đã hiểu thì nhớ có hậu tạ cho anh,còn không hiểu thì nhớ email cho anh.