Điều đó có nghĩa là gì khi nói ra một cách hiệu quả hơn nữa


12

Điều đó có nghĩa là gì khi chúng ta nói rằng thuật toán hiệu quả hơn so với ?XY

  • X sẽ là một lựa chọn tốt hơn cho tất cả các đầu vào.
  • X sẽ là lựa chọn tốt hơn cho tất cả các đầu vào ngoại trừ đầu vào nhỏ.
  • X sẽ là lựa chọn tốt hơn cho tất cả các đầu vào ngoại trừ đầu vào lớn.
  • Y sẽ là lựa chọn tốt hơn cho đầu vào nhỏ.

Liên kết cho câu hỏi này là ở đây.

http://quiz.geekforgeek.org/alerskyms-analysis-of-alerskyms-question-16/


Tôi nghĩ rằng một thuật toán hiệu quả hơn về mặt triệu chứng sẽ hoạt động cho tất cả các đầu vào, nhưng tôi không hiểu lý do đằng sau "Nó hoạt động cho tất cả các đầu vào trừ các đầu vào nhỏ".


đầu vào lớn để lộ cổ chai trong thuật toán. Là những gì tôi sẽ đặt trong thuật ngữ kỹ thuật.
Apiwat Chantawibul

Câu trả lời:


14

Trước hết, cả hai thuật toán "làm việc" cho tất cả các đầu vào. Câu hỏi là về hiệu suất.

Các câu trả lời cho câu hỏi đó là loại crappy. Một cách để nói một thuật toán hiệu quả hơn so với thuật toán khác là nếu có một số kích thước đầu vào (cụ thể cho vấn đề) sao cho với bất kỳ kích thước đầu vào lớn hơn, thuật toán hiệu quả hơn sẽ thực hiện ít "bước tính toán" hơn, thường là bằng một số biện pháp trừu tượng, ví dụ: số lượng so sánh.

Ý tưởng của các câu trả lời là một thuật toán hiệu quả hơn không có triệu chứng vẫn có thể yêu cầu nhiều bước hơn trước kích thước đầu vào đó. Nó có thể là trường hợp thuật toán hiệu quả hơn bất thường đòi hỏi ít bước hơn cho tất cả các đầu vào, nhưng nó không cần phải là trường hợp và trong thực tế thường không phải vậy. Vì vậy, từ ngữ tốt hơn của câu trả lời "đúng" sẽ là " sẽ là lựa chọn tốt hơn cho tất cả các đầu vào trừ các đầu vào nhỏ có thể ".X

Các từ ngữ vẫn không phải là tuyệt vời mặc dù. Trước hết, nhiều yếu tố nữa quyết định thuật toán nào là "sự lựa chọn tốt hơn", nhưng tôi sẽ cho họ biết rằng ý định này đã đủ rõ ràng trong trường hợp này. Vấn đề thực sự là "nhỏ" và "lớn". Một trong những bài báo yêu thích của tôi là Thuật toán nhanh nhất và ngắn nhất cho tất cả các vấn đề được xác định rõ . Bài viết này mô tả một thuật toán đưa ra bất kỳ đặc điểm kỹ thuật nào của hàm và bằng chứng rằng nó có thể được tính trong thời gian đa thức sẽ tính toán hàm đó theo độ phức tạp thời gian tối ưu trong phạm vi cộng với một thuật ngữ cộng. Ví dụ: nếu tôi cung cấp cho nó một triển khai sắp xếp bong bóng làm đặc tả chức năng và bằng chứng đơn giản rằng đó là5O(n2), nó sẽ tạo ra một thuật toán sắp xếp là . Trong thực tế, nó sẽ tạo ra một thuật toán đó là 5 c n lg n + o ( n lg n ) nơi c là yếu tố thường xuyên của tiệm * thuật toán tối ưu. Thật đáng kinh ngạc. Chỉ có một vấn đề: thuật ngữ không đổi - ẩn trong o ( n lg n )O(nlgn)5cnlgn+o(nlgn)co(nlgn)trong ví dụ này - làm cho thuật toán gần như chắc chắn hoàn toàn không khả thi đối với hầu như mọi vấn đề thực sự. Ý tôi là gì khi "hoàn toàn không khả thi"? Ý tôi là cái chết nhiệt của vũ trụ sẽ xảy ra nhiều lần trước khi thuật toán đó hoàn thành. Tuy nhiên, đối với các đầu vào "lớn" phù hợp, nó sẽ nhanh hơn sắp xếp bong bóng. Quan điểm của tôi là gần như chắc chắn không thể viết ra bằng bất kỳ phương tiện nào là đầu vào "lớn phù hợp", chứ đừng nói đến việc tính toán trên đó.

XY

cc


2

Những gì mọi người thường có nghĩa là khi họ nói một cái gì đó như thế này là:

TATBABTMộto(TB)

X

Đặc biệt, không có tuyên bố nào bạn đề xuất tuân theo, mặc dù mọi người thường đề xuất lần thứ hai.

Đáng buồn thay, cộng đồng rộng lớn hơn của những người đối phó với các thuật toán nắm lấy thuật ngữ biên giới bị bỏ trống vì đơn giản. (Thực hiện các tuyên bố chính xác hữu ích về các thuật toán là khó!)

Bạn có thể quan tâm đến câu hỏi tham khảo của chúng tôi .


Một thuật toán X được cho là không có triệu chứng tốt hơn Y nếu X mất thời gian nhỏ hơn y cho tất cả các kích cỡ đầu vào n lớn hơn một giá trị n0 trong đó n0> 0.

TMột(n)= =n+1TB(n)= =n

Tôi khuyên bạn nên học khoa học máy tính từ các tài nguyên CS, không phải từ các lập trình viên đã đọc về các công cụ trên Wikipedia một lần. (Vâng, điều đó thật khắc nghiệt, nhưng tôi đã thấy quá nhiều sự giả dối được truyền bá trong giới lập trình viên, ngay cả trên SO.)


2

"Không hiệu quả hơn" có nghĩa là "hiệu quả hơn cho tất cả các vấn đề trên một kích thước nhất định". Nó không nói "kích thước nhất định" là gì và nó không nói điều gì xảy ra trước "kích thước nhất định" đó.

Vì vậy, tất cả các câu trả lời ngoại trừ câu thứ hai rõ ràng là sai, bởi vì "hiệu quả hơn về mặt triệu chứng" không nói gì về kích thước đầu vào nhỏ cả. Nhưng cái thứ hai cũng có vấn đề.

103010301040

1015

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.