Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/05/2013, 13:09
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Permutacion MAX en matrices

En cuanto a las permutaciones de filas y columnas de una matriz puedes hacerlo de esta manera:

Código Python:
Ver original
  1. from itertools import permutations
  2.  
  3. def matrix_perms(rows, cols):
  4.     for i in permutations(range(rows)):
  5.         for j in permutations(range(cols)):
  6.             yield (i, j)
  7. for rows, cols in matrix_perms(4, 4):
  8.     print rows, cols
Lo cual te da: 576 = 24 * 24 = 4! * 4!

Obviamente el chiste aquí es el primer elemento del la lista ahora va a ser tu indice 0, el segundo el indice 1 y así sucesivamente.

Ejemplo:
Código Python:
Ver original
  1. from itertools import permutations
  2.  
  3. def matrix_perms(rows, cols):
  4.     for i in permutations(range(rows)):
  5.         for j in permutations(range(cols)):
  6.             yield (i, j)
  7.  
  8. matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  9. for rows, cols in matrix_perms(3, 3):
  10.     for row in rows:
  11.         for col in cols:
  12.             print matrix[row][col],
  13.         print
  14.     print

Hay vídeos en youtube sobre Maximum Matching, en caso que leer la wikipedia sea un poco difícil http://en.wikipedia.org/wiki/Matching_(graph_theory)