Циклы | 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