Jump to Navigation

Диаграммы состояний

Аватар пользователя Гость

 (предполагается, что читатель ознакомлен с нотацией «сайтсвоп»)

За последние 20 лет усилиями математиков произошло множество волнующих открытий в области жонглирования. Самым важным среди них, по всей видимости, было создание нотаций сайтсвопа. И что интересно, их начинали разрабатывать различные люди независимо друг от друга приблизительно в одно и то же время.

Буквально недавно случилось другое важное открытие - создание Диаграмм Состояний, идею которых предложил Джек Бойс (Jack Boyce). В этой статье будут изложены их основные принципы.

Суть Диаграмм

Основная идея состоит в разбиении процесса жонглирования на состояния, моменты времени, описываемые строкой цифр. Цифры говорят о расположении мячей в этот момент, но речь идет не об их точном положении в пространстве (Кроме случая, когда мяч почти пойман рукой). По хорошему, понятие «состояния» не несет конкретного смысла. Эта абстрактная вещь необходима для дальнейших построений, и в конце концов мы от него совсем избавимся.

Так вот, в зависимости от положения в строке, 1 означает наличие мяча в данной позиции, а  0 говорит о том, что позиция свободна. По сути, строка состоит из двоичных цифр и представляет собой очередь, в порядке которой бросаются мячи. Смена состояний происходит следующим образом - при совершении броска крайняя справа цифра в строке перемещается влево (от типа броска зависит то, насколько далеко она будет перемещена), все остальные цифры смещаются на ее место вправо. Рассмотрим простой пример:

111 - это типичное состояние при жонглировании каскада тремя мячами. Когда мы делаем очередной бросок (в данном случае зеленым мячом), то соответствующая цифра смещается в строке на три позиции влево. То есть зеленая единица встанет в конец очереди, и новое состояние выглядит следующим образом: 111, что по сути является тем же самым. И таким образом, совершая броски 3, продолжается каскад.

Что же теперь произойдет, если сделать бросок 4? Начинаем снова с состояния 111, при броске цифра смещается уже на 4 позиции влево, и получаем состояние 1011. Теперь хотим совершить бросок 2 (заметим, что изначально так обозначался низкий бросок в ту же руку, но обычно его не исполняют, а просто держат мяч в руке до следующего броска). Смещая цифры, снова получаем состояние 111.

В чем же польза?

Занимательной перестановкой цифр дело не ограничивается. Зная, каким образом состояния сменяют друг друга, может строить диаграмму, по которой легко изобретать трюки, а так же связывать между собой уже известные. Для начала построим диаграмму для трёх мячей и бросков, не выше 5:

 

  Throw type:
Number: State:   0 1 2 3 4 5
1 111   - - - 1 2 3
2 1011   - - 1 - 4 5
3 10011   - - 2 4 - 6
4 1101   - 1 - - 7 8
5 10101   - 2 - 7 - 9
6 11001   - 4 7 - - 10
7 1110   1 - - - - -
8 10110   2 - - - - -
9 11010   4 - - - - -
10 11100   7 - - - - -

 

  Пользоваться диаграммой не сложно - сначала выбираем строчку, соответствующую исходному состоянию, потом по столбцу выбираем тип броска, и в клетке таблицы видим, к какому состоянию этот бросок приведет. К примеру, начнем снова с состояния под номером 1 (111). При жонглировании каскада тремя, каждый бросок относится к типу 3, поэтому каждый раз мы возвращаемся к состоянию 1. Теперь если бросить 5, то по таблице видно, что мы перейдем к состоянию 3 (10011). Если отсюда бросить 3, смотрим на пересечение строки 3 и столбца 3, получаем состояние 4 (1101). Здесь мы можем бросить 1, который снова вернет нас к состоянию 1, откуда можем продолжать исполнение каскада. Таким образом, мы совершили один цикл трюка 531. Пользуясь таблицей, сразу видно, какие броски можно совершить из данного состояния. Также в этой таблице можно найти все трюки для трех мячей, в которых используются броски не выше 5 (имеются в виду простые трюки, без мультиплексных и синхронных бросков).

 Таблицу можно расширить и для более высоких бросков, но это резко увеличивает ее размер. Кроме того, таблица не самый наглядный способ для представления трюков, поэтому удобного инструмента для жонглера из нее не получится.

