~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 0812D20D57B10CB46DDD74455E1B4B63__1716273240 ✰
Заголовок документа оригинал.:
✰ State diagram - Wikipedia ✰
Заголовок документа перевод.:
✰ Диаграмма состояний — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/State_diagram ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/08/63/0812d20d57b10cb46ddd74455e1b4b63.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/08/63/0812d20d57b10cb46ddd74455e1b4b63__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 04:24:42 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 May 2024, at 09:34 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Диаграмма состояний — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

Диаграмма состояний двери, которую можно только открывать и закрывать

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

Обзор [ править ]

Диаграммы состояний дают абстрактное системы поведения описание . Такое поведение анализируется и представляется серией событий, которые могут произойти в одном или нескольких возможных состояниях. При этом «каждая диаграмма обычно представляет объекты одного класса и отслеживает различные состояния своих объектов в системе». [1]

Диаграммы состояний можно использовать для графического представления конечных автоматов (также называемых конечными автоматами). Это было введено Клодом Шенноном и Уорреном Уивером в их книге 1949 года «Математическая теория коммуникации» . Другой источник — Тейлор Бут в его книге 1967 года « Последовательные машины и теория автоматов» . Другое возможное представление — таблица переходов состояний .

Ориентированный граф [ править ]

Ориентированный граф

Классической формой диаграммы состояний конечного автомата (КА) является ориентированный граф со следующими элементами (Q, Σ, Z, δ, q0 , F): [2] [3]

  • Вершины Q : конечный набор состояний, обычно представленный кружками и помеченный уникальными символами-обозначениями или словами, написанными внутри них.
  • Входные символы Σ : конечный набор входных символов или обозначений.
  • Выходные символы Z : конечный набор выходных символов или обозначений.

Выходная функция ω представляет собой отображение упорядоченных пар входных символов и состояний на выходные символы, математически обозначаемые ω : Σ × Q Z. как

  • Края δ : представляют собой переходы из одного состояния в другое, вызванные входными данными (обозначаются их символами, нарисованными на краях). Ребро обычно изображается в виде стрелки, направленной от текущего состояния к следующему. Это отображение описывает переход состояний, вызванный вводом. Математически это записывается как δ : Q × Σ Q , поэтому δ (функция перехода) в определении FA задается как парой вершин, соединенных ребром, так и символом на ребре в диаграмме, представляющей этот FA. . Пункт δ(q, a) = p в определении FA означает, что из состояния с именем q под входным символом a переход в состояние p в этой машине происходит . На диаграмме, представляющей этот FA, это представлено ребром, помеченным точкой , ведущей от вершины, помеченной q , к вершине, помеченной p .
  • Начальное состояние q 0 : (не показано в примерах ниже). Начальное состояние q 0 ∈ Q обычно изображается стрелкой без начала координат, указывающей на состояние. В старых текстах [2] [4] начальное состояние не отображается и должно быть выведено из текста.
  • Принимающее состояние(я) F : Если используется, например, для принятия автоматов, F ∈ Q является принимающим состоянием . Обычно его рисуют в виде двойного круга. Иногда состояния принятия функционируют как « финальные » состояния (остановка, ловушка). [3]

Для детерминированного конечного автомата (DFA), недетерминированного конечного автомата (NFA), обобщенного недетерминированного конечного автомата (GNFA) или машины Мура вход обозначается на каждом ребре. Для машины Мили вход и выход обозначаются на каждом ребре, разделенные косой чертой «/»: «1/0» обозначает изменение состояния при обнаружении символа «1», вызывающее вывод символа «0». Для машины Мура вывод состояния обычно записывается внутри круга состояния, а также отделяется от обозначения состояния косой чертой «/». Есть также варианты, сочетающие эти два обозначения.

Например, если состояние имеет несколько выходов (например, «a= двигатель вращается против часовой стрелки = 1, b = сигнальная лампа неактивна = 0»), диаграмма должна отражать это: например, «q5/1,0» обозначает состояние q5 с помощью выходы а=1, б=0. Этот указатель будет написан внутри кружка штата.

Пример: DFA, NFA, GNFA или машина Мура [ править ]

S1 состояния , и S2 а S1 принимающее состояние или конечное . Каждое ребро помечено входными данными. В этом примере показан акцептор для двоичных чисел, содержащих четное количество нулей.

DFAexample.svg

Пример: машина Мили [ править ]

S0 , S1 и являются S2 состояниями . Каждое ребро помечено « j / k », где j — вход, а k — выход.

Диаграмма состояний простого автомата Мили

Диаграмма состояний Хареля [ править ]

Диаграмма, показывающая, как диаграммы состояний Хареля способствовали развитию объектно-ориентированных методов и обозначений.

