Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Комбинаторика

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Первый вопрос] >> Комбинаторика
Имя
Сообщение << Старые топики   Новые топики >>
Комбинаторика - 2012-05-07 12:10:29.860000   
Proritsatel

Сообщений: 4
Оценки: 0
Присоединился: 2012-05-07 11:51:10.890000
Приветствую! Подскажите… есть ли такая программа и где её взять которая бы генерировала все возможные комбинации из числа заданных к примеру слов и сохраняла бы их формате txt. Примет: Задаем к три слова: Вася, любит, спать. А программа выдает все возможные комбинации этих слов….
Вася, любит, спать
любит, Вася, спать
спать, Вася, любит
спать, любит, Вася
……….и т.д.
Заранее благодарю!
Post #: 1
RE: Комбинаторика - 2012-05-07 12:20:56.153333   
The Joker

Сообщений: 3485
Оценки: 99
Присоединился: 2008-10-07 16:22:13.730000
Такую лабуду написать – как два пальца об асфальт. Prosiratel, давай вдвоём напишем?
Post #: 2
RE: Комбинаторика - 2012-05-07 12:48:07.946666   
sh3llc0d3

Сообщений: 54
Оценки: 0
Присоединился: 2012-03-09 00:14:15.473333
The Joker, lol.
Post #: 3
RE: Комбинаторика - 2012-05-07 12:49:31.550000   
GothX

Сообщений: 263
Оценки: 20
Присоединился: 2011-06-22 13:27:08.173333
На том же паксале - 10 минут работы
Post #: 4
RE: Комбинаторика - 2012-05-07 14:31:07.943333   
Proritsatel

Сообщений: 4
Оценки: 0
Присоединился: 2012-05-07 11:51:10.890000
Я только за! Мне бы просто понять принцип формирования комбинаций. Я бы и сам написал… Это был простой пример… на самом деле задача тяжелее, а цель не создать библиотеку для bruta а решить математическую модель заимодействия магнитных сил)))… Проблема для меня в том, что у меня 39 значений (первоначальный ряд), одна комбинация состоит из 5 значений из первоначального ряда. Число возможных неповторяющихся комбинаций (сочитаний) = 575757 шт. Мне нужно видеть все эти сочитания для дальнейшей обработки, при чем каждое значение комбинации должно отделятся друг от друга какой либо литерацией (пробел и т.д.). Если вы можете чем то помочь. Буду признателен!

P/S Я не прошу написать мне код… я прошу обьяснить принцип построения комбинаций (не числовых).
Post #: 5
RE: Комбинаторика - 2012-05-07 18:13:45.996666   
The Joker

Сообщений: 3485
Оценки: 99
Присоединился: 2008-10-07 16:22:13.730000
quote:

ORIGINAL: Proritsatel

я прошу обьяснить принцип построения комбинаций
Это правильный подход.

Объяснюю на пальцах. Есть у тебя какой-то набот (чего угодно – цифр, чисел, слов, дебилов и т.д.). Для наглядности представь, что эти дебилы все сидят закрытые в палате номер 6. Санитар Федя заходит в палату, хватает первого попавшегося и ведёт на процедуры. Полсе процедур отпускает его из дурки, или переводит в реанимацию – не существенно, главное, чтобы не обратно в шестую палату. Потом провожает следующего на процедуры. И так, пока не закончатся пациенты. Задача найти все возможные последовательности, в которых дебилы пройдут через проце-дурную. Эти последовательности называются перестановками.

Алгоритм такой:
* Выстраиваем дебилов в ряд (в любой последовательности, лишь бы как-то начать). Назовём эту шеренгу дебилов массивом М. M[1] это первый в ряду, M[2] это второй и т.д. Считаем их. len(M) это общее число дебилов в ряду, или длинна массива. Их число важно – оно будет числом итераций в наружном цикле и числом вложенных циклов.
Достаём бумажку, на которой мы будем записывать все полученные последовательности.
* Запускаем самый внешний цикл (начинаем с первого и до последнего дебила в ряду). При первой итерации цикла спрашиваем имя первого дебила в ряду (при второй будем спрашивать у второго и т.д.) и записываем его. Ставим запятую, ибо в ряду ещё остались дебилы.
* Запускаем второй (вложенный) цикл. Смотрим какие дебилы остались неопрошенными. Их должно остаться len(M)-1. У них тоже будем спрашивать имя, по одному за цикл, до последнего. Записываем и ставим запятую.

* Запускаем последний (самый-самый вложенный) цикл. В этом цикле у нас остаётся всего один элемент (строго говоря, это и не цикл вовсе, но каждый раз будут оставаться разные элементы). Спросили его имя, записали, поставили точку и перешли на новую строку. Возвращаемся в предпоследний цикл.

* Возвращаемся в самый последний (наружный) цикл, переходим к следующему элементу и записываем его в начало строки и снова по циклам…

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

Теперь пример. Есть набор "Трус", "Балбес" и "Бывалый". Три элемента. Внешний цикл надо будет прокрутить три раза. Вложенных циклов тоже будет три.

Первый цикл, первый проход. "Трус"! Записали, поставили запятую. Осталось двое ("Балбес" и "Бывалый").
Второй цикл, первый проход. "Балбес"! Записали, поставили запятую. Остался один.
Третий цикл, первый (и единственный) проход. "Бывалый"! Записали, поставили точку.
Второй цикл, второй проход. "Бывалый"! Записали, поставили запятую.
Третий цикл – "Балбес"! Записали, поставили точку.
Первый цикл, второй проход. "Балбес"! Записали, поставили запятую. Осталось двое ("Трус" и "Бывалый").
Второй цикл, первый проход. "Трус"! Записали, поставили запятую. Остался один.
Третий цикл, первый (и единственный) проход. "Бывалый"! Записали, поставили точку.
Второй цикл, второй проход. "Бывалый"! Записали, поставили запятую.
Третий цикл – "Трус"! Записали, поставили точку.
Первый цикл, второй проход. "Бывалый"! Записали, поставили запятую. Осталось двое ("Трус" и "Балбес").
Второй цикл, первый проход. "Трус"! Записали, поставили запятую. Остался один.
Третий цикл, первый (и единственный) проход. "Балбес"! Записали, поставили точку.
Второй цикл, второй проход. "Балбес"! Записали, поставили запятую.
Третий цикл – "Трус"! Записали, поставили точку.

В результате получаем:
Трус, Балбес, Бывалый.
____, Бывалый, Балбес.
Балбес, Трус, Бывалый.
______, Бывалый, Трус.
Бывалый, Балбес, Трус.
________, Трус, Балбес.

Заполнив пробелы именами сверху, получаем полный список перестановок.
Post #: 6
RE: Комбинаторика - 2012-05-07 18:19:29.463333   
zzsnn

Сообщений: 7459
Оценки: 680
Присоединился: 2007-09-25 07:17:14.240000
Тут http://algolist.manual.ru/maths/combinat/ описаны сами алгоритмы и даны их примеры на Pascal . Похоже твой вопрос это http://algolist.manual.ru/maths/combinat/permutations.php .
Просмотри. Может тогда уточнишь свой вопрос.
Post #: 7
RE: Комбинаторика - 2012-05-08 09:54:35.273333   
Proritsatel

Сообщений: 4
Оценки: 0
Присоединился: 2012-05-07 11:51:10.890000

quote:

ORIGINAL: zzsnn

Тут http://algolist.manual.ru/maths/combinat/ описаны сами алгоритмы и даны их примеры на Pascal . Похоже твой вопрос это http://algolist.manual.ru/maths/combinat/permutations.php .
Просмотри. Может тогда уточнишь свой вопрос.

Я как раз изучал эти ссылочки!
Post #: 8
RE: Комбинаторика - 2012-05-08 09:59:35.853333   
Proritsatel

Сообщений: 4
Оценки: 0
Присоединился: 2012-05-07 11:51:10.890000
The Joker. Обьяснил мастерски… принцип понял…а это самое главное. Спасибо.


P/S
Всем спасибо кто откликнулся!
Post #: 9
Страниц:  [1]
Все форумы >> [Первый вопрос] >> Комбинаторика







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.