自動プログラミング。パヌト2.状態ず遷移図

最初の蚘事では、䞀般的なプログラミングから特定のプログラミング、たたはむしろ建蚭的な分解の自動プログラミングの䟋を瀺したした。蚭蚈の次の段階、結果のモゞュヌルの研究。しかし、最初に、数孊的および実甚的な芳点からオヌトマトンが䜕であるかを瀺したす。オヌトマトンは、状態図ず呌ばれる時間内に発生するプロセスを蚘述するモデルに基づいおおり、この゚ンティティなしで自動プログラミングを想像するこずは䞍可胜です。これがなぜ今日の蚘事で議論されおいるのか。


目次。

自動vs自動


専門家は、オヌトマトンをかなり広範囲に分類したす決定論的および非決定論的、有限および無限、マむルおよびムヌア、同期および非同期など ただし、ナヌザヌの芳点からは、メガロポリスで個人甚の車が必芁かどうかを自分で刀断したい堎合ず同じです。シリンダヌの数ずむンゞェクタヌに぀いおは説明されたす。

ポピュララむザヌずしお、䜿甚の芳点から、マシンは2぀の関連するカテゎリヌに分けられたす。


これらのアプロヌチの関係は簡単に説明できたす。


図1.コンピュヌタヌ支揎蚭蚈ずコンピュヌタヌ支揎実装

同僚ずのコミュニケヌションから明らかになる限り、マシンを次のように考えるフォヌマリストのカテゎリヌがありたす。


明らかに、このようなアプロヌチは、自動指向のパラダむムにより開かれる機䌚のスペヌスを狭め、オヌトマトンに察するこのような態床は、修正可胜な䞀般的な科孊資料の䞍足によっおのみ説明できたす。

マシンを䜿甚したいのは、シンプルさず同時に蚭蚈の深さです。前の郚分では、モゞュヌルの自動指向蚭蚈の基瀎は、タスクを操䜜オヌトマトンOAず制埡オヌトマトンUAに分割するこずであり、操䜜オヌトマトンは䞋䜍レベルの操䜜オヌトマトンずその制埡オヌトマトンに再分割できるこずを瀺したした。 。

オペレヌティングマシンは、䜕らかのアクションを最適に実行できる半補品ですが、同時に、このアクションを実行するタむミングずパラメヌタヌを「気にしたせん」。オペレヌティングマシンは、任意の有効なパラメヌタヌを䜿甚しおこれを実行できたす。 ALU運甚マシンの優れた䟋。

次に、操䜜オヌトマトンのパラメヌタヌ化ず起動は、制埡オヌトマトンの肩にかかっおいたす。倚段分割により、耇雑な制埡オヌトマトンを埗るこずを回避できたすが、鉄のロゞックではなく、最も理解しやすい機胜を持぀いく぀かの単玔な制埡オヌトマトンに眮き換えたす。

実装この堎合、制埡オヌトマトンは完党に非自動たたは自動である堎合がありたすが、次のような属性はありたせん状態が個別の関数、シグナルテヌブル、および察応する遷移にロヌルアップされたす。最埌に、プログラムはすべお自動ですが、すべおのプログラムが自動的に実装されるわけではありたせん。

しかし、その堎合、自動的に実装されるプログラムずはどういう意味ですか

実装自動ず非自動。


自動実装プログラムの䞻な属性は次のずおりです。


この定矩は、いわば䞍倉であり、その実斜圢態は異なっおいおもよい。「自動化プログラムの実装方法」セクションでは、蚀われたこずを説明するいく぀かの䟋を怜蚎したすが、䞀般的に本質は明らかです。

珟圚、プログラムを自動実装プログラムに垰属させる明確な基準がありたすが、誰かが尋ねたす自動実装のキャッチは䜕ですか、なぜそれがより䟡倀があるのですか

自動実装されたアルゎリズムず実装されたアルゎリズムを区別する䞻なものは、私たちの粟神の領域、より正確には、私たちの考え方にありたす。同僚ずしお適切に発蚀した
« , , , , . « » ( ..) , ».

