Hangi algoritma iki setten maksimum seçenekleri hesaplar?


11

Muhtemelen eşit olmayan uzunluklarda iki tamsayı vektörü verildiğinde, boyut farkını telafi etmek için daha kısa vektöre eklenmiş sıfırlar eklenmiş iki vektör arasındaki karşılık gelen sayı çiftleri arasındaki maksimum sayıyı seçerek mümkün olan maksimum sonucu nasıl belirleyebilirim?

Örneğin, aşağıdaki iki vektörü girdi olarak düşünün:

[8 1 4 5]
[7 3 6]

Sıfır ve elde edilen toplamı ekleme seçenekleri şunlardır:

[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

Bu nedenle, bu durumda, algoritma 25 dönmelidir.

Bunu, kaba vektör ile sıfır vektörü yerleştirmenin tüm permütasyonlarını hesaplayarak yapabilirim (yukarıda yapıldığı gibi), ancak bu, bir vektörün diğerinin tam olarak yarısı olduğu durumda hesaplama açısından pahalı ve en kötü olurdu.

Vektör uzunluğunda farklılık gösterse bile, cevabı doğrusal zamanda daha uzun vektörün uzunluğuyla orantılı olarak hesaplamanın bir yolu var mı? Değilse, seçilen faktöriyel permütasyon sayısından daha iyisini yapabilir miyiz?


3
0

2
Bunu birbirine benzer iki cümle ne kadar benzer sıralama ile ilgili başka bir arama algoritmasının maksimum sonucunu hesaplamak için kullanıyorum. Doğru, yeniden sıralama kabul edilemez.
WilliamKF

Vektörlerin uzunlukları arasındaki fark hakkında herhangi bir şey vaat ediyor muyuz? Örneğinizde, yalnızca bir eksik sıfır var. Eksik sıfır sayısının az olduğunu biliyorsanız, daha verimli algoritmalar vardır (örneğin, eksik sıfır sayısı sabitse, dinamik programlama algoritması doğrusal zamanda çalıştırılabilir).
DW

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.