จำนวนการเปรียบเทียบน้อยที่สุดจำเป็นต้องเรียงลำดับ (เรียงลำดับ) 5 องค์ประกอบ


22

ค้นหาจำนวนการเปรียบเทียบที่น้อยที่สุดที่จำเป็นในการจัดเรียง (เรียงลำดับ) ห้าองค์ประกอบและกำหนดอัลกอริทึมที่เรียงลำดับองค์ประกอบเหล่านี้โดยใช้การเปรียบเทียบจำนวนนี้

การแก้ไข :มี 5! = 120 ผลลัพธ์ที่เป็นไปได้ ดังนั้นต้นไม้ไบนารีสำหรับขั้นตอนการเรียงลำดับจะมีอย่างน้อย 7 ระดับ ที่จริงแล้ว ≥ 120 หมายถึง h ≥ 7. แต่การเปรียบเทียบ 7 ครั้งนั้นไม่เพียงพอ จำนวนการเปรียบเทียบที่น้อยที่สุดที่จำเป็นในการจัดเรียง (เรียงลำดับ) ห้าองค์ประกอบคือ 82ชั่วโมงชั่วโมง

นี่คือคำถามจริงของฉัน: ฉันพบอัลกอริทึมที่ทำในการเปรียบเทียบ 8 แต่ฉันจะพิสูจน์ได้อย่างไรว่าไม่สามารถทำได้ในการเปรียบเทียบ 7 รายการ


2
มากคำถามที่เกี่ยวข้องอย่างใกล้ชิดมาก
Raphael

คำตอบ:


27

การแก้ปัญหานั้นผิด ปีศาจ [1; ผ่าน 2 วินาที 5.3.1] แสดงว่าห้าค่าสามารถเรียงลำดับได้โดยใช้การเปรียบเทียบเพียงเจ็ดรายการเท่านั้นเช่นขอบเขตล่างของ "ข้อมูลเชิงทฤษฎี" มีความเข้มงวดในกรณีนี้

คำตอบคือวิธีการที่ปรับให้เหมาะกับไม่ใช่อัลกอริทึมทั่วไป มันก็ไม่ค่อยดีเท่าไหร่ นี่คือโครงร่าง:n=5

  1. เรียงสองคู่แรก

  2. สั่งซื้อคู่ wrt องค์ประกอบที่มีขนาดใหญ่ตามลำดับของพวกเขา

    เรียกผลลัพธ์ ; เรารู้ว่า< < และ<[a,,,d,อี]a<<dd<d

  3. แทรกลงใน[ a , b , d ]อี[a,b,d] ]

  4. ใส่cลงในผลลัพธ์ของขั้นตอนที่ 3

ขั้นตอนแรกจะใช้เวลาสองการเปรียบเทียบอย่างชัดเจนอย่างใดอย่างหนึ่งที่สองเท่านั้น สองขั้นตอนสุดท้ายใช้เวลาสองการเปรียบเทียบกัน เราใส่เข้าไปในลิสต์สามองค์ประกอบในทั้งสองกรณี (สำหรับขั้นตอนที่ 4 โปรดทราบว่าเรารู้จากว่าc<dมีขนาดเล็กกว่าองค์ประกอบสุดท้ายของรายการในมือ) และเปรียบเทียบกับองค์ประกอบกลางก่อน นั่นทำให้การเปรียบเทียบทั้งหมดเจ็ดอย่างc

เนื่องจากฉันไม่เห็นวิธีการเขียนรหัสเทียม "ดี" ของที่นี่ดูที่นี่สำหรับการดำเนินการทดสอบ (และอ่านได้หวังว่า)


  1. ปริญญาเอก วิทยานิพนธ์ (มหาวิทยาลัยสแตนฟอร์ด) โดย HB Demuth (1956)

    ดูสิ่งนี้ด้วย การเรียงลำดับข้อมูลอิเล็กทรอนิกส์โดย HB Demuth (1985)

  2. จัดเรียงและค้นหา โดย Donald E. Knuth; ศิลปะการเขียนโปรแกรมคอมพิวเตอร์ปีที่ 5 3 (2nd ed, 1998)

5
การทดสอบให้ห้าคะแนนเพื่อแสดงว่าเป็นไปไม่ได้ สงสัยว่าคุณจะได้คะแนนเท่าไรสำหรับคำตอบของคุณ :-) (อาจเป็นศูนย์เนื่องจากการทดสอบไม่ผิด)
gnasher729

0

ทฤษฎีขอบเขตล่างในการเปรียบเทียบตามการเรียงลำดับเป็นเข้าสู่ระบบ(n!) ) กล่าวคือการเรียงลำดับรายการnโดยใช้การเปรียบเทียบ<หรือ>จะใช้เวลาอย่างน้อย 2 ฐานลอการิทึมของn!ดังนั้นเข้าสู่ระบบ(5!)6.91การดำเนินงาน

ตั้งแต่5!=120และ27=128โดยใช้แผนภูมิการตัดสินใจแบบไบนารีคุณสามารถเรียงลำดับ 5 รายการใน 7 การเปรียบเทียบ ต้นไม้แสดงให้เห็นอย่างชัดเจนว่าคุณมีการเรียงสับเปลี่ยน 120 แบบจากนั้นสลับค่าที่จำเป็นในการเรียงลำดับ

ไม่ใช่รหัสที่สั้นหรือสวยและคุณควรใช้วิธีการสร้างรหัสเพื่อสร้างแผนผังการตัดสินใจและสลับแทนที่จะใช้รหัสด้วยมือ และพิสูจน์ได้ว่าสามารถใช้ได้กับการเปลี่ยนแปลง 5 รายการดังนั้นการพิสูจน์ว่าคุณสามารถเรียงลำดับ 5 รายการในการเปรียบเทียบไม่เกิน 7 รายการ


