Phân tích Smoothed được sử dụng bên ngoài học viện?


24

Có phải phân tích được làm mịn tìm đường vào phân tích dòng chính của thuật toán? Có phổ biến cho các nhà thiết kế thuật toán để áp dụng phân tích trơn tru cho các thuật toán của họ?


11
Mọi người có áp dụng bất kỳ loại phân tích phức tạp nào cho các thuật toán của họ bên ngoài học viện không?
Dave Clarke

2
Những gì @DaveClarke nói; có lẽ anh ta nên yêu cầu các phân tích nghiêm ngặt (hoặc không tầm thường). Tôi hy vọng nhiều học viên nhìn vào thuật toán của họ, đếm độ sâu lồng vòng và nói: "Đây là !". O(n3)
Raphael

3
Trong khi tìm kiếm bất kỳ việc sử dụng phân tích được làm mịn nào khác ngoài Simplex, tôi đã tìm thấy một danh sách được quản lý bởi một trong những người đã khám phá ra kỹ thuật này.
Raphael

1
@DaveClarke làm thế nào về những người làm việc tại IBM hoặc HP hoặc NTT? Họ có nên sử dụng loại phân tích đó không?
Marcos Villagra

1
@DaveClarke tôi làm.
Kevin

Câu trả lời:


12

Tôi có thể sai, nhưng tôi xem phân tích trơn tru như một cách để giải thích hành vi trong thực tế của các thuật toán có đảm bảo lý thuyết xấu (đơn giản, phương tiện k, v.v.). Tôi không chắc việc sử dụng phân tích được làm mịn trong thực tế có nghĩa là gì , ngoại trừ việc biện minh cho việc sử dụng một heuristic cụ thể với hiệu suất trong trường hợp xấu nhất ("Heuristic của tôi có hành vi trong trường hợp xấu nhất nhưng một phân tích được làm mịn cho thấy nó sẽ làm tốt trong thực tế, v.v. ")


2
Vấn đề là cho đến nay, những thành công lớn cho phân tích trơn tru đã được giải thích trong thực tiễn hiện tại, vì vậy các học viên có thể chỉ phản ứng bằng cách nói "thật tuyệt khi mọi thứ tôi đang làm đều có thể được hiểu là có ý nghĩa" :). Tôi không biết nếu ai đó quyết định sử dụng một BECAUSE heuristic ít được biết đến để phân tích trơn tru.
Suresh

Phân tích làm mịn chính thức là rất khó, không có lý do gì mà bất kỳ ai trong lý thuyết không nên thực hành nó. Mặt khác, nếu bạn coi nó là một heuristic được sử dụng để phân tích một thuật toán (cụ thể là đầu vào là bán ngẫu nhiên), thì có lẽ nó được sử dụng mọi lúc.
Yuval Filmus

3

Cách mọi người phân tích các thuật toán trong thế giới thực khác rất nhiều so với học thuật. Mặc dù trong giới hàn lâm, mục tiêu là tìm ra giới hạn trên có thể chứng minh được chính xác về thời gian chạy, nhưng trong thực tế, mục tiêu là để hiểu cách thuật toán hoạt động và những điều chỉnh nào có thể cải thiện thời gian chạy. Có hai phương pháp chính bị cấm trong giới hàn lâm nhưng được sử dụng trong thực tế:

  • Phương pháp gần đúng. Ở đây bạn sử dụng rất nhiều giả định đơn giản hóa để cố gắng dự báo thời gian chạy của thuật toán. Tương tự như những gì các nhà vật lý lý thuyết (đã từng) làm.
  • Thí nghiệm. Bạn chạy thuật toán của mình và đo một vài số liệu thống kê - bao nhiêu thời gian đã đi đến từng phần, bao nhiêu lần mỗi hàm được gọi, tần suất mỗi nhánh chạy, v.v. Thông tin này có thể được sử dụng để tối ưu hóa thuật toán. Thử nghiệm cũng được sử dụng để tìm hiểu xem một số phép tính gần đúng được thực hiện trong khi phân tích thuật toán có hoạt động trong thực tế hay không.

Điều đó nói rằng, tôi không nghĩ rằng việc phân tích một thuật toán trong thực tế là rất phổ biến, ngoài việc thêm một số văn bản phụ trong một ấn phẩm học thuật có liên quan. Trọng tâm là về công nghệ phần mềm hoặc tối ưu hóa ở mức độ thấp, tùy thuộc vào vấn đề.

Cuối cùng, phân tích trơn tru là một heuristic có thể được sử dụng để giải thích tại sao các thuật toán hoạt động tốt hơn trong thực tế so với trường hợp xấu nhất của chúng sẽ gợi ý - cụ thể là vì một số đầu vào là "ngẫu nhiên" theo một nghĩa nào đó. Heuristic này có thể được sử dụng để tính gần đúng hành vi của thuật toán nếu một người đang sử dụng phương pháp gần đúng.


"Trong khi ở học viện, mục tiêu là tìm ra giới hạn trên có thể chứng minh được chính xác về thời gian hoạt động" - đó là một mục tiêu, không phải mục tiêu. Cũng có nhiều công việc về phân tích trường hợp trung bình, mặc dù sinh viên CS trung bình có thể không thấy nhiều về nó (vì nó tương đối khó). "Để hiểu làm thế nào thuật toán hoạt động", được cho là cơ sở của tất cả các thuật toán trong học viện.
Raphael
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.