Tại sao tìm kiếm nhị phân được gọi là tìm kiếm nhị phân?


9

Tôi đã nghe một số giải thích có thể, vì vậy tôi muốn một số tài liệu tham khảo đáng tin cậy.

Cập nhật 05.19: Tôi quan tâm đến câu hỏi vì một trong những sinh viên của tôi đã viết trong luận án của mình rằng tên này xuất phát từ lời giải thích dưới đây (1). Cho đến bây giờ tôi nghĩ / nghe rằng nó đến từ lời giải thích (2). Tôi sẽ cảm thấy tồi tệ vì đã để điều sai trong luận án của mình, cũng như bảo anh ta loại bỏ nó nếu nó có thể đúng.

(1) Cân nhắc việc tìm kiếm một số nguyên trong khoảng . Chúng tôi có thể tìm thấy nó bằng cách sử câu hỏi bằng cách hỏi ở bước các nhị phân chữ số của số.n i i t h[0,2n1]niith

(2) Nếu chúng ta có một không gian tìm kiếm với phần tử, chúng ta có thể tìm thấy một phần tử không xác định bằng các câu hỏi liên tục chia phần còn lại của không gian thành hai phần .2n

Và vâng, tôi biết rằng (2) có thể đưa ra thuật toán tương tự như (1) nhưng đó không phải là vấn đề ở đây. (2) cũng có thể được áp dụng cho các vấn đề chung hơn.


1
Ngoài ra, xin lưu ý rằng câu hỏi yêu cầu tham khảo. Xin đừng trả lời rằng đó là vì lý do tương tự và như vậy mà không đưa ra một nguồn đáng tin cậy.
David Richerby

1
@DavidR Richby, Không, sự tò mò không đủ động lực để đòi hỏi một tài liệu tham khảo "đáng tin cậy". Sự tò mò sẽ là một động lực đủ để hỏi "Tại sao tìm kiếm nhị phân được gọi là tìm kiếm nhị phân?", Nhưng nó không đủ lý do để yêu cầu một nguồn tham khảo / đáng tin cậy và không đủ lý do để nói "không trả lời bằng một lời giải thích; muốn có nguồn đáng tin cậy ". Nếu OP gặp nhiều giải thích mâu thuẫn, thì OP sẽ cho chúng tôi biết về chúng trong câu hỏi (lưu ý câu hỏi Math.SE không dẫn đến giải thích mâu thuẫn).
DW

3
Tôi nghĩ bạn nên bắt đầu với việc đưa ra những lời giải thích bạn có. Chúng tôi có thể có một ý tưởng về sự tin tưởng mà họ sẽ nhận được. Và nó có thể hữu ích nếu bạn đưa ra định nghĩa của riêng bạn, tốt nhất là chính xác về cái mà bạn gọi là tìm kiếm nhị phân, để chúng tôi có thể chắc chắn nói về cùng một khái niệm, hoặc đưa ra một tham chiếu cho định nghĩa như vậy.
babou

2
Tập 3 của Knuth TAoCP, có ai không? Của tôi là ở văn phòng ...
Hendrik

Câu trả lời:


1

Giải thích (2) là một giải thích tốt.

(2) là giải thích tốt hơn cho cả hai, bởi vì nó thường áp dụng cho tất cả các sử dụng tìm kiếm nhị phân, không chỉ một trường hợp cụ thể. (1) không phải là một cách không hợp lý để suy nghĩ về nó - nó chỉ không chung chung hoặc hoàn chỉnh như (2).

Tôi không nghĩ rằng bạn cần phải cảm thấy bắt buộc phải yêu cầu học sinh sửa câu nói này. Sẽ không có gì đáng xấu hổ nếu một sinh viên đưa ra lời giải thích (1) trong luận án của họ, vì vậy bạn không cần phải cảm thấy tồi tệ. Nhưng nếu bạn muốn dạy họ điều gì đó, bạn có thể nói với họ về lời giải thích (2) và về cách tìm kiếm nhị phân chung chung hơn và tại sao tên "tìm kiếm nhị phân" cũng hợp lý cho thuật toán chung. Nhưng đó là một điểm nhỏ và không phải là điều mà tôi sẽ xem là có vấn đề hoặc lúng túng nếu họ để mọi thứ như hiện tại.