分析関数の動䜜は、衚たたはグラフの圢匏で衚すこずができたす。入力に䜕かがあり、出力に1察1の察応がありたす。ただし、デゞタルデバむスの倧郚分は、分析機胜をブリックずしお䜿甚するため、その結果、動䜜が既に内郚状態に䟝存しおいるプログラムを取埗できたす。぀たり、分析関数を䜿甚しおも「わかりやすさ」の問題は解決せず、別のレベルに移動したす。

「理解可胜性」ずいう甚語ず人間の思考の特城を説明するために、たったく同じ抜象アルゎリズムがどのように自動および非自動で䜜成、実装されるかを怜蚎するこずを提案したす。



a



b

図2.制埡デバむスの䞀般的な䟋aおよびこのデバむスの動䜜を説明するグラフ図b。

特定のプログラムは、特定のデバむスを制埡するように蚭蚈されおいたす。図に瀺すように。 2b。 UAは、通垞は文字セット{0,1,2}で瀺される倖郚コマンドを凊理し、オペレヌティングマシンを制埡する䞀連のマむクロ呜什に倉換したす。マむクロ呜什ずは、効果を埗るために必芁な䞀連のコマンドを意味したす。マむクロ呜什の各セットは、条件付きでシンボル{1,2,3,4,5,6}で瀺されたす。制埡マシンのフラグ{a、b、c}は、管理察象オブゞェクトの状態を監芖し、それに応じお、入力コマンドの凊理モヌドを決定したす。

これはメモリを備えたデゞタルデバむスであるため、図2で説明されおいるアルゎリズムは、アルゎリズムの実装が非自動であるずいう事実にもかかわらず、実際にはオヌトマトンです。これは、明瀺的に割り圓おられた状態が存圚しないずいう事実に぀ながり、その結果、珟圚の状態はフラグによっお暗黙的に決定されたす。さらに、グラフ方匏によるプログラムの蚘述自䜓はオヌトマトンの原理ず矛盟せず、自動的に実装されるプログラムはグラフ方匏によっお蚘述でき、そのような䟋がありたす。グラフ図に関連する䞻な問題は、ダむナミックの芳点からHSが蚘述したプログラムの理解床が䜎いこずです。プロセスは時間内に進行したす。

念頭に眮いおおくず、これは非垞に単玔な䟋ですが、どの出力信号が入力信号0に察応するかを明確に蚀うこずはできたせん。これは、フラグの状態、より正確にはフラグbに䟝存するためです。前の入り口にあったもの。たた、どの出力シヌケンスが入力シヌケンスに察応するかをすぐに蚀うのは簡単ではありたせん2,1,0,2,1,0。これを行うには、実際にアルゎリズムを実行する必芁がありたす。

入力信号ず出力信号の完党な察応、぀たり関数を衚圢匏で蚘述するためには、完党なテストを実行する必芁があり、さらに、すべおの皮類の入力の組み合わせが順番に䞊べ替えられた2信号シヌケンスの圢匏で結果が埗られたす。


図3.タむミング図-メモリを搭茉したシステムの動䜜を説明する方法。

3぀のバむナリフラグを䜿甚するず、すべおの可胜なオプションを説明するために、3぀の入力文字のアルファベットに察しお、以前の8぀の文字を远跡するこずはできたせんただし、それ以䞊ではないため、入力信号のセットず状態のセットの積ず呌ばれる6561図を䞎える必芁がありたす状態の数ず入力信号のアルファベットのサむズが倧きくなるず、幟䜕孊的に倧きくなりたす。

プログラムの自動実装により、 状態図を䜿甚しおプログラムを蚘述するこずができ、状態図ず遷移により、メモリを備えた動的システムの分析に察しお根本的に異なるアプロヌチが提䟛されたす。 図2bに瀺すアルゎリズムを実装するオヌトマトンを構築したす方法は指定したせん。これは別の䌚話のトピックです。これは、図4に瀺す状態図ず遷移図で説明されたす。状態。


図4.図2に瀺したアルゎリズムに察応する状態ず遷移図

このチャヌトの䜿甚は非垞に䟿利です。入力文字のみが遷移に圱響するため、远加の条件はありたせん。 ぀たり、図2の実装の入力シンボルぞの応答を分析するには、各反埩でのフラグの珟圚の状態を取埗する必芁がありたす。図4に瀺すように実装されたデバむスの動䜜を分析するには、この図以倖は必芁ありたせん。

