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

Вот эти 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
Слишком много перестановок. Может быть, тут какая-то хорошая есть закономерность, или хорошая оптимизирующая тупой перебор идея.

Помогите, пожалуйста  Помощь
square
Свой человек
***
Offline Offline

Сообщений: 333

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



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

Увы! Перестановки для чисел 1,2,3,4,5,6 не уникальные.

Начала строить квадрат 36х36 и он не получился.
Тогда внимательно посмотрела перестановки. Пара (2,4) повторяется:

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

Существуют ли они вообще для этих чисел? Вот в чём вопрос Smiley
Записан

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

Сообщений: 1035

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



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

да, я немного не правильно понял задачу, Я думал только рядомстоящие числа сравнивать.

Кстати, для n=6 простой перебор показывает, что нет такой комбинации. Так что, вполне возможно, что между "уникальными" комбинациями и латинскими квадратами есть однозначная взаимосвязь
Последнее редактирование: Июнь 09, 2012, 21:17:55 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

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



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

Эх, значит, всё-таки не существует. Жаль!
Впрочем, ожидаемый результат.

А что если попробовать разрешить повторение чисел в перестановках?
То есть это уже не перестановки будут в обычном понимании, а просто некоторые комбинации из 6 чисел. Но требование к повторениям в одинаковых позициях остаётся то же самое.

Тут уже, может быть, надо сочинять не 30, а 36 комбинаций. Скорее всего. Но можно попробовать сначала 30 сочинить.

Попробуйте, пожалуйста такой вариант.
Последнее редактирование: Июнь 09, 2012, 21:41:25 от square Записан

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

Сообщений: 1035

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



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

Для 30 например так
Показать скрытый текст
Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

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



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

Неповторяемость гарантирована?
Тогда надо ещё 6 штук, из 30 у меня квадрат 36х36 не построится.
В случае 30 перестановок я добавляла ещё такие комбинации:

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

В данном случае с повторением чисел в строках эти комбинации добавлять уже нельзя, нарушится условие непересекаемости комбинаций.

Может, добавятся ещё 6 штучек комбинаций? Smiley

Я просмотрела 30 штук комбинаций, вроде нет пересечений (визуально не замечено), всё отлично пока.
Последнее редактирование: Июнь 09, 2012, 22:49:14 от square Записан

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

Сообщений: 333

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



Просмотр профиля Email
Ответ #20 : Июнь 10, 2012, 06:45:51 �

Zhekas
я написала программку для добавления к вашему замечательному набору комбинаций 31-ой комбинации. Вот такая у меня получилась комбинация по программе:

Код:
1  1  6  6  6  5

Вроде правильно. Да?

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

Буду благодарна, если вы поможете найти оставшиеся 5 комбинаций.
Пока я пишу свои примитивные программки, вы можете за одну минуту найти эти комбинации по своей программе.

Думаю, что все 36 комбинаций можно найти.

А мне ещё надо такую же задачу решить для n = 10, 12, 14, 15, 18, 20, 21.

За 30 комбинаций спасибо большое. Всё же мне не с нуля пришлось начинать поиск.
Записан

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

Сообщений: 333

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



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

Эх! Приехали! Smiley

32-ая комбинация у меня не формируется, программа выдаёт только два числа в этой комбинации, третье число добавить уже невозможно.
Значит, надо изменять первые 30 комбинаций, они найдены не совсем удачно, к ним можно добавить только одну комбинацию.
Если я не ошибаюсь в программе.

Zhekas
помогите, пожалуйста.
Записан

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

Сообщений: 1035

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



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

со вчера я запустил программу на поиск 36, Пока выолняется.
Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

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



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

А-а-а...
Отлично!
Очень интересно, сколько максимально будет таких комбинаций в комплекте.

Хотелось бы, чтобы было 36, но если вдруг меньше получится (от 32 до 35), мне и это сгодится. Вы, пожалуйста, сохраните как-нибудь самый большой комплект, чтобы он не был потерян.

Записан

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

Сообщений: 1035

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



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

Она не ищет максимум. Она ищет либо 36 либо её отсутствие
Предлагаю вам запустить мою программу у себя.
В ней у каждого набора уже записаны первые 2 числа и поиск начинается с третьего.
Чтобы можно было искать несколько вариантов сразу я сделал 3 число первой строки аргументом программы. Для лучшего отслеживания хода программы, на вывод подаются изменения первой строки.

Запускать в cmd:
programa.exe 6 (или 5,4,3,2,1)

У меня идёт с начала. Так что вы начинайте с конца

отправил по почте
Последнее редактирование: Июнь 10, 2012, 10:09:03 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

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



Просмотр профиля Email
Ответ #25 : Июнь 10, 2012, 10:13:37 �

Идея хорошая.

Но надо сначала точно определиться, что искать.
Мы выяснили, что набор из 31 комбинации точно существует.
Есть подозрение, что из 32 комбинаций набора уже нет.
Поэтому предлагаю сначала сделать программу так, чтобы она искала набор из 32 комбинаций. Это будет быстрее, чем для 36 комбинаций.
К тому же, если программа не найдёт набор из 32 комбинаций, дальше и искать нечего.

Я готова запустить программу у себя.
Но сделайте её, пожалуйста, на поиск 32 комбинаций.
Записан

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

Сообщений: 333

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



Просмотр профиля Email
Ответ #26 : Июнь 10, 2012, 10:16:23 �

Программа пришла.
Я могу попробовать, как она будет работать у меня.
Так что мне задать в качестве параметра? 6?
Записан

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

Сообщений: 333

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



Просмотр профиля Email
Ответ #27 : Июнь 10, 2012, 10:34:52 �

У вас программа-то какая?
Она у меня не запускается. Выдаётся сообщение, что она не является exe-программой.
И не выглядит она у меня, как Приложение (exe-программа).
Записан

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

Сообщений: 1035

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



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

Попробуйте следующую программу. Она ещё выводит максимум строк на текущий момент
отослал по почте
Последнее редактирование: Июнь 10, 2012, 12:56:43 от zhekas Записан
square
Свой человек
***
Offline Offline

Сообщений: 333

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



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

Программу получила и попробовала. Спасибо.

Первые 30 комбинаций она находит мгновенно, а потом надолго задумывается.
Даже с 31-ой комбинацией сложности.

А у вас хоть раз находила 31 комбинацию? А 32?

Я ввела параметр 6. Первые два числа 1,1. То есть у меня программа начинает с комбинации 1,1,6,1,1 и пошла искать дальше.

Как я понимаю, программа к найденным 30 комбинациям ищет добавление.

Вот не ожидала, что тут такой упёртый будет перебор.
Записан

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