Làm thế nào để đánh lừa âm mưu heuristic?


23

đây , Dave Clarke đề xuất rằng để so sánh sự tăng trưởng tiệm cận, bạn nên vẽ các chức năng trong tay. Là một nhà khoa học máy tính nghiêng về mặt lý thuyết, tôi gọi (ed) vodoo này như một cốt truyện không bao giờ là bằng chứng. Về ý nghĩ thứ hai, tôi phải đồng ý rằng đây là một cách tiếp cận rất hữu ích thậm chí đôi khi không được sử dụng; một cốt truyện là một cách hiệu quả để có được những ý tưởng đầu tiên, và đôi khi đó là tất cả những gì bạn cần.

Khi dạy TCS, luôn có một sinh viên hỏi: "Tôi cần bằng chứng chính thức để làm gì nếu tôi chỉ có thể làm X luôn hoạt động?" Tùy thuộc vào giáo viên của mình để chỉ ra và minh họa cho ngụy biện. Có một tập hợp tuyệt vời các ví dụ về các mẫu rõ ràng cuối cùng thất bại ở math.SE, nhưng đó là những kịch bản khá toán học.

Vì vậy, làm thế nào để bạn đánh lừa kiểm tra cốt truyện heuristic? Có một số trường hợp khó phân biệt appart, vd

thí dụ thí dụ thí dụ
[ nguồn ]

Đoán và sau đó kiểm tra nguồn cho các chức năng thực sự. Nhưng những điều đó không ngoạn mục như tôi mong đợi, đặc biệt là vì các mối quan hệ thực sự rất dễ phát hiện từ các chức năng, ngay cả đối với người mới bắt đầu.

Có ví dụ về sự tăng trưởng tiệm cận (tương đối) trong đó sự thật không rõ ràng từ chức năng definiton và kiểm tra lô cho lớn hợp lý cung cấp cho bạn một ý tưởng hoàn toàn sai? Các hàm toán học và các tập dữ liệu thực (ví dụ thời gian chạy của một thuật toán cụ thể) đều được chào đón; xin vui lòng kiềm chế các chức năng xác định piecewise, mặc dù.n


2
Trên thực tế, tôi đề xuất nó như một mẹo để hiểu vấn đề.
Dave Clarke

@DaveClarke: Tôi biết; Tôi đã sử dụng công thức ban đầu của bạn chỉ đơn thuần là một công cụ khiêu khích. Không có ý định phạm tội.
Raphael

Câu trả lời:


23