これは、次の自動化アプロヌチの重芁な利点です。


時間軞倖の動的プロセスを調べたす。


人間の脳は、同じ衚が䞀床に1桁ず぀衚瀺される堎合よりも、数字の衚で䜜業しやすいように配眮されおいたす。 最初のケヌスでは、人は耇雑なパタヌンを識別できたす; 2番目のケヌスでは、テヌブルを呚期的にスクロヌルしおも、最も単玔なパタヌンを陀き、パタヌンをほずんど決定できたせん。

䟋を考えお、䞀連のコマンドを考えおみたしょう

Set_position(6,0); Line_to (1,0); Line_to (1,1); Line_to (-1,2); Line_to (4,0); Line_to (1,-3); Line_to (3,0); Line_to (0,6); Line_to (-11,0); Line_to (-1,1); Line_to (-2,0); Line_to (3,-2); Line_to (0,-2); Line_to (1,2); Line_to (2,0); Line_to (-1,-2); Line_to (1,-1); 

同意しお、それぞれのアクションはシンプルなデザむンです。 ただし、すべおのアクションを完了しおいないため、䜕が成功するかは蚀えたせん。 このアルゎリズムの結果は図に瀺されおいたす。 5 a


ab
図5.コマンドのシヌケンスの実行結果a、および゚ラヌが発生した堎合の同じシヌケンスの実行結果b

同時に、蚈算​​に誀りがあり、たずえば、2行目の最初のステヌトメントで1、-3の代わりに倀2、-3を瀺したす。䜜業の結果は異なりたす5 bが、プログラムのテキストを芋るず理解できたせん。 そしお、これは実行埌すぐに結果を芋るこずができるシンプルなケヌスです。 結果を垞に1行ずしお衚瀺する堎合、たたはグラフィックではなく数字を扱う堎合、間違いはそれほど明癜ではありたせん。

これは、 動的なプロセスず呌ばれる人間の脳にずっお簡単なタむプの情報ではなく、 䞀連のアクション 䟋では別々の行であり、重ね合わせの結果ずしお䜕らかの期埅される結果 䟋では図をもたらしたす。

時間軞倖の動的プロセスの良い䟋は、呚波数領域の信号の分析です。 図6の信号を怜蚎しおください。いく぀かの方法で、オヌトマトンのタむムダむアグラムず比范できたす。 これも䞀連のアクションです。信号は0を超え、䞊昇し、最倧倀に達し、䜎䞋し、再び0を超えたした。


図6.オヌトマトンのタむムダむアグラムに類䌌した信号グラフ。

明らかに、これは呚期的な信号であり、いく぀かの正匊波で構成されおいるず掚枬するこずさえできたすが、どの正匊波かを蚀うこずは困難です。
同時に、スペクトルは信号構造のアむデアを盎接提䟛したす。


図7.図6に瀺す信号のスペクトル。

スペクトルは、この点でオヌトマトンダむアグラムず比范できたす。 時間内に実行されるプロセスの䞭心にあるものの静的な蚘述が含たれおいたす。 スペクトルず状態図および遷移図の䞡方により、時間軞倖のプロセスを分析し、䞀連のステップずしおではなく、党䜓ずしおカバヌするこずができたす。

ちょっずした数孊


厳密な数孊的カテゎリずしおの状態図ず遷移により、詳现な分析が可胜になりたす。

図5の状態図ず遷移図で説明されおいるプロセスを分析したしょう。 このためには、同型オヌトマトンの抂念が必芁です。 同型オヌトマトンは、オヌトマトンを意味する数孊甚語であり、実際には名前が倉曎された状態や信号を持぀同じオヌトマトンです。


図8.同型オヌトマトン。

問題の条件から、アルゎリズムが凊理するプロセスに぀いおは䜕も知らないこずがわかりたす。 2 b。 それにもかかわらず、図に瀺す分析は 4぀の図を䜿甚するず、2぀の非垞に類䌌したクラスタヌを遞択できたす。クラスタヌ間の切り替えは、䞻に信号0によっお行われたす。

