Как число 64 порождает 12?

Jul 30, 2008 15:44

Недавно по наводке victorolsufievа прошёлся по форумам ицзинистов. Честно признаюсь, большинство обсуждений для меня - сущий китайский язык, особенно когда они начинают ловко называть гексаграммы по именам, я сразу теряюсь :) Но мне пришла в голову одна идея, которая может иметь интересное развитие. А может это и изобретение велосипеда - ну тогда можно и проигнорировать.



Дано: в наборе из 64 гексаграмм И-Цзина (будем их представлять 6-битными двоичными числами) существует каноническая циклическая последовательность из 12 знаков, которую можно условно привязать к 12 месяцам, 12 знакам зодиака, 12 зверям, 12 полутонам и так далее. Важно то, как она получена: начинают с числа 000000, а каждое следующее получают циклическим сдвигом битов через инвертор (бит, который перелетает через регистр, переворачивается). Получается цикл: 000000, 000001, 000011, 000111, 001111, 011111, 111111, 111110, 111100, 111000, 110000, 100000, и обратно в начало.

Такую же операцию можно начать с любого числа, не обязательно одного из этих двенадцати - в этом случае получится другой цикл. Понятно, что всё множество двоичных чисел заданной длины можно полностью и однозначно разделить на такие вот непересекающиеся циклы. Кроме того, можно отбросить число 6 как уникальное и рассмотреть эксперименты по разбиению на циклы полных множеств двоичных чисел длины N. Для N от 1 до 9 разбиения приведены ниже. Каждый цикл я для простоты учёта начинаю с самого "младшего" числа, и по этим же "младшим" стартовым числам сортирую:


------------------------------ 1 ------------------------------
0 -> 1 (2)

------------------------------ 2 ------------------------------
00 -> 01 -> 11 -> 10 (4)

------------------------------ 3 ------------------------------
000 -> 001 -> 011 -> 111 -> 110 -> 100 (6)

010 -> 101 (2)

------------------------------ 4 ------------------------------
0000 -> 0001 -> 0011 -> 0111 -> 1111 -> 1110 -> 1100 ->
1000 (8)

0010 -> 0101 -> 1011 -> 0110 -> 1101 -> 1010 -> 0100 ->
1001 (8)

------------------------------ 5 ------------------------------
00000 -> 00001 -> 00011 -> 00111 -> 01111 -> 11111 ->
11110 -> 11100 -> 11000 -> 10000 (10)

00010 -> 00101 -> 01011 -> 10111 -> 01110 -> 11101 ->
11010 -> 10100 -> 01000 -> 10001 (10)

00100 -> 01001 -> 10011 -> 00110 -> 01101 -> 11011 ->
10110 -> 01100 -> 11001 -> 10010 (10)

01010 -> 10101 (2)

------------------------------ 6 ------------------------------
000000 -> 000001 -> 000011 -> 000111 -> 001111 -> 011111 ->
111111 -> 111110 -> 111100 -> 111000 -> 110000 -> 100000 (12)

000010 -> 000101 -> 001011 -> 010111 -> 101111 -> 011110 ->
111101 -> 111010 -> 110100 -> 101000 -> 010000 -> 100001 (12)

000100 -> 001001 -> 010011 -> 100111 -> 001110 -> 011101 ->
111011 -> 110110 -> 101100 -> 011000 -> 110001 -> 100010 (12)

000110 -> 001101 -> 011011 -> 110111 -> 101110 -> 011100 ->
111001 -> 110010 -> 100100 -> 001000 -> 010001 -> 100011 (12)

001010 -> 010101 -> 101011 -> 010110 -> 101101 -> 011010 ->
110101 -> 101010 -> 010100 -> 101001 -> 010010 -> 100101 (12)

001100 -> 011001 -> 110011 -> 100110 (4)

------------------------------ 7 ------------------------------
0000000 -> 0000001 -> 0000011 -> 0000111 -> 0001111 ->
0011111 -> 0111111 -> 1111111 -> 1111110 -> 1111100 ->
1111000 -> 1110000 -> 1100000 -> 1000000 (14)

