Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Автомат Π½Π° 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 (ΠΎΠ½Π° установит Π½ΠΎΠ²Ρ‹Π΅ значСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ всС условия).

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

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

    ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ стСйт-ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π° слуТбС Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π½Π° ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ программиста. Допустим, Π΅Π³ΠΎ Π·ΠΎΠ²ΡƒΡ‚ Вася ΠΈ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ΅Π½ΡŽΡˆΠΊΡƒ Π½Π° сайт/дСсктоп ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π°ΠΏΠΏ. Π—Π½Π°Π΅Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΅Π·ΠΆΠ°ΡŽΡ‚ свСрху Π²Π½ΠΈΠ·, ΠΊΠ°ΠΊ мСню Ρƒ ΠΎΠΊΠ½Π° Windows ΠΈΠ»ΠΈ мСню с яблочком Ρƒ OS X. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ΅.

    НачинаСт ΠΎΠ½ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ окошка, тСстируСт Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, выставляСт ease out 100% ΠΈ наслаТдаСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Но вскорС ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ мСнюшкой, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΎΠ½ΠΎ сСйчас ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠœΡ‹-Ρ‚ΠΎ с Π²Π°ΠΌΠΈ Ρ‚ΡƒΡ‚ программисты ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅, всС ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³. НС вопрос, Ρ„Π»Π°Π³ Π΅ΡΡ‚ΡŒ.

    Π’Ρ€ΠΎΠ΄Π΅, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но, Ссли быстро ΠΊΠ»ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅, мСню Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΌΠΎΡ€Π³Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡΡΡŒ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡΡΡŒ Π½Π΅ успСв Π΄ΠΎΠ°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ состояниС. Вася добавляСт Ρ„Π»Π°Π³ animating. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ Ρƒ нас Ρ‚Π°ΠΊΠΎΠΉ:

    Π§Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя ВасС говорят, Ρ‡Ρ‚ΠΎ мСню ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. НС вопрос! ΠœΡ‹-Ρ‚ΠΎ с Π²Π°ΠΌΠΈ Ρ‚ΡƒΡ‚ программисты ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅, всС ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, что… Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π•Π©Π• ΠžΠ”Π˜Π ЀЛАГ! И, всСго-Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΠ΄ мСню ΡƒΠΆΠ΅ пСстрит двустрочными IF-Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ:

    Вася Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ вопросами: ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ animating == true ΠΈ enabled == false; ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ Π½Π΅Π³ΠΎ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ всС Π³Π»ΡŽΡ‡ΠΈΡ‚; ΠΊΠ°ΠΊ Ρ‚ΡƒΡ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ поймСшь Π² ΠΊΠ°ΠΊΠΎΠΌ состоянии находится мСню. Ага! Бостояния. О Π½ΠΈΡ… дальшС ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

    Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ, это Вася.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

    БостояниС

    Вася ΡƒΠΆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ„Π»Π°Π³ΠΎΠ² Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысла, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠΉ слов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Disabled, Idle, Animating, Opened. ВсС ΠΌΡ‹ Ρ‚ΡƒΡ‚ программисты ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅, сразу вспоминаСм ΠΏΡ€ΠΎ state machines. Но, для Васи придСтся Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это ΠΈ Π·Π°Ρ‡Π΅ΠΌ. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ языком, Π±Π΅Π· всяких матСматичСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ².

    Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ мСнюшка. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ всСгда находится Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ состоянии ΠΈ рСагируя Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ этими состояниями ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ состояния, события ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ схСмами (ΠΊΡ€ΡƒΠΆΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ состояния):

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

    Из схСмы понятно, Ρ‡Ρ‚ΠΎ ΠΈΠ· состояния Inactive Π² Active ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Begin, Π° ΠΈΠ· состояния Paused ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΈ Π² Active, Ρ‚Π°ΠΊ ΠΈ Π² Inactive. Π’Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Автомат» ΠΈΠ»ΠΈ Β«Finite State MachineΒ», Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡƒΠ³Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… людСй.

    По Π·Π°Π²Π΅Ρ‚Ρƒ ООП, состояния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ скрыты Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ просто Ρ‚Π°ΠΊ снаруТи Π½Π΅ доступны. НапримСр, Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 20 Ρ€Π°Π·Π½Ρ‹Ρ… состояний, Π½ΠΎ внСшнСС API Π½Π° вопрос Β«Ρ‡ΠΎ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°?Β» ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Β«Π½ΠΈΡ‡ΠΎ Ρ‚Π°ΠΊΒ» Π½Π° 19 ΠΈΠ· Π½ΠΈΡ… ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° 1 ругаСтся ΠΌΠ°Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ проср*Π»ΠΈ всС ΠΏΠΎΠ»ΠΈΠΌΠ΅Ρ€Ρ‹.

    БлСдуя ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ стСйт машин, ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ясно Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ВсСгда Π±ΡƒΠ΄Π΅Ρ‚ понятно, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ, Ссли систСма Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»Π°ΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² нСдоступноС ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ состояния состояниС. А события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΄Ρ€ΡƒΠ³ посмСли ΠΏΡ€ΠΈΠΉΡ‚ΠΈ Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ врСмя, ΠΌΠΎΠΆΠ½ΠΎ смСло ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π΅ Π±ΠΎΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сломаСтся.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

    Бамая простая Π² ΠΌΠΈΡ€Π΅ стСйт машина

    Допустим, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Вася Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° C# ΠΈ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½Π° простая стСйт машина для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Он ΠΏΠΈΡˆΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ:

    А Π²ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ события Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния:

    Но, ΠΌΡ‹-Ρ‚ΠΎ с Π²Π°ΠΌΠΈ Ρ‚ΡƒΡ‚ программисты ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅, всС ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ setState Π² ΠΈΡ‚ΠΎΠ³Π΅ разрастСтся Π½Π° ΠΏΠ°Ρ€Ρƒ дСсятков страниц, Ρ‡Ρ‚ΠΎ (ΠΊΠ°ΠΊ написано Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ…) Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

    State Pattern

    ΠŸΠΎΠ³ΡƒΠ³Π»ΠΈΠ² ΠΏΠ°Ρ€Ρƒ часов, Вася Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ State Pattern идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄Π°Π½Π½ΠΎΠΉ ситуации. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ программисты всС врСмя ΡΠΎΡ€Π΅Π²Π½ΡƒΡŽΡ‚ΡΡ ΠΊΡ‚ΠΎ большС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ…Π½Π΅Ρ‚ Π² свой Π°ΠΏΠΏ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Вася, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ это Π΄Π΅Π»ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅.

    НапримСр, для State Pattern ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ интСрфСйс IState:

    И ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ классу для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ этот интСрфСйс имплСмСнтят. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ выглядит красиво ΠΈ 100% ΠΏΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΡƒ.

    Но, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ нСсчастной ΠΌΠ΅Π»ΠΊΠΎΠΉ стСйт ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½ΡƒΠΆΠ½ΠΎ Π³ΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΠΉΠΌΡƒ классов, Ρ‡Ρ‚ΠΎ само ΠΏΠΎ сСбС нСбыстро. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ начнутся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с доступом ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Π“Π΄Π΅ ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ? Π’ основном классС? А ΠΊΠ°ΠΊ классы-состояния ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΊ Π½ΠΈΠΌ доступ? А ΠΊΠ°ΠΊ ΠΌΠ½Π΅ Ρ‚ΡƒΡ‚ Π·Π° 15 ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π΅Π΄Π»Π°ΠΉΠ½ΠΎΠΌ Π²ΠΏΠΈΠ»ΠΈΡ‚ΡŒ быстро ΠΌΠ΅Π»ΠΊΠΈΠΉ Ρ…Π°ΠΊ Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»? И ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ взаимодСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сильно Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

    РСализация Π½Π° основС особСнностСй языка

    НСкоторыС языки программирования ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’ Ruby, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ DSL (ΠΈ Π½Π΅ ΠΎΠ΄ΠΈΠ½) для создания ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ². А Π² C# ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Reflection. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ:

    Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² систСму ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅, Вася ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π΅ Ρ‚ΠΎΠΆΠ΅ большС минусов, Ρ‡Π΅ΠΌ плюсов:

    Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

    А Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Вася ΡƒΠΆΠ΅ вовсю стал Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² Ρ‚Π΅ΠΎΡ€ΠΈΡŽ стСйт машин ΠΈ Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡ… ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· API ΠΈΠ»ΠΈ (ΠΎ Π‘ΠΎΠΆΠ΅) Ρ‡Π΅Ρ€Π΅Π· XML, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΡ€ΡƒΡ‚ΠΎ. ΠœΡ‹-Ρ‚ΠΎ с Π²Π°ΠΌΠΈ Ρ‚ΡƒΡ‚ программисты ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅, всС ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ подходят, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ всСх Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ нСдостаток.

    Вася Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ быстро ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ стСйт ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π±Π΅Π· нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ВсС Π²ΠΎΠΊΡ€ΡƒΠ³ Π±ΡƒΠ΄ΡƒΡ‚ вСсСлы ΠΈ ТизнСрадостны.

    Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» мноТСство Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках, нСсколько ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… написал сам. И всСгда для описания ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° срСдствами Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ большС ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ Π² простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ВсС ΠΎΠ½ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ ограничСния, Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π΄Π΅Π»Π°Ρ‚ΡŒ сразу ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ всСго, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ‚ΡƒΡ‚ всС-Ρ‚Π°ΠΊΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ стСйт ΠΌΠ°ΡˆΠΈΠ½Ρƒ, приходится ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя Ρ€Ρ‹Ρ‚ΡŒΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

    Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, описаниС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ stateless:

    Но, ΠΏΡ€ΠΎΠ±ΠΈΠ²ΡˆΠΈΡΡŒ Ρ‡Π΅Ρ€Π΅Π· созданиС стСйт ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π’ основном это: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², синхронизация зависимых стСйт машин ΠΈ суб-стСйт машин ΠΈ всячСская Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π΄ΡƒΡ€Π°ΠΊΠ°.

    XML β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π»ΠΎ. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для написания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ². Π‘Ρ‚Π°Π΄ΠΎ Π»Π΅ΠΌΠΌΠΈΠ½Π³ΠΎΠ² java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя молилось Π½Π° Π½Π΅Π³ΠΎ. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ‚ Π·Π°Ρ‡Π΅ΠΌ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ XML, Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π±ΠΈΡ‚ΡŒ всСх, ΠΊΡ‚ΠΎ пытаСтся ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ.

    Вася Ρ‚ΠΎΠΆΠ΅ загорСлся ΠΈΠ΄Π΅Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ всС ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² XML ΠΈ НЕ ПИБАВЬ НИ БВРОЧКИ ΠšΠžΠ”Π! Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π² Π΅Π³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π»Π΅ΠΆΠ°Ρ‚ XML Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ содСрТания:

    Класс! И Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ программирования. Но, ΠΌΡ‹-Ρ‚ΠΎ с Π²Π°ΠΌΠΈ Ρ‚ΡƒΡ‚ программисты ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅, всС ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ ΡƒΡˆΠ»ΠΎ. Вася Π·Π°ΠΌΠ΅Π½ΠΈΠ» кусок ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° кусок Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΡ€ΠΈ этом Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ XML, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всС Π΅Ρ‰Π΅ Π² ΠΏΠ°Ρ€Ρƒ Ρ€Π°Π· услоТнил. А ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ это ΠΎΡ‚Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках ΠΈ разбросан ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

    БоглашСниС

    И Ρ‚ΡƒΡ‚ ВасС всС это Π½Π°Π΄ΠΎΠ΅Π»ΠΎ ΠΈ ΠΎΠ½ вСрнулся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ самому простому Π² ΠΌΠΈΡ€Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρƒ. Он Π΅Π³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π» ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½Π΅ΠΌ ΠΊΠΎΠ΄.

    UPDATE: спасибо Π·Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ нСбольшого объяснСния.

    Π£ нас Π΅ΡΡ‚ΡŒ нСсколько состояний. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ β€” это транзакция ΠΈΠ· Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ всС происходят всСгда вмСстС, Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΠΈΠ½ΠΈΡ‚ΡŒΡΡ Π΅Ρ‰Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ смСнС состояния с A Π½Π° B происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: выполняСтся ΠΊΠΎΠ΄ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· состояния A, состояниС мСняСтся с A Π½Π° B, выполняСтся ΠΊΠΎΠ΄ Π²Ρ…ΠΎΠ΄Π° Π² состояниС B.

    Для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° состояниС A Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ stateA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ setState(A). Π‘Π°ΠΌΠΎΠΌΡƒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ setState(A) ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся.

    UPDATE: Π’ setState() ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· состояния, Π° Π² stateB() Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° спСцифичСская Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· состояния A ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π² B. Но ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

    ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ соглашСниС для написания стСйт машин. Оно достаточно Π³ΠΈΠ±ΠΊΠΎΠ΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»ΡŽΡΡ‹:

    Как ΠΈ Π²ΠΎ всСх ΡΠΎΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡΡ…, ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ спСрва Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Ρƒ Π½Π΅Π³ΠΎ появится Π΄Ρ€ΡƒΠ³ΠΎΠΉ смысл, ΠΈΠ»ΠΈ окаТСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π³Π΄Π΅-Ρ‚ΠΎ дублируСтся. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ пСрСнСсти Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто. Никто Π½Π°ΠΌ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚. ВсС-Ρ‚Π°ΠΊΠΈ ΠΊΠΎΠ΄ Π½Π΅ вытСсан ΠΈΠ· камня, это всСго лишь тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ (ΠΎ уТас!) ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    UPDATE: Π° setState() Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ сСттСром для наглядности.

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    На этом заканчиваСтся ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Васи Π² ΠΌΠΈΡ€Π΅ стСйт машин. А вСдь Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π΅Ρ‰Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ всСго интСрСсного. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΏΠΈΠΊΠ° Π±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ заслуТили ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ зависимыС стСйт ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

    Π― надСюсь, Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ стСйт ΠΌΠ°ΡˆΠΈΠ½Ρ‹ повсСмСстно, эта ΡΡ‚Π°Ρ‚ΡŒΡ пСрСтянСт вас Π½Π° сторону Π΄ΠΎΠ±Ρ€Π°; Ссли Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ свой ΡƒΠ±Π΅Ρ€Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стСйт машинами, ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ свСТим взглядом ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ вас получаСтся.

    Π― надСюсь, Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ Π³Π΄Π΅ ΠΈ ΠΊΠΎΠ³Π΄Π° стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, ΠΈ Ρ‡Ρ‚ΠΎ описанноС соглашСниС ΠΏΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ стСйт машин окаТСтся ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

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

    ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм: машина с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний

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

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

    ЦСль этой ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ основы вычислСний. Если это окаТСтся интСрСсным, Ρ‚ΠΎ Π² дальнСйшСм я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Ρ‚ΠΎΠΏΠΈΠΊ Π½Π° эту Ρ‚Π΅ΠΌΡƒ, Π½ΠΎ прямо сСйчас я Ρ…ΠΎΡ‡Ρƒ просто Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ абстрактного Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ устройства β€” ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний (finite state machine).

    Машина с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний

    Машина с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний (finite state machine, FSM), ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (finite automaton) β€” это матСматичСская абстракция, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Говоря простым языком, машина с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний ΡƒΠΌΠ΅Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Когда ΠΎΠ½Π° считываСт Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ сигнал, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π½ΠΎΠ²ΠΎΠ΅ состояниС. ΠšΡƒΠ΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π΄Π°Π½Π½Ρ‹ΠΉ сигнал, β€” Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΎ Π² Π΅Ρ‘ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии. Π—Π²ΡƒΡ‡ΠΈΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ всё ΠΎΡ‡Π΅Π½ΡŒ просто.

    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ устройство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ Π±ΡƒΠΌΠ°ΠΆΠ½ΡƒΡŽ Π»Π΅Π½Ρ‚Ρƒ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ дюймС этой Π»Π΅Π½Ρ‚Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π° Π±ΡƒΠΊΠ²Π° β€” a ΠΈΠ»ΠΈ b.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

    Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ устройство считываСт Π±ΡƒΠΊΠ²Ρƒ, ΠΎΠ½ΠΎ мСняСт своё состояниС. Π’ΠΎΡ‚ ΠΎΡ‡Π΅Π½ΡŒ простой Π³Ρ€Π°Ρ„ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² для Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

    ΠšΡ€ΡƒΠΆΠΊΠΈ β€” это состояния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… машина ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ. Π‘Ρ‚Ρ€Π΅Π»ΠΎΡ‡ΠΊΠΈ β€” ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² состоянии s ΠΈ считываСтС a, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² состояниС q. А Ссли b, Ρ‚ΠΎ просто ΠΎΡΡ‚Π°Ρ‘Ρ‚Π΅ΡΡŒ Π½Π° мСстС.

    Π˜Ρ‚Π°ΠΊ, Ссли ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ находимся Π² состоянии s ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»Π΅Π½Ρ‚Ρƒ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ рисунка слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Ρ‚ΠΎ сначала Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π° a, ΠΈ ΠΌΡ‹ пСрСмСстимся Π² состояниС q, Π·Π°Ρ‚Π΅ΠΌ b β€” вСрнёмся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² s. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ b оставит нас Π½Π° мСстС, Π° a вновь пСрСмСстит Π² q. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎ, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π² этом смысл?

    ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ссли ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»Π΅Π½Ρ‚Ρƒ с Π±ΡƒΠΊΠ²Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· FSM, Ρ‚ΠΎ ΠΏΠΎ Π΅Ρ‘ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΡƒΠΊΠ². Для ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Π³ΠΎ Π²Ρ‹ΡˆΠ΅ простого ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС s ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»Π΅Π½Ρ‚Π° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ Π±ΡƒΠΊΠ²ΠΎΠΉ b. Если ΠΆΠ΅ ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ Π² состоянии q, Ρ‚ΠΎ послСднСй Π½Π° Π»Π΅Π½Ρ‚Π΅ Π±Ρ‹Π»Π° Π±ΡƒΠΊΠ²Π° a.

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

    Π’Π°ΠΊΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для прСдставлСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΏΠ°Ρ€ΠΊΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ счётчика, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° с Π³Π°Π·ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ насоса ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡˆΡ‚ΡƒΠΊ.

    ДСтСрминированная машина с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний (Deterministic Finite State Machine)

    ΠœΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассматривали Π²Ρ‹ΡˆΠ΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Π£ Π½ΠΈΡ… ΠΈΠ· любого состояния сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ для любого Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сигнала. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½Π΅ сущСствуСт Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ состояния, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ считываСтС, допустим, Π±ΡƒΠΊΠ²Ρƒ a. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ каТСтся Π³Π»ΡƒΠΏΡ‹ΠΌ.

    НСдСтСрминированная машина с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний (Nondeterministic Finite State Machine)

    Π˜Ρ‚Π°ΠΊ, Π½Π°Π΄ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρƒ a с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π½ΡƒΠ»Ρ‘ΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π±ΡƒΠΊΠ² b ΠΈΠ»ΠΈ c ΠΈ с Π·Π°ΠΌΡ‹ΠΊΠ°ΡŽΡ‰Π΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π±ΡƒΠΊΠ²ΠΎΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний прСдставлСн Π½ΠΈΠΆΠ΅. ЀинальноС состояниС t ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ строка Π±Ρ‹Π»Π° принята Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈ соотвСтствуСт ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

    На этом ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ основан Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Они ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ всС возмоТности всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ…ΠΎΠ΄ΠΎΠ² Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Ρ‚Ρƒ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, которая Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Π°Ρ‘Ρ‚ максимальноС прСимущСство Π½Π°Π΄ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΎΠΌ.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ машина состояний

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

    Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ занимались Π»ΡŽΠ±Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ программирования, Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с рСгулярными выраТСниями (regular expressions). РСгулярныС выраТСния ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ эквивалСнтны. Всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ для (ΠΈΠ»ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с) рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ для (ΠΈΠ»ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с) ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ. НапримСр, шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с

    Π­Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ извСстно ΠΊΠ°ΠΊ Π»Π΅ΠΌΠΌΠ° ΠΎ Π½Π°ΠΊΠ°Ρ‡ΠΊΠ΅ для рСгулярных языков. Π•Ρ‘ основная ΠΌΡ‹ΡΠ»ΡŒ: Ссли ваш шаблон ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρ‘Π½ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Ρ‚ΠΎ этот шаблон Π½Π΅ являСтся рСгулярным. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½ΠΈ рСгулярныС выраТСния, Π½ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сконструированы Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ всС строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с шаблоном.

    Машина Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°

    Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅ Π½Π°ΠΌ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ нСрСгулярныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹? БущСствуСт тСорСтичСскоС устройство, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρƒ ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ машиной Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° (Turing Machine). Как ΠΈ Ρƒ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний, Ρƒ Π½Π΅Π³ΠΎ имССтся бумаТная Π»Π΅Π½Ρ‚Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ считываСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Однако, машина Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° Ρ‚Π°ΠΊΠΆΠ΅ способна Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π»Π΅Π½Ρ‚Π΅. ПолноС объяснСниС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² этого устройства Π·Π°ΠΉΠΌΡ‘Ρ‚ большС мСста, Ρ‡Π΅ΠΌ Ρƒ нас здСсь имССтся, поэтому я ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Ρƒ лишь нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², относящихся ΠΊ нашСй дискуссии ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний ΠΈ рСгулярных выраТСниях.

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

    Машина Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° прСдоставляСт Π½Π°ΠΌ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ мСханичСскоС устройство, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для понимания ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠ² вычислСний. Если это интСрСсно, Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ машинС Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?

    ПониманиС, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом состояний ΠΈ рСгулярныС выраТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ эквивалСнтны, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ нСвСроятно интСрСсныС способы примСнСния Π΄Π²ΠΈΠΆΠΊΠΎΠ² рСгэкспов. ОсобСнно, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ создания бизнСс-ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π±Π΅Π· пСрСкомпиляции всСй систСмы.

    Π—Π½Π°Π½ΠΈΠ΅ основ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм позволяСт Π²Π°ΠΌ Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ X, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ понятия Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: «Π― Π½Π΅ знаю, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ X, Π½ΠΎ я знаю, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Y ΠΈ ΠΊΠ°ΠΊ привСсти Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Y ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ для X. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я знаю, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ X».

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

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

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

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

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

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

    Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ· состояния 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)

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

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

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

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