Red de conocimiento informático - Conocimiento de la instalación - Encontrar un algoritmo (algoritmo codicioso)

Encontrar un algoritmo (algoritmo codicioso)

En primer lugar, no importa dónde es denso y dónde no. Esta es una distinción artificial. Primero debe atravesar todas las cuadrículas para determinarlo. Después de atravesar todas las cuadrículas, puede obtener la ruta óptima.

Dado que se utiliza el algoritmo codicioso, para facilitar el pensamiento, podemos suponer que el tablero de ajedrez es infinito. determine si debe ir hacia la derecha o hacia abajo. La idea es la siguiente:

Juicio Si hay pepitas de oro en las dos cuadrículas adyacentes a la derecha y debajo de la cuadrícula actual, la situación es la siguiente:

1) Si uno tiene pepitas de oro y el otro no, vaya a la cuadrícula con pepitas de oro

2) Si no hay ninguna o ambas, debe juzgar en qué dirección recoger La siguiente pepita de oro es más rápida. El método es el siguiente:

Deje que el robot dé hipotéticamente un paso en cada dirección y luego La situación de juicio de la cuadrícula actual es la siguiente:

A) Si puedes recoger pepitas de oro continuando moviéndote en una cuadrícula, pero no en la otra, entonces ve a esa cuadrícula en el paso anterior

B) Si todavía hay pepitas de oro o ninguna, repite 2) hasta encontrar una situación que coincida con A).

Suponiendo que el tablero de ajedrez tiene N*N cuadrículas, el peor de los casos para el algoritmo codicioso es atravesar todo el tablero de ajedrez. Por ejemplo, cuando solo la primera cuadrícula tiene una pepita de oro, es necesario recorrer todo el tablero de ajedrez. ser atravesado para determinar el movimiento. El mejor de los casos también requiere atravesar cuadrículas de 4*N.

En términos de complejidad temporal, debería ser O(nLogn)