Número máximo de elementos no caminho de uma matriz

Tentei resolver um problema de mapa (matriz 4x4) usando python.

Quero encontrar o número máximo de elementos no caminho de um mapa, desde que o próximo nó seja menor que o nó anterior, com todas as combinações possíveis de elementos na matriz.

4 8 7 3  
2 5 9 3  
6 3 2 5  
4 4 1 6  

O movimento é como de um elemento pode se mover para leste-oeste-norte-sul

Por exemplo, de m [0] [1] pode passar para m [0] [2] e m [1] [1] 4-> 8 ou 2

Aqui está o código de exemplo, mas não tenho idéia de como verificar recursivamente todos os elementos.

#import itertools
n = 4 
matrix = [[4, 8, 7, 3 ], [2, 5, 9, 3 ], [6, 3, 2, 5 ], [4, 4, 1, 6]]
for index,ele in enumerate(matrix):
    vals=[]
    for i2,e2 in enumerate(ele):
        for index2,ele2 in enumerate(ele):
            if index < (n-1):
                if ele2 > matrix[index+1] [index2]:
                    vals.append(matrix[index+1] [index2])
            if index > 0:
                if ele2 > matrix[index-1] [index2]:
                    vals.append(matrix[index-1] [index2])
            if index2 < n-1:
                if ele2 > matrix[index] [index2+1]:
                    vals.append(matrix[index] [index2+1])
            if index2 >0:
                if ele2 > matrix[index] [index2-1]:
                    vals.append(matrix[index] [index2-1])

como recuperar esta função para repetir até o fim

Por exemplo, a resposta será como 8-5-3-2-1 (caminho mais longo com fator decrescente)

questionAnswers(1)

yourAnswerToTheQuestion