麻婆豆腐

作成: 2025年2月2日 最終更新: 2025年4月22日

証明: 言語
L ;=;{;\texttt{“麻婆豆腐”};}
が正則であることを、以下の 2 通りの方法で示す。

  1. 有限言語一般の性質を用いる方法
    1. 定義: アルファベットを
      \Sigma={\mathtt{麻},;\mathtt{婆},;\mathtt{豆},;\mathtt{腐}}
      とする。
    2. 事実 (定理): 任意の有限言語(要素の個数が有限の言語)は正則言語である。
      • 証明概略:各文字列 w\in L について長さ |w| の字句解析専用の有限オートマトン(DFA)を構成し,それらを受理状態の共用によって合併すれば,最終的に全体を受理する有限オートマトンが得られる。
    3. 本例では L の要素はちょうど 1 つしかない(\bigl|{\texttt{“麻婆豆腐”}}\bigr|=1)ので,自明に有限言語の範疇に入る。
    4. よって L は正則言語である。

  1. 明示的に DFA を構成する方法

以下の 5 状態 DFA M を考える:

M=(Q,\Sigma,\delta,q_0,F),
• (Q={q_0,q_1,q_2,q_3,q_4,q_{\sink}})
• 開始状態 q_0
• 受理状態の集合 F={q_4}
• 遷移関数 \delta:Q\times\Sigma\to Q を次のように定義:
[
\begin{aligned}
&\delta(q_0,\mathtt{麻})=q_1,\
&\delta(q_1,\mathtt{婆})=q_2,\
&\delta(q_2,\mathtt{豆})=q_3,\
&\delta(q_3,\mathtt{腐})=q_4,\
&\text{その他の組 }(q,a)\text{ については }q_{\sink}\text{ へ遷移},\
&\delta(q_{\sink},a)=q_{\sink}\quad(\forall a\in\Sigma).
\end{aligned}
]
ここで (q_{\sink}) は「ダイレクトに非受理ス ink 状態」である。

主張: この DFA M はちょうど文字列 “麻婆豆腐” のみを受理する。
• 文字列長 4 の “麻→婆→豆→腐” の順で入力したとき,
[
q_0 \xrightarrow{\mathtt{麻}}q_1\xrightarrow{\mathtt{婆}}q_2
\xrightarrow{\mathtt{豆}}q_3\xrightarrow{\mathtt{腐}}q_4,
]
最終的に受理状態 q_4 に到達する。
• それ以外のいずれかで異なる文字を読むと(あるいは読み終わった後に余分な文字を読むと),必ず (q_{\sink}) に入るため受理しない。

ゆえに言語 L(M)={,\texttt{“麻婆豆腐”},}=L。DFA で表現できるので L は正則。

結論

以上 (1) 有限言語の一般論、(2) 明示的な DFA 構成、いずれの方法からも
L={\texttt{“麻婆豆腐”}}
は正則言語であると厳密に示せた。したがって「麻婆豆腐は正則言語である」という主張は成立する。

ワーシャルフロイド法を用いた麻婆豆腐の最短経路計算

ワーシャルフロイド法 (Floyd-Warshall Algorithm) は、グラフの全点対最短経路を求めるアルゴリズムです。ここでは、麻婆豆腐の調理過程 を 重み付きグラフ として表現し、ワーシャルフロイド法を適用して最短経路を求めます。

® \overline{✖️} \overline{❌}
  1. 調理過程のグラフ定義

麻婆豆腐の調理は、以下のようなステップを持ちます。
1. 材料準備 (M)
2. フライパン加熱 (A)
3. ひき肉炒め (P)
4. 調味料追加 (O)
5. 豆腐追加 (D)
6. 煮込み (O)
7. 仕上げ (U)
8. 完成 (F)

これを 有向グラフ で表し、各辺に 調理時間 (コスト) を設定します。

隣接行列 W (初期状態)

W = [ 0 5 0 3 0 2 0 4 0 6 0 3 0 2 0 ] W = \begin{bmatrix} 0 & 5 & \infty & \infty & \infty & \infty & \infty & \infty \\ \infty & 0 & 3 & \infty & \infty & \infty & \infty & \infty \\ \infty & \infty & 0 & 2 & \infty & \infty & \infty & \infty \\ \infty & \infty & \infty & 0 & 4 & \infty & \infty & \infty \\ \infty & \infty & \infty & \infty & 0 & 6 & \infty & \infty \\ \infty & \infty & \infty & \infty & \infty & 0 & 3 & \infty \\ \infty & \infty & \infty & \infty & \infty & \infty & 0 & 2 \\ \infty & \infty & \infty & \infty & \infty & \infty & \infty & 0 \end{bmatrix}

ここで、 \infty は到達不可能な状態を意味します。

  1. ワーシャルフロイド法の適用

ワーシャルフロイド法では、すべての頂点 k を 中継点 として考えながら、最短距離を更新 します。

遷移式

d i , j = min ( d i , j , d i , k + d k , j ) d_{i,j} = \min(d_{i,j}, d_{i,k} + d_{k,j})

すべての i, j, k に対して適用。

  1. 最短経路行列の計算

ワーシャルフロイド法を適用すると、最短距離行列 D が得られます。

D = [ 0 5 8 10 14 20 23 25 0 3 5 9 15 18 20 0 2 6 12 15 17 0 4 10 13 15 0 6 9 11 0 3 5 0 2 0 ] D = \begin{bmatrix} 0 & 5 & 8 & 10 & 14 & 20 & 23 & 25 \\ \infty & 0 & 3 & 5 & 9 & 15 & 18 & 20 \\ \infty & \infty & 0 & 2 & 6 & 12 & 15 & 17 \\ \infty & \infty & \infty & 0 & 4 & 10 & 13 & 15 \\ \infty & \infty & \infty & \infty & 0 & 6 & 9 & 11 \\ \infty & \infty & \infty & \infty & \infty & 0 & 3 & 5 \\ \infty & \infty & \infty & \infty & \infty & \infty & 0 & 2 \\ \infty & \infty & \infty & \infty & \infty & \infty & \infty & 0 \end{bmatrix}

この結果から、麻婆豆腐の調理に必要な最短時間は 25 分 であり、最短経路は次のようになります。

最短経路:

M A P O D O U F M \to A \to P \to O \to D \to O \to U \to F
  1. 結論

ワーシャルフロイド法を用いることで、麻婆豆腐の調理手順を最適化し、最短時間を 25 分と算出 しました!

aaa

麻婆豆腐 (Mápó dòufu) の正則言語としての定義

麻婆豆腐を正則言語として定義するには、有限状態オートマトン (Finite State Automaton, FSA) で受理される形式言語として記述する必要があります。ここでは、麻婆豆腐を生成する文字列の集合 L を定義し、その言語が正則であることを示します。

定義

麻婆豆腐の正則言語 L は、アルファベット Σ 上の文字列の集合であり、次の形式を持つ。

アルファベット Σ

Σ = { M , A , P , O , D , O , U , F , U } Σ = \{ M, A, P, O, D, O, U, F, U \}

(ここでは “MÁPÓDÒUFU” の各文字をアルファベットとする)

言語 L

L = { M A n P m O p D O U q F U n , m , p , q 1 } L = \{ M A^n P^m O^p D O U^q F U \mid n, m, p, q \geq 1 \}

(各成分の出現回数は 1 以上である)

この言語は、以下の有限状態オートマトン (DFA) で受理できる。

有限状態オートマトン (DFA)
• 状態集合: Q = { q 0 , q 1 , q 2 , q 3 , q 4 , q 5 , q 6 , q 7 , q 8 , q f } Q = \{ q_0, q_1, q_2, q_3, q_4, q_5, q_6, q_7, q_8, q_f \}
• 開始状態: q 0 q_0
• 受理状態: q f q_f
• 遷移関数 δ:
\[ q_0 \xrightarrow{M} q_1 \]
\[ q_1 \xrightarrow{A} q_1 \] (A は 1 文字以上)
• [ q_1 \xrightarrow{P} q_2 ]
• [ q_2 \xrightarrow{P} q_2 ] (P は 1 文字以上)
• [ q_2 \xrightarrow{O} q_3 ]
• [ q_3 \xrightarrow{O} q_3 ] (O は 1 文字以上)
• [ q_3 \xrightarrow{D} q_4 ]
• [ q_4 \xrightarrow{O} q_5 ]
• [ q_5 \xrightarrow{U} q_6 ]
• [ q_6 \xrightarrow{U} q_6 ] (U は 1 文字以上)
• [ q_6 \xrightarrow{F} q_7 ]
• [ q_7 \xrightarrow{U} q_f ]

この DFA によって、麻婆豆腐の正則言語が受理される。

正則性の証明
• DFA で受理できる言語は正則である。
• 言語 L は DFA で表現できるため、正則言語である。

したがって、麻婆豆腐は正則言語である。

MIPS アセンブリ言語で麻婆豆腐を調理するコードを書きます。ここでは、以下の手順で麻婆豆腐を調理するプロセスを MIPS の命令に落とし込みます。

麻婆豆腐調理の手順
1. 材料を準備する(豆腐、ひき肉、調味料など)
2. フライパンを熱する
3. ひき肉を炒める
4. 調味料を加える
5. 豆腐を加える
6. 煮込む
7. 仕上げにとろみをつける

MIPS アセンブリコード (擬似コードベース)

.data
    tofu:    .asciiz "豆腐を準備しました。\n"
    meat:    .asciiz "ひき肉を準備しました。\n"
    spice:   .asciiz "調味料を準備しました。\n"
    pan:     .asciiz "フライパンを熱します。\n"
    fry:     .asciiz "ひき肉を炒めます。\n"
    add_spice: .asciiz "調味料を加えます。\n"
    add_tofu:  .asciiz "豆腐を加えます。\n"
    simmer:  .asciiz "煮込みます。\n"
    finish:  .asciiz "とろみをつけて完成!\n"

.text
    .globl main

main:
    # 材料準備
    li $v0, 4
    la $a0, tofu
    syscall
    
    la $a0, meat
    syscall
    
    la $a0, spice
    syscall
    
    # フライパンを熱する
    la $a0, pan
    syscall
    
    # ひき肉を炒める
    la $a0, fry
    syscall
    
    # 調味料を加える
    la $a0, add_spice
    syscall
    
    # 豆腐を加える
    la $a0, add_tofu
    syscall
    
    # 煮込む
    la $a0, simmer
    syscall
    
    # 仕上げ
    la $a0, finish
    syscall

    # プログラム終了
    li $v0, 10
    syscall

説明
• syscall を利用して、各調理ステップを文字列として出力します。
• 各ステップで li v 0 , 4 を使い、 v0, 4 を使い、 a0 に出力する文字列のアドレスをロードしています。
• 最後に li $v0, 10 でプログラムを終了させます。

MIPS で麻婆豆腐を作ることができました!

border-radius:100000px; (ここは角丸)

Lift( L L ) can be determined by Lift Coefficient ( C L C_L ) like the following
equation.

L = 1 2 ρ v 2 S C L L = \frac{1}{2} \rho v^2 S C_L ® \overline{✖️}
#include<stdio.h>

今週の週替り定食

2/3更新
ああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁああああああああぁぁぁ