[Python] Thuật toán DFS mà ngay cả sinh viên giáo dục khai phóng cũng có thể hiểu được! - Giới thiệu
Đây là bài giảng DFS cơ bản giải thích cách một nhà phát triển đang làm việc có bằng nghệ thuật tự do nghiên cứu để có được việc làm :) Chúng tôi đã giảm thiểu các bài giảng lý thuyết nhàm chán đến mức tối thiểu và chuẩn bị một bài giảng trong đó bạn học bằng cách tự giải quyết vấn đề! Nếu bạn tham gia bài giảng này, bạn sẽ có thể tự mình giải quyết các vấn đề DFS cấp bạc.
Không còn những giờ học lý thuyết nhàm chán! Chiến lược DFS học được thông qua việc giải quyết vấn đề!
Chọn và chỉ tập trung vào những câu hỏi thường gặp nhất!
Khả năng giải quyết các vấn đề DFS một cách độc lập
Thuật toán DFS khó hơn bạn nghĩ? Học nhanh với các dạng câu hỏi thường gặp!
Bạn đã bao giờ nghĩ về điều này chưa?
🤔
Làm sao tôi biết mình nên giải quyết vấn đề này bằng DFS?
🥲
Mặc dù tôi biết DFS là gì, nhưng tôi vẫn luôn cảm thấy bối rối. Có giải pháp chung nào không?
😥
Tôi không thể hình dung được các hàm đệ quy trong đầu. Làm thế nào tôi có thể sắp xếp chúng để hiểu được?
Dành cho những người không chuyên ngành, từ một nhà phát triển 8 năm Bài giảng về thuật toán DFS 🪢
DFS (Tìm kiếm theo chiều sâu)
Một trong những cách để khám phá toàn bộ biểu đồ là sử dụng thuật toán ưu tiên 'chiều sâu'.
Khóa học này là khóa học giới thiệu về thuật toán DFS. Mục tiêu của khóa học là cung cấp kinh nghiệm thực tế với các bài toán DFS bằng cách giải quyết những câu hỏi thường gặp nhất . Sau khi tóm tắt ngắn gọn các khái niệm chính, bạn sẽ giải quyết từng loại bài toán để phát triển khả năng nhận biết "đây là bài toán DFS". Khóa học này hướng đến việc bao quát các khái niệm cốt lõi xuyên suốt mọi bài toán, cuối cùng là chinh phục DFS.
Đây là những bình luận trên kênh YouTube mà tôi quản lý.
Bài giảng này sẽ rất hữu ích cho những ai đã nghiên cứu thuật toán DFS nhưng gặp khó khăn trong việc hiểu hoặc gặp khó khăn khi tự mình tìm ra giải pháp. Được biên soạn bởi một sinh viên chuyên ngành khoa học xã hội nhân văn với tám năm kinh nghiệm làm lập trình viên, bài giảng này được thiết kế dành cho những người không chuyên, vì vậy tôi đảm bảo nó sẽ dễ hiểu hơn bất kỳ bài giảng nào khác.
Tôi giới thiệu điều này cho những người này 🙋
Những người biết ngữ pháp Python cơ bản nhưng đang chuẩn bị cho bài kiểm tra mã hóa lần đầu tiên
Những người đã cố gắng tự giải quyết các vấn đề DFS nhưng vẫn không thể hiểu được
Những người cảm thấy lạc lõng khi họ thực sự nhìn thấy vấn đề ngay cả sau khi tham dự các bài giảng lý thuyết
Tính năng bài giảng ✨
1. Chúng ta hãy tóm tắt các gợi ý cho bài toán DFS.
Khi tôi giảng bài, điều mà sinh viên thường nói là "Em không biết là em phải giải bài toán này bằng DFS."
Do đó, trong bài giảng, chúng ta cùng nhau đọc bài toán được trình bày và tìm câu trả lời cho câu hỏi: "Tôi nên sử dụng từ khóa nào để nghĩ về DFS trong bài toán này?"
2. Tôi sẽ chỉ cho bạn cấu trúc dữ liệu thay đổi khi chương trình tiến triển.
Khóa học này không chỉ đơn thuần là sử dụng sơ đồ đơn giản hay gõ mã để giải thích mọi thứ! Hoạt ảnh được sử dụng để minh họa mọi thứ, từ việc xác định cấu trúc dữ liệu, kích thước và khởi tạo chúng, cho đến cách các giá trị thay đổi từng bước để đi đến câu trả lời đúng.
3. Tóm tắt những điểm cốt lõi trong vấn đề.
Mặc dù cách triển khai khác nhau tùy theo từng bài toán, nhưng những điểm chung giữa các bài toán đòi hỏi thuật toán DFS vẫn không thay đổi. Bài giảng này sẽ phác thảo các yếu tố chính để giải quyết thành công các bài toán DFS, được sắp xếp theo từng loại, đồng thời dành thời gian để củng cố và tóm tắt lại các khái niệm cốt lõi cho từng bài toán.
Sau khi trải qua quá trình này, bạn sẽ có thể tự mình giải quyết các vấn đề DFS mới bằng cách nhanh chóng xác định những phần nào là chung và những phần nào đã thay đổi!
📚Chúng tôi đã lựa chọn và sắp xếp 12 loại bài toán được chọn lọc kỹ lưỡng.
Trong bài giảng này, chúng tôi đã chọn ra 12 bài toán nhập môn DFS thường gặp và khó nhất (Mức Bạc 4-2) được đăng tải trên Baekjoon. Sau đó, chúng tôi chia các bài toán này thành hai phân nhóm và phác thảo các khái niệm cốt lõi cần thiết cho từng phân nhóm. Các phân nhóm và bài toán chi tiết như sau.
Loại 1. Tìm các phần tử được kết nối
Virus (2606) (Tải xuống miễn phí)
Số lượng phần tử được kết nối (11724)
Lớp thuật toán - Tìm kiếm theo chiều sâu 1 (24479)
Lớp thuật toán - Tìm kiếm theo chiều sâu 2 (24480)
DFS và BFS (1260)
Tính toán mức độ quan hệ họ hàng (2644)
Tìm kiếm cha mẹ của một cây (11725)
Loại 2. Tìm cùng một danh mục
Bắp cải hữu cơ (1012) (Xuất bản miễn phí)
Sự xâm nhập (13565)
Số lượng đảo (4963)
Trang trí sàn nhà (1388)
Vua Nhảy Charlie (Nhỏ) (16173)
Dù tôi hiểu cảm giác bất lực của bạn Để tôi chỉ cho bạn một cách dễ hơn 🚩
Xin chào :) Tôi bắt đầu sự nghiệp với tư cách là sinh viên khoa học xã hội và nhân văn chuyên ngành kinh doanh/kinh tế, và hiện tại tôi đã làm việc với tư cách là một nhà phát triển trong 8 năm tại một công ty lớn.
8 năm kinh nghiệm làm lập trình viên tại một công ty lớn
Người sáng tạo YouTube đưa tin về nội dung liên quan đến việc làm của nhà phát triển (https://www.youtube.com/@gaebal)
Giảng viên Khóa học Giới thiệu Nền tảng Lập trình C++
Phiên thảo luận và bình luận trực tiếp về bài kiểm tra thuật toán nền tảng Ellis của Quản lý sản xuất (Python/Java/C++)
Khi nghĩ lại lần đầu tiên học về phát triển cách đây tám năm, tôi thấy thật choáng ngợp và khó khăn, nhưng bằng cách tổ chức và giải quyết vấn đề bằng chiến lược và phương pháp của riêng mình, tôi nghĩ mình đã có thể tìm được việc làm nhanh hơn/tốt hơn một chút.
Đặc biệt nếu bạn là người không chuyên ngành và đang gặp khó khăn với các bài kiểm tra lập trình, bài giảng này, do một người không chuyên ngành giảng dạy, sẽ giúp bạn hiểu chúng dễ dàng hơn. Cảm ơn bạn! :)
Một bài giảng tuyệt vời để cùng nhau xem 📺
Hỏi & Đáp 💬
H. Tại sao các bài giảng lại ngắn như vậy?
Với tư cách là một giảng viên, tôi thấy việc thêm nhiều bài tập để tạo thành một bài giảng lớn và tăng giá tương ứng sẽ có lợi hơn cho tôi. Tuy nhiên, xét đến việc nội dung và giải thích yêu cầu cho mỗi cấp độ khác nhau, và hầu hết người đăng ký/học viên của tôi đều là người đi làm không có thu nhập, tôi nghĩ tốt hơn nên chia nhỏ bài học thành nhiều phần nhỏ hơn và giảm giá. Vì vậy, tôi đã rút gọn và cô đọng hơn các khóa học khác.
H. Tôi không gặp nhiều vấn đề, nhưng tôi vẫn có thể hiểu DFS chứ?
Vì những lý do đã nêu ở trên, tôi đã chia khóa học thành các phần nhỏ hơn, và sau khóa học nhập môn, tôi cũng đang chuẩn bị các khóa học ứng dụng và nâng cao, bao gồm các cấp độ Vàng và Bạch kim. Vì vậy, tôi tin rằng sẽ là sai lầm nếu nói rằng "Chỉ riêng khóa học này thôi cũng đủ để bạn giải quyết mọi bài toán DFS!" (Suy cho cùng, việc học tập đòi hỏi thời gian để tự suy ngẫm). Tuy nhiên, tôi có thể đảm bảo rằng không có khóa học nào khác giới thiệu DFS dễ dàng như khóa học này, và sau khi hoàn thành, bạn sẽ có thể tự học và hiểu DFS. Vì vậy, tôi có thể tự tin giới thiệu khóa học này cho bất kỳ ai không cần video hướng dẫn giải bài toán đơn giản mà chỉ muốn học cách câu cá.
H. Trên YouTube cũng có giải pháp tương tự phải không?
Mặc dù mạch nội dung chung vẫn giữ nguyên, nhưng do đặc thù của YouTube, video không được dài, nên tôi đã lược bỏ hầu hết phần giải thích bổ sung. Nhiều người đăng ký đã đặt câu hỏi và bày tỏ sự thất vọng trong phần bình luận, và để giải quyết vấn đề này, tôi đã tạo một khóa học trực tuyến.
Tôi đã cố gắng trình bày mọi thứ tôi biết một cách đơn giản và súc tích nhất có thể. Thực tế, các chủ đề về virus và bắp cải hữu cơ được cung cấp miễn phí trong các bài giảng liên quan và cũng có sẵn trên YouTube. Bạn sẽ dễ dàng tự đánh giá hơn nếu xem phần tóm tắt ngắn gọn trên YouTube được giải thích chi tiết hơn trong bài giảng này, vì vậy hãy tham khảo nhé!
H. Phải mất bao lâu để nhận được phản hồi khi tôi đặt câu hỏi?
Trừ khi có vấn đề gì bất thường, tôi sẽ phản hồi trong vòng 24 giờ làm việc, và chậm nhất là 72 giờ. Sau khi tham gia nhiều lớp học trực tuyến, tôi nhận thấy rằng giảng viên phản hồi càng nhanh thì tốc độ học càng nhanh, hiệu quả hơn so với lớp học trực tiếp. Tuy nhiên, tôi cũng biết rằng thời gian phản hồi của giảng viên chậm hơn có thể làm giảm động lực học tập, vì vậy tôi sẽ kiểm tra bình luận hàng ngày và trả lời câu hỏi!
H. Có câu hỏi nào tôi không nên hỏi không?
Như tôi đã nói trong mọi video, mọi câu hỏi đều luôn được hoan nghênh. Nhiều khả năng các học viên khác cũng có những câu hỏi tương tự như tôi. Tuy nhiên, tôi nghĩ việc thiết lập một vài quy tắc sẽ giúp mọi người đặt câu hỏi dễ dàng hơn.
1. Vui lòng để lại câu hỏi liên quan đến video!
Vì mỗi video đề cập đến các chủ đề khác nhau nên tôi nghĩ sẽ hữu ích cho mọi người nếu bạn có thể đăng câu hỏi của mình trên video có liên quan để chúng ta có thể giúp đỡ lẫn nhau.
2. Đối với các câu hỏi liên quan đến tư vấn cuộc sống/việc làm, vui lòng liên hệ với chúng tôi qua mục cố vấn.
Vì câu trả lời cho những câu hỏi này có thể khác nhau tùy thuộc vào hoàn cảnh của mỗi cá nhân, việc đặt câu hỏi theo cách riêng tư hơn cho phép tôi đưa ra hướng dẫn chính xác hơn. Trả lời công khai những câu hỏi này sẽ chỉ mang lại những câu trả lời mơ hồ, vì vậy vui lòng để lại câu hỏi của bạn trong phần tư vấn và tôi sẽ rất vui lòng giải đáp.
3. Vui lòng gửi thêm những câu hỏi như "Tại sao không?" thông qua phần cố vấn.
Đôi khi, vì bực bội, mọi người sao chép và dán toàn bộ mã nguồn rồi nhờ giúp đỡ. Những câu hỏi này khó có thể giúp ích cho người khác, và tình huống của mỗi người là khác nhau. Do đó, nếu bạn liên hệ riêng với chúng tôi qua mục Hướng dẫn, chúng tôi sẽ giải thích vấn đề, nguyên nhân và thậm chí cả cách khắc phục!
Bạn có thể sử dụng bất kỳ hệ điều hành hoặc IDE nào cho môi trường thực hành của mình. Tôi đang viết mã bằng VS Code trên Windows 11.
Tuy nhiên, nếu bạn chuẩn bị trước một môi trường để có thể viết mã và xây dựng/gỡ lỗi, bạn có thể dễ dàng tham gia các bài giảng.
Chúng tôi cung cấp PPT được sử dụng trong bài giảng ở định dạng PDF.
Bài giảng này giả định bạn đã có hiểu biết cơ bản về cú pháp Python . Những ai đã có kinh nghiệm với DFS sẽ thấy dễ hiểu hơn, nhưng với những ai chưa quen với DFS, chúng tôi đã bao gồm một phần giải thích ngắn gọn, nên đừng lo lắng!
Khuyến nghị cho những người này
Khóa học này dành cho ai?
Những người mới làm quen với thử nghiệm mã hóa/thuật toán DFS
Bất cứ ai từng đau đầu khi cố gắng hiểu hàm đệ quy
Tôi là người mới bắt đầu làm bài kiểm tra viết mã, biết ngữ pháp nhưng cảm thấy nhỏ bé hơn rất nhiều khi gặp vấn đề.
Những người hiểu khái niệm DFS nhưng lại bối rối vì không thể nghĩ ra giải pháp khi nhìn vào vấn đề
Những người mệt mỏi với lý thuyết và muốn cùng nhau giải quyết vấn đề
Những người đang chuẩn bị cho bài kiểm tra viết mã bằng Python
Cần biết trước khi bắt đầu?
Ngữ pháp cơ bản của Python (câu lệnh điều kiện, câu lệnh vòng lặp, câu lệnh đầu vào/đầu ra, v.v.)
Xin chào Đây là
606
Học viên
61
Đánh giá
75
Trả lời
5.0
Xếp hạng
2
Các khóa học
문과생도 이해하는 알고리즘 강의를 가르치는 강사 개발자로 취직하기입니다 :) 저는 문과생 출신으로 현재는 8년차 대기업 개발자입니다. 처음 코딩을 접하고 코딩 테스트 준비를 하던 막막한 시절을 떠올리며, 어떻게 하면 조금 더 쉽게 설명할 수 있을지, 저 같은 비전공자 문과생도 이해하고 새로운 기술을 습득할 수 있을지 고민하며 강의를 제작하고 있습니다. 유튜브 통해서도 무료 강의 진행하고 있으니 많은 관심 부탁 드립니다! https://www.youtube.com/@gaebal
Nhờ bài giảng này mà tôi có thể hiểu rõ khái niệm DFS. Khi nghĩ lại về tất cả những lần tôi dành thời gian học một mình, tôi cảm thấy hối tiếc rằng tôi có thể học hiệu quả hơn nếu tôi có một giáo viên tuyệt vời như vậy hướng dẫn tôi sớm hơn, nhưng tôi cũng cảm thấy biết ơn vì bây giờ tôi có thể học đúng cách. Đây là một bài giảng thật quý giá. Chỉ cần nhìn vào cách bạn truyền đạt bài giảng một cách dễ hiểu, tôi có thể thấy rằng bạn có năng lực đáng kể. Tôi có thể tưởng tượng rằng bạn hẳn rất bận rộn trong nhiều việc, nhưng... Tôi vẫn hy vọng rằng bạn sẽ nhanh chóng tạo ra các khái niệm thuật toán khác và các bài giảng chuyên sâu!! Tôi sẽ chờ đợi trong nôn nóng😊😊^_😭 Cảm ơn bạn một lần nữa vì đã dành thời gian tạo ra một bài giảng chất lượng~~!!
Đây là một bài giảng chất lượng. Bây giờ tôi cuối cùng cũng bắt đầu hiểu rõ hơn về cách tiếp cận kiểu DFS. Tôi sẽ ôn lại để hoàn thiện kiến thức của mình! Tôi thực sự mong đợi bài giảng tiếp theo.
Ở Baekjun, tôi chỉ giải các bài toán thực hiện độ khó đồng, nhưng khi thử giải các bài toán bạc, tôi có cảm giác như mình sẽ không thể làm được nếu không học thuật toán. Vì vậy tôi đã thử nhiều thuật toán khác nhau nhưng tôi thực sự không biết gì về DFS. Tôi cảm thấy như mình không hoàn toàn hiểu được. Như bất kỳ ai giải quyết được một vấn đề đều biết, nếu tôi không hiểu hết về nó, tôi sẽ không bao giờ có thể biến nó thành của riêng mình. Sau đó tôi tìm thấy khóa học này và tham gia khóa học miễn phí và nó rất tốt. Nhờ đó em đã giải được và hiểu đầy đủ tất cả các vấn đề có trong bài giảng. Nếu không có bài giảng này, có lẽ tôi đã mất nhiều thời gian hơn và căng thẳng hơn. Cảm ơn
Nếu tôi muốn thứ gì đó hơn thế nữa, sẽ thật tuyệt nếu vấn đề được giải quyết ở cấp độ vàng. Tôi hơi thất vọng vì có nhiều vấn đề tương tự. Đó vừa là ưu điểm vừa là nhược điểm, và mặc dù nó có thể được coi là lợi thế đối với những người thực sự mới bắt đầu sử dụng DFS và muốn cảm nhận về nó, nhưng nó có thể khiến những người có một số kinh nghiệm cảm thấy hơi thất vọng. . Nhưng nhờ có bạn, tôi rất vui vì đã hiểu được DFS. Cảm ơn bạn đã tạo ra khóa học. chúc một ngày tốt lành!