0000010 -> 0000101 -> 0001011 -> 0010111 -> 0101111 ->
1011111 -> 0111110 -> 1111101 -> 1111010 -> 1110100 ->
1101000 -> 1010000 -> 0100000 -> 1000001 (14)

0000100 -> 0001001 -> 0010011 -> 0100111 -> 1001111 ->
0011110 -> 0111101 -> 1111011 -> 1110110 -> 1101100 ->
1011000 -> 0110000 -> 1100001 -> 1000010 (14)

0000110 -> 0001101 -> 0011011 -> 0110111 -> 1101111 ->
1011110 -> 0111100 -> 1111001 -> 1110010 -> 1100100 ->
1001000 -> 0010000 -> 0100001 -> 1000011 (14)

0001000 -> 0010001 -> 0100011 -> 1000111 -> 0001110 ->
0011101 -> 0111011 -> 1110111 -> 1101110 -> 1011100 ->
0111000 -> 1110001 -> 1100010 -> 1000100 (14)

0001010 -> 0010101 -> 0101011 -> 1010111 -> 0101110 ->
1011101 -> 0111010 -> 1110101 -> 1101010 -> 1010100 ->
0101000 -> 1010001 -> 0100010 -> 1000101 (14)

0001100 -> 0011001 -> 0110011 -> 1100111 -> 1001110 ->
0011100 -> 0111001 -> 1110011 -> 1100110 -> 1001100 ->
0011000 -> 0110001 -> 1100011 -> 1000110 (14)

0010010 -> 0100101 -> 1001011 -> 0010110 -> 0101101 ->
1011011 -> 0110110 -> 1101101 -> 1011010 -> 0110100 ->
1101001 -> 1010010 -> 0100100 -> 1001001 (14)

0010100 -> 0101001 -> 1010011 -> 0100110 -> 1001101 ->
0011010 -> 0110101 -> 1101011 -> 1010110 -> 0101100 ->
1011001 -> 0110010 -> 1100101 -> 1001010 (14)

0101010 -> 1010101 (2)

------------------------------ 8 ------------------------------
00000000 -> 00000001 -> 00000011 -> 00000111 -> 00001111 ->
00011111 -> 00111111 -> 01111111 -> 11111111 -> 11111110 ->
11111100 -> 11111000 -> 11110000 -> 11100000 -> 11000000 ->
10000000 (16)

00000010 -> 00000101 -> 00001011 -> 00010111 -> 00101111 ->
01011111 -> 10111111 -> 01111110 -> 11111101 -> 11111010 ->
11110100 -> 11101000 -> 11010000 -> 10100000 -> 01000000 ->
10000001 (16)

00000100 -> 00001001 -> 00010011 -> 00100111 -> 01001111 ->
10011111 -> 00111110 -> 01111101 -> 11111011 -> 11110110 ->
11101100 -> 11011000 -> 10110000 -> 01100000 -> 11000001 ->
10000010 (16)

00000110 -> 00001101 -> 00011011 -> 00110111 -> 01101111 ->
11011111 -> 10111110 -> 01111100 -> 11111001 -> 11110010 ->
11100100 -> 11001000 -> 10010000 -> 00100000 -> 01000001 ->
10000011 (16)

00001000 -> 00010001 -> 00100011 -> 01000111 -> 10001111 ->
00011110 -> 00111101 -> 01111011 -> 11110111 -> 11101110 ->
11011100 -> 10111000 -> 01110000 -> 11100001 -> 11000010 ->
10000100 (16)

00001010 -> 00010101 -> 00101011 -> 01010111 -> 10101111 ->
01011110 -> 10111101 -> 01111010 -> 11110101 -> 11101010 ->
11010100 -> 10101000 -> 01010000 -> 10100001 -> 01000010 ->
10000101 (16)

00001100 -> 00011001 -> 00110011 -> 01100111 -> 11001111 ->
10011110 -> 00111100 -> 01111001 -> 11110011 -> 11100110 ->
11001100 -> 10011000 -> 00110000 -> 01100001 -> 11000011 ->
10000110 (16)