Более удачным решением является построение решетки, на которой по обеим осям перечислены все рассматриваемые состояния, а в клетках указываются броски. Вертикальная ось соответствует начальным состояниям, а по горизонтальной определяется, к какому состоянию приведет тот или иной бросок.

Диаграмма состояний

Наша таблица отличается от предыдущей тем, что в ней перечислены все состояния подряд вплоть до 1111. Дело в том, что при перечислении только тех состояний, которые соответствуют трем мячам, нарушается структура таблицы, и многие трюки уже не так очевидны.

Ну хорошо, как все-таки этим пользоваться? В качестве примера, попробуем выполнить трюк 441 из каскада. Мы уже знаем, что каскаду тремя мячами соответствует состояние 111, поэтому с него и начнем (в таблице номер 7). Первым делом делаем бросок 4, для этого движемся по строке 7 до тех пор, пока не найдем в клетке цифру 4. Она находится в 11 колонке, что говорит о том, что после броска состояние изменится на 11-е (1011).  Делаем следующий бросок 4, но уже из нового состояния. То есть ищем 4 в 11-й строке и попадаем в состояние 13 (1101). Наконец, двигаясь по 13-й строке в поисках единички, мы возвращаемся к состоянию 7, из которого мы и начинали!

Вы могли заметить в таблице череду серых крестиков, тянущихся по диагонали. Эта линия предназначена для более удобной работы с таблицей. Например, рассматриваем тот же трюк 441: начиная с состояния номер 11, делаем бросок 4 и переходим к состоянию 13. Вместо того чтобы переходить к 13-й строке и искать в ней нужный бросок, можно из клетки, в которой мы находились, спуститься (или подняться) по столбцу к серой клетке. И затем продолжать искать следующий бросок. Ниже этот процесс проиллюстрирован для трюка 441:

диаграмма состояний 441

Заметьте, что с добавлением серых клеток нам больше не нужно думать ни о номерах состояний, ни о состояниях вообще, как и было обещано в начале статьи. Нужно только помнить, что сначала мы движемся по строке, а затем, найдя нужный бросок, по столбцу до серой клетки. Для тренировки, найдите в таблице известные вам трюки, а также попробуйте поискать новые. Уверен, это не составит особого труда.

Еще в таблице присутствуют «-» и «+». Если смотреть на состояния, бинарные номера которых оканчиваются на 0, то видно, что в строке есть только 0 и +. То есть можно либо «пропустить бросок», либо взять лишний мяч, что обозначается как «+». Последнее влечет за собой переход на соседнее состояние. Учтите, что когда берется лишний мяч, то с ним сразу же совершается бросок.

Одним из наиболее важных применений таблицы является возможность поиска связок между трюками. Рассматривая расширенную таблицу, начинаем с состояния 15 (1111) и хотим жонглировать 561, который исполняется из состояния 23 (10111). Если держать во внимании серые клетки, соответствующие обоим состояниям, можно увидеть, что бросок 5 как раз изменит состояние с 15 на 23. Теперь нам захотелось перейти к трюку 714, для которого нужно изменить состояние на 27 (11011). Очевидно, еще один бросок 5 позволит нам перейти к новому трюку.

Немного математики

Уверен, что любой читатель мало-мальски знаком с двоичной системой счисления. Состояния как раз описываются строками из 0 и 1, что наводит на мысли, что использование двоичной арифметики может дать некоторые практические результаты.

Берем состояние все того же каскада (111), и видим, что в десятичной системе счисления это 7. Легко видеть, что при жонглировании базового трюка с N мячами (с нечетным количеством это каскад, с четным - фонтан) десятичным номером соответствующего состояния будет 2N-1 (то есть N единичек в двоичном представлении). Теперь в каскаде перейдем к состоянию 1011, что в десятичной системе равно 11. Очевидна простая формула, которая связывает начальное состояние, конечное состояние и бросок, который вызвал смену состояний.

S = номер начального

T = тип совершенного броска

F = номер конечного состояния = (S + 2T - 1)/2

Теперь хотелось бы перейти к мультиплексам...

Известно, что в сайтсвопе мультиплексные броски обозначаются квадратными скобками. Например, [54] означает, что из одной руки одновременно были совершены броски 5 и 4. Для Диаграмм Состояний есть простая идея - по аналогии, как 1 означает присутствие мяча в определенной позиции, пусть 2 обозначает наличие двух мячей. К примеру, мы жонглируем фонтан четырьмя мячами и совершаем бросок 2. Тогда мы переходим от состояния 1111 к 121.