เท่าที่ผมจำได้ทฤษฎีขอบเขตล่างให้asymptoticผูกพันลดลง (เช่น ) คุณแน่ใจหรือไม่ว่าปัจจัยคงที่คือ 1 หรือไม่? Ω(nเข้าสู่ระบบn)
dkaeae

ขอบเขตล่างทางทฤษฎีสำหรับกรณีที่เลวร้ายที่สุดคือ ceil (log2 (n!)) เนื่องจากมี n แน่นอนทุกประการ การเรียงสับเปลี่ยนและถ้ามีการเปรียบเทียบคุณต้องมี 2 ^ k ≥ n! มันไม่ใช่แค่ค่าคงที่ 1 แต่แน่นอน
gnasher729

-1

ฉันกำลังคิด quicksort คุณเลือกเป็นองค์ประกอบที่เพิ่งจะกลายเป็นองค์ประกอบกลาง เปรียบเทียบเดือยกับ 4 รายการที่เหลือส่งผลให้เรียงสองกอง แต่ละกองเหล่านั้นสามารถจัดเรียงในการเปรียบเทียบ 1 เว้นแต่ฉันจะทำผิดพลาดอย่างรุนแรงทั้ง 5 รายการก็ถูกจัดเรียงอย่างสมบูรณ์ในการเปรียบเทียบเพียง 6 รายการและฉันคิดว่านั่นเป็นจำนวนที่น้อยที่สุดในการเปรียบเทียบที่จำเป็นในการทำงาน คำถามเดิมพบว่าจำนวนการเปรียบเทียบน้อยที่สุดเพื่อเรียงลำดับ 5 องค์ประกอบ


1
กอง 3 องค์ประกอบสามารถจัดเรียงในการเปรียบเทียบ 1 ได้อย่างไร?
xskxzr

3 กองอะไรที่คุณพูดถึง? สิ่งที่ฉันอธิบายไว้ข้างต้นผลิต 2 กอง 2 องค์ประกอบหลังจากผ่านครั้งแรก
scottyc

ฉันคิดว่าคุณใช้องค์ประกอบแบบสุ่มเป็นเดือย คุณจะเลือกองค์ประกอบกลางเป็นเดือยในการเปรียบเทียบ 4 วิธีได้อย่างไร
xskxzr

นั่นไม่ใช่สิ่งที่ฉันพูด จากด้านบน "ตั้งแต่ 5! = 120 .... โดยใช้แผนภูมิการตัดสินใจแบบไบนารีคุณสามารถเรียงลำดับ 5 รายการใน 7 การเปรียบเทียบ" จำนวนการเรียงสับเปลี่ยนขององค์ประกอบคือ 120 แต่ต้องมีสาขาที่มีการเปรียบเทียบเพียง 6 ครั้งเท่านั้นเนื่องจากการสุ่มตัวอย่างการรันของ quicksort ใช้เวลาเพียง 6 เพื่อทำงาน หนึ่งใน 120 permutations สำหรับรายการที่เรียงลำดับ สาขานั้นอาจมีการเปรียบเทียบน้อยที่สุดเท่ากับ 4
scottyc

-2

หากคุณสามารถทดสอบอัลกอริทึมให้ทดสอบกับการผสมตัวเลขทั้งหมด หากคุณมีจำนวนมากให้ทดสอบชุดค่าผสมแบบสุ่มจำนวนมาก ไม่แม่นยำ แต่เร็วกว่าชุดค่าผสมทั้งหมด

น้อยที่สุด
<b <c = 2
a <b <c <d = 3
a <b <c <d <e = 4

สูงสุด
3 ^ 3
4 ^ 4
5 ^ 5

ใช้งานกลางได้ 3-6 สำหรับตัวเลข 4 ตัว
การผสานใช้ 4-5 สำหรับ 4 หมายเลข
เปรียบเทียบน้อยที่สุดโดย wiki คือ 5 สำหรับ 4 ตัวเลข :) สำหรับ 5 คือ 7 คุณใช้ 8 ยังคงมาก
https://en.wikipedia.org/wiki/Comparison_sort#Number_of_comparisons_required_to_sort_a_list
หากคุณทราบทุกอย่างมาก่อนการเปรียบเทียบคุณสามารถเปรียบเทียบได้ ค่าเฉลี่ยของฉันสำหรับ 4 หมายเลขคือ 3.96 / 1024 รวมกันทั้งหมด


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

เพิ่มเป็นกราฟิกและเคล็ดลับสำหรับ alg สำหรับทำนายค่า cmp จากก่อนหน้า cmp และค่านาทีของเขาคือ 7, แหล่งข้อมูลอื่น 8, ค่าจริงขั้นต่ำ คือ 4 !!! 4 ใช้สำหรับการเรียงลำดับขึ้น / ลงเท่านั้น Ex1: 00000 01234 43210 10000 ... Ex2: แทรกตรงกลาง: 43210, เริ่ม 4, รับ 3, cp 4> 3, รับ 2, cp 4> 2, cp 3> 3, รับ 1, cp (กลาง) 3> 1, cp 2> 1, รับ 0, cp (กลาง) 3> 0, cp 2> 0, cp 1> 0 ... 8 cmp 7 สามารถเป็นไปได้สำหรับคำสั่งหรือ conncrete คุณสามารถดูหมายเลข 4 ของฉันได้ที่mlich.zam.slu.cz/js-sort/x-sort-x2.htmค่าเฉลี่ย 3.96 ขั้นต่ำสูงสุด 3-6 สามารถเปลี่ยนเป็น 5 และทดสอบ alg ของเขา
Peter Mlich
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.