Các mô hình thuật toán là gì?


8

Chúng ta thường nói về các mô hình lập trình như chức năng, thủ tục, hướng đối tượng, bắt buộc, v.v. nhưng tôi nên trả lời gì khi tôi hỏi các mô hình của thuật toán?

Ví dụ: Bài toán nhân viên bán hàng du lịch, Thuật toán đường đi ngắn nhất của Dijkstra, Thuật toán GCD Euclid, Tìm kiếm nhị phân, Cây kéo dài tối thiểu của Kruskal, Mô hình thuật toán của Hà Nội? Hoặc có lẽ các mô hình là các cấu trúc dữ liệu tôi sẽ sử dụng để thiết kế các thuật toán này?


Câu trả lời:


9

Các mô hình thuật toán là :

Cách tiếp cận chung để xây dựng các giải pháp hiệu quả cho các vấn đề

Bất kỳ cách tiếp cận cơ bản, thường được sử dụng trong thiết kế thuật toán đều có thể được coi là mô hình thuật toán :

Phân chia và chinh phục

Ý tưởng: Chia trường hợp vấn đề thành các trường hợp con nhỏ hơn của cùng một vấn đề, giải quyết các đệ quy này và sau đó đặt các giải pháp lại với nhau thành một giải pháp của trường hợp cụ thể.

Ví dụ: Sáp nhập, Quicksort, thuật toán của Strassen, FFT.

Thuật toán tham lam

Ý tưởng: Tìm giải pháp bằng cách luôn đưa ra lựa chọn có vẻ tối ưu vào lúc này - đừng nhìn về phía trước, đừng bao giờ quay lại.

Ví dụ: Thuật toán của Prim, thuật toán của Kruskal.

Lập trình năng động

Ý tưởng: Biến đệ quy lộn ngược.

Ví dụ: Thuật toán Floyd-Warshall cho tất cả các cặp bài toán đường đi ngắn nhất.

Mô hình từ này dịch sang ví dụ, nhưng đó không phải là cách nó được sử dụng trong bối cảnh khoa học . Các ví dụ của bạn là tất cả các ví dụ về thuật toán (ngoại trừ vấn đề nhân viên bán hàng lưu động, đây là một vấn đề khó về NP), không có vấn đề nào đủ tầm thường để được coi là một mô hình thuật toán.


Tôi chưa bao giờ thấy ai đó định nghĩa DP theo cách đơn giản như vậy. Cảm ơn bạn.
MT.

2

Các mô hình thuật toán thiết kế chung:

  • Phân chia và chinh phục : Phân chia đệ quy một vấn đề thành hai hoặc nhiều vấn đề phụ cùng loại (hoặc liên quan).
  • Lập trình động : chia nó thành một tập hợp các bài toán con đơn giản hơn. Ví dụ: Câu đố về tháp Hà Nội
  • Thuật toán tham lam : giải quyết vấn đề heuristic để đưa ra lựa chọn tối ưu cục bộ ở mỗi giai đoạn. Ví dụ: vấn đề nhân viên bán hàng du lịch
  • Quay lui : là một thuật toán chung để tìm tất cả (hoặc một số) giải pháp cho một số vấn đề tính toán Ví dụ: Câu đố Sudoku được giải quyết bằng cách quay lui.
  • Brute Force : một kỹ thuật giải quyết vấn đề rất chung bao gồm liệt kê một cách có hệ thống tất cả các ứng cử viên có thể cho giải pháp và kiểm tra xem mỗi ứng viên có thỏa mãn tuyên bố của vấn đề hay không.

Bạn có thể tìm thấy số ví dụ trên geekforgeek

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.