ทำไมการค้นหาแบบไบนารีจึงเรียกว่าการค้นหาแบบไบนารี


9

ฉันได้ยินคำอธิบายที่เป็นไปได้หลายประการดังนั้นฉันต้องการอ้างอิงที่เชื่อถือได้

อัพเดท 05.19: ฉันสนใจคำถามนี้เพราะมีนักเรียนของฉันคนหนึ่งเขียนในวิทยานิพนธ์ของเขาว่าชื่อนี้มาจากคำอธิบายด้านล่าง (1) จนถึงตอนนี้ฉันคิด / ได้ยินว่ามันมาจากคำอธิบาย (2) ฉันจะรู้สึกไม่ดีทั้งที่ปล่อยให้สิ่งที่ผิดในวิทยานิพนธ์ของเขาเช่นเดียวกับบอกให้เขาลบมันถ้ามันอาจจะถูกต้อง

(1) พิจารณาการค้นหาจำนวนเต็มในช่วงเวลา [0,2n1]. เราสามารถหาได้โดยใช้คำถามโดยขอให้ในขั้นตอนที่ไบนารีหลักของตัวเลขniith

(2) ถ้าเรามีพื้นที่ค้นหาที่มีองค์ประกอบเราสามารถหาองค์ประกอบที่ไม่รู้จักโดยคำถามที่ซ้ำ ๆ แยกส่วนที่เหลือของพื้นที่ในสอง2n

และใช่ฉันรู้ว่า (2) สามารถให้อัลกอริทึมแบบเดียวกับ (1) แต่นั่นไม่ใช่จุดที่นี่ (2) สามารถนำไปใช้สำหรับปัญหาทั่วไปเพิ่มเติม


1
นอกจากนี้โปรดทราบว่าคำถามนั้นขออ้างอิง โปรดอย่าตอบว่าเป็นเพราะเหตุผลดังกล่าวโดยไม่ให้แหล่งที่เชื่อถือได้
David Richerby

1
@DavidRicherby, ไม่, ความอยากรู้ไม่เพียงพอสำหรับการเรียกร้องการอ้างอิง "เชื่อถือได้" ความอยากรู้อยากเห็นจะเป็นแรงจูงใจที่เพียงพอสำหรับการถามว่า "ทำไมการค้นหาแบบไบนารีจึงเรียกว่าการค้นหาแบบไบนารี" แต่ก็ไม่เพียงพอที่จะเรียกร้องแหล่งอ้างอิง / เชื่อถือได้และไม่มีเหตุผลเพียงพอที่จะพูดว่า "ไม่ตอบด้วยคำอธิบายฉันเท่านั้น ต้องการแหล่งที่เชื่อถือได้ ". ถ้า OP พบคำอธิบายที่ขัดแย้งกันหลายครั้งแล้ว OP ควรบอกเราเกี่ยวกับพวกเขาในคำถาม (หมายเหตุคำถาม Math.SE ไม่ได้นำไปสู่คำอธิบายที่ขัดแย้งกัน)
DW

3
ฉันคิดว่าคุณควรเริ่มด้วยการอธิบายสิ่งที่คุณมี เราอาจมีความคิดเกี่ยวกับความไว้วางใจที่พวกเขาควรได้รับ และมันอาจช่วยได้ถ้าคุณให้คำจำกัดความของคุณเองแม่นยำกว่าสิ่งที่คุณเรียกว่าการค้นหาแบบไบนารี่เพื่อที่เราจะได้แน่ใจว่าได้พูดถึงแนวคิดเดียวกันหรือให้อ้างอิงถึงคำจำกัดความดังกล่าว
babou

2
เล่มที่ 3 ของ Knuth TAoCP ใคร ๆ ของฉันอยู่ที่สำนักงาน ...
Hendrik Jan

3
ที่เกี่ยวข้อง: hsm.stackexchange.com/questions/2200/…
Kyle Jones

คำตอบ:


1

คำอธิบาย (2) เป็นคำอธิบายที่ดี

