อัลกอริทึมใดที่จะคำนวณตัวเลือกสูงสุดจากสองชุด


11

ด้วยเวกเตอร์จำนวนเต็มสองตัวที่มีความยาวไม่เท่ากันฉันจะกำหนดผลลัพธ์สูงสุดได้อย่างไรจากการเลือกจำนวนสูงสุดระหว่างคู่ที่สอดคล้องกันระหว่างเวกเตอร์สองตัวที่มีค่าศูนย์พิเศษแทรกลงในเวกเตอร์ที่สั้นกว่า

ตัวอย่างเช่นให้พิจารณาเวกเตอร์สองตัวต่อไปนี้เป็นอินพุต:

[8 1 4 5]
[7 3 6]

ตัวเลือกสำหรับการแทรกศูนย์และผลรวมคือ:

[0 7 3 6]  => Maximums: [8 7 4 6]  =>  Sum is: 25
[7 0 3 6]  => Maximums: [8 1 4 6]  =>  Sum is: 19
[7 3 0 6]  => Maximums: [8 3 4 6]  =>  Sum is: 21
[7 3 6 0]  => Maximums: [8 3 6 5]  =>  Sum is: 22

ดังนั้นในกรณีนี้อัลกอริทึมควรกลับ 25

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

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


3
0

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

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

คำตอบ:


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