Страниц: [1] 2 3 ... 7
  Печать  
Автор Тема: Уникальные перестановки  (Прочитано 34956 раз)
0 Пользователей и 1 Гость смотрят эту тему.
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
: Июнь 05, 2012, 03:41:47 �

Вот эти 12 перестановок из чисел 1,2,3,4 назовём уникальными в таком смысле: ни в каких двух перестановках в одинаковых позициях нет одинаковой пары чисел:

Код:
1 2 3 4
1 3 4 2
1 4 2 3
2 1 4 3
2 3 1 4
2 4 3 1
3 1 2 4
3 2 4 1
3 4 1 2
4 1 3 2
4 2 1 3
4 3 2 1
Например, в первой перестановке в первой и второй позиции имеем пару чисел 1,2; больше ни в какой престановке в этих позициях нет такой пары чисел.

Задача такая: составить 56 уникальных перестановок из чисел 1,2,3,4,5,6,7,8 (ещё 72 перестановки из чисел 1,2,3,...,9 и 240 перестановок из чисел 1,2,3,...,16).

Вот начала писать перестановки из чисел 1,2,...,8. Первые семь штук:

Код:
1,2,3,4,5,6,7,8
1,3,4,5,6,7,8,2
1,4,5,6,7,8,2,3
1,5,6,7,8,2,3,4
1,6,7,8,2,3,4,5
1,7,8,2,3,4,5,6
1,8,2,3,4,5,6,7

Дальше не знаю, как писать.

По-хорошему, конечно, надо программку написать. Но для 16 чисел, наверное, очень долго работать будет  Sad
Слишком много перестановок. Может быть, тут какая-то хорошая есть закономерность, или хорошая оптимизирующая тупой перебор идея.

Помогите, пожалуйста  Помощь
Записан

//текст доступен после регистрации//
moonlight
Умник
****
Offline Offline

Сообщений: 741

СПАСИБО
-вы поблагодарили: 19
-вас поблагодарили: 232


Просмотр профиля Email
Ответ #1 : Июнь 05, 2012, 09:27:47 �

24 перестановки из 8 чисел.
Если найду больше добавлю.
Показать скрытый текст
Записан

Зачем откладывать на завтра то, что можно отложить на послезавтра?
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #2 : Июнь 05, 2012, 09:48:07 �

Спасибо, но мало  Smiley

Я сама начала программку писать, но что-то со скрипом она у меня идёт. Никак не могу совладать со всеми проверками всех пар чисел во всех перестановках.

Да, начать нужно с приведённой выше группы уникальных перестановок, начинающихся с числа 1, следующие перестановки уже с этими сравнивать.

Если вы посмотрите на пример с числами 1,2,3,4, то увидите, что есть ровно 4 группы перестановок, первая начинается с числа 1, вторая - с числа 2 и т.д., в каждой группе 3 перестановки, всего 12.
Думаю, что для чисел 1,2, ..., 8 будет полная аналогия. В каждой группе будет 7 перестановок, всего 8 групп.
Я начала искать вторую группу - перестановки, начинающиеся с числа 2.

Пока предположительно у меня такая перестановка получилась с числа 2:

2,1,8,7,6,5,4,3

Вроде ни с какой перестановкой первой группы не пересекается (в смысле определения).
Но это пока предположительно. Программу ещё не дописала. И пишу её только для второй группы.
Хоть бы эту группу составить. Там, может быть, какие-то закономерности проявятся.
Если у меня программа с числа 2 составит перестановки норамально, 7 штук, тогда можно будет проанализировть их.
Последнее редактирование: Июнь 05, 2012, 09:51:39 от square Записан

//текст доступен после регистрации//
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #3 : Июнь 05, 2012, 10:21:12 �

Вот, например, такая вторая группа у меня получилась (с числа 2 начинаются перестановки):

Код:
2,1,8,7,6,5,4,3
2,3,1,8,7,6,5,4
2,4,3,1,8,7,6,5
2,5,4,3,1,8,7,6
2,6,5,4,3,1,8,7
2,7,6,5,4,3,1,8
2,8,7,6,5,4,3,1
Вроде нормально, но не уверена.

Кто видит тут какие-то закономерности? Чтобы можно было следующую группу написать, с числа 3 начинаются перестановки.