Phát biểu từ kinh nghiệm, khi cố gắng tìm ra tốc độ tăng trưởng cho một số chức năng được quan sát (giả sử thời gian trộn chuỗi Markov hoặc thời gian chạy thuật toán), rất khó để nói các yếu tố của từ . Ví dụ: trông rất giống :n b O ( (đăng nhậpn)mộtnbO(n 0,6 )Ôi(nđăng nhậpn)Ôi(n0,6)

âm mưu
[ nguồn ]

Ví dụ, trong "Một số kết quả hành vi dự kiến ​​bất ngờ đối với việc đóng gói bin" của Bentley và cộng sự, tốc độ tăng trưởng của không gian trống cho thuật toán đóng gói thùng Best Fit và First Fit khi đóng gói đồng phục các mặt hàng trên được ước tính theo kinh nghiệm là và , tương ứng. Các biểu thức đúng là và .n 0.6 n 0.7 n 1 / 2 log 3 / 4 n n 2 / 3[0,1]n0,6n0,7n1/2đăng nhập3/4nn2/3


15

Đây là một ví dụ khác (thừa nhận khá được xây dựng), nhưng vẫn là một ví dụ tôi thấy đáng chú ý. Nó được dự định để chỉ ra rằng các âm mưu có thể rất sai lệch để đánh giá sự tăng trưởng tiệm cận.

fg

Bạn có thể đoán chức năng nào phát triển (không có triệu chứng) nhanh hơn không?

âm mưu của f và g lên đến 2000 lô f và g lên tới 10.000 âm mưu của f và g lên tới 200.000

f~g

f(x)= =x2
g(x)= =tội(đăng nhập(x))+1dxdx= =x2(1-35cos(đăng nhập(x))+15tội(đăng nhập(x))).

Vì vậy, về cơ bản là , tức là giống như , nhưng đạo hàm thứ hai của nó không đồng nhất , mà dao động trong khoảng từ đến với chu kỳ tăng theo cấp số nhân. Dao động này không thể nhìn thấy trong các ô thông thường.gx2f204

Trong ví dụ này , chúng ta có thể khử các dao động bằng cách xem xét một biểu đồ log-log:

log-log-cốt truyện của f và g lên tới 200.000

Tất nhiên, điều này không giúp ích, nói chung; ví dụ: chúng ta có thể có một khoảng thời gian theo cấp số nhân ...


12

Một ví dụ điển hình là thuật toán DFA tối thiểu kỳ diệu của Brzozowski. Với một máy tự động hữu hạn , chúng ta có thể tính toán một máy tự động hữu hạn xác định tối thiểu từ nó:N= =(Q,SQ,FQ,RQ×Σ×Q)

Mtôintôimtôize:NFMộtDFMột= =DetermtôintôizeReverSeDetermtôintôizeReverSe

Đây rõ ràng là một thuật toán thời gian theo cấp số nhân trong trường hợp xấu nhất, vì nó có thể sử dụng một máy tự động không xác định và cung cấp cho bạn một thuật toán xác định (hoặc thậm chí rõ ràng hơn, nó gọi là xây dựng tập hợp con hai lần).

Ôi(n2)Ôi(nđăng nhập(n))

Điều này chạm vào phần "cốt truyện" của "heuristic kiểm tra cốt truyện" --- chúng ta phải chọn điểm nào để lấy mẫu khi vẽ cốt truyện, và bạn có thể đánh lừa một âm mưu ngây thơ nếu bạn không chọn điểm của mình một cách cẩn thận. Điều này cũng đúng với các ví dụ khác, chẳng hạn như thuật toán Quicksort và Simplex, nhưng đối với sư phạm tôi thích thuật toán này hơn hai thuật toán đó.

Sự khác biệt của Quicksort là "chỉ" bậc hai so với log-linear, ít ngoạn mục hơn so với sự khác biệt đa thức / hàm mũ. Thuật toán đơn giản có một sự khác biệt ngoạn mục tương tự, nhưng phân tích của nó phức tạp hơn đáng kể so với thuật toán của Brzozowski.

(Ngoài ra, tôi cảm thấy rằng thuật toán tối thiểu hóa DFA của Brzozowski ít được biết đến hơn so với nó xứng đáng, nhưng tất nhiên đó là vấn đề của hương vị.)


Xin lỗi, nhưng tôi không thấy kết nối để diễn giải các lô chức năng.
Raphael

3
Tôi giả sử bạn sẽ làm một cái gì đó như hiệu suất cốt truyện so với kích thước cá thể để lấy mẫu các trường hợp - và thuật toán của Brzozowski sẽ "nhìn" đa thức trừ khi bạn chọn các thể hiện để làm cho nó theo thời gian theo cấp số nhân.
Neel Krishnaswami

1
Tôi hiểu rồi. Đó chắc chắn là một vấn đề khi thuật toán điểm chuẩn và vẽ sơ đồ thời gian trung bình, tức là vấn đề vẽ đồ thị đúng dữ liệu . Khi tôi đặt câu hỏi, tôi chỉ nghĩ về việc diễn giải chính xác cốt truyện , đó là một con thú khác hoàn toàn. Bạn có thể vui lòng thêm quan điểm này vào câu trả lời?
Raphael

Bạn sẽ có cùng một vấn đề đối với tất cả các thuật toán có hành vi trung bình và trường hợp xấu nhất khác nhau; Quicksort và Simplex đến với tâm trí.
Raphael

8

Kỹ thuật toán học của khớp đường cong có thể được sử dụng để cung cấp vô số câu trả lời cho câu hỏi của bạn. Cho một đường cong và một phạm vi, người ta có thể dễ dàng tìm thấy một đa thức phù hợp với đường cong với bất kỳ mức độ chính xác nào. Ví dụ này từ wikipedia cho thấy một sóng hình sin có thể được kết hợp khá chính xác với đa thức bậc thứ tư (đường cong màu xanh).

nhập mô tả hình ảnh ở đây

Tôi có thể sử dụng các đa thức bậc cao hơn và đánh lừa heuristic kiểm tra cốt truyện thậm chí còn tốt hơn biểu đồ này.


2
Đung. Nó cũng có một hương vị nhân tạo, mặc dù. Chắc chắn tôi có thể tạo ra các ví dụ phản biện cho sinh viên theo cách này nhưng tôi không thấy bị hoài nghi hơn khi bị nó thuyết phục. Có sự xuất hiện "tự nhiên" của hiện tượng này (tức là các hàm đa thức ở mức độ cao hơn có thể bị nhầm lẫn với các chức năng khác) trong đó giải thích sai là "gây tử vong"?
Raphael

Tôi biết rằng đó không phải là câu trả lời bạn đang tìm kiếm.
Dave Clarke
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.