không có ref! có vẻ giống như một câu hỏi lịch sử :(
vzn

1

Theo Wikipedia, tìm kiếm nhị phân liên quan đến tìm kiếm trong một loạt các giá trị được sắp xếp.

Khái niệm tổng quát hơn về phân chia và chinh phục tìm kiếm bằng cách liên tục phân chia không gian tìm kiếm được gọi là tìm kiếm nhị phân (nghĩa đen: "cắt làm hai"). Việc sử dụng phân đôi có thể được xem xét trong các bối cảnh khác, như sonn khi bạn có một cái gì đó để phân chia. Nó thực sự là biểu hiện đầu tiên tôi học được (ở trường trung học, tôi nghĩ vậy, và đó là từ lâu rồi), kể cả trong trường hợp bạn có thể muốn gọi nó là nhị phân.

Afaik, "lưỡng phân" không ngụ ý rằng hai phần (gần) bằng nhau.

Tôi không biết rằng nhị phân được dành riêng để tìm kiếm trong một không gian có kích thước .2n

Dichotomic rõ ràng là thuật ngữ chung chung hơn, nhưng nó có vẻ mang tính mô phạm đối với một số người thay vào đó sử dụng nhị phân không đúng cách.

Ví dụ của bạn (1) được nêu một cách kỳ lạ, vì người ta không chủ ý yêu cầu các chữ số nhị phân, mà là để so sánh với trung vị của một khoảng. Nhưng nó có thể đủ điều kiện là nhị phân.

Ví dụ Youe (2) không rõ ràng. Chỉ cần chia làm hai nên được gọi là lưỡng phân. Bây giờ, khi bạn dường như đưa ra giả thuyết (kỳ lạ) một cách làm 2 phần bằng nhau, tôi không chắc chắn.

Nhưng một trò chơi đoán, nơi mọi người đặt câu hỏi được trả lời bằng có hoặc không rõ ràng là phân đôi.

Dự đoán của riêng tôi, không có tài liệu tham khảo nào:

Biểu thức ban đầu có lẽ là "lưỡng phân", nhưng với sự phổ biến của hệ thống nhị phân, máy tính nhị phân, v.v., thuật ngữ "nhị phân" trở nên phổ biến hơn.

Một yếu tố khác có thể đã đóng một vai trò quan trọng là tìm kiếm nhị phân (cũng như phân đôi) dựa trên các lựa chọn nhị phân. Bây giờ biểu thức " lựa chọn nhị phân " đã tồn tại, nhưng ít được sử dụng hơn " lựa chọn nhị phân ", xuất hiện thường xuyên hơn khoảng 6 lần trên web.

Vì vậy, điều này có thể đã ảnh hưởng đến điều đó. Chúng ta nên nhớ rằng mặc dù chúng ta phần lớn đắm chìm trong số nhị phân (ý tôi là chúng ta, nhà khoa học máy tính), hầu hết mọi người không và cũng không quan tâm đến số nhị phân, nhưng sẽ dễ dàng nói về lựa chọn nhị phân. Đúng là tìm kiếm nhị phân là một chủ đề cho nhà khoa học máy tính, nhưng thiếu một tài liệu tham khảo đáng tin cậy ngược lại tôi sẽ không tin rằng nó đến từ số nhị phân theo bất kỳ cách trực tiếp nào.


"Theo Wikipedia, tìm kiếm nhị phân liên quan đến tìm kiếm trong một loạt các giá trị được sắp xếp." - Chà, đó không phải là cách tôi đọc Wikipedia. Nếu Wikipedia nói rằng nó phải nằm trong một mảng để được coi là tìm kiếm nhị phân tốt, thì tôi nghĩ Wikipedia có thể gây tranh cãi về vấn đề này - nhưng bài viết Wikipedia dường như không nói điều đó. Tiếp theo bài viết Wikipedia nói rằng tìm kiếm nhị phân "cho phép tìm kiếm đối số của bất kỳ hàm đơn điệu nào cho một điểm, tại đó hàm này đạt giá trị tùy ý" - không tìm kiếm trong một mảng.
DW

"Khái niệm chung hơn về phân chia và chinh phục tìm kiếm bằng cách liên tục phân chia không gian tìm kiếm được gọi là tìm kiếm phân đôi" - Điều đó không phù hợp với kinh nghiệm của riêng tôi. Tôi thường xuyên nghe thấy điều này được gọi là tìm kiếm nhị phân.
DW

@DW Như tôi đã nói với bạn trước đây, bộ nhớ của tôi không được tin tưởng nhiều. Nhưng tìm kiếm nhị phân, hoặc thậm chí phân chia và chinh phục là thuật ngữ thuật toán đến với chúng ta với máy tính. Nhưng tôi nghĩ rằng không có nhiều máy tính xung quanh khi tôi nghe về tìm kiếm nhị phân lần đầu tiên, sau đó một tài liệu tham khảo được in tốt sẽ tốt hơn rất nhiều so với bộ nhớ ốm yếu của tôi. Về wikipedia, tôi không đọc toàn bộ bài viết. Về cơ bản tôi đã không nghĩ rằng tôi sẽ nhận được một câu trả lời dứt khoát ... và tôi có một số nghi ngờ rằng có một. Ý tưởng là chung chung, thuật ngữ tốt đẹp, và phải được điều chỉnh bởi mỗi vấn đề trong tay.
babou

1

Knuth (V.3 Tr. 82) cung cấp cho Mauchly là nguồn tìm kiếm nhị phân; nó được sử dụng để tìm điểm chèn trong một loại mà sau đó xáo trộn các phần tử về phía trước để tạo chỗ trống, trong một quy trình gọi là chèn nhị phân.

Vì vậy (2) sẽ hợp lệ, nhưng tôi không thể xem bài báo gốc; nó bị che khuất ở đây: https://books.google.com.vn/books?id=A6EEAQAAIAAJ&focus=searchwithinvolume&q=sorting+and+collating


1

Tôi đã cố gắng tra cứu tài liệu tham khảo Mauchly được trích dẫn bởi Knuth nhưng thư viện của tôi dường như đã đặt nhầm bản sao của họ.

Trong thời gian chờ đợi, hãy xem xét các trích dẫn đầu tiên sau đây cho "tìm kiếm nhị phân":

  • Halpern, Mark. " Các bảng có chiều rộng thay đổi với cơ sở tìm kiếm nhị phân. " Truyền thông của ACM 1.2 (1958): 1-4.

    Họ của các chương trình con được mô tả trong báo cáo này được thiết kế để tạo, tìm kiếm và duy trì các bảng có chứa các mục có độ dài khác nhau và vẫn có thể tìm kiếm theo phân vùng hoặc tìm kiếm nhị phân.

  • Nagler, H. " Ước tính hiệu quả tương đối của hai phương pháp phân loại nội bộ. " Truyền thông của ACM 3.11 (1960): 618-620.

    Báo cáo này liên quan đến IBM 705, các mô hình I và II. Đây là một nghiên cứu về thời gian máy được yêu cầu bởi hai phương pháp sắp xếp nội bộ, hợp nhất hai chiều thông thường và một dạng tìm kiếm nhị phân, do D. Mordy, của Tập đoàn IBM.

  • Petersen, TL RE-ENTRY CHƯƠNG TRÌNH TỔNG HỢP XE. Số STL / TR-60-0000-09103 (liên kết pdf) . TRW SPACE LAB LAB LOS ANGELES CA, 1960.

    Giá trị của mà bây giờ phải được tìm thấy. Dễ dàng thấy rằng và , do đó giá trị bắt buộc của nằm trong khoảng từ 0 đến nếu . Một tìm kiếm nhị phân được tiến hành cho gốc của ; các chọn là mà giá trị tuyệt đối của sự khác biệt giữa các giá trị liên tiếp của nhỏ hơn .g( V 0 *)=0g(0)=K3-1g(K1)=-1 V 0 *K1K3>1g( V 0 *) V 0 * V 0 *0.01V0g(V0)=0g(0)=K31g(K1)=1V0K1K3>1g(V0)V0V00.01

Tôi sẽ lưu ý cách trích dẫn năm 1958 đầu tiên sử dụng dấu ngoặc kép quanh "nhị phân" nhưng đến lần trích dẫn thứ ba vào năm 1960, một tìm kiếm nhị phân được đề cập mà không có bất kỳ mô tả hay giải thích nào thêm. Việc ám chỉ "tìm kiếm theo phân vùng" sẽ có xu hướng gợi ý rằng giải thích 2) gần hơn, nhưng cần xác minh thêm.

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.