Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° основС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ². Π›ΡŽΠ±ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅ количСсто состояний ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° опрСдСляСтся ΠΏΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ (Wikipedia).
БущСствуСт нСсколько Π²ΠΈΠ΄ΠΎΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²:

Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‡Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (Π”ΠšΠ)

Из любого состояниС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ символову, ΠΈΠ½Π°Ρ‡Π΅ этот Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ Π½Π΅Π΄Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½.
Π”ΠšΠ являСтся самым ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈΠ· всСх ΠΊΠΎΠ½Ρ‡Π΅Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ². Π•Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‹Π²Π°Ρ‚ΡŒ, всСгда ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ свСсти Π·Π°Π΄Π°Ρ‡Ρƒ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ Π”ΠšΠ. Но Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ НКА ΠΈ Ξ΅-НКА Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

НСдСтСрминированный ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚(НКА)

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ всС строки, состоящиС ΠΈΠ· символов [0, 1], Π³Π΄Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ символ Π±ΡƒΠ΄Π΅Ρ‚ 0.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

Ξ΅-НСдСтСрминированный ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (Ξ΅-НКА)

Ξ΅-НКА ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° НКА, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ Ξ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ считав, ΠΌΡ‹ смоТСм ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚
ΠŸΡ€ΠΈΠ½ΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ΠΆΠ΅ слова, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ

Π­ΠΊΠ²ΠΈΠ°Π»Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ

Π•ΡΡ‚ΡŒ свойство Ρƒ ΠΊΠΎΠ½Ρ‡Π΅Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² β€” это ΠΈΡ… ΡΠΊΠ²ΠΈΠ°Π»Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ. Π”ΠšΠ НКА Ξ΅-НКА. Благодаря этому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ спокойно ΠΈΠ· Ξ΅-НКА ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π”ΠšΠ, это Π½Π°ΠΌ сильно пригодится.

Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π² ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

РСализация

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°

Как ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‡Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ строку.
Для Π”ΠšΠ всС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. ΠœΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС (ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ считали, Ρ‚Π΅ΠΊ. сотояниС = Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС) ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ символу, ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² состояниС ΠΏΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°.

Для НКА вмСсто Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ мноТСство Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… состояний. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ НКА Π΄Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅.

ΠŸΡƒΡΡ‚ΡŒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ символу 0. Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ мноТСство состояний β€” мноТСство, состоящСС ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ β€” Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ. Π£ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ символу 0 => мноТСство состояний Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ 0, Q1>. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΏΠΎ символу 0. Из Q0 ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² Q0 ΠΈ Π² Q1, ΠΈΠ· Q1 Π² Q2 => нашС мноТСство Π±ΡƒΠ΄Π΅Ρ‚ 0, q1, q2>.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ξ΅-НКА ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ НКА. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ нашС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ мноТСство S. ΠŸΠ΅Ρ€Π΅Π΄ считываСниСм слСдущСго символа: для всСх q ∈ S Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² мноТСство S Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Π΅ΠΌΡƒΡŽ ΠΈΠ· q ΠΏΠΎ символу Ξ΅.

ДСтСрминация Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°

ΠŸΠ΅Ρ€Π΅Π²Π΅ΡΡ‚ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΈΠ· Π”ΠšΠ Π² НКА Π»Π΅Π³ΠΊΠΎ. Нам просто Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚.ΠΊ. Π”ΠšΠ это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ случай НКА.
Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ прСвСсти ΠΈΠ· Ξ΅-НКА Π² Π”ΠšΠ (НКА являСтся ΠΎΠ±ΠΎΠ±ΡˆΠ΅Π½Π½Ρ‹ΠΌ случаСм Ξ΅-НКА). Π­Ρ‚ΠΎΡ‚ процСсс называСтся Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°.

НачнСм ΠΎΠ±ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ наш Ξ΅-НКА, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DFS-ΠΎΠΌ. Π’Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ Π³Ρ€Π°Ρ„Π° являСтся мноТСство Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… состояний. Бостояниями Π½ΠΎΠ²ΠΎΠ³ΠΎ Π”ΠšΠ Π±ΡƒΠ΄ΡƒΡ‚ всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π°. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ€ΠΈΡˆΠ½Π΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ символ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ, ΠΈ добавляСм этот ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ псСвдокод DFS-a для большой ясности:

