Divide and conquer là gì

Phương pháp chia nơi nào để trị (Divide and Conquer) là một phương pháp quan trọng trong việc thiết kế dữ liệu các giải thuật tổng hợp . Ý tưởng nguyên nhân của phương pháp này chi tiết khá đơn giản link down sửa lỗi rất dễ hiểu: quảng cáo Khi cần giải quyết một bài toán hay nhất , ta phải làm sao sẽ tiến hành chia bài toán đó thành qua app các bài toán con nhỏ hơn tốt nhất . Tiếp tục chia cho đến khi thanh toán các bài toán nhỏ này không thể chia thêm nữa hỗ trợ , tự động khi đó ta miễn phí sẽ giải quyết tốc độ các bài toán nhỏ nhất này ở đâu nhanh và cuối cùng kết hợp giải pháp tính năng của qua web tất cả kỹ thuật các bài toán nhỏ tự động để tìm ra giải pháp lừa đảo của bài toán ban đầu.

Nói chung giá rẻ , bạn download có thể hiểu giải thuật chia tốt nhất để trị (Divide and Conquer) qua 3 tiến trình sau:

Tiến trình 1: Chia nhỏ (Divide/Break)

Trong bước này dịch vụ , chúng ta chia bài toán ban đầu thành địa chỉ các bài toán con hướng dẫn . Mỗi bài toán con nên là một phần tăng tốc của bài toán ban đầu hay nhất . Nói chung nhanh nhất , bước này sử dụng phương pháp đệ qui lấy liền để chia nhỏ qua app các bài toán cho đến khi không thể chia thêm nữa hướng dẫn . công cụ Khi đó chia sẻ , xóa tài khoản các bài toán con sửa lỗi được gọi là "atomic – nguyên tử" download , trực tuyến nhưng chúng kích hoạt vẫn biểu diễn một phần nào đó như thế nào của bài toán ban đầu.

Tiến trình 2: Giải bài toán con (Conquer/Solve)

Trong bước này phải làm sao , mật khẩu các bài toán con khóa chặn được giải.

Tiến trình 3: Kết hợp lời giải (Merge/Combine)

Sau khi tất toán các bài toán con tối ưu đã quản lý được giải phải làm sao , trong bước này chúng ta quản lý sẽ kết hợp chúng một cách đệ qui download để tìm ra giải pháp cho bài toán ban đầu.

Hạn chế trên điện thoại của giải thuật chia mẹo vặt để trị (Devide and Conquer)

Giải thuật chia lừa đảo để trị tồn tại hai hạn chế ở đâu uy tín , đó là:

Làm thế nào hỗ trợ để chia tách bài toán một cách hợp lý thành link down các bài toán con nơi nào , sử dụng bởi vì hay nhất nếu quảng cáo các bài toán con khóa chặn được giải quyết bằng thanh toán các thuật toán khác nhau an toàn thì giảm giá sẽ hay nhất rất phức tạp.

Việc kết hợp lời giải khóa chặn các bài toán con giả mạo được thực hiện như thế nào.

Ví dụ giải thuật chia kinh nghiệm để trị

Dưới đây là một số giải thuật ở đâu uy tín được xây dựng dựa trên phương pháp chia tổng hợp để trị (Divide and Conquer):

  • Giải thuật sắp xếp trộn (Merge Sort)
  • Giải thuật sắp xếp nhanh (Quick Sort)
  • Giải thuật tìm kiếm nhị phân (Binary Search)
  • Nhân ma trận download của Strassen

Theo Tutorialspoint

Bài trước: Giải thuật tham lam (Greedy Algorithm)

Bài tiếp: Giải thuật qui hoạch động (Dynamic Programming)

4.9/5 (38 votes)

Trong bài này chúng ta sẽ tiếp cận với cơ chế được dùng nhiều trong các thuật toán đó là cách phân chia để trị(Divide and Conquer) hay chia để chinh phục, nhắm giúp thuật toán nhanh và hiệu quả hơn.

1. Giới thiệu

Trong cách tiếp cận phân chia và chinh phục(chia để trị), bài toán được chia thành các bài toán con nhỏ hơn và sau đó mỗi bài toán được giải quyết độc lập. Khi chúng ta tiếp tục chia các bài toán con thành các bài toán con nhỏ hơn, cuối cùng chúng ta có thể đạt đến một giai đoạn mà không thể phân chia được nữa. Những vấn đề con nhỏ nhất có thể có “nguyên tử” (phân số) được giải quyết. Lời giải của tất cả các bài toán con cuối cùng được hợp nhất để có được lời giải của một bài toán ban đầu.

Divide and conquer là gì

Nhìn chung, chúng ta có thể hiểu cách tiếp cận chia để trị trong quy trình ba bước sau:

2. Phân chia hoặc ngắt(Divide/Break)

Bước này liên quan đến việc chia nhỏ vấn đề thành các vấn đề nhỏ hơn. Các vấn đề phụ nên đại diện cho một phần của vấn đề ban đầu. Bước này thường sử dụng một cách tiếp cận đệ quy để chia bài toán cho đến khi không có bài toán con nào có thể chia được nữa. Ở giai đoạn này, các vấn đề phụ trở thành nguyên tử về bản chất nhưng vẫn thể hiện một phần nào đó của vấn đề thực tế.

3. Chinh phục / Giải quyết(Conquer/Solve)

Bước này nhận được rất nhiều vấn đề nhỏ hơn cần giải quyết. Nói chung, ở cấp độ này, các vấn đề được coi là ‘tự giải quyết’.

4. Hợp nhất / Kết hợp(Merge/Combine)

Khi các bài toán con nhỏ hơn được giải quyết, giai đoạn này kết hợp chúng một cách đệ quy cho đến khi chúng tạo thành một giải pháp của bài toán ban đầu. Cách tiếp cận thuật toán này bằng hoạt động đệ quy các bước chinh phục & hợp nhất chúng gần nhau đến mức chúng xuất hiện thành một.

Ví dụ

Các thuật toán máy tính sau đây dựa trên cách tiếp cận lập trình chia để trị:

  • Hợp nhất Sắp xếp(Merge Sort)
  • Sắp xếp nhanh chóng(Quick Sort)
  • Tìm kiếm nhị phân(Binary Search)
  • Phép nhân ma trận của Strassen(Strassen’s Matrix Multiplication)
  • Cặp gần nhất (điểm)(Closest pair (points))

Có nhiều cách khác nhau có sẵn để giải quyết bất kỳ vấn đề máy tính nào, nhưng những cách được đề cập là một ví dụ điển hình về phương pháp chia và chinh phục.

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3schools
  • Geeksforgeeks
  • codechef
  • dev.to

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Divide and conquer là gì

Nếu bạn thấy bài học này hữu ích, mình nhờ bạn chia sẻ cho bạn bè và người thân cũng như xem thêm các bài viết khác tại trang web Engbits.net (bạn có thể bắt đầu tại đây).

Divide and conquer nghĩa là Chia rẽ và chinh phục.

Divide and rule nghĩa là Chia rẽ và thống trị.

Hai cách diễn đạt divide and conquer và divide and rule thường có thể được dùng thay thế cho nhau vì tính tương đồng về ngữ nghĩa của chúng. Divide and conquer dường như được sử dụng phổ biến hơn divide and rule.

Khái niệm divide and conquer và divide and rule được dùng để nói đến chiến thuật giải quyết vấn đề, đặc biệt là những vấn đề khó khăn, nan giải. Đứng trước một trở ngại dường như quá to lớn, quá khó khăn, bạn biết bản thân mình không đủ sức, không đủ nguồn lực để vượt qua nó. Nhưng thay vì nhìn nhận vấn đề như một khối khổng lồ, hãy thay đổi cách suy nghĩ và chia nhỏ vấn đề ra thành từng thành phần nhỏ hơn và từ từ xử lý chúng, mỗi lúc một thành phần.  Divide and conquer / divide and rule là một chiến thuật và cũng là một lối tư duy. Hãy liên tưởng đến câu chuyện bó đũa: bạn không thể bẻ gãy cùng một lúc nguyên bó đũa, nhưng bạn có thể chia rẽ bó đũa ra và bẻ gãy từng chiếc đũa riêng lẻ.

Bạn có thể dùng các cách diễn đạt divide and conquer và divide and rule trong những ngữ cảnh mang tính kỹ thuật, ví dụ như khi bạn gặp một bài toán phức tạp, hay cần phải thiết kế một chương trình lập trình máy tính cần nhiều thành phần, nhiều bước tính toán, hay khi bạn là một kỹ sư muốn chế tạo một cỗ máy đòi hỏi nhiều thành phần cơ khí. Ví dụ: I don’t know how to solve this difficult question, but I’m sure we can divide and conquer it after reading more about the relevant topics. (Tôi không biết làm cách nào để giải câu hỏi này, nhưng tôi chắc chắn rằng chúng ta có thể chia rẽ và chinh phục nó sau khi đọc thêm về những chủ đề liên quan.).

Chiến lược divide and conquer / divide and rule cũng có thể được sử dụng trong những vấn đề mang tính con người, cộng đồng, xã hội. Ví dụ, bạn và người yêu của bạn thương nhau thắm thiết, nhưng có một người thứ ba cũng thích người yêu của bạn và muốn xen vào mối quan hệ giữa hai bạn. Họ có thể dàn cảnh hay nói xấu bạn với người yêu của bạn, làm cho hai bạn bị chia rẽ và từ đó tung chiêu cám dỗ để chinh phục người yêu của bạn. Tệ hơn, người bạn xấu tính và mưu mẹo này có thể còn không hề cho bạn biết về những chiêu trò của họ và luôn luôn đầm ấm sát cánh bên bạn suốt thời gian những biến cố xảy ra để ‘chân thành’ khuyên bạn chia tay người yêu. Họ chẳng những chinh phục được người yêu của bạn mà còn chinh phục được cả bạn nữa.

