ฮัน


38

คือทุกคนคุ้นเคยกับ Yijie ฮันพื้นที่เชิงเส้นจำนวนเต็มเรียงลำดับขั้นตอนวิธีการ? ผลลัพธ์นี้ปรากฏในกระดาษที่ค่อนข้างสั้น ( การจัดเรียงอย่างแน่นอนในเวลาO ( n log log n )และพื้นที่เชิงเส้น J. Alg. 50: 96–105, 2004) ซึ่งโดยทั่วไปแล้วจะติดกาวผลลัพธ์ก่อนหน้าจำนวนมากพร้อมกับการดัดแปลงที่เหมาะสม ปัญหาของฉันคือว่ามันเขียนในลักษณะค่อนข้างมือโบกมือโดยไม่ต้องลึกเข้าไปในเฉพาะใด ๆ มันอาศัยเอกสารก่อนหน้าอย่างมากซึ่งโดดเด่นในหมู่พวกเขาอีกกระดาษโดย Han ( ปรับปรุงการเรียงลำดับจำนวนเต็มอย่างรวดเร็วในพื้นที่เชิงเส้นO(nloglogn)O(nloglogn). สารสนเทศและการคำนวณ 170 (1): 81–94) เขียนในลักษณะเดียวกัน ฉันมีปัญหาอย่างมากในการทำความเข้าใจเอกสารทั้งสองนี้โดยเฉพาะอย่างยิ่งวิธีที่พวกเขาปรับและใช้ผลลัพธ์ก่อนหน้า ฉันอยากจะขอบคุณความช่วยเหลือใด ๆ.

แน่นอนเกินไปและคลุมเครือเกินกว่าจะถือว่าเป็นคำถามที่เหมาะสม แต่ฉันหวังว่าจะพัฒนาการอภิปรายข้ามคำถามและคำตอบที่มีการกำหนดชัดเจน

เพื่อนำไปสู่คำถามต่อไปนี้คือคำถามแรกของฉัน ในเล็มม่า 2 แห่งข้อมูล คอมพ์ กระดาษมีอัลกอริธึมเวลาแบบวนซ้ำสำหรับการค้นหาจำนวนเต็มที่เล็กที่สุด mth ในชุดของจำนวนเต็มขนาดเล็กnจำนวนที่บรรจุkแต่ละคำเป็น RAM รายละเอียดของขั้นตอนวิธีการล้มเหลวในการพูดถึงวิธีกรณีฐานk = O ( n )มีการจัดการ ในกรณีนี้มันเป็นสิ่งจำเป็นที่ต้องทำเลือกในO ( บันทึกk )เวลา สิ่งนี้สามารถทำได้?O(n/klogk)nkk=O(n)O(logk)


13
มันจะเหมาะสมอย่างสมบูรณ์แบบที่จะเขียนถึงเขา: hanyij@umkc.edu
Joseph O'Rourke

ใช่. เราได้พูดคุยเกี่ยวกับปัญหาทั่วไปนี้มาก่อนและวิธีการที่เหมาะสมในการแก้ไขปัญหานี้คือการส่งอีเมลถึงผู้เขียน
Suresh Venkat

17
ซึ่งรวมถึงคำถามเฉพาะเกี่ยวกับกระดาษที่มีอายุ 7 ปีและผ่านกระบวนการตรวจสอบโดยเพื่อนแล้ว ในขณะที่อารีย์สามารถส่งอีเมลถึงผู้เขียนได้ แต่นี่เป็นคำถามที่เหมาะสมสำหรับเว็บไซต์ ฉันไม่เข้าใจการโก่งตัว
Huck Bennett

18
แน่นอนสิ่งแรกที่ฉันทำคือเขียนฮัน ไม่มีคำตอบ. จากนั้นฉันก็ติดต่อผู้อื่นที่ได้ทำการเรียงลำดับจำนวนเต็มและเขาบอกว่าเมื่อตรวจดูแล้วเขาพบว่าเอกสารนั้นยุ่งเกินกว่าที่จะทำบุญลงทุนในเวลาของเขา นั่นคือเมื่อฉันมาที่นี่ หากมีใครบางคนที่รู้จักฮั่นและสามารถรับความสนใจจากเขาในนามของฉันนั่นก็คงจะดีเช่นกัน
Ari

4
Ω(nlogn)

คำตอบ:


18

ฉันแค่สงสัยในสิ่งเดียวกัน

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

O(nloglogn)

Yijie Han ได้ให้แนวคิดที่จะลดความซับซ้อนของเวลาที่คาดหวังในอวกาศเชิงเส้น [6] เทคนิคที่เขาใช้นั้นมีการประสานงานการส่งผ่านจำนวนเต็มลงในแผนผังการค้นหาเลขชี้กำลังของแอนเดอร์สสัน [8] และเวลาเชิงเส้นหลายการแบ่งบิตของจำนวนเต็ม แทนที่จะใส่เลขจำนวนเต็มทีละหนึ่งเข้าไปในแผนผังการค้นหาเอ็กซ์โพเนนเชียลเขาจะส่งผ่านจำนวนเต็มทั้งหมดหนึ่งระดับของแผนผังการค้นหาเอ็กซ์โปเนนเชียลในแต่ละครั้ง การผ่านจุดประสานงานดังกล่าวจะทำให้มีโอกาสในการแบ่งหลายส่วนในเวลาเชิงเส้นดังนั้นจึงเร่งอัลกอริทึมให้เร็วขึ้น ความคิดนี้อาจให้ความเร็ว แต่ในการใช้งานจริงมันเป็นเรื่องยากมากที่จะจัดการกับจำนวนเต็มใน batches

[6] Y. ฮันการเรียงลำดับกำหนดเวลา O (n บันทึกบันทึก n) และพื้นที่เชิงเส้น, 34 STOC, 2002

[8] A. Andersson, การเรียงลำดับและค้นหาอย่างรวดเร็วอย่างรวดเร็วในพื้นที่เชิงเส้น, IEEE Symposium บนพื้นฐานของวิทยาศาสตร์คอมพิวเตอร์, 1996


ทำไมต้องลงคะแนน
Suresh Venkat

1
ฉันเพิ่งเพิ่มลิงค์บทความในวารสารนี้ไปยังหน้าวิกิพีเดียต้นไม้แบบเอ็กซ์โปเนนเชียล FYI: บทความนี้อาจได้รับการเผยแพร่หลังจากถามคำถามแล้ว
AT

@ AT คุณช่วยขยายคำตอบของคุณหน่อยได้ไหมและอธิบายว่ามันตอบคำถามได้อย่างไร ตอนนี้สิ่งเดียวที่มันมอบให้คือลิงค์ไปยังบทความในวารสารบางเล่ม
Kaveh

1
ฉันได้ทิ้งกระดาษของฮั่นไปแล้วดังนั้นฉันดีใจที่คุณสามารถให้ความช่วยเหลือนี้ได้ ฉันไม่ได้คาดหวังที่จะเห็นอะไรเลยเมื่อฉันกลับมาที่นี่ในวันนี้ ขอบคุณ! ฉันจะอ่านเอกสารใหม่นี้และดูว่ามันช่วยให้ฉันก้าวหน้าในกระดาษของฮันหรือไม่
Ari

2
(loglogn)h(h+1)!2(h+1)!h+22(h+2)!2(h+2)!=nh=Ω(logn/loglogn)(loglogn)

1

ฉันไม่แน่ใจเกี่ยวกับคำตอบ (ยังไม่ได้อ่านผ่านกระดาษ) แต่ฉันคิดว่ามันน่าจะช่วยได้ ตัวเลขจะถูกบรรจุเป็นคำเดียวดังนั้นการดำเนินการกับคำเดียวใช้เวลา O (1) หากมีให้พูดว่าจำนวน k ของ h บิตแต่ละขนาดของคำขึ้นอยู่กับ k ซึ่ง h ก็จะขึ้นอยู่กับช่วงของตัวเลขด้วย ดังนั้นเราจึงใช้เทคนิคการลดช่วงที่สามารถลดช่วงของตัวเลขเพื่อให้ตัวเลขจำนวนมากสามารถพอดีกับคำเดียว จากนั้นสร้างบิตมาสก์ที่เหมาะสมเราสามารถค้นหาจำนวนเต็มแยกที่ใหญ่กว่าจากอันที่สั้นกว่าโดยพิจารณาสองคำพร้อมกัน สามารถทำได้ในเวลา O (1) (การลดทอน: สำหรับแต่ละตัวเลขที่เก็บไว้ในคำนั้นมีบิตแฟล็กที่เชื่อมโยงกับมันและจากนั้นเราลบสองคำ ... ถ้าบิตแฟล็กไปแล้วนั่นคือจำนวนที่น้อยกว่า)

ในทำนองเดียวกันการใช้ข้างต้นเราสามารถเรียงลำดับคำที่มีตัวเลข k ในเวลา O (บันทึก k) (เรียงลำดับ bitonic)

แก้ไข: อัลกอริทึมเพื่อเรียงลำดับหมายเลข 2k ในช่วง 0 ถึง m-1 ที่บรรจุในคำที่แต่ละหมายเลขใช้ขนาด L ของ = log (m + k) +2

K1

K2

ทำซ้ำสำหรับ t = log k ถึง 0

ส่วนที่ 1 - แยกคำต้นฉบับ Z ออกเป็นสองคำ A และ B

  1. K2K1

  2. 2tL

  3. B = Z- (Z & M)

ส่วนที่ 2

  1. K1K1

  2. M = M- (M เลื่อนไปทางซ้าย L-1 แห่ง)

  3. MIN = (B&M) หรือ (A- (A&M))

  4. MAX = (A&M) หรือ (B- (B&M))

  5. 2tL

  6. ในที่สุดอย่างเหมาะสม ORing สูงสุดและต่ำสุดเราจะได้รับคืน Z

ฉันได้รับร่างหวังว่าคุณจะสามารถกรอกรายละเอียดที่จำเป็น


ฉันไม่ชัดเจนในสิ่งที่คุณกำลังแนะนำ สมมติฐานคือจำนวนเต็มมีขนาดเล็กอยู่แล้วและ k ของพวกเขานั้นบรรจุอยู่ในคำเดียวแล้ว คุณเสนอที่จะลดขนาดของพวกเขาหรือไม่? ถ้าเป็นเช่นนั้นคุณทำอะไร นอกจากนี้ฉันรู้วิธีเรียงลำดับ bitonic ที่บรรจุในคำเดียวในเวลา O (log k) หรือเพื่อเรียงลำดับทั่วไป (ที่ไม่ใช่ bitonic) ใน O (log ^ 2 k) เวลา หากคุณรู้ว่าอัลกอริทึมที่เรียงลำดับทั่วไปในเวลา O (บันทึก k) คุณช่วยอธิบายรายละเอียดเพิ่มเติมได้ไหม? (แน่นอนว่าอัลกอริทึมดังกล่าวจะช่วยแก้ปัญหาการเลือกได้)
Ari

ฉันไม่ลดขนาดลงอีกฉันแนะนำวิธีลดขนาดที่ไม่จำเป็นในคำตอบของคุณ ขอโทษสำหรับความสับสน.
singhsumit

เว้นแต่ว่าฉันเข้าใจผิดมันดูเหมือนว่าขั้นตอนวิธีสำหรับการเรียงลำดับบิตonic มันไม่ได้เรียงลำดับทั่วไป ตัวอย่างเช่นมันจัดเรียงลำดับ 3,0,2,0 โดยที่ 3 อยู่ในเขตข้อมูลซ้ายสุด (สำคัญที่สุด) หรือไม่
Ari

3 0 2 0 ถูกแยก n เราได้ A = 3 2 และ B = 0 0 แล้ว MAX กลายเป็น 3 2 และ MIN เป็น 0 0 จากนั้นเรามี Z ใหม่เป็น 3 2 0 0 ลำดับทั่วไปใด ๆ มีลำดับ bitonic ขนาด 2 ด้วยการวนซ้ำแต่ละครั้งขนาดเหล่านี้จะเพิ่มเป็นสองเท่าและในที่สุดก็ถึงเวลาบันทึก k เรามีคำตอบของเรา
singhsumit

ไม่ตัวเลขไม่ถูกย่อกระชับเลื่อนลงเท่านั้น ในการทำซ้ำครั้งแรกเราแบ่งจำนวนคู่ที่แตกต่างกันในตำแหน่งบิตสูงดังนั้นเราจะได้ A = 0 3 0 2 และ B = 0 0 0 0 0 ดังนั้น MIN = 0 0 0 0, MAX = 0 3 0 2 และ Z = 3 0 2 0 ในการทำซ้ำครั้งที่สองเราแยกคู่ที่แตกต่างกันในตำแหน่งที่ต่ำของพวกเขาดังนั้นเราได้รับ A = 0 3 0 2, B = 0 0 0 0 0 และอีก Z ยังคงไม่เปลี่ยนแปลง
Ari
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.