Если Π² мноТСствС Π΅ΡΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС, Ρ‚ΠΎ состояниС Π½ΠΎΠ²ΠΎΠ³ΠΎ Π”ΠšΠ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠΆΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ.

К соТалСнию число состояниС Π½ΠΎΠ²ΠΎΠ³ΠΎ Π”ΠšΠ Π±ΡƒΠ΄Π΅Ρ‚ расти ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚.ΠΊ. это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ памяти.

Алгоритм ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π”ΠšΠ

Π›ΡŽΠ±ΠΎΠΉ Π”ΠšΠ ΠΈΠΌΠ΅Π΅Ρ‚ эквиалСтный Π΅ΠΌΡƒ Π”ΠšΠ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом состояний. Как Π΅Π³ΠΎ Β«ΡΠΆΠ°Ρ‚ΡŒΒ»? Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΠΎΠ΅ состояниС?
БостояниС p ΠΈ q ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹ΠΌΠΈ, Ссли Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ слово s, Ρ‡Ρ‚ΠΎ прСходя ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ p ΠΏΠΎ слову s ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС, Π° ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ q Π² Π½Π΅-Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

1) Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ Π½Π΅-Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹ΠΌΠΈ. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΏΠΎ пустому слову ΠΈ окаТСмся Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹Ρ… состояниях.
2) Бостояния a ΠΈ b Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹. Если ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ состояния c ΠΈ d, ΠΈ ΠΈΠ· c Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ символу x Π² состояниС a, Π° ΠΈΠ· Π²Π΅Ρ€ΠΈΡˆΠ½Ρ‹ d Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ символу x Π² состояниС b, Ρ‚ΠΎ состояниС a ΠΈ b Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹.

ΠœΡ‹ нашли всС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹Π΅ состояния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Β«ΡΡ…Π»ΠΎΠΏΠ½ΡƒΡ‚ΡŒΒ» всС Π½Π΅Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹Π΅.

РСгулярныС выраТСния

РСгулярныС варТСния Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связаны с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°ΠΌΠΈ. Π’Π²Π΅Π΄Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обозначСния:
βˆ… β€” пустоС мноТСство.
Ξ΅ β€” строка, которая Π½Π΅ соТСрТит символов.

ΠŸΡƒΡΡ‚ΡŒ A ΠΈ B рСгулярныС выраТСния. L(A) ΠΈ L(B) β€” ΠΊΠΎΠ½Ρ‡Π΅Ρ‡Π½Ρ‹Π΅ языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ рСгулярныС варТСния Π·Π°Π΄Π°ΡŽΡ‚.

Π­Ρ‚ΠΎ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ ΠΊ рСгулярным Π²Π°Ρ€ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. МоТно Π²ΡΠ΅Ρ‚Ρ€ΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π½ΠΎ всС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны опСрациями Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹ΡˆΠ΅.

Π’ΠΎΡ‚ прСдставлСниС основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ Ξ΅-НКА.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

Π”Π°Π»Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ рСкурсивным спуском ΠΈ строим Ξ΅-НКА.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ РСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ построим для Ξ΅-НКА, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ· Ξ΅-НКА Π”ΠšΠ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (ΠΎΠ½ ΠΆΠ΅ машина состояний) Π½Π° чистом Π‘

ΠŸΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‰ΠΈΠΊ сталкивался с Π³Ρ€ΠΎΠΌΠ°Π΄Π½Ρ‹ΠΌΠΈ switch-case ΠΈ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π».
И ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ‚ΠΎ, начиная ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, задумывался ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ красиво, изящно, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π΅Ρ€Π΅Π· мСсяц Π±Ρ‹Π»ΠΎ понятно Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ ΠΎΡ‚ΠΆΠΈΡ€Π°Π»Π° всю ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΠ°ΠΊΠ°Π»Π° Π±Π°Π±ΠΎΡ‡ΠΊΠ°ΠΌΠΈ.
И Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят ΠΌΠ°ΡˆΠΈΠ½Ρ‹ состояний, ΠΎΠ½ΠΈ ΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ (Ρ‚Π΅ самыС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² рСгулярных выраТСниях).