Таким образом, мы перешли от двоичной системы счисления к троичной, но этой системой не совсем удобно пользоваться. Кроме того нам может вдруг понадобиться бросать 3 или более мячей одновременно, для чего снова придется менять систему счисления.

Логичным решением является использование привычной нам десятичной системы. Она позволяет работать с трюками, в которых присутствуют броски и поимки до 9 мячей одновременно - далеко за физическими возможностями человека - при этом не искажает сути нашей задачи. С ней удобнее работать, так как теперь номер состояния не нужно переводить в двоичную или троичную системы счисления, чтобы определить, где сколько мячей находится. И использовавшаяся нами ранее формула

F = (S + 2T - 1)/2

легко преобразуется для десятичной системы:

F = (S + 10T - 1)/2

Остается только модифицировать ее для мультиплексных бросков. Для каждого броска мы просто добавляем лишнее слагаемое 10T с соответствующим значением T и вместо единицы вычитаем N, то есть количество мячей, брошенных одновременно. В итоге получаем:

непонятная формула

Где Ti - типы бросков, из которых состоит мультиплекс. Пусть теперь, для примера, мы находимся в состоянии 113 и хотим выполнить бросок [543], чтобы вернуться к каскаду пятью мячами (11111). Пользуясь формулой, получаем:

(113 + 105 + 104 + 103 - 3)/10 = 11111.

Как все это использовать для составления новых трюков?

Теперь, используя последнюю формулу, мы можем внедрить одновременные броски-мультиплексы в таблицы, описанные ранее. Принцип работы с такими модифицированными таблицами остается прежним. Но с их расширением для всё больших типов бросков размер таблиц будет очень быстро расти, так как придется перечислять все возможные состояния. В этом смысле наиболее удобна троичная система счисления. Системы с основаниями больше трех вовсе непрактичны, потому что даже для троичной системы с максимальным типом броска 5 таблица имеет размер 125*125! Пожалуй, главный недостаток Диаграмм Состояний это гигантские размеры.

Скачать диаграмму состояний для бросков, высотой до 8.

Скачать диаграмму состояний для троичной системы с высотой 5.

Марк Томас 2002

Источник: www.jugglingdb.com

Перевод: Артем Харламов

Макс
Аватар пользователя Гость

Ого, вот эта ссылка весьма могуча, спасибо.

николай
Аватар пользователя Гость

макс, это уже давно придумано. кроме стандартных переходов синхрон--->синхрон, или асинхрон--->асинхрон, которые можно придумать самому очень просто, переходы синхронасинхрон делаются либо в голове, не прибегая к сайтсвапу, либо можно пользоваться ресурсом.
http://cursomalabarismo.no.sapo.pt/jdb/ulbox.html
кстати, илья, добавь это в раздел ссылок. очень полезный ресурс.

Макс
Аватар пользователя Гость

Николай, я не пытался еще разбираться с этой системой, но мне кажется, что основным ее применением является поиск переходов между трюками. То есть нет смысла использовать ее для разучивания собственно трюков, для этого как раз анимация хороша. Но вряд ли можно найти анимацию для всех возможных переходов между любыми трюками. Найти переход можно по этой системе, а затем выстроить анимацию самостоятельно (в соответствующей программе), опираясь на полученный вариант бросков.

Илья (juggler39)
Аватар пользователя Гость

Для общего развития очень даже полезно.

николай
Аватар пользователя Гость

илья, анимированные рисунки из джаглинглабы или другой проги это хорошо, они помогают разбираться в трюках, особенно сильно запутанных. НО то что здесь написано для жонглера - бессмысленно. возможно для программера, который захочет написать очередную прогу для жонглирования оно и поможет.

Илья (juggler39)
Аватар пользователя Гость

А я почти во все описания трюков вставляю анимированные рисунки. Так вот, это всё помогает.
А наглядная картинка разве не поможет научиться кидать 3 шарика?

николай
Аватар пользователя Гость

зачем это все???? это никогда не поможет сделать милс месс 5ю. да и просто 3 шарика кидать не научит.

Макс
Аватар пользователя Гость

Вот это уже серьезно. Пока не стал разбираться, как это устроено, но идея выглядит очень интересно.



by www.jugglers.ru