Правила этой проблемы довольно специфичны, потому что я на самом деле смотрю на подмножество GLn, где векторы строк и столбцов должны иметь определенную форму (назовите эти векторы допустимыми - примеры ниже), поэтому будьте терпеливы. Вот правила:
Вы можете выбрать действительный ненулевой вектор длины n равномерно и случайным образом.
Учитывая допустимые векторы v1, v2, ..., vk
, вы можете определить, образуют ли они частичные столбцы являются префиксами допустимых векторов (например, встречается ли [v1_1 v2_1 ... vk_1]
в качестве первых k элементов допустимого вектора) с использованием функции isPrefix
.
Данные допустимые векторы v1, v2, ..., vk, вы можете определить, являются ли они линейно зависимыми, используя функцию areIndependent
.
Цель состоит в том, чтобы выбрать из этого подмножества GLn равномерно случайным образом. Вот наивное решение, которое не работает:
Step 1: Select a valid v1 uniformly at random.
If isPrefix(v1) then Go to Step 2.
Otherwise repeat Step 1.
Step 2: Select a valid v2 uniformly at random.
If areIndependent(v1,v2) & isPrefix(v1,v2), then go to Step 3.
Otherwise, repeat Step 2.
...
Step n: Select a valid vn uniformly at random.
If areIndependent(v1,v2,...,vn) & isPrefix(v1,v2,...,vn), then END.
Otherwise, repeat Step n.
Проблема с этим потенциальным решением состоит в том, что оно может застрять в бесконечном цикле в не слишком маловероятном событии, которое areIndependent (v1, v2, ... , vk) & isPrefix (v1, v2, ..., vk)
правильно возвращает TRUE
, но нет способа завершить этот k-кортеж до линейно независимого действительного n-кортежа. Типичный пример этого - когда k = n-1
и существует уникальный допустимый вектор vn
такой, что isPrefix (v1, v2, ..., vn)
истинно, но этот вектор не независим от предыдущих n-1 векторов.
Поэтому мне нужно каким-то образом добавить резервную копию шага или двух, когда я нахожусь в этом цикле, но я не обязательно знаю, когда я нахожусь в нем. Я ищу решение в следующих направлениях: Если шаг k завершается неудачно f (k)
раз для некоторой явной функции f
, которая может зависеть от распределения допустимых векторов, затем вернитесь к Шагу k-1 (или даже дальше, каким-то явным образом).
Любые предложения, комментарии, ссылки и т. д. будут очень признательны! Спасибо!
ПРИМЕРЫ:
На самом деле я ищу общую справочную информацию или руководство по дальнейшему отбору проб. У меня есть несколько примеров действительных векторов, на которых я хотел бы это сделать, и для меня более полезно иметь возможность сделать это в конечном итоге самостоятельно, чем перечислять каждый пример и предлагать решения сообщества SO. Однако, чтобы быть конкретным и дать представление о возникающих трудностях, вот один пример:
Матрицы с переменными знаками : вектор действителен, если все его элементы равны 0, -1, 1, ненулевые элементы чередуются между 1 и -1, а сумма элементов равна 1. Например, каждая матрица перестановок будет состоять из допустимых векторов, а также из следующего:
0 1 0
1 -1 1
0 1 0
Отдельные записи : вектор действителен, если он имеет разные элементы.
я хотел бы извлечь содержимое из тега, например:
Дополнительное содержимое здесь
Основное содержимое ...
У меня есть Серьезная проблема.
Я хотел бы извлечь содержимое из тега, например:
<div class="main-content">
<div class="sub-content">Sub content here</div>
Main content here </div>
, я ожидал, что это:
Дополнительное содержимое здесь
Основное содержимое здесь
Я пробовал использовать регулярное выражение, но результат не так впечатляет.
как программно определить (в C или C ++) путь к файлу, на который он указывает?
В Linux, если у вас есть путь к файлу, который, как вы знаете, является символической ссылкой, как вы определяете программным способом (в C или C ++) путь к файлу, на который он указывает?
задан Jonathan M Davis 17 May 2011 в 06:00
поделиться