2013-11-12 2 views
1

Вот что-то, что меня било в последние два дня. Мне нужно заполнить начальное конфигурационное (/ state) -пространство для алгоритма фиксированной точки.Перестановки/комбинации ограниченных чисел в C#

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

Это в настоящее время определяется как вес примера перехода является, например, (5, -1, -1)

Оценки для каждого веса соответствует индексу самого вектора весовых коэффициентов, например, верхние оценки эти веса, если нижняя граница равна 0, для всех дается (5,3,3)

Теперь, чтобы настроить начальное пространство конфигурации, мне нужно иметь каждую комбинацию весов, доступных в начале. (0,0,0) (0,0,1) (0,1,0) (1,0,0) ... и т. Д., Каждый из которых соответствует их максимальным пределам.

Теперь, если бы я имел дело с 3-взвешенной системой, это было бы тривиально, но мне нужно было поддерживать n-мерные векторы в моем коде.

Итак, любые идеи относительно того, как я мог бы заполнить это конфигурационное пространство? (Я использую C# в настоящее время)

+0

См. [Создание всех возможных комбинаций? ] (http://stackoverflow.com/questions/3093622/generating-all-possible-combinations). Ваша версия проще, так как вы не заботитесь о письмах. –

ответ

0

Вот код генерации всех ntuples implemented in Javascript. Это понятно, но если вам нужны дополнительные объяснения, я был бы рад помочь (я на самом деле пытался написать алгоритм в псевдокоде, но то, что я написал, похоже на комментарии)

+0

Спасибо, я посмотрю! Быстрый вопрос, хотя - segment.length ссылается на код, но сегменты никогда не объявляются? – MrPyro

+0

Я скопировал код выше из моего проекта и там 'boundingVector' был назван' segment'. Я хотел переименовать его, чтобы сделать все более ясным, но думаю, что я пропустил эту часть. Я отредактирую его сразу. –

+0

После быстрой реализации C# я получаю только 96 идентичных кортежей. Дальнейшее исследование будет проведено. – MrPyro

Смежные вопросы