Генерация матриц перестановок двумерного массива в PythonPython

Программы на Python
Ответить
Anonymous
 Генерация матриц перестановок двумерного массива в Python

Сообщение Anonymous »

Я хочу сгенерировать все квадратные матрицы перестановок для входного значения d (которое является простым числом). Я знаю, что есть примеры того, как сделать это для всех перестановок в целом, но я ищу матрицы перестановок, которые удовлетворяют математическому определению;

Матрица перестановок — это матрица, полученная путем перестановки строк идентичной матрицы dxd в соответствии с некоторой перестановкой чисел от 1 до d. Таким образом, каждая строка и столбец содержит ровно одну единицу с нулями повсюду.

например, для 2x2 [[1,0],[0,1]] и [[0,1],[1,0]] удовлетворяют этому требованию, а [[1,1],[0,0]]] и т. д. — нет, поэтому я надеюсь, что это не повторяющийся вопрос. У меня есть код, который делает это, и мой тест заключается в том, что мне нужно было d! матрицы. Когда я доберусь до 11, я должен получить 11! матрицы, но получаю сообщение об ошибке, что мой код завершает работу из-за потери памяти. Я надеюсь, что у кого-то есть более эффективный способ решения этой проблемы, поскольку я хотел бы перейти к более крупным простым числам;

Код: Выделить всё

import math
import numpy as np
import cmath
from sympy.utilities.iterables import multiset_permutations
from itertools import permutations, chain
from pprint import pprint
from numpy import ndarray
from numpy import linalg as LA

d=5
print("Prime dimension",d)
a=[1]+[0 for _ in range(d-1)]
N=[]
P=[]
Pdagger=[]
for p in multiset_permutations(a):
N.append(p)

#Generate a list of ALL the permutation matrices including Identity (last)
for n in multiset_permutations(N):
n
P.append(n)
print(len(P))
Я запускаю свой код в блокноте IPython Jupyter, если это поможет. Я понимаю, что это, возможно, не лучший/самый эффективный способ запустить это, но я ищу любой совет, который кто-нибудь может мне дать. Все библиотеки, импортированные вверху, будут иметь отношение к дальнейшему коду.

Подробнее здесь: https://stackoverflow.com/questions/497 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»