Вот интересно: если все 56 перестановок найти, они, наверное, чётко получатся.
Смотрю в приведённых выше перестановках много всяких. Но вот если до 56 перестановок дойти, наверное многие перестановки не впишутся, будут пересекаться. И останутся действительно уникальные. И будет их, вероятно, ровно 56. Но это пока предположения. Ничего определённого не знаю сама.
Можно на перестановках для чисел 1,2,3,4 проверить.
Записан

//текст доступен после регистрации//
zhekas
Гений-Говорун
*
Offline Offline

Сообщений: 1035

СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487



Просмотр профиля Email
Ответ #4 : Июнь 07, 2012, 21:46:09 �

n=8
Показать скрытый текст

n=9
Показать скрытый текст

Эти пользователи сказали вам СПАСИБО :

square

За это сообщение 1 пользователь сказал спасибо!
Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #5 : Июнь 08, 2012, 01:34:43 �

Здорово!
Правда, на уникальность не проверила, только бегло просмотрела визуально.
А как искали? Программу писали?

Я как раз собиралась сообщить, что задачу помогли решить на форуме dxdy.ru
//текст доступен после регистрации//

Всё оказалось очень просто. Надо взять полный комплект попарно ортогональных латинских квадратов и выписать из этих квадратов столбцы.
Записан

//текст доступен после регистрации//
zhekas
Гений-Говорун
*
Offline Offline

Сообщений: 1035

СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487



Просмотр профиля Email
Ответ #6 : Июнь 08, 2012, 16:48:27 �

Здорово!
Правда, на уникальность не проверила, только бегло просмотрела визуально.
А как искали? Программу писали?

Я как раз собиралась сообщить, что задачу помогли решить на форуме dxdy.ru
//текст доступен после регистрации//

Всё оказалось очень просто. Надо взять полный комплект попарно ортогональных латинских квадратов и выписать из этих квадратов столбцы.

Я немного изменил поиск. Искал не 56 перестановок, а 8 наборов по 7 чисел в каждой  (в каждом наборе отсутствуют разные числа). При этом чтобы в каждой паре наборов не было одинаковой пары рядомстоящих чисел (одинаковоориентированых).

А дальше вся комбинация получается путём сдвига этих наборов и приписывания слева недостающее число
Последнее редактирование: Июнь 08, 2012, 16:56:26 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #7 : Июнь 08, 2012, 20:43:33 �

Отличное решение!
А вы смотрели по ссылке, как просто, оказывается, находятся эти уникальные перестановки?
Просто выписываются столбцы из полного комплекта попарно ортогональных латинских квадратов.

Кстати, вы не хотите в международном конкурсе программистов поучаствовать?
//текст доступен после регистрации//

Это ведь задачка у меня вспомогательная была для решения конкурсной задачи.
Последнее редактирование: Июнь 08, 2012, 20:45:40 от square Записан

//текст доступен после регистрации//
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #8 : Июнь 09, 2012, 13:33:32 �

zhekas
а из чисел 1,2,3,4,5,6 есть комплект из 30 уникальных перестановок?
Весьма интересно!
Если у вас есть программа, прикиньте, пожалуйста.

Ну, две группы по 5 штук написать просто. Например, такие:

Код:
1 2 3 4 5 6
1 3 4 5 6 2
1 4 5 6 2 3
1 5 6 2 3 4
1 6 2 3 4 5
2 1 6 5 4 3
2 6 5 4 3 1
2 5 4 3 1 6
2 4 3 1 6 5
2 3 1 6 5 4

Думаю, что первую группу изменять не стоит, а вторую, конечно, можно изменить. Впрочем, программа сама разберётся.
Последнее редактирование: Июнь 09, 2012, 13:37:39 от square Записан

//текст доступен после регистрации//
zhekas
Гений-Говорун
*
Offline Offline

Сообщений: 1035

СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487



Просмотр профиля Email
Ответ #9 : Июнь 09, 2012, 16:49:47 �

zhekas
а из чисел 1,2,3,4,5,6 есть комплект из 30 уникальных перестановок?
Весьма интересно!
Если у вас есть программа, прикиньте, пожалуйста.

Ну, две группы по 5 штук написать просто. Например, такие:

Код:
1 2 3 4 5 6
1 3 4 5 6 2
1 4 5 6 2 3
1 5 6 2 3 4
1 6 2 3 4 5
2 1 6 5 4 3
2 6 5 4 3 1
2 5 4 3 1 6
2 4 3 1 6 5
2 3 1 6 5 4