元のオヌトマトンず同型のオヌトマトンを構築したすが、その状態番号は図9に瀺すように名前が倉曎され、指定されたクラスタヌの抂芁が瀺されたす。 状態4,5,6が括匧内にあるクラスタヌでは、最初のクラスタヌず同じ状態です。



図9.図4に瀺したものず同圢のオヌトマトン

図に瀺すように、元のオヌトマトンを2぀の䞊列オヌトマトンに分解分割したす。 10。


図10.図9に瀺すマシンの䞊列分解

各マシンの出力シンボルには、状態の名前の埌にスラッシュが付けられたす。 埗られたオヌトマトンの出力シンボルは算術的に加算され、同じ入力デヌタを持぀元のオヌトマトンの出力のシンボルに完党に察応する1〜6の出力が埗られたす。 このオヌトマトンの接続は、パラレルコンポゞションず呌ばれたす。

自動2に泚意しおください。 どのような状態であっおも、入力シンボル0はシンボル1の出珟に぀ながり、入力シンボル1はシンボル3の出珟に぀ながり、シンボル2はシンボル2の出珟に぀ながりたす。぀たり、これは組み合わせ回路であり、出力シンボルの配列です。配列むンデックスは入力文字です。 図に瀺すようなオヌトマトンを描きたしょう。 11


図11.図に瀺したオヌトマトンず同等のオヌトマトン 10

出力シンボルは特定の䞀連のマむクロ呜什を゚ンコヌドしおいるため、数孊者の目を通しお問題を芋お、各マむクロ呜什にむンデックスがあるこの実装されたマむクロ呜什の配列があるず想像するず、ここでは算術倉換は䞍適切であるように芋えるかもしれたせん間違いなく倉革しおいたす。

特に、入力のシンボル0,1,2ず出力のシンボル1,2,3は異なるアルファベットを参照しおいるため、出力から入力にシンボル1を取り蟌んで送信するこずは䞍可胜です。 ただし、入力蚘号ず出力蚘号が同じアルファベットに属するオヌトマトンが存圚する堎合がありたす。その堎合、オヌトマトンの出力蚘号をその入力に䟛絊するこずができたす。 これはフィヌドバック構成ず呌ばれたす 。 講矩のパラグラフ4.7は、このような構成に専念しおいたす。

問題の条件から、アルゎリズムによっおモデル化されたオブゞェクトの性質は䞍明でした
図 2b、およびそれにもかかわらず、オヌトマトンを分析および分解するこずにより、シミュレヌトされた珟象は最終結果に寄䞎する2぀の独立したプロセスに基づいおいるこずがわかりたした。 たた、抜象的な䟋の堎合、これは興味深い芳察にすぎたせんが、特定のタスクの堎合、䞊蚘の分析はシミュレヌトされた珟象の明癜でない偎面を明らかにする可胜性がありたす。したがっお、プログラミングの芳点だけでなく、工孊の芳点からも興味深いです。 ゚ンゞニアにずっお、珟象の根底にあるプロセスを理解するこずで、開発䞭のデバむスの芋方を修正し、本質を打ち砎る独自の技術的゜リュヌションを埗るこずができたす。

考慮された䟋は、オヌトマトンの別の重芁で有甚な特性、 等䟡オヌトマトンの抂念に觊れおいたす。 事実は、異なる数の状態を持぀任意の倚くのオヌトマトンが存圚できるこずです぀たり、同型オヌトマトンに぀いおは話しおいない 。これは、同じ入力シヌケンスに察しお同じ応答を提䟛したす。 したがっお、「ブラックボックス」にそれらを配眮する堎合、入力に異なるシヌケンスを適甚し、応答を分析するこずによっおそれらを区別するこずはできたせん。

この堎合、オヌトマトンの䞭には内郚状態の数の点で「無駄」なものもあれば、「経枈的」なものもありたす。 同等のオヌトマトンの党セットの䞭には、可胜な限り少ない数の状態を持぀オヌトマトンがあり、これは最小オヌトマトンず呌ばれたす。 さらに、任意のオヌトマトンから同等の最小倀を取埗するためのアルゎリズム手法がありたす。 特に、このプロパティは、状態図ず遷移を䜜成するずきに、状態の数の最小化を远いかけるべきではなく、最も明確で完党な図を達成する必芁があるこずを意味したす。 たた、理解の容易さず実装の容易さはしばしば関係したすが、この䟋のように、結果を䞀察のオヌトマトンずしお提瀺する方が芖芚的になるこずがありたす。 その埌、数孊アルゎリズムを䜿甚しお、同等の最小オヌトマトンを芋぀けるこずができたす。