Vậy, liệu cách diễn đạt divide and conquer và divide and rule có phải lúc nào cũng mang nghĩa xấu, tiêu cực khi nó được dùng để nói về những mối quan hệ con người? Không hề. Bản thân cách diễn đạt này mang sắc thái trung tính (neutral). Nó có mang nghĩa tích cực hay tiêu cực là tùy thuộc vào ngữ cảnh giao tiếp; và tương tự, các hành động divide and conquer / rule có tốt hay xấu là tùy thuộc vào tình huống và động cơ của người thực thi những hành động này. Ví dụ, bạn có con và con bạn giao du với những người xấu. Là một phụ huynh thương con và muốn bảo bọc con, bạn muốn tìm cách giúp con bạn. Bạn có thể cho con bạn thấy rõ những điều xấu  xa mà những người này làm, để con bạn nhận ra và tránh xa họ; bạn đồng thời cũng có thể cho những người xấu này thấy rằng con bạn không có giá trị gì và không thể làm lợi gì cho họ. Đúng là bạn có chia rẽ (divide) mối quan hệ và chinh phục (conquer) từng mục tiêu mà bạn muốn (mục tiêu bảo vệ con bạn và mục tiêu xua đuổi những thành phần xấu), nhưng điều đó không có nghĩa là những hành động divide and conquer của bạn là xấu xa, và khi ai đó dùng cách diễn đạt divide and conquer để miêu tả hành động của bạn, họ không nhất thiết ám chỉ bạn đã làm điều tiêu cực.

  • Admittedly, at first, we didn’t expect to be able to write such a complicated story. There were a lot of characters and a lot of storylines that we wanted to include in the script. But once we learned to divide and conquer, it wasn’t really that difficult. (Thừa nhận là lúc đầu, chúng tôi đã không kỳ vọng có thể viết một câu chuyện phức tạp như vậy. Có rất nhiều nhân vật và rất nhiều tuyến truyện mà chúng tôi muốn thêm vào kịch bản. Nhưng một khi chúng tôi học chia rẽ và chinh phục, nó thực sự không khó đến mức như vậy.)
  • A good friendship can never be divided and conquered. If it is, maybe it’s not that good of a friendship. (Một tình bạn tốt không bao giờ có thể bị chia rẽ và chinh phục. Nếu nó bị [như vậy], có lẽ nó không phải là một tình bạn tốt đến vậy.)
  • Ken is determined to win the competition. If he has to divide and conquer his opponent’s team, he will do it. (Ken quả quyết muốn thắng cuộc thi. Nếu anh ta phải chia rẽ và chinh phục đội tình địch của anh ta, anh ta sẽ làm vậy.)
  • Although it may seem impossible, Black Scythe has a plan to divide and rule the kingdom from within. (Mặc dù có vẻ bất khả thi, Lưỡi Hái Đen có một kế hoạch để chia rẽ và thống trị vương quốc từ bên trong.)
  • Kyle had originally planned to divide and conquer the situation, but he didn’t need to. The problem turned out to be much easier than he had thought. (Kyle lúc đầu dự định chia rẽ và chinh phục tình hình, nhưng anh ta đã không cần làm vậy. Vấn đề hóa ra dễ hơn anh đã nghĩ nhiều.)
  • The CEO is known to use the divide-and-rule strategy in his every move. (Vị tổng giám đốc được biết đến [là người] sử dụng chiến thuật chia rẽ và thống trị trong từng bước của ông.)
  • To divide and conquer requires one to be able to intellectually break a problem down into smaller pieces, something that is easier said than done. (Để chia rẽ và chinh phục đòi hỏi một người phải có khả năng chia nhỏ về mặt tư duy một vấn đề ra thành những mảnh nhỏ hơn, thứ mà nói dễ hơn làm.)
  • The whole family was divided and ruled by one lady. Worse, they have no idea that was what was happening. A wrong marriage sometimes is more damaging than one can ever imagine. (Toàn gia đình bị chia rẽ và thống trị bởi một người đàn bà. Tệ hơn, họ không hề có khái niệm đó là điều đang xảy ra. Một cuộc hôn nhân sai lầm đôi khi tai hại hơn một người có bao giờ có thể tưởng tượng ra.)
  • We need trust and loyalty among us, otherwise it won’t be so difficult to prevent someone from dividing and conquering our team. (Chúng ta cần lòng tin và sự trung thành giữa chúng ta với nhau, nếu không thì nó sẽ không quá khó để ngăn chặn ai đó chia rẽ và chinh phục đội của chúng ta.)
  • The mocule actually wasn’t synthesized in one go. We divided and conquered by synthesizing its components, then putting them together. (Phân tử này thực ra đã không được tổng hợp trong một lượt. Chúng tôi đã chia rẽ và chinh phục bằng cách tổng hợp những thành phần của nó, rồi đặt chúng với nhau.)

Vậy là hết bài!

Nếu bạn thấy bài học này hữu ích, mình nhờ bạn chia sẻ cho bạn bè và người thân cũng như xem thêm các bài viết khác tại trang web Engbits.net (bạn có thể bắt đầu tại đây).

Bạn còn điều gì thắc mắc về bài học? Điều gì về tiếng Anh đang làm bạn trằn trọc, ăn không ngon, ngủ không yên? Hay đơn giản là bạn chỉ muốn say “Hi!”? Hãy để lại lời bình luận bên dưới hay gửi email về địa chỉ nhé!