두 세트에서 최대 선택을 계산하는 알고리즘은 무엇입니까?


11

길이가 같지 않은 정수의 두 벡터가 주어지면 크기 차이를 보완하기 위해 짧은 벡터에 여분의 0이 삽입 된 두 벡터 사이의 해당 숫자 쌍 사이의 최대 값을 선택하여 가능한 최대 결과를 어떻게 결정할 수 있습니까?

예를 들어 다음 두 벡터를 입력으로 고려하십시오.

[8 1 4 5]
[7 3 6]

0과 결과 합계를 삽입하기위한 선택 사항은 다음과 같습니다.

[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를 반환해야합니다.

작은 벡터에 0을 배치하는 모든 순열을 계산하여 무차별 적 으로이 작업을 수행 할 수 있지만 (위와 같이) 계산 비용이 많이 들며 한 벡터가 다른 벡터의 크기의 정확히 절반 인 경우 최악입니다.

벡터의 길이가 다른 경우에도 더 긴 벡터의 길이에 비례하여 선형 시간으로 답을 계산하는 방법이 있습니까? 그렇지 않다면, 선택된 계승 순열보다 더 잘 할 수 있습니까?


3
0

2
나는 이것을 사용하여 두 문장이 얼마나 비슷한 지 순위를 매기는 것과 관련된 다른 검색 알고리즘의 최대 결과를 계산합니다. 올바른 순서 변경은 허용되지 않습니다.
WilliamKF

벡터 길이의 차이에 대해 약속 했습니까? 귀하의 예에서는 0이 하나만 누락되었습니다. 누락 된 0의 수가 적다는 것을 알고 있으면보다 효율적인 알고리즘이 있습니다 (예를 들어, 누락 된 0의 수가 일정한 경우 동적 프로그래밍 알고리즘을 선형 시간으로 실행할 수 있음).
DW

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.