4.3. Построение программ с метками 93
Замечание 4.2. Не всякое построение эффективно. Например, для
всякого алгоритма A существует алгоритм M
A
, который имеет ми-
нимальную длину среди всех эквивалентных A алгоритмов. Однако по-
строение M
A
по A неэффективно. Не существует алгоритма, который
выполнял бы это построение для любого алгоритма A.
Теорема 4.1. (О построении программы с метками) По всякой
структурной программе Π
S
можно эффективно построить программу
с метками Π
L
такую, что Π
S
(σ) = Π
L
(σ) для любого состояния σ.
Доказательство. Докажем теорему индукцией по построению Π
S
.
Базис индукции.
Пусть
Π
S
∼ x = e;
где x — переменная, e — выражение. Возьмем
Π
L
∼ 1 x = e; 2.
Очевидно, что для всякого состояния σ имеет место Π
S
(σ) = Π
L
(σ).
Шаг индукции.
Возможны четыре варианта.
1. Π
S
∼ Π
S
1
Π
S
2
. По индукции для Π
S
1
и для Π
S
2
существуют програм-
мы Π
L
1
и Π
L
2
. Выберем для каждой метки α из программы Π
L
2
метку
ˆα, которая не встречалась бы ни в Π
L
1
ни в Π
L
2
. Построим
˜
Π
L
2
, заменив
в Π
L
2
все метки α на ˆα. Согласно лемме о замене метки Π
L
2
(τ) =
˜
Π
L
2
(τ)
для всякого состояния τ. Пусть γ — заключительная метка Π
L
1
, а δ —
начальная метка
˜
Π
L
2
. Пусть
˜
Π
L
1
∼
Π
L
1
γ
δ
. Согласно лемме о замене мет-
ки Π
L
1
(σ) =
˜
Π
L
1
(σ) для всякого состояния σ. Построим Π
L
∼
˜
Π
L
1
˜
Π
L
2
.
Докажем, что Π
L
— искомая программа.
Пусть Π
S
(σ) определено. Тогда Π
S
1
(σ) определено. Пусть Π
S
1
(σ) = τ.
Согласно индукционному предположению
˜
Π
L
1
(σ) = Π
L
1
(σ) = τ. Пусть
Π
S
2
(τ) = ρ. Согласно индукционному предположению
˜
Π
L
2
(τ) = Π
L
2
(τ) =
ρ. Рассмотрим последовательность расширенных состояний для Π
L
(σ).
Так как
˜
Π
L
1
(σ) определено, то последовательность расширенных состоя-
ний
σ
i
, λ
i
i
для
˜
Π
L
1
(σ) является конечной. П усть (σ
m
, λ
m
) — ее послед-
ний элемент. Тогда σ
m
= τ и λ
m
= δ, так как δ — заключительная метка
программы
˜
Π
L
1
. Заметим, что (σ
m
, λ
m
) = (τ, δ) является первым расши-
ренным состоянием для
˜
Π
L
2
(τ). Так как
˜
Π
L
2
(τ) определено, то эта после-
довательность должна быть конечной:
σ
i
, λ
i
n
i=m
. Очевидно, что σ
n
= ρ.