(2) เป็นคำอธิบายที่ดีกว่าของทั้งสองเพราะมันใช้กับการค้นหาแบบไบนารี่ทั้งหมดไม่ใช่แค่หนึ่งอินสแตนซ์ที่เจาะจงเท่านั้น (1) ไม่ใช่วิธีคิดที่ไม่สมเหตุสมผล - เป็นเพียงไม่ทั่วไปหรือสมบูรณ์ตาม (2)

ฉันไม่คิดว่าคุณต้องรู้สึกว่าจำเป็นต้องให้นักเรียนแก้ไขข้อความนี้ มันจะไม่น่าอายถ้านักเรียนให้คำอธิบาย (1) ในวิทยานิพนธ์ของพวกเขาดังนั้นคุณไม่จำเป็นต้องรู้สึกแย่ แต่ถ้าคุณต้องการที่จะสอนพวกเขาบางอย่างคุณสามารถบอกพวกเขาเกี่ยวกับคำอธิบาย (2) และวิธีการค้นหาแบบไบนารีที่กว้างกว่าและทำไมชื่อ "การค้นหาแบบไบนารี" จึงมีเหตุผลสำหรับอัลกอริทึมทั่วไปเช่นกัน แต่มันเป็นประเด็นย่อยและไม่ใช่สิ่งที่ฉันจะมองว่าเป็นปัญหาหรือน่าอายถ้าพวกเขาออกจากสิ่งที่เป็นอยู่


