2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 13:10 


27/02/14
15
Доброго времени суток, уважаемые форумчане. Помогите, пожалуйста, разобраться со следующим вопросом. Пусть есть матрица размерности $2\times 3$
$\begin{pmatrix}
a_{11} &a_{12}  &a_{13} \\ 
a_{21} &a_{22}  &a_{23} 
\end{pmatrix}$

Необходимо перемножить её столбцы между собой следующим образом:
$a_{11}\cdot a_{12}\cdot a_{13}$
$a_{11}\cdot a_{12}\cdot a_{23}$
$a_{11}\cdot a_{22}\cdot a_{13}$
$a_{11}\cdot a_{22}\cdot a_{23}$
$a_{21}\cdot a_{12}\cdot a_{13}$
$a_{21}\cdot a_{22}\cdot a_{13}$
$a_{21}\cdot a_{12}\cdot a_{23}$
$a_{21}\cdot a_{22}\cdot a_{23}$
Таким образом число комбинаций будет равно $2^{3}$. Проблема состоит в том, что если у меня произвольная матрица $M\times N$, то перемножить вручную это не реально. Подскажите, пожалуйста, как можно организовать автоматизированный перебор всех возможных комбинаций, чтобы получить массив-столбец, состоящий из элементов (число элементов будет равно $M^{N}$), полученных путем такого умножения?

 Профиль  
                  
 
 Re: Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 14:56 
Заслуженный участник
Аватара пользователя


28/04/14
968
спб
Например рекурсивно.

 Профиль  
                  
 
 Re: Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 15:00 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Afina, Вам совершенно всё равно, на каком языке программирования это будет?

 Профиль  
                  
 
 Re: Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 15:14 


27/02/14
15
Спасибо за ответы. Мне бы желательно в Fortranе, но сначала бы на пальцах понять как это сделать, что-то никак сообразить не могу. Когда два столбца в матрице - это простое перемножение, а вот когда много, то проблематично.

 Профиль  
                  
 
 Re: Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 15:24 
Заслуженный участник
Аватара пользователя


09/02/14

1377
Можно и рекурсивно, а можно и закодировать каждый вариант довольно естественным образом числом в $M$-ичной сс.

 Профиль  
                  
 
 Re: Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 18:26 


27/02/14
15
Единственное до чего я смогла дойти для предложенного выше примера. Т.е. взять тройной цикл от 1 до числа элементов в строке и присвоить массивам значения как в ниже указанном фрагменте кода, но тогда получится многомерный массив, зависящий от числа столбцов (в Fortranе максимально - это семимерный массив). То, что после точек естественно не верно, т.к. размерности массивов не совпадают. Натолкните, пожалуйста, на правильную идею.
Используется синтаксис Fortran
do i = 1, 2
do j = 1, 2
do k = 1, 2
a2(i,j) = matrix(i,1)*matrix(j,2)
a3(i,j,k) = a2(i,j)*matrix(k,3)
.............
do l = 4, число столбцов
a4(i,j,k,...) = a3(i,j,k)*matrix(...,4)
a2 = a3
a3 = a4
 

 Профиль  
                  
 
 Re: Автоматизированный перебор возможных комбинаций
Сообщение09.10.2014, 18:41 


07/08/14
4231
Afina в сообщении #916897 писал(а):
то перемножить вручную это не реально.

для размерностей выше $20\times20$ это и автоматически нереально.

-- 09.10.2014, 18:47 --

для больших массивов откажитесь от перебора всех возможных вариантов, выделив каким-то образом только те, которые действительно необходимы.

-- 09.10.2014, 19:20 --

можно попытаться считать частями - сперва получать все произведения в правых двух столбцах, затем в следующих двух и так далее, но размер файла хранения промежуточных данных начнет измеряться сотнями мегабайт довольно быстро.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group