เลือกเป็นสหภาพเรียงแถว: รู้จักกันแล้ว?


12

ฉันกำลังมองหาการอ้างอิงบรรณานุกรมสำหรับอัลกอริทึม / ปัญหาต่อไปนี้: ฉันตั้งชื่อมันว่า "BiSelect" หรือ "t-ary Select" หรือ "Select in Union of Sorted Array" แต่ฉันคิดว่ามันถูกนำมาใช้ภายใต้ชื่ออื่นหรือไม่?

ปัญหา

พิจารณาปัญหาต่อไปนี้:

ได้รับเคล็ดเรียงอาร์เรย์1 , ... , k , ขนาดนั้นn 1 , ... , n kและจำนวนเต็มเสื้อ[ 1 .. Σ n ฉัน ]สิ่งที่เป็นเสื้อมูลค่า -th ของสหภาพเรียงของพวกเขาฉันฉัน ?kA1,,Akn1,,nkt[1..ni]t iAi

โซลูชั่น

มีอัลกอริทึมที่เรียบง่ายและสง่างามทำงานในเวลาถ้าk = 2 : ถ้าk = 2ให้เปรียบเทียบA 1 [ t / 2 ]กับA 2 [ t / 2 ]และรับเงินในA 1 [ t / 2 .. t ]และA 2 [ 1 ..O(lgmin{n1,n2,t})k=2k=2A1[t/2]A2[t/2]A1[t/2..t]หรือ A 1 [ 1 .. t / 2 ]และ A 2 [ t / 2 .. t ]ตามลำดับในทั้งสองกรณีที่มีพารามิเตอร์ t / 2 (และการปรับแต่งเล็กน้อยบางอย่างเมื่อ n 1หรือ n 2มีขนาดเล็กกว่า t )A2[1..t/2]A1[1..t/2]A2[t/2..t]t/2n1n2t

นี่เป็นการสรุปถึงอัลกอริธึมที่ซับซ้อนกว่าเล็กน้อยซึ่งทำงานในเวลาสำหรับค่าที่มากขึ้นของkตามการคำนวณค่ามัธยฐานของค่าA i [ t / k ]สำหรับi [ 1 .. k ] : t / k องค์ประกอบที่เล็กที่สุดสามารถละเลยต่อไปในk / 2อาร์เรย์ที่ฉัน [ T / k ]มีขนาดเล็กกว่าค่ามัธยฐานและองค์ประกอบของการจัดอันดับใน[O(klgt)kAi[t/k]i[1..k]t/kk/2Ai[t/k]สามารถเพิกเฉยต่อไปในอาร์เรย์ k / 2อื่น ๆ ทำให้เกิดการแบ่งครึ่งของ tในการเกิดซ้ำแต่ละครั้ง (และค่าใช้จ่าย O ( k )สำหรับค่ามัธยฐาน)[tt/k..]k/2tO(k)

อ้างอิง?

5

แรงจูงใจ

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

คำตอบ:


2

O(k+i=1klogni)

การอ้างอิง

Greg N. Frederickson และ Donald B. Johnson 2523. การเลือกและการจัดอันดับทั่วไป (เวอร์ชั่นเบื้องต้น) ในการประชุมวิชาการ ACM ประจำปีครั้งที่สิบสองเรื่องทฤษฎีการคำนวณ (STOC '80) พลอากาศเอกนิวยอร์กนิวยอร์กสหรัฐอเมริกา 420-428 DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690


20

p=min(k,t)O(k+plogtp)

การอ้างอิง

GN Frederickson, DB Johnson " ความซับซ้อนของการเลือกและการจัดอันดับใน x + y และเมทริกซ์ด้วยคอลัมน์ที่เรียงลำดับ " J. Comput ระบบวิทย์, 24 (2) (1982), หน้า 197–208


0

กรณี k = 2 เกิดขึ้นในการเรียงลำดับการผสานแบบขนานเนื่องจากการรวมกันของสองอาร์เรย์ที่เรียงลำดับจากเธรดที่แตกต่างกันจำเป็นต้องแยกเป็นสองเธรดเพื่อรักษาจำนวนของการขนานที่เท่ากัน โซลูชันการบ้านนี้เป็นเพียงการอ้างอิงเดียว

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