この蚘事ではオヌトマトンの理論を怜蚎する぀もりはないので、オヌトマトンで実行できる基本的な数孊的操䜜を簡単にリストしたす合成、分解、最小化、マむクロプログラムからのオヌトマトンの取埗、オヌトマトンに基づくマむクロプログラムの取埗、オヌトマトンの代数挔算远加、オヌトマトンの比范、シミュレヌトするオヌトマトンなどの構築。これらの倉換を実行するための理論的な正圓化ず方法は、たずえばここにありたす 。


今日の郚分を芁玄したす。 非手動プログラミングの特城は、任意の時点でのプログラムの状態が゜フトりェアカりンタヌだけでなく、倚数の内郚フラグによっお蚘述されるこずです。 非自動スタむルのプログラムの状態ずいう甚語は、圢匏化できない抂念の䞀皮です。぀たり、プログラムがTKを必芁ずするすべおのアクションを実行するずいうこずです。 それにもかかわらず、䞊で瀺したように、プログラムの非自動スタむルでも、数孊的にはオヌトマトンです。 数孊的な意味での状態がありたすが、これらの状態はどこにも蚘述されおいたせん。 いく぀あるのか、それらの間の関係は䞍明です。 各新しいバむナリフラグを远加するず、可胜な状態の数が幟䜕孊的に増加したす。 この堎合、倚くの新しい状態は、プログラムがどんな状況でも決しお入らない到達䞍可胜な状態になりたすが、この堎合、次の状態を明瀺的に遞択しないため、すべおのフラグの重ね合わせであるこずが刀明したす、少なくずも1぀のフラグのロゞックが正しくない堎合、プログラムは犁止状態にゞャンプし、これを瀺す指暙はありたせん。 積極的に倉化しおいるフラグを凊理し、プログラムのパスが曲がりくねっおおり、倚くの分岐を通過し、すべおの可胜な入力文字のすべおの分岐オプションがテストされるたで、10回目の反埩埌にプログラムが最終的になるず信じるこずができたす私たちが期埅する状態で。

自動実装の堎合、 状態は数孊的なカテゎリです。 それぞれの瞬間に、特に゜フトりェアカりンタヌによっお䞀意に決定されたす。 制埡問題を解決するために必芁な状態のセットを自分で蚭定し、必芁に応じお、 XたたはYコマンドが到着した堎合に次にどの状態になるかを明瀺的に遞択したす 。 十分な状態がない堎合、必芁な数たで任意に増やしお、それらの間の接続を明確に芏定できたす。

正しく理解したい。 プログラムを自動的に実装するず、タむプミスや誀解を免れるこずもできたせん。 デバむスを䞍適切にシミュレヌトするこずで、遷移を間違った状態に蚭定できたすが、これは゜フトりェア蚭蚈゚ラヌではなく、゚ンゞニアリング゚ラヌ、぀たり 自動パスたたは非自動パスが遞択されおいるパスずは関係ありたせん。 非手動の実装では、朜圚的な論理゚ラヌの匷力な゜ヌスが同じモデリング゚ラヌずタむプミスに远加されたす。これは、䜕らかの期埅される結果のオヌバヌレむをもたらす䞀連のアクションずしおの動的プロセスです。

次のパヌトでは、「ディスプレむ」の䟋の2぀の実装間の競合を調敎するこずにより、実甚的なアルゎリズムの匷固な基盀に戻りたす。䞀方は自動的に開発され 、もう䞀方は自動化されたせん。

掚奚文献のリスト。 自動機械に぀いお玠晎らしい物語があれば、私に曞いお、私は付け加えたす。

→ 初心者のための、䞀般に忘れおしたった人のための講矩。
→ 匷力な講矩ず䟋。 パヌト1
→ 匷力な講矩ず䟋。 パヌト2
→ 匷力な講矩ず䟋。 パヌト3

Source: https://habr.com/ru/post/J332508/


All Articles