ไม่มีการอ้างอิง! ดูเหมือนจะเป็นคำถามเชิงประวัติศาสตร์มากกว่า: (
vzn

1

Wikipedia ระบุว่าการค้นหาแบบไบนารีเกี่ยวข้องกับการค้นหาในอาร์เรย์ของค่าที่เรียงลำดับ

แนวคิดทั่วไปเพิ่มเติมของการแบ่งและพิชิตการค้นหาโดยแบ่งพื้นที่การค้นหาซ้ำ ๆ เรียกว่าการค้นหาแบบแบ่งขั้ว (ตามตัวอักษร: "ที่ตัดเป็นสอง") การใช้ขั้วคู่อาจได้รับการพิจารณาในบริบทอื่นเช่นเดียวกับที่คุณมีบางอย่างที่จะแยก จริงๆแล้วมันเป็นสำนวนแรกที่ฉันได้เรียนรู้ (ในโรงเรียนมัธยมฉันคิดว่าและนานมาแล้ว) รวมถึงในกรณีที่คุณอาจต้องการเรียกมันว่าไบนารี

Afaik "dichotomic" ไม่ได้แปลว่าทั้งสองส่วนมีค่าเท่ากัน (เกือบ)

ฉันไม่ทราบว่าไบนารีถูกสงวนไว้เพื่อค้นหาในพื้นที่ขนาด 2n.

Dichotomic นั้นเป็นคำศัพท์ทั่วไปที่ชัดเจนกว่า แต่มันอาจฟังดูอลังการสำหรับบางคนที่อาจใช้ไบนารีไม่ถูกต้องแทน

ตัวอย่างของคุณ (1) ได้รับการกล่าวถึงอย่างแปลกประหลาดเนื่องจากไม่มีใครรู้ตัวขอเลขฐานสอง แต่เป็นการเปรียบเทียบกับค่ามัธยฐานของช่วงเวลา แต่มันอาจมีคุณสมบัติเป็นเลขฐานสอง

ตัวอย่างของคุณ (2) ไม่ชัดเจน การแยกออกเป็นสองส่วนควรเรียกว่า dichotomic ทีนี้เมื่อคุณดูเหมือนจะตั้งสมมติฐาน (แปลก) วิธีการสร้าง 2 ส่วนเท่า ๆ กันฉันไม่แน่ใจ

แต่เป็นเกมที่คาดเดาซึ่งผู้คนถามคำถามที่ตอบโดยใช่หรือไม่ใช่นั้นมีขั้วสองขั้วชัดเจน

ฉันเดาเองไม่ได้รับการอ้างอิง:

การแสดงออกดั้งเดิมน่าจะเป็น "dichotomic" แต่ด้วยความนิยมของระบบเลขฐานสองคอมพิวเตอร์ไบนารี ฯลฯ คำว่า "binary" ก็ได้รับความนิยมมากขึ้น

อีกปัจจัยหนึ่งที่อาจมีบทบาทสำคัญคือการค้นหาแบบไบนารี่ (เช่นเดียวกับการแบ่งขั้วไฟฟ้า) ขึ้นอยู่กับตัวเลือกไบนารี ขณะนี้มีนิพจน์ " ตัวเลือกการแบ่งขั้วสองทาง " อยู่ แต่ใช้น้อยกว่า " ตัวเลือกไบนารี " ซึ่งปรากฏบนเว็บบ่อยขึ้นประมาณ 6 เท่า

ดังนั้นสิ่งนี้อาจมีอิทธิพลต่อสิ่งนั้น เราควรจำไว้ว่าแม้ว่าเราจะแช่อยู่ในเลขฐานสอง (ฉันหมายถึงเรานักวิทยาศาสตร์คอมพิวเตอร์) คนส่วนใหญ่ไม่ได้และไม่เกี่ยวข้องกับเลขฐานสอง แต่จะพูดถึงตัวเลือกไบนารีอย่างง่ายดาย มันเป็นความจริงที่การค้นหาแบบไบนารี่เป็นหัวข้อสำหรับนักวิทยาศาสตร์คอมพิวเตอร์ แต่ขาดการอ้างอิงที่เชื่อถือได้ไปในทางตรงกันข้ามฉันจะไม่เชื่อว่ามันมาจากเลขฐานสองในทางตรง


"ตาม Wikipedia การค้นหาแบบไบนารีเกี่ยวข้องกับการค้นหาในอาร์เรย์ของค่าที่เรียงลำดับ" - นั่นไม่ใช่วิธีที่ฉันอ่าน Wikipedia หาก Wikipedia บอกว่าต้องอยู่ในอาร์เรย์ที่จะนับว่าเป็นการค้นหาแบบไบนารี่ได้ดีฉันคิดว่า Wikipedia สามารถถกเถียงเรื่องนี้ได้ - แต่บทความ Wikipedia ดูเหมือนจะไม่พูดเช่นนั้น ยิ่งไปกว่านั้นบทความ Wikipedia กล่าวว่าการค้นหาแบบไบนารี่ "ช่วยให้สามารถค้นหาอาร์กิวเมนต์ของฟังก์ชันแบบโมโนโทนิกสำหรับจุดใดจุดหนึ่งซึ่งฟังก์ชันนั้นมีค่าตามอำเภอใจ" ซึ่งไม่ได้ค้นหาในอาเรย์
DW

"แนวคิดทั่วไปเพิ่มเติมของการแบ่งและพิชิตการค้นหาโดยแบ่งพื้นที่การค้นหาซ้ำ ๆ เรียกว่าการค้นหาแบบแบ่งขั้วสอง" - ที่ไม่ตรงกับประสบการณ์ของฉันเอง ฉันได้ยินสิ่งนี้เป็นประจำเรียกว่าการค้นหาแบบไบนารี
DW

@DW อย่างที่ฉันบอกคุณก่อนหน้านี้หน่วยความจำของฉันไม่น่าเชื่อถือ แต่การค้นหาแบบไบนารี่หรือแม้กระทั่งการหารและพิชิตนั้นเป็นศัพท์เฉพาะทางที่มากับคอมพิวเตอร์ แต่ฉันคิดว่าไม่มีคอมพิวเตอร์หลายเครื่องรอบ ๆ เมื่อฉันได้ยินการค้นหาแบบแยกคู่ครั้งแรกการอ้างอิงที่พิมพ์ออกมาที่ดีจะดีกว่าหน่วยความจำไม่สบาย (f) ของฉันมาก เกี่ยวกับวิกิพีเดียฉันไม่ได้อ่านบทความทั้งหมด โดยทั่วไปฉันไม่คิดว่าฉันจะได้รับคำตอบที่ชัดเจน ... และฉันมีข้อสงสัยว่ามีอยู่ ความคิดทั่วไปคำศัพท์ที่ดีและจะต้องได้รับการดัดแปลงโดยแต่ละคนจะมีปัญหาอะไรในมือ
babou

1

Knuth (V.3 Pg. 82) ให้ Mauchly เป็นแหล่งข้อมูลสำหรับการค้นหาแบบไบนารี่ มันถูกใช้เพื่อค้นหาจุดแทรกในระหว่างการเรียงลำดับจากนั้น shuffles องค์ประกอบไปข้างหน้าเพื่อให้ว่างในกระบวนการที่เรียกว่าการแทรกแบบไบนารี

ดังนั้น (2) จะถูกต้อง แต่ฉันไม่เห็นกระดาษต้นฉบับ มันถูกบดบังที่นี่: https://books.google.com/books?id=A6EEAQAAIAAJ&focus=searchwithinvolume&q=sorting+and+collating


1

ฉันพยายามค้นหาข้อมูลอ้างอิง Mauchly ที่ Knuth อ้าง แต่ดูเหมือนว่าห้องสมุดของฉันจะวางสำเนาของพวกเขาผิด

ในระหว่างนี้ให้พิจารณาการอ้างอิงเริ่มต้นต่อไปนี้สำหรับ "การค้นหาแบบไบนารี":

  • Halpern, Mark " ตารางความกว้างแปรผันพร้อมระบบอำนวยความสะดวกในการค้นหาแบบไบนารี " การสื่อสารของ ACM 1.2 (1958): 1-4

    ตระกูลของรูทีนย่อยที่อธิบายในรายงานนี้ได้รับการออกแบบเพื่อสร้างค้นหาและดูแลรักษาตารางซึ่งจะมีรายการที่มีความยาวต่างกันและยังสามารถคล้อยตามการค้นหาโดยพาร์ติชันหรือค้นหา“ ไบนารี”

  • Nagler, H. " การประเมินประสิทธิภาพสัมพัทธ์ของวิธีการเรียงลำดับภายในสองวิธี " การสื่อสารของ ACM 3.11 (1960): 618-620

    รายงานนี้เกี่ยวข้องกับ IBM 705 รุ่น I และ II เป็นการศึกษาเวลาของเครื่องที่ต้องการโดยวิธีการเรียงลำดับภายในสองวิธีการผสานสองทางแบบดั้งเดิมและรูปแบบของการค้นหาแบบไบนารีซึ่งเกิดจาก D. Mordy ของ IBM Corporation

  • โปรแกรม Petersen, TL RE-ENTRY VEHICLE โปรแกรมสังเคราะห์ เลขที่ STL / TR-60-0000-09103 (ลิงค์ PDF) ห้องปฏิบัติการเทคโนโลยีอวกาศ TRW LOS ANGELES CA, 1960

    คุณค่าของ V0* * * * ซึ่ง ก.(V0* * * *)=0จะต้องพบตอนนี้ จะเห็นได้ง่ายว่าก.(0)=K3-1 และ ก.(K1)=-1เพื่อให้ค่าที่ต้องการของ V0* * * * อยู่ระหว่าง 0 ถึง K1 ถ้า K3>1. การค้นหาแบบไบนารีจะดำเนินการสำหรับรากของก.(V0* * * *); V0* * * * ถูกเลือกคือสิ่งที่ค่าสัมบูรณ์ของความแตกต่างระหว่างค่าต่อเนื่องของ V0* * * * น้อยกว่า 0.01.

ฉันจะสังเกตว่าการอ้างอิง 1958 ครั้งแรกใช้เครื่องหมายคำพูดรอบ "ไบนารี่" แต่โดยการอ้างอิงที่สามในปี 1960 การค้นหาแบบไบนารี่ถูกกล่าวถึงโดยไม่มีคำอธิบายหรือคำอธิบายเพิ่มเติม การพาดพิงถึง "ค้นหาโดยพาร์ติชัน" มีแนวโน้มที่จะแนะนำว่าคำอธิบาย 2) อยู่ใกล้ แต่จำเป็นต้องมีการตรวจสอบเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.