| Циклы | C. 1 1 _ | Разместить |
|
C.p дает список упакованных списков
атомов i.#p, называемую стандартным циклическим
представлением перестановки p . Тоесть,
если p=:4 5 2 1 0 3,
то C.p есть (,2);4 0;5 3 1 , поскольку
перестановка p перемещает
в позицию 2 элемент 2,
в 4 элемент 0,
в 0 элемент 4,
в 5 элемент 3,
в 3 элемент 1, и
в 1 элемент 5. Монада C.
обратна сама себе: в применении к стандартному циклическому представлению
она дает соответствующий вектор перестановки. Представление данной перестановки циклами неоднозначно; стандартная форма единственна в силу следующих дополнительных ограничений: циклы не пересекаются и полны (т.е., атомы упакованных элементов вместе представляют собой вектор перестановки); каждый упакованный цикл поворачивается так, чтобы он начинался со своего наибольшего элемента; и упакованные циклы располагаются по возрастанию своих первых элементов. C. расширено до неотрицательных нестандартных случаев, при этом аргумент q считается представлением перестановки порядка 1+>./; q . Монада C.!.2 вычисляет четность перестановки p , равную 1 или _1 в зависимости от того — четно или нечетно число парных перестановок, требуемое для получения p из тождественной перестановки i.#p (и 0 если p не перестановка). Например: ] x=: 2 , (i.4) ,: 1 0 2 3 2 2 2 2 0 1 2 3 1 0 2 3 C.!.2 x 0 1 _1 |
Если p и c являются стандартным и циклическим представлением
перестановки порядка #b, то p C. b и c C. b размещают элементы b соответственно. Аргументы p и c
могут быть определены нестандартным образом. В частности,
можно использовать отрицательные целые вплоть до -#b ,
интерпретируемые как остатки от их деления на #b . Если q не упакован, а элементы (#b)|q все разные, то q C. b эквивалентно p{b , где p есть стандартная форма q , определяемая как p=:((i.n)-.n|q),n|q , для n=:#b . Другими словами, позиции, перечисленные в q , перемещаются в конец. Если q упаковка, элементы (#b)|>j{q должны быть разными для всех j , и упаковки применяются последовательно. Например:
(2 1;3 0 1) C. i.5
1 2 3 0 4
(<2 1) C. (<3 0 1) C. i.5
1 2 3 0 4
q=: C. p=: 1 2 3 0 4 [ a=: 'abcde'
q ; (q C. a) ; (p C. a) ; (p { a)
+-----------+-----+-----+-----+
|+-------+-+|bcdae|bcdae|bcdae|
||3 0 1 2|4|| | | |
|+-------+-+| | | |
+-----------+-----+-----+-----+
a ; (<0 _1) C. a
+-----+-----+
|abcde|ebcda|
+-----+-----+
|
] p=: 22 ?. 22 NB. Случайная перестановка порядка 22
16 18 21 8 6 15 10 14 7 11 0 2 5 3 9 12 20 17 4 19 13 1
C. p NB. Ее циклы
+-------+--+--+-----------------------------------------+
|15 12 5|17|19|21 1 18 4 6 10 0 16 20 13 3 8 7 14 9 11 2|
+-------+--+--+-----------------------------------------+
*./ #&> C. p NB. НОК длин циклов
51
# ~. p&{^:(i.200) i.#p NB. Размер подгруппы, генерируемой p
51
Глагол CT вычисляет тензор Леви-Чивита (абсолютно анти-симметричный тензор) порядка n
в виде разреженного массива; элемент (<i){CT n есть четность
перестановки индексов i .
CT=: 3 : '(C.!.2 p) (<"1 p=. (i.!y) A. i.y)}1$.$~y'
CT 3
0 1 2 | 1
0 2 1 | _1
1 0 2 | _1
1 2 0 | 1
2 0 1 | 1
2 1 0 | _1
($.^:_1 CT 3) ; ,"2 ' ' ,"1 '012'{~ >{ i.&.> $~3
+--------+------------+
| 0 0 0| 000 001 002|
| 0 0 1| 010 011 012|
| 0 _1 0| 020 021 022|
| | |
| 0 0 _1| 100 101 102|
| 0 0 0| 110 111 112|
| 1 0 0| 120 121 122|
| | |
| 0 1 0| 200 201 202|
|_1 0 0| 210 211 212|
| 0 0 0| 220 221 222|
+--------+------------+
(CT 3) -: C.!.2&> { i.&.> $~ 3
1
] m=: ?. 3 3$10
6 5 9
2 4 9
0 7 0
+/ , (CT #m) * *// m
_252
-/ .* m NB. Детерминант
_252