диаграммы состояний Хареля, [5] изобретенные учёным-компьютерщиком Дэвидом Харелом , получают широкое распространение, поскольку их вариант стал частью унифицированного языка моделирования (UML). [ нужен неосновной источник ] Тип диаграммы позволяет моделировать сверхгосударства , ортогональные регионы и действия как часть государства.

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

Альтернативная семантика [ править ]

Существуют и другие наборы семантики для представления диаграмм состояний. Например, существуют инструменты для моделирования и проектирования логики встроенных контроллеров. [6] Эти диаграммы, как и оригинальные конечные автоматы Харела, [7] поддерживать иерархически вложенные состояния, ортогональные области, действия состояний и действия перехода. [8]

Диаграммы состояний и блок - схемы

Новички в формализме конечных автоматов часто путают диаграммы состояний с блок-схемами . На рисунке ниже показано сравнение диаграммы состояний с блок-схемой. Конечный автомат (панель (а)) выполняет действия в ответ на явные события. Напротив, блок-схема (панель (b)) автоматически переходит от узла к узлу после завершения действий. [9]

Диаграмма состояний (а) и блок-схема (б)

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

Более подробно, листинг исходного кода представляет собой граф программы. Выполнение графа программы (синтаксический анализ и интерпретация) приводит к созданию графа состояний. Таким образом, каждый граф программы порождает граф состояний. Преобразование графа программы в связанный с ним граф состояний называется «развертыванием» графа программы.

Граф программы представляет собой последовательность команд. Если переменных не существует, то состояние состоит только из счетчика программ, который отслеживает местоположение программы во время выполнения (какая следующая команда будет применена).

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

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

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

Самопереход — это переход, при котором начальное и конечное состояния совпадают.

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

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

Блок-схему можно сравнить со сборочной линией на производстве, поскольку она описывает ход выполнения некоторой задачи от начала до конца (например, преобразование входного исходного кода в выходной объектный код компилятора). Государственная машина обычно не имеет представления о таком развитии. Показанный выше пример конечного автомата двери находится не на более продвинутой стадии в «закрытом» состоянии, чем в «открытом». Скорее, он просто по-разному реагирует на события открытия/закрытия. Состояние в конечном автомате — это эффективный способ задания поведения, а не этапа обработки.

Другие расширения [ править ]

Интересное расширение — позволить дугам переходить из любого количества состояний в любое количество состояний. Это имеет смысл только в том случае, если системе разрешено находиться в нескольких состояниях одновременно, что означает, что отдельное состояние описывает только состояние или другой частичный аспект общего, глобального состояния. Полученный формализм известен как сеть Петри .

Другое расширение позволяет интегрировать блок-схемы в диаграммы состояний Harel. Это расширение поддерживает разработку программного обеспечения, которое управляется как событиями, так и рабочими процессами.

См. также [ править ]

  • Дэвид Харел
  • DRAKON
  • SCXML — язык XML, который обеспечивает общую среду выполнения на основе конечного автомата на основе диаграмм состояний Harel.
  • Конечный автомат UML
  • YAKINDU Statechart Tools — это программное обеспечение для моделирования диаграмм состояний (диаграммы состояний Харела, машин Мили, машин Мура), моделирования и генерации исходного кода.

Ссылки [ править ]

  1. ^ Архивный указатель на Wayback Machine
  2. ^ Перейти обратно: а б Тейлор Бут (1967) Теория последовательных машин и автоматов , Джон Уайли и сыновья, Нью-Йорк.
  3. ^ Перейти обратно: а б Джон Хопкрофт и Джеффри Уллман (1979) «Введение в теорию автоматов, языки и вычисления» , издательство Addison-Wesley Publishing Company, Reading Mass, ISBN   0-201-02988-X
  4. ^ Эдвард Дж. МакКласки , Введение в теорию переключающих цепей, McGraw-Hill, 1965.
  5. ^ Дэвид Харел , Диаграммы состояний: визуальный формализм для сложных систем. Наука компьютерного программирования , 8 (3): 231–274, июнь 1987 г.
  6. ^ Тивари, А. (2002). Формальная семантика и методы анализа для Simulink Stateflow.
  7. ^ Харель, Д. (1987). Визуальный формализм для сложных систем. Наука компьютерного программирования, 231–274.
  8. ^ Алур Р., Канаде А., Рамеш С. и Шашидхар К.К. (2008). Символьный анализ для улучшения охвата моделирования моделей Simulink/Stateflow. Международная конференция по встраиваемому программному обеспечению (стр. 89–98). Атланта, Джорджия: ACM.
  9. ^ Самек, Миро (2008). Практические диаграммы состояний UML на C/C++, второе издание: событийно-ориентированное программирование для встраиваемых систем . Ньюнес. п. 728. ИСБН  978-0-7506-8706-5 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 0812D20D57B10CB46DDD74455E1B4B63__1716273240
URL1:https://en.wikipedia.org/wiki/State_diagram
Заголовок, (Title) документа по адресу, URL1:
State diagram - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)