Как сгенерировать все полиномы указанной степени? Пусть один полином будет представляться в виде массива, в котором содержаться его коэффициенты ( над полем вычетов по модулю 2). Вводиться какая-нибудь степень, и нужно программно сгенерировать все полиномы этой степени. Все полученные массивы хранятся в List. Вручную посчитать не сложно, особенно если представлять коэффициенты в виде 0 и 1, но вот как сделать это программно додуматься не могу. Для наглядности вопроса приведу полиномы степени 2: 001 011 101 111 Нужен алгоритм для программной генерации этих коэффициентов.
Для генерации всех полиномов указанной степени над полем вычетов по модулю 2 можно использовать рекурсивный подход.
Пример алгоритма на языке Python:
def generate_polynomialsdegreedegreedegree: def generate_helpercurrdegree,currpolycurr_degree, curr_polycurrdegree,currpoly: if curr_degree == degree: polynomials.appendlist(currpoly)list(curr_poly)list(currpoly)
return # Рассматриваем два случая: добавить 0 и добавить 1 в конец текущего полинома generate_helpercurrdegree+1,currpoly+[0]curr_degree + 1, curr_poly + [0]currdegree+1,currpoly+[0]
generate_helpercurrdegree+1,currpoly+[1]curr_degree + 1, curr_poly + [1]currdegree+1,currpoly+[1] polynomials =
generate_helper0,[]0, []0,[]
return polynomials degree = 2 polynomials = generate_polynomialsdegreedegreedegree for poly in polynomials: print′′.join(str(bit)forbitinpoly)''.join(str(bit) for bit in poly)′′.join(str(bit)forbitinpoly)
В данном примере функция generate_polynomials рекурсивно генерирует все возможные полиномы указанной степени, добавляя к текущему полиному либо 0, либо 1. Результаты записываются в список и выводятся на экран.
Просто укажите требуемую степень и программа выведет все полиномы этой степени над полем вычетов по модулю 2.
Для генерации всех полиномов указанной степени над полем вычетов по модулю 2 можно использовать рекурсивный подход.
Пример алгоритма на языке Python:
def generate_polynomialsdegreedegreedegree:def generate_helpercurrdegree,currpolycurr_degree, curr_polycurrd egree,currp oly:
if curr_degree == degree:
polynomials.appendlist(currpoly)list(curr_poly)list(currp oly) return
# Рассматриваем два случая: добавить 0 и добавить 1 в конец текущего полинома
generate_helpercurrdegree+1,currpoly+[0]curr_degree + 1, curr_poly + [0]currd egree+1,currp oly+[0] generate_helpercurrdegree+1,currpoly+[1]curr_degree + 1, curr_poly + [1]currd egree+1,currp oly+[1]
polynomials = generate_helper0,[]0, []0,[] return polynomials
degree = 2
polynomials = generate_polynomialsdegreedegreedegree
for poly in polynomials:
print′′.join(str(bit)forbitinpoly)''.join(str(bit) for bit in poly)′′.join(str(bit)forbitinpoly)
В данном примере функция generate_polynomials рекурсивно генерирует все возможные полиномы указанной степени, добавляя к текущему полиному либо 0, либо 1. Результаты записываются в список и выводятся на экран.
Просто укажите требуемую степень и программа выведет все полиномы этой степени над полем вычетов по модулю 2.