00001110 -> 00011101 -> 00111011 -> 01110111 -> 11101111 ->
11011110 -> 10111100 -> 01111000 -> 11110001 -> 11100010 ->
11000100 -> 10001000 -> 00010000 -> 00100001 -> 01000011 ->
10000111 (16)

00010010 -> 00100101 -> 01001011 -> 10010111 -> 00101110 ->
01011101 -> 10111011 -> 01110110 -> 11101101 -> 11011010 ->
10110100 -> 01101000 -> 11010001 -> 10100010 -> 01000100 ->
10001001 (16)

00010100 -> 00101001 -> 01010011 -> 10100111 -> 01001110 ->
10011101 -> 00111010 -> 01110101 -> 11101011 -> 11010110 ->
10101100 -> 01011000 -> 10110001 -> 01100010 -> 11000101 ->
10001010 (16)

00010110 -> 00101101 -> 01011011 -> 10110111 -> 01101110 ->
11011101 -> 10111010 -> 01110100 -> 11101001 -> 11010010 ->
10100100 -> 01001000 -> 10010001 -> 00100010 -> 01000101 ->
10001011 (16)

00011000 -> 00110001 -> 01100011 -> 11000111 -> 10001110 ->
00011100 -> 00111001 -> 01110011 -> 11100111 -> 11001110 ->
10011100 -> 00111000 -> 01110001 -> 11100011 -> 11000110 ->
10001100 (16)

00011010 -> 00110101 -> 01101011 -> 11010111 -> 10101110 ->
01011100 -> 10111001 -> 01110010 -> 11100101 -> 11001010 ->
10010100 -> 00101000 -> 01010001 -> 10100011 -> 01000110 ->
10001101 (16)

00100100 -> 01001001 -> 10010011 -> 00100110 -> 01001101 ->
10011011 -> 00110110 -> 01101101 -> 11011011 -> 10110110 ->
01101100 -> 11011001 -> 10110010 -> 01100100 -> 11001001 ->
10010010 (16)

00101010 -> 01010101 -> 10101011 -> 01010110 -> 10101101 ->
01011010 -> 10110101 -> 01101010 -> 11010101 -> 10101010 ->
01010100 -> 10101001 -> 01010010 -> 10100101 -> 01001010 ->
10010101 (16)

00101100 -> 01011001 -> 10110011 -> 01100110 -> 11001101 ->
10011010 -> 00110100 -> 01101001 -> 11010011 -> 10100110 ->
01001100 -> 10011001 -> 00110010 -> 01100101 -> 11001011 ->
10010110 (16)

------------------------------ 9 ------------------------------
000000000 -> 000000001 -> 000000011 -> 000000111 ->
000001111 -> 000011111 -> 000111111 -> 001111111 ->
011111111 -> 111111111 -> 111111110 -> 111111100 ->
111111000 -> 111110000 -> 111100000 -> 111000000 ->
110000000 -> 100000000 (18)

000000010 -> 000000101 -> 000001011 -> 000010111 ->
000101111 -> 001011111 -> 010111111 -> 101111111 ->
011111110 -> 111111101 -> 111111010 -> 111110100 ->
111101000 -> 111010000 -> 110100000 -> 101000000 ->
010000000 -> 100000001 (18)

000000100 -> 000001001 -> 000010011 -> 000100111 ->
001001111 -> 010011111 -> 100111111 -> 001111110 ->
011111101 -> 111111011 -> 111110110 -> 111101100 ->
111011000 -> 110110000 -> 101100000 -> 011000000 ->
110000001 -> 100000010 (18)

000000110 -> 000001101 -> 000011011 -> 000110111 ->
001101111 -> 011011111 -> 110111111 -> 101111110 ->
011111100 -> 111111001 -> 111110010 -> 111100100 ->
111001000 -> 110010000 -> 100100000 -> 001000000 ->
010000001 -> 100000011 (18)

000001000 -> 000010001 -> 000100011 -> 001000111 ->
010001111 -> 100011111 -> 000111110 -> 001111101 ->
011111011 -> 111110111 -> 111101110 -> 111011100 ->
110111000 -> 101110000 -> 011100000 -> 111000001 ->
110000010 -> 100000100 (18)

000001010 -> 000010101 -> 000101011 -> 001010111 ->
010101111 -> 101011111 -> 010111110 -> 101111101 ->
011111010 -> 111110101 -> 111101010 -> 111010100 ->
110101000 -> 101010000 -> 010100000 -> 101000001 ->
010000010 -> 100000101 (18)

000001100 -> 000011001 -> 000110011 -> 001100111 ->
011001111 -> 110011111 -> 100111110 -> 001111100 ->
011111001 -> 111110011 -> 111100110 -> 111001100 ->
110011000 -> 100110000 -> 001100000 -> 011000001 ->
110000011 -> 100000110 (18)

000001110 -> 000011101 -> 000111011 -> 001110111 ->
011101111 -> 111011111 -> 110111110 -> 101111100 ->
011111000 -> 111110001 -> 111100010 -> 111000100 ->
110001000 -> 100010000 -> 000100000 -> 001000001 ->
010000011 -> 100000111 (18)

000010000 -> 000100001 -> 001000011 -> 010000111 ->
100001111 -> 000011110 -> 000111101 -> 001111011 ->
011110111 -> 111101111 -> 111011110 -> 110111100 ->
101111000 -> 011110000 -> 111100001 -> 111000010 ->
110000100 -> 100001000 (18)

000010010 -> 000100101 -> 001001011 -> 010010111 ->
100101111 -> 001011110 -> 010111101 -> 101111011 ->
011110110 -> 111101101 -> 111011010 -> 110110100 ->
101101000 -> 011010000 -> 110100001 -> 101000010 ->
010000100 -> 100001001 (18)

000010100 -> 000101001 -> 001010011 -> 010100111 ->
101001111 -> 010011110 -> 100111101 -> 001111010 ->
011110101 -> 111101011 -> 111010110 -> 110101100 ->
101011000 -> 010110000 -> 101100001 -> 011000010 ->
110000101 -> 100001010 (18)

000010110 -> 000101101 -> 001011011 -> 010110111 ->
101101111 -> 011011110 -> 110111101 -> 101111010 ->
011110100 -> 111101001 -> 111010010 -> 110100100 ->
101001000 -> 010010000 -> 100100001 -> 001000010 ->
010000101 -> 100001011 (18)

000011000 -> 000110001 -> 001100011 -> 011000111 ->
110001111 -> 100011110 -> 000111100 -> 001111001 ->
011110011 -> 111100111 -> 111001110 -> 110011100 ->
100111000 -> 001110000 -> 011100001 -> 111000011 ->
110000110 -> 100001100 (18)

000011010 -> 000110101 -> 001101011 -> 011010111 ->
110101111 -> 101011110 -> 010111100 -> 101111001 ->
011110010 -> 111100101 -> 111001010 -> 110010100 ->
100101000 -> 001010000 -> 010100001 -> 101000011 ->
010000110 -> 100001101 (18)

000011100 -> 000111001 -> 001110011 -> 011100111 ->
111001111 -> 110011110 -> 100111100 -> 001111000 ->
011110001 -> 111100011 -> 111000110 -> 110001100 ->
100011000 -> 000110000 -> 001100001 -> 011000011 ->
110000111 -> 100001110 (18)

000100010 -> 001000101 -> 010001011 -> 100010111 ->
000101110 -> 001011101 -> 010111011 -> 101110111 ->
011101110 -> 111011101 -> 110111010 -> 101110100 ->
011101000 -> 111010001 -> 110100010 -> 101000100 ->
010001000 -> 100010001 (18)

000100100 -> 001001001 -> 010010011 -> 100100111 ->
001001110 -> 010011101 -> 100111011 -> 001110110 ->
011101101 -> 111011011 -> 110110110 -> 101101100 ->
011011000 -> 110110001 -> 101100010 -> 011000100 ->
110001001 -> 100010010 (18)

000100110 -> 001001101 -> 010011011 -> 100110111 ->
001101110 -> 011011101 -> 110111011 -> 101110110 ->
011101100 -> 111011001 -> 110110010 -> 101100100 ->
011001000 -> 110010001 -> 100100010 -> 001000100 ->
010001001 -> 100010011 (18)

000101000 -> 001010001 -> 010100011 -> 101000111 ->
010001110 -> 100011101 -> 000111010 -> 001110101 ->
011101011 -> 111010111 -> 110101110 -> 101011100 ->
010111000 -> 101110001 -> 011100010 -> 111000101 ->
110001010 -> 100010100 (18)

000101010 -> 001010101 -> 010101011 -> 101010111 ->
010101110 -> 101011101 -> 010111010 -> 101110101 ->
011101010 -> 111010101 -> 110101010 -> 101010100 ->
010101000 -> 101010001 -> 010100010 -> 101000101 ->
010001010 -> 100010101 (18)

000101100 -> 001011001 -> 010110011 -> 101100111 ->
011001110 -> 110011101 -> 100111010 -> 001110100 ->
011101001 -> 111010011 -> 110100110 -> 101001100 ->
010011000 -> 100110001 -> 001100010 -> 011000101 ->
110001011 -> 100010110 (18)

000110010 -> 001100101 -> 011001011 -> 110010111 ->
100101110 -> 001011100 -> 010111001 -> 101110011 ->
011100110 -> 111001101 -> 110011010 -> 100110100 ->
001101000 -> 011010001 -> 110100011 -> 101000110 ->
010001100 -> 100011001 (18)

000110100 -> 001101001 -> 011010011 -> 110100111 ->
101001110 -> 010011100 -> 100111001 -> 001110010 ->
011100101 -> 111001011 -> 110010110 -> 100101100 ->
001011000 -> 010110001 -> 101100011 -> 011000110 ->
110001101 -> 100011010 (18)

000110110 -> 001101101 -> 011011011 -> 110110111 ->
101101110 -> 011011100 -> 110111001 -> 101110010 ->
011100100 -> 111001001 -> 110010010 -> 100100100 ->
001001000 -> 010010001 -> 100100011 -> 001000110 ->
010001101 -> 100011011 (18)

001001010 -> 010010101 -> 100101011 -> 001010110 ->
010101101 -> 101011011 -> 010110110 -> 101101101 ->
011011010 -> 110110101 -> 101101010 -> 011010100 ->
110101001 -> 101010010 -> 010100100 -> 101001001 ->
010010010 -> 100100101 (18)

001001100 -> 010011001 -> 100110011 -> 001100110 ->
011001101 -> 110011011 -> 100110110 -> 001101100 ->
011011001 -> 110110011 -> 101100110 -> 011001100 ->
110011001 -> 100110010 -> 001100100 -> 011001001 ->
110010011 -> 100100110 (18)

001010010 -> 010100101 -> 101001011 -> 010010110 ->
100101101 -> 001011010 -> 010110101 -> 101101011 ->
011010110 -> 110101101 -> 101011010 -> 010110100 ->
101101001 -> 011010010 -> 110100101 -> 101001010 ->
010010100 -> 100101001 (18)

001010100 -> 010101001 -> 101010011 -> 010100110 ->
101001101 -> 010011010 -> 100110101 -> 001101010 ->
011010101 -> 110101011 -> 101010110 -> 010101100 ->
101011001 -> 010110010 -> 101100101 -> 011001010 ->
110010101 -> 100101010 (18)

000111000 -> 001110001 -> 011100011 -> 111000111 ->
110001110 -> 100011100 (6)

010101010 -> 101010101 (2)

---------------------------------------------------------------

