¿Utiliza el cerebro un proceso de recursión?

¡Si! Pensamos recursivamente, mucho. Suponiendo que quiere decir recursión simple. A continuación se muestra una función simple de Python para calcular el factorial de un número. Se ejecuta de forma recursiva.

def fac (x):
si x == 0: #si sucede algo (es decir, llego a 0)
volver 1 #hacer algo
más:
rest = fac (x – 1) # ¡no sé qué hacer para reducir el problema!
volver descanso * x

Llamemos a [math] if x == 0 [/ math], el caso base. Esto será importante más adelante. Lo juro.

Asumiendo que la computadora no ha alcanzado el caso base [math] (si x == 0) [/ math], continuará ejecutando la función en [math] x-1 [/ math] hasta que el condicional se vuelva verdadero y puede resolver la respuesta.

Ahora, el ejemplo más común en el que puedo pensar que nosotros pensamos recursivamente es cuando jugamos juegos de estrategia. Digamos que estás jugando ajedrez contra un programa. Y el tablero se parece a esto. La computadora es negra, tú eres blanca.

Supongamos que la computadora está mirando hacia adelante dos movimientos hacia el futuro y jugando con algún algoritmo recursivo. Ahora, la computadora jugará todos los dos movimientos posibles que pueda y mirará el resultado. Por ejemplo, moverá a su caballero y luego moverá su peón. Analizará el resultado. Entonces lo deshará. Luego, moverá su caballo y moverá tu otro peón. Nuevamente, analizará el resultado … yada yada yada. Cuando todo esté hecho, moverá su peón y luego hará todos los movimientos hipotéticos por usted, todo mientras analiza el resultado de cada posibilidad. Una vez hecho esto, para cada movimiento posible. Hará el mejor movimiento que haya visto hasta ahora.

Ahora jugamos de forma similar a esto. En lugar de mirar todas las posibilidades, nuestros cerebros lo reducen a posibilidades importantes. Filtramos toda la basura engorrosa y nos ponemos manos a la obra. Nuestro cerebro inmediatamente ve que el peón con la flecha es realmente interesante y luego piensa recursivamente desde allí. Por ejemplo, sobre las posibilidades que rodean solo ese peón.

Me muevo, él se mueve, me muevo, gano tipo de pensamiento. Si bien esto no parece ser recursivo per se , pero la forma en que estamos anotando movimientos (por ejemplo, lo que constituye una victoria y una pérdida, es un pensamiento inherentemente recursivo). Simplemente no pensamos en esto como una recursión porque nuestro los cerebros son buenos para filtrar las otras posibilidades que obviamente no importan en este escenario, y luego recurren a lo que queda. Al final lo que queda por usar, es simple causa y efecto.

La persona promedio puede hacer esto, me muevo, se mueve, me muevo, se mueve, cosa unas 8 veces antes de que nos abrumemos. Recuerdo haber leído en algún lugar que los grandes maestros de ajedrez pueden hacerlo bien más de 24 veces. Pero no confíes en mi palabra. Además, esto parece disparatado, pero en realidad esto es bastante malo. Las computadoras pueden mirar cientos de movimientos por delante antes de sudar. Esa es una de las razones por las que incluso los grandes maestros de ajedrez lucharon contra Deep Blue en los años 90.

La verdad es que la mayoría de las decisiones que tomamos son recursivas, simplemente no parecen ser así porque no estamos tomando en cuenta todas las posibilidades, ya que descartamos la mayoría de ellas debido a la intuición desde el principio.

Otros ejemplos de recursión en el cerebro es la mitosis de las neuronas, pero no amplié eso porque creo que esa no es realmente la dirección que esperabas que tomara la respuesta.

Otro ejemplo arrojado es el ejemplo de Cinema. Digamos que no sabes en qué fila estás sentado, así que pregúntale a la persona frente a ti. Él te dice que está en la fila 8. Entonces, obviamente, razonas que si él está en la fila 8, yo estoy en la fila 9. De nuevo, esto parece puro sentido común, pero es una recursión en el sentido de que no sabías algo, te diste cuenta Si alguien le dijo la respuesta a un problema menor (qué fila está frente a usted), es decir, “El caso base de antes”, puede llegar a su solución.

También nota al margen. Puede omitir este párrafo si lo desea, pero aquí está el pseudocódigo de cómo funcionaría un algoritmo de ajedrez recursivo. Este bit de puntaje de código también analiza cada posibilidad y devuelve 0, 50 o 100, dependiendo de si ha perdido, no ha cambiado o ha ganado.

def score_for (self, board):
“” “devuelve una lista de puntajes para cada cuadrado
“” ”
puntajes = [00] * tablero.ancho
para squ in range (board.width): # ejecuta el bucle
if board.can_add_to (squ) == False:
puntajes [col] = -1
elif board.is_win_for (self.piece) == Verdadero:
puntajes [squ] = 100
elif board.is_win_for (self.opponent_piece ()) == Verdadero:
puntajes [squ] = 0
elif self.lookahead == 0:
puntajes [squ] = 50
más:
board.add_piece (self.piece, squ)
new_lookahead = self.lookahead – 1 # ¡Esta es la llamada recursiva!
score1 = Opp.scores_for (tablero)
if max (score1) == 100: # ¡Calificando las puntuaciones / invirtiéndolas aquí porque si el usuario virtual gana, la computadora debe perder!
puntajes [squ] = 0
if max (score1) == 0:
puntajes [squ] = 100
if max (score1) == 50:
puntajes [squ] = 50
if max (score1) == -1:
puntajes [squ] = -1
board.remove_piece (squ) #remove piece / deshacer cosas y prepárate para volver a correr
puntajes de retorno

Además, arriba, en el ejemplo del ajedrez, es blanco para jugar y hay un compañero forzado en 2. Veamos cuán recursivo es ese cerebro tuyo.