1

голосов
2

ответ
1.1k

Просмотры

РНР алгоритм, который вычисляет все возможные комбинации разделения одного набора между другим набором

Я ищу своего рода 2-мерного алгоритма комбинации .. если это правильная формулировка. Я очень опытный с PHP, но не с алгоритмами и передовой математикой, так терпите меня, пожалуйста. У меня есть набор элементов, которые я хочу объединить с другим набором элементов и рассчитать все возможные комбинации, так что я могу анализировать ее впоследствии. Количество элементов в наборах никогда не меняется, оба набора всегда есть пять элементов: $ SET1 = массив ( «A», «B», «C», «D», «Е»); $ Set2 = массив ( 'One', 'Два', 'Три', 'Четыре', 'Пять'); Не знаю, если это правильное выражение, но я хотел бы видеть все комбинации Set 1 элементов, разделенных между пунктами Сета 2. Три»=> Array ( 'А'), 'Четыре' => Array ( 'В'), 'Пять' => массив ( 'D', 'E'),), 3 => массив ( '= One' > массив (), 'Два' => Array (), 'Три' => Array ( 'А', 'В', 'С', 'D', 'E'), 'Четыре' => Array () 'Пять' => Array (),),); Etc .. те рода ценности. Любой вид обратной связи на этом можно только приветствовать, в частности: Как закодировать что-то вроде этого в PHP? Через рекурсивной функции? Должен ли я использовать декартову алгоритм продукта? Сколько комбинаций возможны? 5 ^ 10? В зависимости от предыдущей точки: Реально ли работать с этими данными в режиме реального времени в веб-приложение? Если у меня есть 10 миллионов комбинаций, чем я предполагаю, что я, вероятно, нужно сделать расчеты заранее, сохранить результаты анализа и работы с этим во время выполнения приложения живого? Есть некоторые ограничения (например: Set «One» 2 шт, «два» и «Три» всегда должны иметь по крайней мере один элемент из набора 1), но бесполезных комбинаций будет отброшен в процессе анализа впоследствии поэтому нет необходимости включать, что в комбинация алгоритм, если он не может уменьшить время вычислений, построив их в в этой точке? Мой вопрос может быть не очень ясно, так что просто спросить, если мне нужно, чтобы обеспечить некоторую более или более полную информацию. Заранее спасибо Обновление 28.02.2012 Я попытался PHP реализаций питания Set & декартовых функций продукта, которые я нашел в Интернете (Такого рода вещи немного за меня, чтобы попытаться закодировать себя). Поэтому, когда я выполняю этот код: $ Powerset = POWERSET (массив ( 'A', 'B', 'C')); $ Декартова = декартово (массив ( 'Set1' => $ Powerset, 'Set2' => Array ( 'One', 'Два', 'Три'))); Это то, что функция POWERSET ставит в $ Powerset: Array ([0] => Array () [1] => Array ([0] => A) [2] => Array ([0] => В) [ 3] => Array ([0] => B [1] => A) ... И это то, что декартовы функция возвращает: Array ([0] => Array ([Set1] => Array () [Set2 ] => Один) [1] => Array ([Set1] => Array ([0] => А) [Set2] => Один) [2] => Array ([Set1] => Array ([0] => В) [Set2] => Один) [3] => Array ([Set1] => Array ([0] => B [1] => A) [Set2] => One) ... Так что это своего рода делает то, что я хотел, но не самая трудная часть. Рассматривается комбинации «индивидуальны» и не распространяет Set1 в Set2, убедившись, что все Set1 элементов используются на все три SEt2 пунктов. Могу ли я искажая использование этих двух функций? Я полагаю, что это то, что я не правильно понять о том, как объединить силы Set & декартов продукт для достижения моего результата. Должен ли я, возможно, вызвать функцию POWERSET () внутри функции декартовой ()? Может быть, эти конкретные функции PHP не совсем служат своей цели? Я нашел их здесь: комплект Мощность: http://bohuco.net/blog/2008/11/php-arrays-power-set-and-all-permutations/ декартово произведение: Поиск декартово произведение с PHP ассоциативные массивы Еще одно обновление: Подтвердив проблему без ссылки программирования Эта проблема связана с инструментом анализа я создаю для стратегической игры. Каждый раз, когда инструмент привыкает, игроки могут выбрать 5 различных единиц из большой коллекции единиц. Эти устройства могут быть объединены с другим (статическим) сущностеем (давайте называть их «пулы») в различных формах. Блоки имеют характеристики, которые могут или не могут улучшить стратегию игрока, если они сочетаются с некоторыми бассейнами. Например: Единица A любит быть в бассейне 1, но ненавидит быть в бассейне-Unit B ненавидящим быть в бассейне 1, если если блок А не существует, а также и т.д .. Целью инструмента является, чтобы найти лучшие комбинации из которых единицы идут в котором бассейн. Таковы правила: Есть всегда 5 различных единиц, выбранных из коллекции около 50. Всех этих единиц имеют разные характеристики. Есть всегда одни и те же 5 бассейнов. Они имеют различные характеристики, но лужи не выбраны из большого собрания, они всегда одинаковы. Каждый пул может содержать несколько единиц, от 0 до 5. Каждое устройство может находиться только в одном бассейне. Вход: Список 5 переменных блоков: А, В, С, D, список ЕА 5 статических бассейнов: pool1, Pool2, Pool3, Pool4, Pool5 выход должен быть, все возможные комбинации между этими двумя списками, на основе вышеупомянутые правила. Некоторые примеры: Комбинация 1 Бассейн 1: Пул 2: В бассейн 3: С бассейн 4: D бассейн 5: E Комбинация 2 Бассейн 1: А, В, С бассейн 2: D бассейн 3: Е бассейн 4: Пул 5: Комбинация 3 бассейн 1: С 2 бассейн: бассейн 3: бассейн 4: В бассейн 5: D, Е Комбинация 4 бассейн 1: 2 бассейн: бассейн 3: A, B, C, D, E бассейн 4: бассейн 5: и т.д ... Так что я хотел бы сделать: принять все возможные комбинации единиц и бассейнов существуют. Пройдите через них и назначить комбинации с «значение стратегии» на основе взаимодействия между подразделениями и бассейнами. Возьмите 10 лучших комбинаций, которые имеют наивысший «значение стратегии» Шаг 2 и 3 не являются проблемой. Проблема у меня генерирует все возможные комбинации блоков в бассейнах. Надеюсь, что это более четкое описание проблемы Шаг 2 и 3 не являются проблемой. Проблема у меня генерирует все возможные комбинации блоков в бассейнах. Надеюсь, что это более четкое описание проблемы Шаг 2 и 3 не являются проблемой. Проблема у меня генерирует все возможные комбинации блоков в бассейнах. Надеюсь, что это более четкое описание проблемы
Kiluminati
2

голосов
3

ответ
913

Просмотры

CakePHP - Auth-> Логин () возвращает истинное, но на следующей странице я больше не авторизованы

Я пытаюсь кодировать SSO между Joomla и моей CakePHP (1.3) приложения. Пользователи должны иметь возможность войти в Joomla, нажмите на ссылку, чтобы перейти в приложение CakePHP и войти в систему с тем же пользователем. В моей users_controller, у меня есть действие под названием «joomlalogin ()», где я читал переменные сессии Joomla, проверьте, существует ли уже пользователь Joomla в моем CakePHP приложение, создать пользователя, если нет. Это все работает. Проблема в том, что я не могу показаться, чтобы вручную зарегистрировать пользователя при помощи auth-> вход (). Я попытался прохождения полного пользователя, попытался прохождения user_id. Функция возвращает «истина», но как только я иду на следующую страницу, Логин, кажется, не увенчались успехом. Вот одна версия кода: $ existing_user = $ this-> User-> найти ( 'первый', массив ( 'условия' => Array ( 'User.joomla_userid' => $ joomla_user-> идентификатор))); если ($ existing_user && $ this-> Auth-> Логин ($ existing_user)) {$ this-> session-> setFlash ( 'Вы успешно вошли в систему.'); // отладки ($ this-> Auth); $ This-> перенаправления ( '/ пользователей'); } Сообщение появляется вспышка, редирект происходит, но он сразу же перенаправляется на (обычный без SSO) форму входа, так как «/ пользователей» не допускается для анонимных пользователей. Почему Auth-> Логин () возвращение «истина», если пользователь на самом деле не вошли в систему. Когда я смотрю на auth-> User (), он содержит правильные пользовательские данные, все указывает на то пользователь вошел в систему, пока не происходит редирект , Любая идея, что может быть причиной этого или что я делаю не так? Авт); $ This-> перенаправления ( '/ пользователей'); } Сообщение появляется вспышка, редирект происходит, но он сразу же перенаправляется на (обычный без SSO) форму входа, так как «/ пользователей» не допускается для анонимных пользователей. Почему Auth-> Логин () возвращение «истина», если пользователь на самом деле не вошли в систему. Когда я смотрю на auth-> User (), он содержит правильные пользовательские данные, все указывает на то пользователь вошел в систему, пока не происходит редирект , Любая идея, что может быть причиной этого или что я делаю не так? Авт); $ This-> перенаправления ( '/ пользователей'); } Сообщение появляется вспышка, редирект происходит, но он сразу же перенаправляется на (обычный без SSO) форму входа, так как «/ пользователей» не допускается для анонимных пользователей. Почему Auth-> Логин () возвращение «истина», если пользователь на самом деле не вошли в систему. Когда я смотрю на auth-> User (), он содержит правильные пользовательские данные, все указывает на то пользователь вошел в систему, пока не происходит редирект , Любая идея, что может быть причиной этого или что я делаю не так? Когда я смотрю на auth-> User (), он содержит правильные пользовательские данные, все указывает на то пользователь вошел в систему до тех пор, редирект не происходит. Любая идея, что может быть причиной этого или что я делаю не так? Когда я смотрю на auth-> User (), он содержит правильные пользовательские данные, все указывает на то пользователь вошел в систему до тех пор, редирект не происходит. Любая идея, что может быть причиной этого или что я делаю не так?
Kiluminati