...
дальше циклы сами по себе не так интересны, как получающаяся статистика длин:
------------------------------ 1 ------------------------------
len = 2 (x1)
------------------------------ 2 ------------------------------
len = 4 (x1)
------------------------------ 3 ------------------------------
len = 6 (x1)
len = 2 (x1)
------------------------------ 4 ------------------------------
len = 8 (x2)
------------------------------ 5 ------------------------------
len = 10 (x3)
len = 2 (x1)
------------------------------ 6 ------------------------------
len = 12 (x5)
len = 4 (x1)
------------------------------ 7 ------------------------------
len = 14 (x9)
len = 2 (x1)
------------------------------ 8 ------------------------------
len = 16 (x16)
------------------------------ 9 ------------------------------
len = 18 (x28)
len = 6 (x1)
len = 2 (x1)
------------------------------ 10 ------------------------------
len = 20 (x51)
len = 4 (x1)
------------------------------ 11 ------------------------------
len = 22 (x93)
len = 2 (x1)
------------------------------ 12 ------------------------------
len = 24 (x170)
len = 8 (x2)
------------------------------ 13 ------------------------------
len = 26 (x315)
len = 2 (x1)
------------------------------ 14 ------------------------------
len = 28 (x585)
len = 4 (x1)
------------------------------ 15 ------------------------------
len = 30 (x1091)
len = 10 (x3)
len = 6 (x1)
len = 2 (x1)
------------------------------ 16 ------------------------------
len = 32 (x2048)
------------------------------ 17 ------------------------------
len = 34 (x3855)
len = 2 (x1)
----------------------------------------------------------------
...

В этих разбиениях несколько удивительных моментов:

Удивительное №1: Несмотря на то, что общее количество чисел в каждом случае равно 2N, приведённая операция "стремится" поделить это число на некоторое количество полных циклов по 2*N, при этом если N не является степенью двойки, то остаётся "остаток" (если взглянуть на случай N=5, становится очевидной сакральность прикупа в преферансе :).

Удивительное №2: Наиболее естественная геометрическая модель для представления всех двоичных чисел длины N - это N-мерный гиперкуб, числа раскидываются по вершинам и представляют из себя координаты этих вершин в N-мерном пространстве. Интересно провести в гиперкубе линии, которые соединяют числа, следующие по порядку в циклах. Получатся такие "меридианы", не имеющие общих точек. Большинство меридианов одинаковой длины, но некоторые - короче.

Удивительное №3: Если сложить циклы пополам (я специально так сделал для случая N=6), то видно, что верхняя и нижняя гексаграмма являются друг для дружки перевёртышами. Такие пары встречаются при исследованиях разных порядков гексаграмм. Интересно было бы кроме собственно разрозненных пар искать и "подсвечивать" целые циклы, и смотреть, как они будут распределяться в порядках.

Удивительное №4: Это объективный способ (ладно, один из :) вычислить две "лишние" триграммы и четыре "лишние" гексаграммы. Не правда ли удивительно, что это не 000 и 111, а как раз "противоположные", наиболее пёстрые?

Удивительное №5: Интересно последить за тем, какие встречаются длины "остаточных", коротких циклов. Мне кажется, для довольно больших чисел там наклёвываются длины периодов Таблицы Менделеева - по крайней мере, двойки, шестёрки и десятки одновременно встречаются; надо посмотреть, что дальше будет. Пригодился бы суперкомпьютер :)

Удивительное №6: Прокрутка числа в обратную сторону через такой же инвертер приводит к движению по тому же циклу, но в обратную сторону.

Удивительное №7: Половой/полюсный состав. Примем за "север" гиперкуба точку "все нули", а за "юг" - точку "все единицы". Поскольку все последовательности получаются "прокруткой" через регистр двойной длины, вторая половинка которой полностью противоположна первой, то числа в цикле строго сбалансированы по количеству нулей и единиц (если встретилось число с соотношением 1:5, то обязательно в оппозиции к нему будет число с соотношением 5:1). Ну или можно сказать, что половой/полюсный состав каждого цикла уравновешен сам в себе.

Колебания север-юг. При этом каждая операция сдвиг-инверсии сдвигает либо на один шаг к "северу" гиперкуба, либо на один шаг к "югу" (стояния на месте не существует). "Оригинальный" 12-ступенчатый цикл от 000000 до 111111 обладал самой низкой частотой колебаний север-юг при заданной длине цикла - сначала 6 шагов на юг, потом 6 шагов на север, он более всех похож на меридиан. Остальные "меридианы" всё ближе и ближе наклонены к "экватору". И чем короче цикл при данном N, тем лучший он кандидат в экваторы. В 6-мерном случае наилучший экватор - это 4-элементный цикл, а во всех случаях где N нечётно - вообще 2-элементный цикл (там всегда две "расчёски" превращаются друг в дружку).

экспериментальная математика, удивительное рядом

Previous post Next post
Up