Данный набор ряда элементов группы, балуют представителей?

Ваш патч должен читать @patch('module.file2.f1.method_1')

Я расскажу вам, почему:

test_determine_failure_modes.py импортирует file1 as f1. Затем file1 читается, и он определяет method1 в своих локальных. Это становится доступным на символе f1.

Итак, таблицы символов выглядят следующим образом:

file1: {'method1': , , ...}
f1: {'method1': , , ...}

Затем вы исправляете file1.method1 и получаете эту таблицу символов

file1: {'method1': , MOCK, ...}
f1: {'method1': , , ...}

Затем вы вызываете f1.method1 и получаете фактический функция.

Похоже, вы используете method_dict для ссылки на функцию, поэтому вам все же нужно немного углубиться. К счастью, в unittest.mock.patch есть утилита для насмешки содержимого диктов, например:

with patch.dict(f2.method_dict, {'method1': your_mock_here}):
    your_test_here()

Еще один способ - отложить разрешение имени метода до того, как он будет смоделирован.

method_dict = {
    'method_1' : lambda data: f1.method1(data),
    'method_2' : lambda data: f1.method2(data),
    'method_3' : lambda data: f1.method3(data)
}

Здесь, поиск для f1.method1 не происходит до тех пор, пока он не будет проверен. В предыдущем случае вы помещаете ссылку на функцию, когда file2 был прочитан. Здесь ссылка не разрешается, пока метод не будет вызван.

10
задан DaG 13 April 2009 в 15:44
поделиться

3 ответа

A немного менее грубым подходом будет перечисление всех подгрупп индекса n, как предложил Il-Bhima, а затем для каждой подгруппы отметьте каждый x i * x j -1 до посмотрите, содержится ли оно в подгруппе.

Элементы x1, ...,

0
ответ дан 4 December 2019 в 04:36
поделиться

Единственное решение, которое я могу придумать, это наивно. В основном, если у вас есть элементы x1, ..., xn , вы бы использовали LowIndexSubgroupsFpGroup GAP для перечисления всех подгрупп с индексом n (исключая те, у которых индекс

Это все, что я мог придумать. Мне было бы очень интересно, если бы вы предложили лучший подход.

1
ответ дан 4 December 2019 в 04:36
поделиться

Вы пытаетесь определить, существует ли такая подгруппа H группы G, что {g 1 , ..., g n } является трансверсалью смежных классов H. т. е. множеством представителей разбиения G смежными классами H.

Во-первых, по теореме Лагранжа | G | = | G: H | * | G |, где | G: H | = | G | / | H | является индексом подгруппы H группы G. Если {g 1 , ..., g n } действительно трансверсаль, то | G: H | = | {g 1 , ..., g n } |, поэтому первый тест в вашем алгоритме должен заключаться в том, делит ли n | G |.

Более того, поскольку g i и g j находятся в одном правом смежном классе, только если g i g j -1 находится в H, затем вы можете проверить подгруппы с индексом n, чтобы увидеть, избегают ли они g i g j -1 . Также обратите внимание, что (g i g j -1 ) (g j g k -1 ) = g i g k -1 , поэтому вы можете выбрать любую пару g i s.

Этого должно быть достаточно, если n мала по сравнению с | G |.

Другой подход состоит в том, чтобы начать с H, являющейся тривиальной группой, и добавить элементы множества H * = {h в G: h k ! = g i g j -1 для всех i, j, k; i! = j} в генераторы H до тех пор, пока вы не сможете добавить больше (т.е. пока это не перестанет быть подгруппой). Тогда H является максимальной подгруппой G такая, что H является подмножеством H * . Если вы можете получить все такие H (и сделать их достаточно большими), то искомая подгруппа должна быть одной из них.

Этот подход будет лучше работать для больших n.

В любом случае неэкспоненциальный подход с временным интервалом не очевиден.

РЕДАКТИРОВАТЬ: Я только что нашел здесь обсуждение этой самой темы: http://en.wikipedia.org/wiki/Wikipedia:Reference_desk/Archives/ Mathematics / 2009_April_18 # Is_a_given_set_of_group_elements_a_set_of_coset_presentatives.3F

1
ответ дан 4 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: