From d0e02080ee012fd76eb9dfe58cef49a79fec74d5 Mon Sep 17 00:00:00 2001 From: Lieselotte <52315535+she3py@users.noreply.github.com> Date: Fri, 31 Jan 2025 15:07:34 +0100 Subject: [PATCH] Add finite-state-machine topic --- topics/finite-state-machine/index.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 topics/finite-state-machine/index.md diff --git a/topics/finite-state-machine/index.md b/topics/finite-state-machine/index.md new file mode 100644 index 00000000000..0e126ecf43b --- /dev/null +++ b/topics/finite-state-machine/index.md @@ -0,0 +1,13 @@ +--- +aliases: finite-state-machines, fsm, finite-state-automaton, finite-state-automata, finite-state-automatons, fsa, finite-automaton, finite-automata, finite-automatons, state-machine +display_name: Finite-state machine +related: automaton, deterministic-finite-automaton, nondeterministic-finite-automaton +short_description: A formalism consisting of a finite set of states and a transition function describing when to move from one state to another. +topic: finite-state-machine +wikipedia_url: https://en.wikipedia.org/wiki/Finite-state_machine +--- +A **finite-state machine** (FSM), **finite-state automaton** (FSA), or simply **state machine** is a mathematical [model of computation](https://en.wikipedia.org/wiki/Model_of_computation) and an [abstract machine](https://en.wikipedia.org/wiki/Abstract_machine) that can be in exactly one of a finite number of states at any given time. +The FSM can change from one state to another in response to some inputs; the change from one state to another is called a *transition*. +An FSM is defined by a list of its states, its initial state, and the inputs that trigger each transition. + +In computer science, FSM are widely used in modeling of application behavior ([control theory](https://en.wikipedia.org/wiki/Control_theory)), design of [hardware digital systems](https://en.wikipedia.org/wiki/Digital_electronics), [software engineering](https://github.com/topics/software-engineering), [compilers](https://github.com/topics/compiler), [network protocols](https://en.wikipedia.org/wiki/Network_protocol), and [computational linguistics](https://en.wikipedia.org/wiki/Computational_linguistics).