• fibonacci(n, х) —возвращает значение полинома Фибоначчи F ( n, х ) = х F ( n– 1, х ) + F ( n –2, х ), где F (0, х )–0 и F (1, а )=1, при этом F ( n ) =F ( n, 1);
• firstpart(n) — возвращает первый член последовательности из наборов чисел, сумма которых равна n (в оригинале каноническую последовательность);
• nextpart(1) — возвращает следующую часть указанной выше последовательности;
• lastpart(n) — возвращает последний член последовательности, указанной для функции firstpart;
• prevpart(1) — возвращает предпоследнюю часть канонической последовательности ряда;
• conjpart(1) — возвращает объединенный раздел в канонической последовательности ряда;
• graycode(n) — возвращает список кодов Грея для n-битовых чисел;
• multinomial(n, k1, k2,…, km) — возвращает мультиномиальные коэффициенты;
• numbcomb(n) и numbcomb(n, m) — возвращает число комбинаций;
• numbcomp(n, k) — возвращает число различных упорядоченных наборов из к натуральных чисел, сумма которых равна n;
• numbpart(n) — возвращает список всех возможных сумм, дающих n;
• permute(n) и permute(n, r) — возвращает numbperm(n, r) = nops(permute(n, r));
• powerset(s) — возвращает степень множества в множестве s;
• randcomb(n, m) — возвращает случайную комбинацию;
• randpart(n) — возвращает случайную часть:
• randperm(n) — возвращает случайную композицию;
• stirling1(n, m) — возвращает число Стирлинга первого рода;
• stirling2(n, m) — возвращает число Стирлинга второго рода;
• subsets(L) — задает итерационную процедуру над степенями множества или списка L;
• vectoint(I) — возвращает индекс вектора канонического упорядочения I;
• inttovec(m, n) — возвращает вектор канонического упорядочения для неотрицательных целых чисел m и n.
Следующие примеры (файл combinat) иллюстрируют применение функций комбинаторики:
> choose(4,3);
[[1,2,3], [1, 2, 4], [1,3,4], [2, 3, 4]]
> choose([a,a,b,с],3);
[[a,a,b], [a,a,с],[a,b,c]]
> composition(3,2);
{[2, 1], [1,2]}
> decodepart(4,2);
[1,1,2]
> fibonacci(10);
55
> seq(fibonacci(i),i=1..12);
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
> partition(5);
[[1, 1, 1, 1, 1], [1, 1, 1, 2], [1, 2, 2], [1, 1, 3], [2, 3], [1, 4], [5]]
> firstpart(3);
[1, 1, 1]
> nextpart(%);
[1,2]
> prevpart(%);
[1, 1, 1]
> lastpart(3);
[3]
> conjpart(%);
[1, 1, 1]
> multinomial(8,2,3,3);
560
> numbcomp(8,5);
35
> numpart(3);
numpart(3)
> numbperm(4);
24
> numbperm([a, b]);
2
> numbperm({a,b,c}, 2);
6
> permute(3,2);
[[1,2], [1,3], [2, 1], [2, 3], [3, 1], [3, 2]]
> permute([a,a,b],2);
[[a,.a], [a,b], [b,a]]
> powerset([a,a,b]);
[[ ], [a], [b], [a,b], [a,a], [a,a,b]]
> randcomb([a,b,c,d],3);
[a,c,d]
> randcomb([a, b, c, d], 3);
[a,b,d]
> randpart(10);
[2, 8]
> randpart(10);
[10]
> stirling1(10,5);
-269325
> stirling2(10, 5);
42525
> S:=subsets({1,2}):
> while not S[finished] do S[nextvalue]() od;
{ }
{1}
{2}
{1,2}
> vectoint([1,0,0]);
1
> inttovec(6,3);
[1,0,1]
3.4.2. Функции пакета структур комбинаторики combstruct
Еще девять функций, относящихся к структурам комбинаторики , содержит пакет combstruct:
> with(combstruct);
[agfeqns, agfmomentsolve, agfseries, allstructs, count, draw, finished, gfeqns, gfseries, gfsolve, iterstructs, nextstruct]
Эти функции служат для создания случайно однородных объектов, принадлежащих заданному комбинаторному классу. Ограничимся приведением примеров применения этих функций (файл combictruct):
> allstructs(Subset({one,two)));
{{ }, {one, two), {two}, {one)}
> allstructs(Permutation([x,y,z]),size=2);
[[x,y], [x,z], [x,y], [y,z], [z,x], [z,y]]
> count(Subset({1,2,3}));
8
> draw(Combination(5),size=4);
{1, 3, 4, 5}
> count(Permutation([a,a,b]));
> it :=iterstructs(Permutation([a,a,b]),size=2);
it:= table([finished = false, nextvalue = (proc(0) ... end proc)|)
> draw(Partition(9));
[2, 2, 2, 3]
> allstructs(Composition(3), size=2);
[[2, 1], [1,2]]
3.4.3. Функции пакета теории чисел — numtheory
В обширном пакете numtheory собран ряд функций, относящихся к теории чисел. Их можно просмотреть, используя команду:
> with(numtheory);
Большинство функций этого пакета достаточно просты и заинтересовавшийся читатель вполне в состоянии провести их тестирование самостоятельно.
Читать дальше
Конец ознакомительного отрывка
Купить книгу