Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Permutacion MAX en matrices

Estas en el tema de Permutacion MAX en matrices en el foro de Python en Foros del Web. Muy buenas, Necesito implementar un programailla que permutando filas y columnas de una matriz me encuentre unas letras en un diccionario. Tengo la aplicacion echa ...
  #1 (permalink)  
Antiguo 16/05/2013, 11:29
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Permutacion MAX en matrices

Muy buenas,

Necesito implementar un programailla que permutando filas y columnas de una matriz me encuentre unas letras en un diccionario.

Tengo la aplicacion echa pero no me encuentra las matrices que busco, bueno algunas si.

Tengo entendido que en un array el numero de combinaciones es n! y en una matriz n! * n!, siempre y cuando siempre hagas permutaciones de filas y columnas es asi?

Si tengo una 4x4, el numero max de permutaciones es 4!*4!?

Lo que tengo que hacer el graph matching, alguien sabe de algun algoritmo entendible, he buscado pero no encuentro nada de ayuda.

Saludos
  #2 (permalink)  
Antiguo 16/05/2013, 13:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
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)

Etiquetas: matrices, max
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:04.