¿Cuál es el enfoque para encontrar un acuerdo que produzca el salario mínimo?

Proporcionaré una solución inspirada en la clasificación de burbujas (en realidad NO hay clasificación involucrada).

Para sacarlo del camino: la solución de fuerza bruta es obviamente inviable ya que nos deja con O (n!) De diferentes combinaciones para verificar.

La intuición detrás de esta solución es que queremos que los pilotos con el mayor Delta (DS) entre su salario de piloto (PS) y el de asistente (AS) sean los asistentes. DS (i) = Salario piloto – Salario auxiliar del piloto “i”.

1. Por lo tanto, el paso es calcular para cada Piloto “i” su DS (i).
* Sin las restricciones de edad, la solución es simplemente encontrar los N / 2 Pilots con el DS (Pilot) más alto y asignarlos como asistentes.

2. Establecemos DS (0) = DS (N) = 0 ya que los más jóvenes y mayores ya tienen sus roles establecidos por la restricción de edad.

3. Ahora imagine que la matriz DS representa un conjunto de alturas.
(Similar a la representación en esta pregunta: si desea un trabajo en Twitter, prepárese para responder esta pregunta desconcertante sobre los charcos de lluvia) Nuestro objetivo es eliminar los picos. – Tome el piloto con el más alto en su vecindario DS (piloto) para ser el asistente.

El algoritmo:
1. Escaneamos desde el más antiguo al piloto y lo emparejamos con el piloto más cercano con el DS más alto (piloto)
– representará un Pico (El piloto antes y después de él tiene un DS más bajo).
2. Eliminamos estos dos pilotos de la lista de DS.
3. Establezca el DS del piloto más antiguo en 0 y repita desde 1. con el “nuevo” piloto más antiguo.
* DS debe representarse con una lista doblemente vinculada para una fácil eliminación y un escaneo más simple, ya que no desea volver a mirar a los pilotos asignados.
4. se detiene cuando le quedan dos pilotos en la lista.

Complejidad:
En cada iteración, en el peor de los casos, está escaneando a todos los pilotos de la lista restante, esta serie converge a ~ (n ^ 2) / 4 (eliminamos dos pilotos en cada iteración, no uno) Por lo tanto, es O (n ^ 2). (Orden descendente de DS – el más joven tiene el DS más alto – Gerentes de contratación sabios)
El mejor escenario es O (n). (orden ascendente de DS el más antiguo tiene el DS más alto).

La prueba de la optimización es bastante fácil pero aún demasiado larga (¿y no interesante?) Para esta publicación.