GiaiThuat.Com - Giải Thuật là gì? Học Giải Thuật làm quái gì?
Tôi là một lập trình viên có trên 20 năm kinh nghiệm. Những năm đầu tiên, tôi học và làm nhiều về Giải Thuật. Cho đến cả khi ra trường, tôi cũng luôn nghiên cứu và có đam mê với nó. Ra trường, tôi nung nấu ý định đi du học và theo con đường nghiên cứu. Tuy nhiên, sau quãng thời gian đi làm 1 năm, tôi thấy thích làm sản phẩm/phần mềm hơn là nghiên cứu. Tôi chuyển hướng học kinh doanh về công nghệ, kĩ thuật hơn là Giải Thuật.
Nói như vậy để bạn hiểu rằng, hiện tại tôi không còn là tín đồ hay thần thánh hoá Giải Thuật nữa. Tuy nhiên, cá nhân tôi cho rằng, Giải Thuật vẫn là thứ gì đó khá quan trọng vs đối lập trình viên. Sau này lúc đi dạy học hay định hướng chia sẻ với những lập trình viên trẻ, cũng có khá nhiều người hỏi tôi có cần học Thuật Toán/Giải Thuật hay không? Câu trả lời của tôi luôn luôn là có. Vì sao?
Nói như vậy để bạn hiểu rằng, hiện tại tôi không còn là tín đồ hay thần thánh hoá Giải Thuật nữa. Tuy nhiên, cá nhân tôi cho rằng, Giải Thuật vẫn là thứ gì đó khá quan trọng vs đối lập trình viên. Sau này lúc đi dạy học hay định hướng chia sẻ với những lập trình viên trẻ, cũng có khá nhiều người hỏi tôi có cần học Thuật Toán/Giải Thuật hay không? Câu trả lời của tôi luôn luôn là có. Vì sao?
GiaiThuat.Com - Giải Thuật là gì?
Giải Thuật hay Thuật toán (tiếng anh là Algorithm) có khá nhiều định nghĩa phức tạp. Bạn có thể đọc ở nhiều nguồn để hiểu thêm về nó. Cá nhân tôi định nghĩa dễ hiểu rằng, Giải Thuật là “thuật” (phương pháp) để giải quyết 1 bài toán. Nói dễ hiểu hơn, mỗi một bài toán giống như một chiếc hòm chứa đựng kho báu (kết quả, đáp án), và chiếc chìa khoá để mở cái hòm đó chính là “giải thuật”. Nếu dùng sai chìa khoá, bạn vẫn có thể mở được hòm, nhưng mà sẽ mất nhiều thời gian, hoặc mở được hòm thì kho báu ở bên trong bị méo mó, không toàn vẹn. Sử dụng đúng chìa khoá, sẽ giúp bạn lấy được kho báu 1 cách dễ dàng, nhanh chóng. Tất nhiên mỗi chiếc hòm sẽ luôn cần loại chìa khoá khác nhau, giống như một bài toán luôn có những giải thuật xác định. Không có chiếc chìa khoá nào mở được tất cả các hòm, cũng như không có giải thuật nào giải được toàn bộ các bài toán.
GiaiThuat.Com -Tại sao cần dùng Giải Thuật?
Lập trình chính là để yêu cầu, chỉ thị máy thực hiện, giải quyết 1 công việc, bài toán cụ thể nào đó của cuộc sống. Mỗi bài toán thực tế sẽ có cách giải quyết khác nhau. Am hiểu và sử dụng đúng Giải Thuật, sẽ giúp bạn giải quyết một cách dễ dàng, cùng với độ chính xác cao trong thời gian ngắn nhất. Bỏ qua Giải Thuật sắp xếp các số trong dãy số nguyên hay Giải Thuật tìm số nguyên tố đi nhé, bài đó chỉ dùng để học và minh hoạ về Giải Thuật thôi. Ở đây, mình muốn giới thiệu với các bạn những Giải Thuật có tính ứng dụng khá lớn trong các sản phẩm/hệ thống phần mềm hiện tại nhé:
Đầu tiên là Giải Thuật tìm đường đi ngắn nhất. Đại khái cho bạn một danh sách các đường đi giữa các địa điểm, hãy tìm đường đi ngắn nhất (về khoảng cách) hoặc chi phí tối thiểu khi đi từ điểm X đến điểm Y.
Bạn biết Giải Thuật này dùng ở đâu rồi chứ? Hiện tại tôi nghĩ, bạn có thể sẽ biết nó xuất hiện trong các phần mềm chỉ đường và ứng dụng liên quan tới ngành giao thông vận tải (ví dụ google map, grab, uber, giao hàng nhanh, ….), nhưng bạn có biết nó còn dùng ở đâu nữa không? Xin nói với các bạn rằng, trong các hệ thống mạng, viễn thông người ta cũng dùng Giải Thuật này để định hướng đường truyền và tín hiệu.
Cuộc điện thoại từ 1 người ở thành phố Hà Nội gọi cho 1 người ở thành phố Hồ Chí Minh đi qua các cột thu phát sóng, dữ liệu internet từ máy tính của bạn đi tới máy chủ của nhà cung cấp mạng cũng phải sử dụng Giải Thuật này để đạt được tốc độ tối đa.
Cuộc điện thoại từ 1 người ở thành phố Hà Nội gọi cho 1 người ở thành phố Hồ Chí Minh đi qua các cột thu phát sóng, dữ liệu internet từ máy tính của bạn đi tới máy chủ của nhà cung cấp mạng cũng phải sử dụng Giải Thuật này để đạt được tốc độ tối đa.
Tiếp theo, một Giải Thuật khá nổi tiếng khác là Giải Thuật tìm kiếm. Bạn có thể nhìn thấy nó ở khá nhiều sản phẩm phần mềm hiện tại, điển hình như Google. Bạn có thể nghĩ rằng, tìm kiếm khá là đơn giản, khi bạn lần lượt soi vào từng ô, từng dòng dữ liệu xem có thứ mà mình tìm kiếm hay không? Nhưng hãy đặt địa vị, bạn có hàng tỷ tỷ món đồ dùng được vứt lộn xộn trong 1 căn nhà, bạn sẽ mất bao nhiêu lâu để tìm được món đồ mà bạn mong muốn. Hãy biết chắc chắn rằng, việc Google trả ra được kết quả mà bạn yêu cầu tìm kiếm trong vòng 1 vài giây là vô cùng khó. Điều ấy yêu cầu 1 Giải Thuật cực mạnh, và vẫn liên tục cần cải tiến cho đến ngày hôm nay.
GiaiThuat.Com - Các Giải Thuật mã hoá được sử dụng để mã hoá thông tin, được sử dụng nhiều trong việc truyền nhận và lưu trữ giữ liệu, giúp bảo vệ thông tin cá nhân và tổ chức khỏi các cuộc tấn công hay khai thác.
Bỏ qua những Giải Thuật cao siêu như bên trên vì bạn ít có cơ hội làm những sản phẩm như vậy, trong quá trình làm phần mềm, bạn cũng có thể sẽ gặp các bài toán hay vấn đề nhỏ yêu cầu bạn phải chọn đúng giải thuật để giải, ví dụ như:
Hãy tìm kiếm 1 cái máy tính có giá từ X->Y, đáp ứng tối đa các tiêu chí của người dùng chỉ trong 1 cái click chuột
Hãy đưa ra các bài viết hoặc sản phẩm mà người dùng quan tâm dựa trên lịch sử truy cập của họ
Khi bạn lập trình đủ lâu và đủ nhiều, tôi nghĩ chắc chắn bạn sẽ gặp nhiều bài toán khó hơn tôi. Trong quá trình phát triển sản phẩm, tôi và những đồng đội cũng đôi lúc phải giải quyết những bài toán kiểu như thế này:
Đếm số lượng truy cập của người dùng trong 1 khoảng thời gian để dự đoán tấn công
Đưa ra gợi ý các bài tập mà người dùng nên làm dựa vào lịch sử truy cập và thao tác của họ trên hệ thống.
GiaiThuat.Com - Tất nhiên những bài toán trên là không khó với tập dữ liệu và người dùng nhỏ. Nhưng hãy thử tưởng tượng, khi hệ thống có hàng nghìn hàng vạn người cùng truy cập và bạn phải trả về kết quả là cực kì nhanh, bạn sẽ làm như thế nào để đảm bảo điều đó? Thực tế đã trả lời chúng tôi rằng, khi chọn đúng giải thuật, tốc độ xử lí có thể tăng lên từ hàng chục tới hàng trăm lần. Và tôi nghĩ rằng, một ngày nào đó, chúng tôi vẫn sẽ phải nâng cấp Giải Thuật để giải quyết bài toán với lượng dữ liệu và người dùng lớn hơn.
GiaiThuat.Com -Và không học Giải Thuật được không?
Không phải là 1 tín đồ của Giải Thuật, không thần thánh hoá Giải Thuật, nên tôi nghĩ rằng không học Giải Thuật vẫn làm được thậm chí làm tốt phần mềm. Nếu các bạn không làm những bài toán có độ phức tạp cao, có dữ liệu người dùng lớn, cần phải ra đáp án nhanh với độ chính xác cao, tôi nghĩ bạn vẫn có thể giải quyết được vấn đề với vốn Giải Thuật hạn chế. Hay ví dụ nếu bạn làm 1 website chủ yếu là nội dung, nếu bạn làm 1 ứng dụng điện thoại chỉ xử lí các logic thông thường, Giải Thuật không giúp ích nhiều cho bạn trong trường hợp ấy.
Kể cả khi bạn làm những sản phẩm rất lớn, sử dụng những công nghệ rất mới và hot như AI, BigData hay Blockchain, dù không thành thạo Giải Thuật nào cả, bạn vẫn xây dựng được hệ thống. Trong trường hợp này, bạn chỉ cần hiểu rõ cách sử dụng và ứng dụng của công nghệ đã được lập sẵn, chứ không cần nằm hay hiểu rõ Giải Thuật bên trong công nghệ ấy.
Kể cả khi bạn làm những sản phẩm rất lớn, sử dụng những công nghệ rất mới và hot như AI, BigData hay Blockchain, dù không thành thạo Giải Thuật nào cả, bạn vẫn xây dựng được hệ thống. Trong trường hợp này, bạn chỉ cần hiểu rõ cách sử dụng và ứng dụng của công nghệ đã được lập sẵn, chứ không cần nằm hay hiểu rõ Giải Thuật bên trong công nghệ ấy.
GiaiThuat.Com - Đặc biệt là, với 1 số phần mềm đơn giản có yêu cầu hay thay đổi, dẫn đến việc thay đổi mã lệnh thường xuyên. Lúc này, Giải Thuật hay, các mã lệnh chạy nhanh không quan trọng bằng việc hiểu đúng yêu, tổ chức dữ liệu, thiết kế cấu trúc mã lệnh, viết mã lệnh sao cho dễ đọc, dễ hiểu và dễ bảo trì.
GiaiThuat.Com -Rốt cuộc thì Giải Thuật quan trọng hay không?
Có 1 sự thật rằng, đa phần các sản phẩm phần mềm ngày nay thành công mà không cần hay sử dụng rất ít Giải Thuật bên trong nó. Tuy nhiên những sản phẩm có hàm lượng Giải Thuật cao, trí tuệ lớn, thật sự tạo ra sự khác biệt và thành công lớn hơn những sản phẩm bình thường. Sản phẩm như Google thành công vì có Giải Thuật tìm kiếm mạnh mẽ bậc nhất thế giới. Sản phẩm như Facebook hay Youtube cũng phải sử dụng nhiều Giải Thuật như tìm kiếm, gợi ý người dùng, gợi ý nội dung, sử dụng trí tuệ nhân tạo AI …
Nhưng Giải Thuật lại không phải yếu tố cốt lõi quyết định thành công của sản phẩm này. Do đó, việc học Giải Thuật, sự quan trọng của Giải Thuật phụ thuộc vào sản phẩm, ứng dụng mà bạn làm. Dù có giỏi hay không giỏi Giải Thuật, bạn vẫn có thể thành công nếu vận dụng đúng kỹ năng, hiểu biết của mình vào lĩnh vực mà bạn làm.
Cá nhân tôi luôn khuyên và nhắn nhủ các bạn lập trình viên hãy luôn học và rèn luyện Giải Thuật. Với tôi, Giải Thuật giúp bạn rèn luyện tư duy giải quyết vấn đề, cùng với suy nghĩ về việc luôn tối ưu và làm sản phẩm một cách tối ưu và tổng quát. Có những lúc, thực sự bế tắc trong công việc (không chỉ là lập trình), tôi vẫn thường vào làm 1 số bài tập Giải Thuật để khai thông và thúc đẩy sự suy nghĩ. Sau đó tôi thấy mình minh mẫn và giải quyết công việc cũ 1 cách thuận lợi hơn.
Nhưng Giải Thuật lại không phải yếu tố cốt lõi quyết định thành công của sản phẩm này. Do đó, việc học Giải Thuật, sự quan trọng của Giải Thuật phụ thuộc vào sản phẩm, ứng dụng mà bạn làm. Dù có giỏi hay không giỏi Giải Thuật, bạn vẫn có thể thành công nếu vận dụng đúng kỹ năng, hiểu biết của mình vào lĩnh vực mà bạn làm.
Cá nhân tôi luôn khuyên và nhắn nhủ các bạn lập trình viên hãy luôn học và rèn luyện Giải Thuật. Với tôi, Giải Thuật giúp bạn rèn luyện tư duy giải quyết vấn đề, cùng với suy nghĩ về việc luôn tối ưu và làm sản phẩm một cách tối ưu và tổng quát. Có những lúc, thực sự bế tắc trong công việc (không chỉ là lập trình), tôi vẫn thường vào làm 1 số bài tập Giải Thuật để khai thông và thúc đẩy sự suy nghĩ. Sau đó tôi thấy mình minh mẫn và giải quyết công việc cũ 1 cách thuận lợi hơn.
GiaiThuat.Com - Học Giải Thuật từ đâu? Như thế nào?
Nếu bạn học CNTT hay Tin học ứng dụng ở trong trường đại học, tôi nghĩ bạn nên học tốt môn học này từ các thầy giáo và các bạn đồng trang lứa. Nếu không có điều kiện ấy, tôi nghĩ rằng bạn nên tìm kiếm 1 cuốn sách dạy về giải thuật như là cuốn “Cấu trúc dữ liệu và giải thuật” của thầy Đinh Mạnh Tường.
Tên miền đẹp GiaiThuat.Com đúng nghĩa, rất thích hợp cho việc phát triển đam mê khởi nghiệp cho các nhà lập trình sáng tạo. Hãy liên hệ để được hợp tác với Mr. Chiến về dự án này!
Tên miền đẹp GiaiThuat.Com đúng nghĩa, rất thích hợp cho việc phát triển đam mê khởi nghiệp cho các nhà lập trình sáng tạo. Hãy liên hệ để được hợp tác với Mr. Chiến về dự án này!
Mr. Chiến rất mong muốn được kết bạn giao lưu và chia sẽ cùng trao đổi, thảo luận kiến thức thương hiệu, tên miền và ý tưởng khởi nghiệp 4.0 với các bạn gần xa! Chúng ta hãy kết nối Điện thoại, Zalo, Facebook, Telegram, WhatAPP...và chia sẽ đam mê cùng nhau nhé!
Cảm ơn rất nhiều các bạn đã ghé thăm! Hãy comment bên dưới cho tôi biết bạn nghĩ gì về điều này nhé!
Chúc các bạn và gia đình nhiều Sức khỏe và thành công trong cuộc sống!
NguyenDinhChien.Com - Uy Tín & Giá Trị
PS: Là dân kinh doanh kiếm tiền, Ý kiến của bạn như nào về quan điểm của mình?
* Một số bài đăng được bạn đọc đánh giá cao, các bạn tham khảo:
- Ý tưởng kinh doanh mới năm 2020
- Khởi nghiệp:Viết nội dung blog chất lượng để kinh doanh
- Cách chuyễn hướng tên miền, gia tăng khách hàng tuy cập trang bán hàng
- 3 Chiến lược thu hút khách hàng trong kinh doanh
- Ý Tưởng khinh doanh, "Khởi Nghiệp" thời công nghệ 4.0
- Vì sao phải xây dựng thương hiệu "Doanh nghiệp & Cá Nhân"
- Cài đặt Ý tưởng kinh doanh trực tuyến thời 4.0 cần những gì?
- Làm thế nào viết nội dung để bán hàng được giá cao?
- Bắt đầu khởi nghiệp cần những gì?
- SEO một blog, website mới đơn giản như thế nào?
- Kinh nghiệm mua hàng khuyến mãi, giảm giá
- Những chiêu trò lôi kéo, kêu gọi đầu tư trên mạng xã hội
- "Vô gia cư" gắn mác doanh nhân... thời công nghệ 4.0
- Những quyển sách hay dành cho "Doanh Nhân"
- Làm giàu với Tiếp thị Liên kết
- Bạn muốn trở thành nhà "Đầu cơ" hay nhà "Đầu tư"
- Xuất khẩu Robot Việt Nam, Tại sao không?
- Viết Blog du lịch kiếm tiền, Nên chăng?
- Nhiều người muốn làm giàu, Nhưng họ Sợ "Bị Giàu"
- Ý Tưởng kinh doanh mới...
- Đơn giản, bạn chỉ cần Mua - Bán: Sách, chưa bao giờ "Lỗ"
- Kinh Doanh Tên Miền và Kinh doanh Kim Cương
- Tôi và em: "Định mệnh hay là Nhân Duyên"
- Bạn là ai không quan trọng! Thể hiện Đẳng cấp hay không...?
- Cấu hình tên miền cho Blogger, đơn giản và Miễn phí
- Kinh Nghiệm xương máu khi đầu tư tên miền
- Nguyên Tắc: "Đầu tư" của bạn là gì?
- Cá nhân có cần xây dựng "Thương Hiệu" hay không?
- Định vị "Doanh Nhân" hay là "Bán hàng rong"???
- Đưa em về dưới mưa... Rước em vô gốc dừa..
- Tên miền và câu chuyên xưa xửa xưa...
- Ngành Công nghiệp tên miền đã phát triển như thế nào?
- Bạn đang "Đánh Bạc" Hay "Đầu tư"
- Một Website, Blog giá trị là ntn?
- Bí mật mua cổ phần, cổ phiếu, coins... trước IPO, ICO
- Vì Sao bạn mất dần khách hàng?
- Vốn ít, Khởi nghiệp như thế nào?
* Các chương trình SALE OFF 20-70%:
- Điện tử - Điện Lạnh - Công Nghệ
- Vé Máy Bay - Du Lịch - Khách Sạn
- Tài Chính - Ngân Hàng - Chứng Khoán - Đầu Tư
- Thời Trang - Túi Xách - Đồng Hồ - Phụ Kiện Thời Trang
- Kiếm tiền trực tuyến, "Khởi Nghiệp" thời công nghệ 4.0
- Ý tưởng kinh doanh mới năm 2020
- Khởi nghiệp:Viết nội dung blog chất lượng để kinh doanh
- Cách chuyễn hướng tên miền, gia tăng khách hàng tuy cập trang bán hàng
- 3 Chiến lược thu hút khách hàng trong kinh doanh
- Ý Tưởng khinh doanh, "Khởi Nghiệp" thời công nghệ 4.0
- Vì sao phải xây dựng thương hiệu "Doanh nghiệp & Cá Nhân"
- Cài đặt Ý tưởng kinh doanh trực tuyến thời 4.0 cần những gì?
- Làm thế nào viết nội dung để bán hàng được giá cao?
- Bắt đầu khởi nghiệp cần những gì?
- SEO một blog, website mới đơn giản như thế nào?
- Kinh nghiệm mua hàng khuyến mãi, giảm giá
- Những chiêu trò lôi kéo, kêu gọi đầu tư trên mạng xã hội
- "Vô gia cư" gắn mác doanh nhân... thời công nghệ 4.0
- Những quyển sách hay dành cho "Doanh Nhân"
- Làm giàu với Tiếp thị Liên kết
- Bạn muốn trở thành nhà "Đầu cơ" hay nhà "Đầu tư"
- Xuất khẩu Robot Việt Nam, Tại sao không?
- Viết Blog du lịch kiếm tiền, Nên chăng?
- Nhiều người muốn làm giàu, Nhưng họ Sợ "Bị Giàu"
- Ý Tưởng kinh doanh mới...
- Đơn giản, bạn chỉ cần Mua - Bán: Sách, chưa bao giờ "Lỗ"
- Kinh Doanh Tên Miền và Kinh doanh Kim Cương
- Tôi và em: "Định mệnh hay là Nhân Duyên"
- Bạn là ai không quan trọng! Thể hiện Đẳng cấp hay không...?
- Cấu hình tên miền cho Blogger, đơn giản và Miễn phí
- Kinh Nghiệm xương máu khi đầu tư tên miền
- Nguyên Tắc: "Đầu tư" của bạn là gì?
- Cá nhân có cần xây dựng "Thương Hiệu" hay không?
- Định vị "Doanh Nhân" hay là "Bán hàng rong"???
- Đưa em về dưới mưa... Rước em vô gốc dừa..
- Tên miền và câu chuyên xưa xửa xưa...
- Ngành Công nghiệp tên miền đã phát triển như thế nào?
- Bạn đang "Đánh Bạc" Hay "Đầu tư"
- Một Website, Blog giá trị là ntn?
- Bí mật mua cổ phần, cổ phiếu, coins... trước IPO, ICO
- Vì Sao bạn mất dần khách hàng?
- Vốn ít, Khởi nghiệp như thế nào?
* Các chương trình SALE OFF 20-70%:
- Điện tử - Điện Lạnh - Công Nghệ
- Vé Máy Bay - Du Lịch - Khách Sạn
- Tài Chính - Ngân Hàng - Chứng Khoán - Đầu Tư
- Thời Trang - Túi Xách - Đồng Hồ - Phụ Kiện Thời Trang
- Kiếm tiền trực tuyến, "Khởi Nghiệp" thời công nghệ 4.0
0 nhận xét:
Đăng nhận xét