La idea y prueba del algoritmo voraz para el problema vivac

1. Descripción del problema

Hay un equipo de expedición que va al campo para investigar, y hay n lugares en la ruta de estudio que se pueden usar como campamentos. Se sabe que la distancia desde el campamento hasta el punto de partida es x1, x2...xn, y satisface x1<x2<. .....<xn. Solo pueden avanzar 30 KM todos los días, y solo viven en cada campamento un día. Esperan encontrar un plan de acción que minimice el número total de días de campamento. Por favor, diseñe un algoritmo para resolver este problema y demuestre que es correcto .

2. Análisis de algoritmos

 Para reducir al máximo el número de días de acampada , primero elegimos un camping lo más alejado posible para investigar, pero como el equipo de expedición tiene un itinerario diario limitado, es necesario elegir un camping lo más alejado posible. posible dentro de los 30 km para la investigación y el alojamiento.

El pseudocódigo es el siguiente:

  while (y < end) {
		if (camparea[i] - start <= 30) {
			if (s < camparea[i] - start) {
				s = camparea[i] - start;
			}
			i++;
		}
		else {
			k = k + 1;
			T[i - 1] = 1;
			y = camparea[i];
			start = camparea[i - 1];
		}

3. Demostrar la exactitud del experimento. 

En este experimento, se usa un método relativamente simple para probar.La idea general de la prueba no debería ser un problema importante después de mi escrutinio, pero el método de prueba debe estudiarse cuidadosamente.

Prueba de la corrección de este algoritmo:

Proposición: Para cualquier K, se pueden encontrar K campings seleccionados en el algoritmo voraz de modo que el número de días que inspeccionan sea el mínimo.

Prueba: por inducción

Cuando K=1, elegir el camping más alejado del punto de inicio del punto de inicio al punto final en este momento En este momento elegir el punto de acampada más alejado debe ser la solución óptima En este momento el número mínimo de días de acampada es 1;

Suponiendo que se establece en k, entonces para el algoritmo, en la selección del algoritmo voraz en los primeros k pasos, el resultado de cada selección es el menor número de días de campamento Tk Ahora se prueba que cuando K+1, el Tk+ obtenido por el algoritmo voraz 1 es también el número mínimo de días de acampada, que es la solución óptima.

Usa prueba por contradicción:

Hipótesis: Cuando se selecciona el paso k+1, el resultado Tk+1 no es la solución óptima.

De acuerdo con el supuesto, se puede concluir que existe un T'k+1 menor que Tk+1

Ahora mismo

                          Tk+1=Tk+Txk+1 > T'k+1=T'k+Tx'k+1 (1)

y

                                                  Txk+1=T'xk+1=1 (2)

Por lo tanto se puede concluir que

                                                          Tk > Tk (3)

Sin embargo, según las condiciones del método de inducción, en la selección del algoritmo voraz en los primeros k pasos, el resultado de cada selección puede obtener el número mínimo de días de acampada Tk, es decir

                                          TK+1=Tk +1 <= T'k+1=T'k+1 (4)

Esto es contradictorio con el resultado inferido de la suposición, por lo que la suposición no es verdadera, por lo que se prueba que la proposición original es verdadera, por lo que se puede probar que cuando K+1, Tk+1 obtenido por el algoritmo codicioso es también el número mínimo de días de acampada, que es la solución óptima.

Supongo que te gusta

Origin blog.csdn.net/qq_52913088/article/details/125057701
Recomendado
Clasificación