Những thuật toán được sử dụng thường xuyên nhất?
Vui lòng viết một thuật toán cho mỗi câu trả lời, cố gắng giữ câu trả lời của bạn ngắn (một hoặc hai dòng).
Những thuật toán được sử dụng thường xuyên nhất?
Vui lòng viết một thuật toán cho mỗi câu trả lời, cố gắng giữ câu trả lời của bạn ngắn (một hoặc hai dòng).
Câu trả lời:
Là Fourier nhanh Chuyển đổi vấn đề thuật toán được giải quyết hầu hết các lần mỗi ngày bởi các hệ thống máy tính thực sự? Nó phải gần gũi. Vì vậy, tôi đề cử thuật toán FFT Cooley-Tukey .
Phép nhân.
Có lẽ một trong những thuật toán lâu đời nhất không hoàn toàn tầm thường, và một vấn đề được giải quyết thường xuyên hơn FFT.
Các thuật toán đường đi ngắn nhất của Dijkstra và Bellman-Ford . Có ít nhất 35.000 Hệ thống tự trị (AS) hoạt động trên Internet kể từ năm 2010. Mỗi AS đang chạy một giao thức định tuyến trạng thái liên kết (Dijkstra) hoặc giao thức định tuyến vectơ khoảng cách (Bellman-Ford). Các bộ định tuyến trong một AS thường cập nhật bảng theo định kỳ cứ sau vài phút, giả sử 10.
Do đó, số vụ hành quyết Dijkstra & Bellman-Ford mỗi ngày lên tới ít nhất 5 triệu. Và đó chỉ là từ các bộ định tuyến.
Chúng tôi chưa tính các tính toán đường đi ngắn nhất từ Google Maps và các lượt thích có thể dễ dàng chiếm số lượng gấp 10 lần. Nửa tỷ vụ hành quyết mỗi ngày không phải là quá xa vời.
Tôi nghĩ thuật toán được sử dụng nhiều nhất là Kiểm tra chẵn lẻ (hoặc có thể CRC hoặc một số loại mã sửa lỗi), bởi vì chúng xuất hiện trong mọi truy cập RAM.
Thuật toán Simplex - không phải điều này vẫn cạnh tranh với các phương pháp điểm nội thất tốt nhất sao? Nếu vậy nó phải được sử dụng rất nhiều.
Tổng quát hơn, bạn nên nhìn vào những người chiến thắng giải thưởng Kanellakis cho những ý tưởng có sức mạnh lý thuyết và thực tế.
Độ sâu tìm kiếm đầu tiên (DFS)
Thật khó để nghĩ về các thuật toán được sử dụng rộng rãi hơn các thuật toán trong triển khai TCP hiện đại : tức là tránh tắc nghẽn , truyền lại nhanh . Mặc dù điều đó phụ thuộc vào cách người ta xác định những gì đáp ứng các tiêu chí cho một thuật toán ...
Loại bỏ Gaussian Điều này vẫn được sử dụng trong thực tế phải không? Nếu không thay thế bằng bất cứ điều gì thường xuyên nhất được sử dụng để giải quyết các hệ thống tuyến tính ...
SHA-1 (và các hàm băm nói chung). Có lẽ đánh bại hầu hết các thuật toán khác về số lượng thực thi.
Phản hồi này diễn giải "thường xuyên nhất" theo các chu kỳ CPU thực tế.
Khi tôi học máy tính vào những năm 70, tôi nhớ lại rằng phần lớn các chu trình máy tính (đọc: máy tính lớn) được dành cho việc sắp xếp. Các ứng dụng kinh doanh đòi hỏi phân loại rộng rãi để phân tích và báo cáo. Tôi không tưởng tượng rằng điều đó đã thay đổi rất nhiều, nhưng tất nhiên sự gia tăng của các ứng dụng khác - e-mail, xử lý văn bản, v.v .-- phải thay đổi hỗn hợp. Những loại đó thường là loại ổn định (không phải Quicksort) do cần phải sắp xếp thành công các trường để tạo ra các lớp con.
Mặc dù vậy, nói một cách chính xác, thuật toán được sử dụng thường xuyên nhất là, không nghi ngờ gì, bất cứ điều gì được thực thi bởi quy trình chờ của hệ thống Windows khi không có gì khác đang diễn ra ;-).
Ma trận vectơ nhân
... Là công việc tính toán đằng sau giải pháp của hầu hết các hệ thống tuyến tính. Kết quả là nó được chạy bất cứ khi nào
Hầu hết các FLOP trên bất kỳ siêu máy tính hoặc cụm được sử dụng bên trong một mat-vec thưa thớt.
Phương pháp của Newton. Nó được sử dụng để tính toán căn bậc hai, cho bộ phận điện toán. Nó có thể được sử dụng để làm lập trình tuyến tính. Nói chung, đó là đặc điểm của tối ưu hóa (lồi). Nó có thể được sử dụng để giải các phương trình vi phân trong Vật lý bằng cách giảm thiểu tác động / năng lượng.
Băm và cây đỏ-đen.
Chúng đã được triển khai trong STL (hash_map, bản đồ) và mọi lập trình viên đều biết rằng một thùng chứa như vậy rất tiện lợi bất cứ khi nào bạn muốn lưu trữ một số thông tin được lập chỉ mục bởi một loại dữ liệu tùy ý.
Các thuật toán sửa lỗi, chẳng hạn như Reed-Solomon.
http://en.wikipedia.org/wiki/Error-correcting_code#List_of_error-correcting_codes http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
Tôi nghĩ DP được sử dụng "thường xuyên hơn" so với các thuật toán khác được trích dẫn trong khảo sát cho đến nay. Tôi suy luận "thường xuyên hơn" theo nghĩa là tần suất một khái niệm thuật toán không tầm thường được lập trình viên thực hiện trong cuộc sống thực, thay vì bao nhiêu lần thực hiện một thuật toán cụ thể được gọi.
DP rất linh hoạt, và có nhiều mặt. Đôi khi tôi sử dụng nó trong tiềm thức và sau đó nhận ra sau đó tôi đang làm DP.
Tất nhiên, có những thứ thậm chí còn phổ biến hơn Chương trình động, nhưng chúng chủ yếu là cấu trúc dữ liệu (mảng, danh sách liên kết, hàm băm).
Kết hợp chuỗi, được sử dụng mọi lúc trong phần mềm ứng dụng và ở cấp độ cơ sở dữ liệu.
Trong trường hợp chính xác, có một số thuật toán khá liên quan (KMP, Boyer-Moore) với một số thuật toán đạt được thời gian chạy dự kiến tuyến tính. Họ cũng thú vị để nghiên cứu từ quan điểm của CS.
Kết hợp chuỗi gần đúng, đó là sự sắp xếp, có lẽ còn thú vị hơn. Bạn biết tính năng "autocorrecting"? Ngoài ra, tìm kiếm trong dữ liệu chuỗi nhiễu (ví dụ DNA) được thực hiện bằng cách sử dụng sắp xếp.