Думаю, что первую группу изменять не стоит, а вторую, конечно, можно изменить. Впрочем, программа сама разберётся.

2 3 4 5 6
1 4 6 5 3
1 5 2 6 4
1 6 3 2 5
1 2 4 3 6
1 3 5 4 2

Относительно первой группы, остальные группы единственны с точностью до сдвига

Эти пользователи сказали вам СПАСИБО :

square

За это сообщение 1 пользователь сказал спасибо!
Последнее редактирование: Июнь 09, 2012, 16:58:05 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #10 : Июнь 09, 2012, 17:38:41 �

Если я правильно поняла, первая группа будет такая:

Код:
1 1 1 1 1 2
3 2 6 5 4 3
5 4 3 2 6 4
4 3 2 6 5 5
2 6 5 4 3 6

Если читать перестановки как у вас написано, то они получаются из 5 чисел.

Как писать следующую группу, не соображу.
Написала так:

Код:
2 2 2 2 2 3
4 3 1 6 5 4
6 5 4 3 1 5
5 4 3 1 6 6
3 1 6 5 4 1

Не получились уникальные, пара (4,3) совпадает.

Думаю дальше... Если так, как вы написали, то будет 6 групп по 6 штук... Да?
Наверное, так...То есть к вашей группе надо приписать ещё 5 групп.

Вторая группа такая будет?

Код:
3 4 5 6 2
4 6 5 3 1
5 2 6 4 1
6 3 2 5 1
2 4 3 6 1
3 5 4 2 1

Кажется, нет пересечений с первой группой.

И третья группа вроде получилась  Smiley

Неужели и из чисел 1,2,3,...,10 тоже существуют уникальные перестановки? Вот дела...
Не попробуте для этого случая?
Последнее редактирование: Июнь 09, 2012, 18:02:02 от square Записан

//текст доступен после регистрации//
zhekas
Гений-Говорун
*
Offline Offline

Сообщений: 1035

СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487



Просмотр профиля Email
Ответ #11 : Июнь 09, 2012, 17:48:17 �

Если я правильно поняла, первая группа будет такая:

Код:
1 1 1 1 1 2
3 2 6 5 4 3
5 4 3 2 6 4
4 3 2 6 5 5
2 6 5 4 3 6
Если читать перестановки как у вас написано, то они получаются из 5 чисел.

Как писать следующую группу, не соображу.
Написала так:

Код:
2 2 2 2 2 3
4 3 1 6 5 4
6 5 4 3 1 5
5 4 3 1 6 6
3 1 6 5 4 1
Не получились уникальные, пара (4,3) совпадает.



Первая группа составляется из первого набора чисел:2 3 4 5 6 путём их сдвига и прибавления слева недостающего числа 1

1 2 3 4 5 6
1 3 4 5 6 2
1 4 5 6 2 3
1 5 6 2 3 4
1 6 2 3 4 5

Вторая группа из второго набора:1 4 6 5 3  путём сдвига и приставления слева недостающего числа 2

2 1 4 6 5 3
2 4 6 5 3 1
2 6 5 3 1 4
2 5 3 1 4 6
2 3 1 4 6 5

И так далее. В итоге получается
Показать скрытый текст

Эти пользователи сказали вам СПАСИБО :

square

За это сообщение 1 пользователь сказал спасибо!
Последнее редактирование: Июнь 09, 2012, 17:53:00 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #12 : Июнь 09, 2012, 18:12:31 �

А-а-а...поняла.
Спасибо большое! Классная закономерность получается.

А с числами 1,2,3,...,10 попробуете?

Жутко интересно. В этом случает такая же будет схема составления?
Записан

//текст доступен после регистрации//
zhekas
Гений-Говорун
*
Offline Offline

Сообщений: 1035

СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487



Просмотр профиля Email
Ответ #13 : Июнь 09, 2012, 18:21:15 �

для n=10 программа справляется за 5часов. А записать я не записал. Так что скоро не ждите. Время растёт экспоненциально
Для n=9 программа отработала меньше секунды
Последнее редактирование: Июнь 09, 2012, 18:23:10 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14



Просмотр профиля Email
Ответ #14 : Июнь 09, 2012, 18:27:15 �

Ну, я подожду Smiley У меня времени много.

Спасибо вам огромное.
Весьма интересные получаются перестановки!
Записан

//текст доступен после регистрации//
Страниц: [1] 2 3 ... 7
  Печать  
 
Перейти в: