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