БобствСнно Ρ‡Π΅Ρ€Π΅Π· рСгулярныС выраТСния я ΠΊ Π½ΠΈΠΌ ΠΈ ΠΏΡ€ΠΈΡˆΡ‘Π».

НСдавно ΠΌΠ½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ устройства с 4-мя ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ β€” Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹Ρ… наТатиях ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΄Π²ΡƒΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… дСйствий, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π°.

Поясню Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: Π΅ΡΡ‚ΡŒ 4 ΠΊΠ½ΠΎΠΏΠΊΠΈ β€” A, B, C, D ΠΈ кодовая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ACDA. Π’ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ B, C, A, D, A, C, D, A, B, устройство Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΆΠ΅Ρ‡ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΡƒ послС 8-Π³ΠΎ (прСдпослСднСго) наТатия. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π°Ρ‡Π° проста β€” ΠΈΡ‰Π΅ΠΌ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строкС подстроку Β«ACDAΒ». Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нашли β€” Π·Π°ΠΆΠΈΠ³Π°Π΅ΠΌ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΡƒ. Но Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с regexp Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ. Π― чувствовал Ρ‡Ρ‚ΠΎ всё ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ самому ΠΈ ΠΏΡ€ΠΎΡ‰Π΅. Π’ΠΎΠ³Π΄Π° я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ поиску Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ β€” Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ:

Основная Ρ‡Π΅Ρ€Ρ‚Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² β€” ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… состояний, Π½Π°Π±ΠΎΡ€ΠΎΠΌ сигналов (событий) ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² β€” это сопоставлСниС ΠΏΠ°Ρ€Π΅ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ сигнала Π½ΠΎΠ²ΠΎΠ³ΠΎ состояния.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ с 3 состояниями ΠΈ 3 сигналами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. По ΠΏΡ€ΠΈΡ…ΠΎΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сигнала Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π½ΠΎΠ²ΠΎΠ΅ состояниС.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ катастрофичСски Ρ€Π°Π·Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ количСства состояний ΠΈ сигналов.
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ΅ дСйствиС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ), Ρ‚ΠΎ это ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ ΠΊΡƒΡ‡Ρƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π° какая-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ошибка ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° прСвратится Π² Π°Π΄.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‚ΡŒ Π΄Π²ΡƒΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… switch β€” это Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΈ ΠΏΠΎ столбцу) ΠΈ вспомним Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π³Π΄Π΅ каТдая строка соотвСтствуСт сигналу, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц β€” ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Π° Π½Π° пСрСсСчСнии записано состояниС Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠ΄, Π·Π°Π΄Π°Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Ρ‚Π°Ρ„Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Π½Ρ‹Ρ… извСстСн ΠΊΠ°ΠΊ designated inits ΠΈ Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ Π² Π‘99.

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ β€” пишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ doFSM_table:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ состояниям Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°ΠΌ:

Π’ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ, Π½ΠΎ данная ΡΡ‚Π°Ρ‚ΡŒΡ ставит своСй Ρ†Π΅Π»ΡŒΡŽ Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ², Π° ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅ Ρ‡Π΅ΠΌ Β«Π² Π»ΠΎΠ±Β», ΠΏΡ€ΠΈ этом Π½Π΅ прибСгая Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ замысловатым Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ ΠΈΠ»ΠΈ языкам.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽΡΡ для Π·Π°Π΄Π°Ρ‡Π° поиска ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Π½Π°Ρ‡ΠΈΠ½Π°Π»:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Автомат Π½Π° PHP

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Автомат?

