Поиск:

Ответ в темуСоздание новой темы Создание опроса
> число перестановок элементов матрицы 
V
    Опции темы
Pawl
Дата 11.2.2014, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Как рассчитать сабж? Понятно, первое, что приходит в голову, это (nxn)!, но ведь будут встречаться и одинаковые комбинации элементов.

Добавлено @ 07:03
Да, с условием того, что элементы из одной строки матрицы такие же, как и в остальных, т. е., к примеру,
(1 2 3)
(1 2 3)
(1 2 3)
И как эти перестановки эффективнее всего найти?

Это сообщение отредактировал(а) Pawl - 11.2.2014, 07:04


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Akina
Дата 11.2.2014, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Сформулируй ТОЧНО понятие "перестановка". Могут ли элементы перемещаться по всей матрице, или например только в пределах строки? От этого зависит ответ.

Цитата(Pawl @  11.2.2014,  08:00 Найти цитируемый пост)
 первое, что приходит в голову, это (nxn)!, но ведь будут встречаться и одинаковые комбинации элементов.

Тогда первое, что приходит в голову - это (n*n!)/П((ni*ni)!)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pawl
Дата 11.2.2014, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(Akina @  11.2.2014,  07:26 Найти цитируемый пост)
Могут ли элементы перемещаться по всей матрице, или например только в пределах строки? От этого зависит ответ.

Согласен, не уточнил. По всей матрице

Это сообщение отредактировал(а) Pawl - 11.2.2014, 08:21


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Akina
Дата 11.2.2014, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Pawl @  11.2.2014,  09:20 Найти цитируемый пост)
По всей матрице


Цитата(Akina @  11.2.2014,  08:26 Найти цитируемый пост)
(n*n!)/П((ni*ni)!) 


UPD: погорячился, на автомате залепил второе умножение. Правильно так:
(n*n)!/П(ni!)

Т.е. для приведённой выше матрицы это будет 9! / (3! * 3! * 3!) = 1680


Это сообщение отредактировал(а) Akina - 11.2.2014, 08:34


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pawl
Дата 11.2.2014, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Спасибо. А с реализацией алогритма не поможете?


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Akina
Дата 11.2.2014, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



А что не получается? я даже представить не могу, где тут можно найти проблему (если не считать переполнения типа или потери точности - но это уже не алгоритм)...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pawl
Дата 11.2.2014, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(Akina @  11.2.2014,  16:25 Найти цитируемый пост)
А что не получается? я даже представить не могу, где тут можно найти проблему (если не считать переполнения типа или потери точности - но это уже не алгоритм)

Ну, как полный перебор сделать я представляю, ваша подсказка с разворачиванием в 1-мерный массив меня навела на мысль. Моя идея в следующем: развернуть массив, сохранить его в некий объект-список, сделать одну перестановку, сравнить полученный массив с теми, что есть в списке, если такого нет, сохранить его, сделать новую перестановку. Затем все сохраненные массивы снова свернуть и вывести на печать. Но сложность полного перебора тут таки будет (n*n)! В то время, как реально, как вы сказали, должна быть (n*n)!/П(ni!). Вот я и хочу узнать, может, это можно как-нибудь оптимизировать?


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Akina
Дата 11.2.2014, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Так... забыли, что написано выше. Сформулируй задачу. ПОЛНОСТЬЮ. От начала до конца. Без малейших как недоговорённостей, так и излишков.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pawl
Дата 12.2.2014, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(Akina @  11.2.2014,  21:18 Найти цитируемый пост)
Так... забыли, что написано выше.

имеется массв nxn:
(1 2 3 4 ... n)
(1 2 3 4 ... n)
(1 2 3 4 ... n)
(1 2 3 4 ... n)
...        
(1 2 3 4 ... n)
Определить все возможные перестановки (permutations) элементов в нем.
Один из вариантов:
(1 3 3 4 ... n)
(1 2 2 4 ... n)
(1 2 3 4 ... n)
(1 2 3 4 ... n)
...        
(1 2 3 4 ... n)

Это сообщение отредактировал(а) Pawl - 12.2.2014, 19:14


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Akina
Дата 12.2.2014, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Блин... тебе что, надо сгенерировать все перестановки, что ли? Тогда просто строй рекурсивную процедуру заполнения пустого массива элементами из набора неиспользованных... в неё передаётся текущий заполненный частично массив, текущий указатель заполнения, список нераспределённых элементов (значение - количество).Если список пуст - выводишь очередную генерацию и выход, иначе ставишь на очередное место каждый из доступных элементов и вызываешь себя, скорректировав перердаваемые параметры.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pawl
Дата 12.2.2014, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(Akina @  12.2.2014,  20:27 Найти цитируемый пост)
Блин... тебе что, надо сгенерировать все перестановки, что ли? 

А как избавиться от генерации одинаковых массивов?
Вот, к примеру, единицы из первой и второй строки поменяются, генерация - новая, а массив такой, как был. Я сразу спрашивал, есть ли алгоритм, оптимальнее полного перебора?


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Akina
Дата 13.2.2014, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Pawl @  12.2.2014,  22:39 Найти цитируемый пост)
как избавиться от генерации одинаковых массивов?

Вы не разобрались в описании. Алгоритм не генерирует дубликатов.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pawl
Дата 13.2.2014, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(Akina @  13.2.2014,  07:28 Найти цитируемый пост)
Вы не разобрались в описании. Алгоритм не генерирует дубликатов

Возможно... Что же, буду разбираться. Пока тему закрываю.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.