Với một vấn đề đặt ra, làm thế nào chúng ta có thể đưa ra thuật toán giải quyết nó? Trong chương này, chúng ta sẽ trình bày các chiến lược thiết kế thuật toán, còn được gọi là các kỹ thuật thiết kế thuật toán. Mỗi chiến lược này có thể áp dụng để giải quyết một phạm vi khá rộng các bài toán. Mỗi chiến lược có các tính chất riêng và chỉ thích hợp cho một số dạng bài toán nào đó. Chúng ta sẽ lần lượt trình bày các chiến lược sau: chia-để-trị (divide-and-conquer), quy hoạch động (dynamic programming), quay lui (backtracking) và.