Π― объясню Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΌΠΎΠ»ΠΎΠΊΠΎ, Ρ‚ΠΎΠ³Π΄Π° такая Π·Π°Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ состояния:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π·Π° ΠΌΠΎΠ»ΠΎΠΊΠΎ

    ПоСздка ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π΄ΠΎΠΌΠΎΠΉ

    Π’Π΅Π·Π΄Π΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ (Ссли Π½Π΅ Π²ΠΎ всСх) бизнСс-процСссах, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²ΡƒΡ… «состояний». НапримСр: слуТбы доставки, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΡƒΠΏΠ»ΠΈ-ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, процСсс Π½Π°ΠΉΠΌΠ° ΠΈ Ρ‚.Π΄.

    Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Ссли Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ ΠΈΠ»ΠΈ ΠΎΠΏΡ‹Ρ‚ с ООП ΠΌΠ°Π» Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ воспринимайтС ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΊΠ°ΠΊ руководство ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ. ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Автоматы Π½Π΅ популярны коммСрчСской Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹Π΅ ΡˆΠ»ΡŽΠ·Ρ‹. Π—Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎ Π½ΠΈΡ… лишь ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ всС мыслимыС ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹.

    Π—Π°Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ΅Π½ ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Автомат?

    ВСрнСмся Π½Π°Π·Π°Π΄ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с ΠΌΠΎΠ»ΠΎΠΊΠΎΠΌ. Π—Π°Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ процСсс ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‚ А Π΄ΠΎ Π―?. Π—Π°Π³Π²ΠΎΠ·Π΄ΠΊΠ° Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ всСгда Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ случаСтся, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ошибки, нСдоразумСния ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

    Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ состояния для нас Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

    ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π·Π° ΠΌΠΎΠ»ΠΎΠΊΠΎ

    ПоСздка ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π΄ΠΎΠΌΠΎΠΉ

    МоТно Π΄Π°ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС состояний, Π½ΠΎ для нашСго исслСдования Ρ‚ΡƒΡ‚ Ρ…Π²Π°Ρ‚ΠΈΡ‚ основных. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ сТатиС состояний ΠΈ использованиС мСньшСго ΠΈΡ… количСства, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «ΡΠΎΡΡ‚ояниС ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ» ΠΈ «ΡΠΎΡΡ‚ояниС ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ ΠΌΠΎΠ»ΠΎΠΊΠ°» ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ просто Π² Β«ΠžΡ‚ΠΌΠ΅Π½Π°Β».

    Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс?

    milk = 0 Π½Π΅Ρ‚ ΠΌΠΎΠ»ΠΎΠΊΠ°, milk = 1 Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ»ΠΎΠΊΠΎ

    money = ΠΊΠΎΠ»-Π²ΠΎ Π΄Π΅Π½Π΅Π³ Π² ΠΊΠ°Ρ€ΠΌΠ°Π½Π΅

    price = Ρ†Π΅Π½Π° ΠΌΠΎΠ»ΠΎΠΊΠ°

    stock_milk = количСство ΠΌΠΎΠ»ΠΎΠΊΠ° Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅

    store_open = 0 ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π·Π°ΠΊΡ€Ρ‹Ρ‚, = 1 ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚

    gas = Π±Π΅Π½Π·ΠΈΠ½ ΠΌΠΎΠ΅ΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹

    Π’Π°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояния ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹:

    БостояниС послС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°

    Когда Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄?

    ПоСздка за молоком

    Когда milk = 0 и gas > 0

    ΠžΡ‚ΠΌΠ΅Π½Π° ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ (это ΠΊΠΎΠ½Π΅Ρ† процСсса)

    store_open = 1 ΠΈ stock_milk > 0

    store_open = 0 ΠΈΠ»ΠΈ stock_milk = 0

    ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π·Π° ΠΌΠΎΠ»ΠΎΠΊΠΎ

    (это Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ milk +1)

    Π½Π΅Π²Π΅Ρ€Π½ΠΎ, Π° money (Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹) ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

    ΠŸΡΡ‚Π°Ρ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΌΡ‹ объСдиним всС это вмСстС.

    ВСстированиС с использованиСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

    Если конфигурация Π²Π΅Ρ€Π½Π°, Ρ‚ΠΎ Π½Π° страницС Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ экран.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями: milk = 0, money = 999 ΠΈ gas = 10 ΠΈ Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Create a new job«. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π΄Π°Ρ‡Π° Π±Ρ‹Π»Π° создана ΠΈ ΠΏΠ΅Ρ€Π΅ΡˆΠ»Π° ΠΈΠ· состояния «Π’ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ автомобиля»(1) Π² состояниС » ΠšΡƒΠΏΠΈΡ‚ΡŒ ΠΌΠΎΠ»ΠΎΠΊΠΎ»(2).

    Π”Π°Π²Π°ΠΉΡ‚Π΅ установим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния, store_open=1 ΠΈ stock_milk=1 ΠΈ Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Set field values (ΠΎΠ½Π° установит Π½ΠΎΠ²Ρ‹Π΅ значСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ всС условия).

    ЗамСчания ΠΈ прСдлоТСния

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

    ВСория вычислСний. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹

    Π­Ρ‚ΠΎ Π΄ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π° упрощСнная модСль ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ число состояний, которая ΠΆΠ΅Ρ€Ρ‚Π²ΡƒΠ΅Ρ‚ всСми особСнностями ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠžΠ—Π£, постоянная ΠΏΠ°ΠΌΡΡ‚ΡŒ, устройства Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ процСссорными ядрами Π² ΠΎΠ±ΠΌΠ΅Π½ Π½Π° простоту понимания, удобство рас­суТдСния ΠΈ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

    Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ КА ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ, рСгулярныС выраТСния, лСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ИИ Π² ΠΈΠ³Ρ€Π°Ρ… ΠΈ Ρ‚Π΄.

    Π£ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² имССтся Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°, стартовоС состояниС ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ состояниС.

    Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² β€” Π’ Π½Π΅ΠΉ хранятся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ рСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

    Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ· состояния 0 Π² состояниС 1 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ символ ‘a’, ΠΈΠ· состояния 1 Π² состояниС 2, Ссли символ ‘b’.

    Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС β€” мноТСство состояний Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

    Π‘Ρ‚Π°Ρ€Ρ‚ΠΎΠ²ΠΎΠ΅ состояниС β€” состояниС ΠΎΡ‚ΠΊΡƒΠ΄Π° КА Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

    Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ состояниС β€” мноТСство состояний Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ символов, Π² ΠΈΠ½ΠΎΠΌ случаС ΠΎΡ‚Π²Π΅Ρ€Π³Π°Π΅Ρ‚.

    Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ (deterministic finite automaton)

    ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ КА, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ состояниС Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ.

    Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ β€” для всСх состояний имССтся максимум ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для любого Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для состояния 1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ символом.

    НСдСтСрминированныС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ (nondeterministic finite automaton)

    НКА Π½Π΅ являСтся ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ сущСствСнным ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π”ΠšΠ, просто Π² Π½Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ синтаксичСский сахар, Π² Π²ΠΈΠ΄Π΅ свободных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², нСдСтСрминированности ΠΈ мноТСств состояний. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ массив состоящий ΠΈΠ· структур Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится состояниС, Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ символ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС.

    Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ (эпсилон ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹) β€” ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π±Π΅Π· чтСния Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа.

    ΠΠ΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ β€” ноль ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² для ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π² ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ состояниях.

    ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° состояний β€” Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ НКА ΠΌΠΎΠΆΠ΅Ρ‚ находится Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… состояниях.

    Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ состояниС обозначаСтся Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΊΡ€ΡƒΠ³ΠΎΠΌ.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    Π’ стартовом состоянии Ρƒ нас Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ состояниСм являСтся <1>, ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ символС ‘b’ Ρƒ нас появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠΉΡ‚ΠΈ Π² состояниС 1 ΠΈ Π² состояниС 2, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ послС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа ‘b’ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ состояниСм являСтся мноТСство <1, 2>.

    Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ обозначаСтся ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ Π΄Π²Π° свободных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΈΠ· стартового состояния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· чтСния Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа ΠΌΡ‹ сразу находимся Π² мноТСствС состоянии <2, 4>.

    Для прСобразования НКА Π² Π”ΠšΠ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Вомпсона.
    ΠŸΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ НКА Π² Π”ΠšΠ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅ совсСм ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π”ΠšΠ ΠΈ для Π΅Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ БрТозовского.

    ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ с ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (pushdown automaton)

    Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ КА, Π½ΠΎ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Π²ΠΈΠ΄Π΅ стСка. Π’Π΅ΠΏΠ΅Ρ€ΡŒ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ нСсколько Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², символ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· стСка ΠΈ символы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² стСк.

    КАМП ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΈΡ… мСстах, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ языков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ подсчСту Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… скобок Π² матСматичСских выраТСниях. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ КА Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, вСдь количСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… состояний ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стСка (я понимаю, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°).

    Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ символа ΠΈΠ· стСка β€” ΠΏΡ€ΠΈ любом ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊΠΎΠΉ символ Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ, Ссли Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка Π½Π΅ оказалось Ρ‚Π°ΠΊΠΎΠ³ΠΎ символа, Ρ‚ΠΎ ΠΎΠ½ ΠΈ Π½Π΅ выталкиваСтся. Π’Π°ΠΊ ΠΆΠ΅ Ссли символ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² стСкС, Ρ‚ΠΎ ΠΎΠ½ добавляСтся вмСстС с добавляСмыми символами.

    Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ символов Π² стСк β€” ΠΏΡ€ΠΈ любом ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ символы Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² стСк.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    Π­Ρ‚ΠΎΡ‚ КАМП подсчитываСт Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ скобок, Π·Π° счСт добавлСния ΠΈ удалСния символов ΠΈΠ· стСка.

    Π”ΠΠœΠŸ Π½Π΅ Ρ€Π°Π²Π΅Π½ НАМП, поэтому Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ НАМП ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ прСимущСством ΠΏΠ΅Ρ€Π΅Π΄ Π”ΠΠœΠŸ.

    Машина Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° (Turing machine)

    Бамая мощная машина ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…, Π΅Π³ΠΎ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π² Π»Π΅Π½Ρ‚Π΅ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ…ΠΎΡ‡Π΅Ρ‚. Π’ Π½Π΅ΠΌ Π½Π΅Ρ‚ свободных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². Π£ΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ КА, КАМП.

    Π›Π΅Π½Ρ‚Π° β€” это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° счСт Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π°Π΄ ячСйкой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

    Π¨Π°Π±Π»ΠΎΠ½: считаный_символ_с_Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ/записаный_символ; сторона_смСщСния_Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. края Π»Π΅Π½Ρ‚Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ‘_’.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    Π­Ρ‚Π° МВ выполняСт ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ числа, Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° стоит слСва, Ρ‚Π°ΠΌ Π³Π΄Π΅ начинаСтся Π»Π΅Π½Ρ‚Π°.

    Π”ΠœΠ’ эквивалСнтСн НМВ, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.

    Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ машина Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° (universal Turing machine)

    Машина которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°, получая Π½Π° Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ Π»Π΅Π½Ρ‚Ρƒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

    ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ: Π³Π΄Π΅ ΠΌΡ‹ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ

    ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Антон Π‘ΡƒΠ±Π±ΠΎΡ‚ΠΈΠ½, я выпускник курса «Мидл Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ» Π² ЯндСкс.ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ ΠΌΡ‹ с наставником курса Π—Π°Ρ…Π°Ρ€ΠΎΠΌ ΠžΠ²Ρ‡Π°Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π²Π΅Π±ΠΈΠ½Π°Ρ€, посвящённый ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°ΠΌ ΠΈ ΠΈΡ… практичСскому ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ. Π’Π΅Π±ΠΈΠ½Π°Ρ€ получился интСрСсным, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΏΠΎ Π΅Π³ΠΎ слСдам я написал ΡΡ‚Π°Ρ‚ΡŒΡŽ для Medium Π½Π° английском языкС. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ запись Π²Π΅Π±ΠΈΠ½Π°Ρ€Π°. Однако ΠΌΡ‹ с Π—Π°Ρ…Π°Ρ€ΠΎΠΌ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ: пСрСвСсти Π½Π° русский ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‘ здСсь, Π½Π° Π₯Π°Π±Ρ€Π΅. Π Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с прСдысториСй β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Ρ‡Π½Ρ‘ΠΌ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΈΡ€ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ².

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ с счастливым ΠΈ грустным Π’Π°ΡΡŒΠΊΠΎΠΉ

    ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹

    Для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π΄ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (finite-state machine, FSM) β€” это матСматичСская абстракция, модСль, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ числа состояний Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Автомат ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ состояния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π°ΡŽΡ‚ΡΡ Π½Π° Π²Ρ…ΠΎΠ΄; ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния называСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ. FSM опрСдСляСтся списком Π΅Π³ΠΎ состояний, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ состояниСм ΠΈ ΠΈΠ½ΠΏΡƒΡ‚Π°ΠΌΠΈ, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹.

    Π’ΠΎΡ‚ ΠΈ всё β€” Ρƒ нашСго Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ количСство состояний, ΠΎΠ½ находится Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Π΅Ρ‰Ρ‘ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями. Для наглядности прСдставим ΠΊΠΎΡ‚Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π’Π°ΡΡŒΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ счастливым ΠΈΠ»ΠΈ грустным. ΠŸΡ€ΡΠΌΠΎ сСйчас Π’Π°ΡΡŒΠΊΠ° счастлив. Когда Π²Ρ‹ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚Π΅, ΠΎΠ½ грустит, Π° ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ β€” снова счастлив. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ кошкам Π½Π°ΠΏΠ»Π΅Π²Π°Ρ‚ΡŒ, Π΄ΠΎΠΌΠ° Π²Ρ‹ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π½ΠΎ наш Π’Π°ΡΡŒΠΊΠ° Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ. Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠΆΠ΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ связь:

    Π­Ρ‚ΠΎ самый простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ обсудим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² ΠΈ напишСм ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с нуля, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΡˆΠΈΠΌ ΠΏΠ°Ρ€Ρƒ Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°. Π’ΠΏΠ΅Ρ€Ρ‘Π΄!

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

    FSM ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для описания Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для модСлирования практичСски любого процСсса. НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

    Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ послСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ чтСния. Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ состояниСм. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π»ΠΈ нСкая строка ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ языку, ΠΈ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ Π΅Ρ‘. ΠœΡ‹ ΡƒΠΆΠ΅ обсуТдали Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ состояния ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ потрСбуСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

    Π’ΠΎΡ‚ наш Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ состояниСм:

    Π£ нас получился Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ Π½Π° основС классов, способный ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ случайныС значСния Π½Π° соотвСтствиС своим опрСдСлСниям. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр со всСми Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся.

    Π‘Ρ…Π΅ΠΌΠ° Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

    ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ происходят Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈ Ρƒ любого состояния ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ для символов 0 ΠΈ 1. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

    ИспользованиС ΠΈ тСстированиС

    ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ! ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ символы для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния β€” ΠΊΠΎΠ³Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ встрСчаСт Π½Π΅ прописанный Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅ символ, ΠΎΠ½ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

    БлоТная Ρ„ΠΎΡ€ΠΌΠ°

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β€” довольно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ. Вряд Π»ΠΈ Π²Π°ΠΌ часто придётся Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ссли придётся Π²ΠΎΠΎΠ±Ρ‰Π΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” создадим Ρ„ΠΎΡ€ΠΌΡƒ с нСсколькими состояниями Π² UI-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ FSM. Код Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° доступСн Π½Π° CodeSandbox, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½Π΅ΠΌΡƒ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

    Для Π½Π°Ρ‡Π°Π»Π° создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² React:

    Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    App.js ΠΈ index.js Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. FSM.js Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ FSM, напишСм Π΅Ρ‘:

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Π°Π»Ρ„Π°Π²ΠΈΡ‚ ΠΈ состояния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ:

    Π”Π°Π²Π°ΠΉΡ‚Π΅ протСстируСм ΠΊΠΎΠ΄ Π½Π° нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Π’Π°ΡΡŒΠΊΠΎΠΉ. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» test.js :

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ запуститС Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ node test.js (ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²). Π’Ρ‹Π²ΠΎΠ΄ Π½Π° консоли Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

    Автомат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ настроСния Π’Π°ΡΡŒΠΊΠΈ:

    ЗапуститС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ снова.

    Π’Π°ΡΡŒΠΊΠ° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всСгда счастлив, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ бросаСм Π΅Π³ΠΎ. Если послС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° состояниС β€” грустноС, срабатываСт Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ возвращСния, ΠΈ ΠΊΠΎΡ‚ снова счастлив.

    ΠŸΠΎΡ…ΠΎΠΆΠ΅, всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅: создадим Π°Π½ΠΊΠ΅Ρ‚Ρƒ с нСсколькими состояниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для управлСния интСрфСйсом. Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ имя ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ β€” студСнт, ΠΌΡ‹ спросим, Π² ΠΊΠ°ΠΊΠΎΠΌ унивСрситСтС ΠΎΠ½ учится. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС спросим, Π³Π΄Π΅ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ с этапа Education / Work ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ этапу Personal, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ имя. НаконСц, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π°Π½ΠΊΠ΅Ρ‚Ρƒ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ любого ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² занятости.

    НСбольшая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ стало понятнСС:

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚
    Автомат, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π°ΡˆΡƒ Π°Π½ΠΊΠ΅Ρ‚Ρƒ

    Когда стало ясно, ΠΊΠ°ΠΊΠΈΠ΅ состояния Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ соотносятся Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅: Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ зависимости:

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚

    Π€Π°ΠΉΠ» questionnaireMachine.js создаёт ΠΈ экспортируСт экзСмпляр Questionnaire FSM:

    Questionnaire FSM

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ слоя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” самой Π°Π½ΠΊΠ΅Ρ‚Ρ‹. ΠœΡ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ Π΅Π³ΠΎ Π½Π° Ρ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ займёмся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ:

    Кнопки Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ дСйствия ΠΊΠ°ΠΊ listener для события ΠΊΠ»ΠΈΠΊΠ°. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ здСсь ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ состояниС FSM: Ρ‚Π°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π°Π½ΠΊΠ΅Ρ‚Ρ‹ смоТСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ uiState ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ.

    ПослСдняя ΠΌΠ΅Π»ΠΎΡ‡ΡŒ β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄Π΅Ρ€Π°. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного, просто анимированная Ρ‚ΠΎΡ‡ΠΊΠ°:

    НаконСц, добавляСм Π°Π½ΠΊΠ΅Ρ‚Ρƒ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ прилоТСния. ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ со стилями:

    Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° это. Если Π΄Π°, Π²ΠΎΠ·Ρ€Π°Π΄ΡƒΠΉΡ‚Π΅ΡΡŒ β€” Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали Π°Π½ΠΊΠ΅Ρ‚Ρƒ Π½Π° основС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°! Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, сравнитС свой ΠΊΠΎΠ΄ с содСрТимым этой пСсочницС. Π£ вас навСрняка получится Π½Π°Π²Π΅Ρ€ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅.

    АнкСта, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° логичСский ΠΈ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ слои, поэтому ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π΅Ρ‘ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ внСшний Π²ΠΈΠ΄ Π»Π΅Π³ΠΊΠΎ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠ΄Π½Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² любом числС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² β€” этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΡƒΡŽ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния.

    И Π΅Ρ‰Ρ‘ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный FSM с нуля β€” ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚, для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π·Π°Π΄Π°Ρ‡ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ XState. Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΈ подробная докумСнтация, ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ (ΠΈΡ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ большС, Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ).

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *